{"_id":"markdown-actions","_rev":"13-21012ba1267bd18c6ef8fa45e1866029","name":"markdown-actions","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"markdown-actions","version":"1.0.0","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.0","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"fd158cdc4aee43612cdd88b1f06196e4ae0e08dc","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.0.tgz","fileCount":22,"integrity":"sha512-H2usBmTSA6F7b4dHcr979FotIm5h7ukAts1+wJsuaRWq3B45iOeLR8R/aKskib3bH86/iEhZiZrZYYSbLDNDiA==","signatures":[{"sig":"MEQCIFBOifEEFL8Vm1pAMe3UnyJPOpFgiXT5I8OLuQtt2qU/AiAIPi6XOgpHQokqrPJTfcFoA/TotYxXi4azkHO54m9Few==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212369},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"6e848a333736d7c5623f214a571abdf626877e35","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.0_1755374700377_0.7932830747380624","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"markdown-actions","version":"1.0.1","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.1","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"7350a86d27de86a6f955417475bafae04da3997a","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.1.tgz","fileCount":23,"integrity":"sha512-SfsT9TRmSKVkljgncQ258o9Ckz+2TwYt5AdoN4aOoQ35ssspijK3cEpjKOmQ9pnCerJcn4f1v2r3OsicncLNUg==","signatures":[{"sig":"MEUCIHmW55ItDtte1CRPasMhzXLoPKib0wrm4avYmI52yg3sAiEAr+8Nz0aAC18FvvFSXtAj5GerFLNLAXzf1/qXYo3LA/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274903},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"91acee0cd37881774554bbc6e6d63813392dd89f","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.1_1755396602880_0.9888961416760234","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"markdown-actions","version":"1.0.2","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.2","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"28a80927c969398ad8bbd7cfb39f0c9c2a13282c","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.2.tgz","fileCount":23,"integrity":"sha512-ASHdW2WQdXWGlKnINd5cqh5gHkuWBVgnCOwzUkUEvHqtvVyxsohcG64KzblbOZunKNX8R4oOPcWJNgZ9dXQC7A==","signatures":[{"sig":"MEYCIQCb5F4GXnqGwRNP2mhfHSCVXr+5GJUgsGEtJjHHM+5YRgIhAJAACmBQ2UoLpxZfvCkwkocwcJTRfnmJPNae3hO0GcIc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280208},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"ec9849bd8873724a3c9d4788b0db0c0b2ff0895e","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.2_1755396897499_0.30434277713418045","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"markdown-actions","version":"1.0.3","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.3","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"c851101685f295e4a6a68e94f768eb1e3ffc6bf1","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.3.tgz","fileCount":23,"integrity":"sha512-KO+Zv2vjZ8pbXmXUQTRyDSg5YFuF+9/gfsalU59UPAtpFpgXwjDmebvAUCJC1YdPWHhLAYXkeNxlMeB2HsO5wg==","signatures":[{"sig":"MEUCIQC/DTyY8KU1IDC+WSpMP62wUeRG0tFJFFhwRoLgjmfi1QIgHowGGjFWWK/+Nrel0I110wYo8NPLq49H401iCUO0NHk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287028},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"ec9849bd8873724a3c9d4788b0db0c0b2ff0895e","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.3_1755397231042_0.7537456127848077","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"markdown-actions","version":"1.0.4","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.4","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"34a9105a3324a2f8c3bbfc7de207921f78fdb5c3","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.4.tgz","fileCount":23,"integrity":"sha512-GLaq5ftThdh60hcSJyaLQ1xh4+3fVJryCXd3jzZt46/6cF3awKsYkO+f31MH9VgjAyjEUEb/naXQmee3SSlOcw==","signatures":[{"sig":"MEUCIFn4LRmkzne3lkGWeQxgMEmZ64IYxs0mXDg9hPSUfyDSAiEA88U97MmGFphkJZQ58SVPAawxOKbikFs8EO/bc/CYeSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283697},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"ec9849bd8873724a3c9d4788b0db0c0b2ff0895e","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.4_1755397361135_0.23983069845112204","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"markdown-actions","version":"1.0.5","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.5","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"2e8055a67abf91f309c1e2c7e4ec0586c7a5bd15","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.5.tgz","fileCount":23,"integrity":"sha512-WkSr/O39iNjRmvuv/bo7rzlVwg7otK9opZIb7DnTm+sZMQ6Pdp6H+pKj6gQd6XbGhGJxwYSwrAYzmjk+PNltpA==","signatures":[{"sig":"MEYCIQD2cYpL5zxpP5axFBkahmQTMEha8oNmdxcV1k7jTLAWLgIhAPBKjM00OYNu63qmdfgSV6Vk2oR5YTaIqqRm35jAxKGa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":282936},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"ec9849bd8873724a3c9d4788b0db0c0b2ff0895e","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.5_1755397471296_0.7677797531075443","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"markdown-actions","version":"1.0.6","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.6","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"50c8fdda90e1f1772670f320670e122393ab454e","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.6.tgz","fileCount":23,"integrity":"sha512-wOxWS5gsLiHHQp9crWwdIE0IobZOkcWAzOFtvuuYWmZIC4uQMUO1dZNq8IHVNwe51Bla/ks8Qouphfb11oZsnw==","signatures":[{"sig":"MEUCIGTYRDZ9tf7FkgxFw7VUUN/+tJrjg1Q06sv4DufgtzYtAiEA2opqSd6D8NL2u6Vtl5o8pQ0fmgVpY/G9gnTOFLdt9SE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":301815},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"ec9849bd8873724a3c9d4788b0db0c0b2ff0895e","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.6_1755397769820_0.7040321050164922","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"markdown-actions","version":"1.0.7","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.7","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"27359282afee1721c9a96109268a31f11a605e9f","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.7.tgz","fileCount":23,"integrity":"sha512-gtkuvEfSdPobfN2egFSReBH55faHw9EJK70tXli1nv1JZO+KgsLQR51+3ps+pg7xRPKFYJ78L7mX+DBabQz8xg==","signatures":[{"sig":"MEYCIQDcdFWnpYZCh9cH3UAv3v8uEJ3eQ9JSzUzYPxh5dvfy5wIhAIsR+9XXv9e+NeWyd/CtlMCaUCMKSepqfwX8kOj9ALJN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303342},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"5aaa7fac90ccb06e0950cb17a8b3a911e4076e4b","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.7_1755398255356_0.1675896867331863","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"markdown-actions","version":"1.0.8","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.8","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"890720665b33fbeaf50aed37e819c27ea41234bb","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.8.tgz","fileCount":23,"integrity":"sha512-q7HvC2n1Z81+9tHsfZjaxchML3qFyTDGirJUBnPmU42keSsZe/R/AtH1zoD3lg9qiMGgFZZlnwBfSW886kEzGQ==","signatures":[{"sig":"MEUCIQD6For6OX7eiYPUFYdQuMZG3/9xiQm/2/4pKSKvtjyldwIgFF1h7UfB2KkxbgN+MrGcVKjq7vqb0+WIYR6poicLHoI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303165},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"5aaa7fac90ccb06e0950cb17a8b3a911e4076e4b","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.8_1755400297808_0.7353737165114715","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"markdown-actions","version":"1.0.9","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.0.9","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"30d8676708e7f9235d6816005644203a9d4d0191","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.0.9.tgz","fileCount":23,"integrity":"sha512-md5nXqFuqL3rR9l8IQ5g0ctlfc8NyGqhqkfAzeq+fA+uUfnazFKgIJaR3IhieY1xSqCWDNe8kg8f163fZ12eZA==","signatures":[{"sig":"MEUCIGVdLJuUAxC6PHNQOU8SdbYsyPHKrmtRG7UKqDGEXY9wAiEAg14WvAI+HpXkMkkolJ0wHy+/edbYXd9uLmJ2uXfer+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317902},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"5aaa7fac90ccb06e0950cb17a8b3a911e4076e4b","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.0.9_1755400604192_0.40082825564998115","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"markdown-actions","version":"1.1.0","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.1.0","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"417674eb122b98726542045abbe587bafba18421","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.1.0.tgz","fileCount":23,"integrity":"sha512-Q7DnMDItRnT6gpwWaFrm6AQZM9jT79RLXd7kK6tr6vvUzclWGmlaWayrpBqUlSroGxrN9iRcL/3qTLDHSltd9w==","signatures":[{"sig":"MEUCIE2TriNDHsWRvfEZ2BpV0jcpLxWZYBa5wMKvb16YwIG0AiEAiH9/0Vx2snoMfj7oLSlvRpEZYgS47JQ+93VtMGAZGXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318655},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"6fdaf07e8eab76e89f095912978e0b6a1052696c","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.1.0_1755400806795_0.7601158202903422","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"markdown-actions","version":"1.1.1","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","_id":"markdown-actions@1.1.1","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"homepage":"https://github.com/panphora/markdown-actions#readme","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"dist":{"shasum":"def47cc0c5392c6f50e89c9ccb408d838f59d6c7","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.1.1.tgz","fileCount":23,"integrity":"sha512-YE8KYdpR3hhx+4xU9EF853W5EezIeSBW91aVagUaIBhnqNKNIllPi0mt7GZEUjK3c48JjSrCC9O+zGtlwpNjmw==","signatures":[{"sig":"MEQCIB3U+4LyFRUf7CnzXKj3x2ENTcqWY8owAZifulkLvENVAiANV/DR2oOBXMR13wRAiDGW6Fed1dZxNelHvJxyZwYSMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317922},"main":"dist/markdown-actions.js","type":"module","module":"dist/markdown-actions.esm.js","gitHead":"a814ba2df41fa271ba0d39ce9e8cb91b60cbe7fe","scripts":{"dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1","build":"node esbuild.config.js","serve":"http-server -p 3000 -c-1","watch":"node esbuild.config.js --watch"},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"repository":{"url":"git+https://github.com/panphora/markdown-actions.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.19.11","http-server":"^14.1.1","concurrently":"^8.2.2"},"_npmOperationalInternal":{"tmp":"tmp/markdown-actions_1.1.1_1755404235577_0.02373016319400345","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"markdown-actions","version":"1.1.2","description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","main":"dist/markdown-actions.js","module":"dist/markdown-actions.esm.js","type":"module","scripts":{"build":"node esbuild.config.js","watch":"node esbuild.config.js --watch","serve":"http-server -p 3000 -c-1","dev":"concurrently \"npm run watch\" \"npm run serve\"","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/panphora/markdown-actions.git"},"keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"author":{"name":"David Miranda"},"license":"MIT","bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"homepage":"https://github.com/panphora/markdown-actions#readme","devDependencies":{"concurrently":"^8.2.2","esbuild":"^0.19.11","http-server":"^14.1.1"},"_id":"markdown-actions@1.1.2","gitHead":"750ee5a02f27e489e7bc8b5095e6d24761091ad4","_nodeVersion":"24.5.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-U7rmgTvUP3neh3XaVblikslRWWhfpzF2SiI1A6z3az7IpYuAiVvdqtZrFCArV22TSj2Ht+r0ResohlsJ8/ntbw==","shasum":"3feb13ae2cb206919c5082aba6422ab470bea2e1","tarball":"https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.1.2.tgz","fileCount":23,"unpackedSize":319307,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICSWGMwb8yyI40mGCxfKYBBfGOg9Wc5HW78yVaYSI+fZAiA4d5n+bDBtJ/rYZqFyKH4Iuovn5OGnfUn1F8uA6XFlng=="}]},"_npmUser":{"name":"panphora","email":"david@artisfy.com"},"directories":{},"maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/markdown-actions_1.1.2_1755405614601_0.712615832674699"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-16T20:05:00.376Z","modified":"2025-08-17T04:40:14.995Z","1.0.0":"2025-08-16T20:05:00.631Z","1.0.1":"2025-08-17T02:10:03.147Z","1.0.2":"2025-08-17T02:14:57.689Z","1.0.3":"2025-08-17T02:20:31.280Z","1.0.4":"2025-08-17T02:22:41.318Z","1.0.5":"2025-08-17T02:24:31.477Z","1.0.6":"2025-08-17T02:29:30.068Z","1.0.7":"2025-08-17T02:37:35.557Z","1.0.8":"2025-08-17T03:11:37.981Z","1.0.9":"2025-08-17T03:16:44.420Z","1.1.0":"2025-08-17T03:20:06.993Z","1.1.1":"2025-08-17T04:17:15.760Z","1.1.2":"2025-08-17T04:40:14.784Z"},"bugs":{"url":"https://github.com/panphora/markdown-actions/issues"},"author":{"name":"David Miranda"},"license":"MIT","homepage":"https://github.com/panphora/markdown-actions#readme","keywords":["markdown","editor","textarea","formatting","toolbar","wysiwyg","lightweight"],"repository":{"type":"git","url":"git+https://github.com/panphora/markdown-actions.git"},"description":"A lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element","maintainers":[{"name":"panphora","email":"david@artisfy.com"}],"readme":"# markdown-actions\n\nA lightweight, zero-dependency JavaScript library for adding markdown formatting functionality to any textarea element. Extracted and refined from [GitHub's markdown-toolbar-element](https://github.com/github/markdown-toolbar-element).\n\n## 🎯 What is this?\n\n`markdown-actions` provides a simple, functional API for implementing markdown toolbar buttons that work with any `<textarea>`. It handles all the complex text manipulation, selection management, and cursor positioning that makes markdown editing feel natural.\n\n### Key Features\n\n- 🪶 **Lightweight** - ~3-4kb gzipped, zero dependencies\n- 🎨 **Framework agnostic** - Works with React, Vue, vanilla JS, or any framework\n- ⚡ **Simple API** - Just pass a textarea element to any function\n- 🔄 **Smart toggling** - Automatically detects and removes existing formatting\n- 📝 **Native undo/redo** - Integrates with browser's built-in undo stack\n- 🎯 **Precise cursor control** - Maintains logical cursor position after operations\n- 🌳 **Tree-shakeable** - Import only the functions you need\n\n## 📖 Origin Story\n\nThis library was born from the need for a simple, reliable markdown toolbar implementation. After discovering that building a tokenizer-based approach led to complex state management and text corruption issues, we studied GitHub's battle-tested [markdown-toolbar-element](https://github.com/github/markdown-toolbar-element) and extracted its core logic.\n\nThe key insight: **you don't need to parse markdown to manipulate it effectively**. Instead of tokenizing, this library uses direct string manipulation with smart selection expansion - a simpler, more reliable approach proven in production on GitHub.com.\n\n## 🚀 Quick Start\n\n```html\n<!-- Your HTML -->\n<button id=\"bold-btn\">Bold</button>\n<textarea id=\"editor\"></textarea>\n\n<!-- Using the library -->\n<script type=\"module\">\n  import { toggleBold } from './markdown-actions/src/index.js'\n  \n  const textarea = document.getElementById('editor')\n  \n  document.getElementById('bold-btn').addEventListener('click', () => {\n    toggleBold(textarea)\n    textarea.focus()\n  })\n</script>\n```\n\n## 📚 API Reference\n\n### Formatting Functions\n\nAll functions take a `HTMLTextAreaElement` as their first parameter:\n\n```javascript\ntoggleBold(textarea)           // **text**\ntoggleItalic(textarea)         // _text_\ntoggleCode(textarea)           // `code` or ```block```\ntoggleQuote(textarea)          // > quote\ntoggleBulletList(textarea)     // - item\ntoggleNumberedList(textarea)   // 1. item\ninsertLink(textarea, options)  // [text](url)\ninsertHeader(textarea, level)  // # Header\n```\n\n### Utility Functions\n\n```javascript\n// Get active formats at cursor position\ngetActiveFormats(textarea) // Returns: ['bold', 'italic', ...]\n\n// Check if specific format is active\nhasFormat(textarea, 'bold') // Returns: true/false\n\n// Expand selection to word or line boundaries\nexpandSelection(textarea, { toWord: true })\n\n// Apply custom markdown format\napplyCustomFormat(textarea, {\n  prefix: '==',\n  suffix: '==',\n  trimFirst: true\n})\n```\n\n### Options\n\n```javascript\n// Link options\ninsertLink(textarea, {\n  url: 'https://example.com',  // Pre-fill URL\n  text: 'Link text'             // Pre-fill text\n})\n```\n\n## 💡 Usage Examples\n\n### React Component\n\n```jsx\nimport { toggleBold, toggleItalic, getActiveFormats } from 'markdown-actions'\n\nfunction MarkdownEditor() {\n  const textareaRef = useRef()\n  const [activeFormats, setActiveFormats] = useState([])\n  \n  const updateFormats = () => {\n    setActiveFormats(getActiveFormats(textareaRef.current))\n  }\n  \n  const handleBold = () => {\n    toggleBold(textareaRef.current)\n    updateFormats()\n  }\n  \n  return (\n    <>\n      <button \n        className={activeFormats.includes('bold') ? 'active' : ''}\n        onClick={handleBold}>\n        Bold\n      </button>\n      <textarea \n        ref={textareaRef}\n        onSelect={updateFormats}\n        onKeyUp={updateFormats}\n      />\n    </>\n  )\n}\n```\n\n### Vue Component\n\n```vue\n<template>\n  <div>\n    <button @click=\"makeBold\" :class=\"{ active: isBold }\">Bold</button>\n    <textarea ref=\"editor\" @select=\"checkFormats\"></textarea>\n  </div>\n</template>\n\n<script>\nimport { toggleBold, hasFormat } from 'markdown-actions'\n\nexport default {\n  data() {\n    return {\n      isBold: false\n    }\n  },\n  methods: {\n    makeBold() {\n      toggleBold(this.$refs.editor)\n      this.checkFormats()\n    },\n    checkFormats() {\n      this.isBold = hasFormat(this.$refs.editor, 'bold')\n    }\n  }\n}\n</script>\n```\n\n### Keyboard Shortcuts\n\n```javascript\ntextarea.addEventListener('keydown', (e) => {\n  if (e.ctrlKey || e.metaKey) {\n    switch(e.key) {\n      case 'b':\n        e.preventDefault()\n        toggleBold(textarea)\n        break\n      case 'i':\n        e.preventDefault()\n        toggleItalic(textarea)\n        break\n      case 'k':\n        e.preventDefault()\n        insertLink(textarea)\n        break\n    }\n  }\n})\n```\n\n### Custom Formats\n\n```javascript\n// Highlight format\napplyCustomFormat(textarea, {\n  prefix: '==',\n  suffix: '==',\n  trimFirst: true\n})\n\n// Spoiler format\napplyCustomFormat(textarea, {\n  prefix: '||',\n  suffix: '||'\n})\n\n// Custom block format\napplyCustomFormat(textarea, {\n  prefix: '>>> ',\n  multiline: true,\n  surroundWithNewlines: true\n})\n```\n\n## 🏗️ How It Works\n\nUnlike complex tokenizer-based approaches, `markdown-actions` uses a simpler, more reliable method:\n\n1. **Smart Selection** - Expands selections to word/line boundaries when needed\n2. **Pattern Matching** - Simple string checks to detect existing formatting\n3. **Direct Manipulation** - Modifies text directly without parsing\n4. **Position Tracking** - Calculates new cursor positions based on changes\n5. **Native Integration** - Uses `document.execCommand` for undo/redo support\n\nThis approach avoids the pitfalls of tokenization:\n- No position corruption\n- No text duplication\n- No state management complexity\n- No parsing edge cases\n\n### 🎯 Selection Preservation - How Text Stays Selected\n\nOne of the most polished features of `markdown-actions` is how it preserves text selection after formatting. When you click \"Bold\" in a toolbar, the text stays selected, allowing for immediate additional formatting. Here's the step-by-step process:\n\n#### Step 1: Capture Original Selection\n```javascript\n// In blockStyle() - src/operations/block.js:17-18\nconst originalSelectionStart = textarea.selectionStart\nconst originalSelectionEnd = textarea.selectionEnd\n```\n\n#### Step 2: Calculate New Selection After Formatting\nWhen adding formatting (e.g., `**text**`):\n```javascript\n// src/operations/block.js:58-60\nlet replacementText = prefixToUse + selectedText + suffixToUse\nselectionStart = originalSelectionStart + prefixToUse.length\nselectionEnd = originalSelectionEnd + prefixToUse.length\n```\n\nWhen removing formatting (toggle off):\n```javascript\n// src/operations/block.js:46-54\nconst replacementText = selectedText.slice(prefixToUse.length, -suffixToUse.length)\nif (originalSelectionStart === originalSelectionEnd) {\n  // Cursor position (no selection)\n  let position = originalSelectionStart - prefixToUse.length\n  selectionStart = selectionEnd = position\n} else {\n  // Keep selection on unformatted text\n  selectionEnd = selectionStart + replacementText.length\n}\n```\n\n#### Step 3: Apply Text Change with Native Undo Support\n```javascript\n// In insertText() - src/core/insertion.js:24-31\ntextarea.contentEditable = 'true'\ntry {\n  // Try native method first (preserves undo/redo)\n  canInsertText = document.execCommand('insertText', false, text)\n} catch (error) {\n  canInsertText = false\n}\ntextarea.contentEditable = 'false'\n```\n\n#### Step 4: Restore Selection at Calculated Position\n```javascript\n// src/core/insertion.js:56-60\nif (selectionStart != null && selectionEnd != null) {\n  textarea.setSelectionRange(selectionStart, selectionEnd)\n} else {\n  textarea.setSelectionRange(originalSelectionStart, textarea.selectionEnd)\n}\n```\n\n#### Why This Matters\nThis careful selection management creates a professional editing experience:\n- **Multiple formats**: Apply bold, then immediately italic without reselecting\n- **Visual feedback**: See exactly what text is affected\n- **Keyboard friendly**: Selection persists for keyboard shortcuts\n- **Undo/redo aware**: Selection state is part of the undo stack\n\n#### Example Flow\n1. User selects \"hello world\"\n2. User clicks Bold button\n3. Text becomes \"**hello world**\"\n4. \"hello world\" remains selected (without the ** markers)\n5. User can immediately click Italic to get \"**_hello world_**\"\n\n## 🧪 Testing\n\nOpen `test.html` in a browser to run the comprehensive test suite with 38 test cases covering:\n\n- All formatting functions\n- Edge cases and boundary conditions\n- Selection management\n- Format detection\n- Custom formats\n\n## 📦 Installation\n\n```bash\nnpm install markdown-actions\n```\n\nThen import the functions you need:\n\n```javascript\nimport { toggleBold, toggleItalic } from 'markdown-actions'\n```\n\n## ⚠️ Known Limitations\n\n### Code Block Detection\nCode format detection (`getActiveFormats`) currently has limitations with multi-line code blocks:\n- Detection works reliably for inline code (`` `code` ``) \n- Detection inside code blocks (` ```code blocks``` `) is inconsistent\n- The toggle functionality works correctly, but toolbar highlighting may be unreliable\n\n**Workaround**: Consider disabling code format detection in toolbar implementations until this is resolved.\n\n## 🤝 Contributing\n\nContributions are welcome! The codebase is intentionally simple and well-commented. Key files:\n\n- `src/index.js` - Public API functions\n- `src/core/` - Core utilities (selection, insertion, formats)\n- `src/operations/` - Text manipulation logic\n- `demo.html` - Interactive demonstration\n- `test.html` - Test suite\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\nThis project is derived from [GitHub's markdown-toolbar-element](https://github.com/github/markdown-toolbar-element), which is also MIT licensed.\n\n## 🙏 Credits\n\nThis library is based on the excellent work by GitHub, Inc. on [markdown-toolbar-element](https://github.com/github/markdown-toolbar-element).\n\n**Original Copyright:** Copyright (c) 2017-2018 GitHub, Inc.\n\nThe core text manipulation logic, selection handling algorithms, and the approach to markdown formatting were extracted and adapted from GitHub's implementation. We're grateful for their decision to open-source this battle-tested code that powers markdown editing on GitHub.com.\n\n### Key Contributors\n\n- **GitHub, Inc.** - Original implementation and algorithms\n- **markdown-toolbar-element contributors** - Ongoing improvements to the source implementation\n\n## 🔮 Future Plans\n\n- [ ] npm package publication\n- [ ] TypeScript definitions\n- [ ] Table formatting support\n- [ ] Footnote support\n- [ ] More custom format templates\n- [ ] Plugin system for extensions\n- [ ] Framework-specific wrappers (React hooks, Vue composables)\n\n## 🐛 Known Issues\n\n- Multi-cursor selection not supported (browser limitation)\n- Some IME (Input Method Editor) edge cases with Asian languages\n- Undo grouping may vary between browsers\n\n## 📊 Browser Support\n\n- ✅ Chrome/Edge (latest)\n- ✅ Firefox (latest)\n- ✅ Safari (latest)\n- ✅ Mobile browsers (iOS Safari, Chrome Android)\n\nRequires: `HTMLTextAreaElement.selectionStart/End` and `setSelectionRange()`\n\n---\n\nBuilt with ❤️ using proven patterns from GitHub's markdown-toolbar-element","readmeFilename":"README.md"}