{"_id":"textarea-markdown-editor","_rev":"27-88a7719b2a572e78a52bce1af4d1f616","name":"textarea-markdown-editor","dist-tags":{"latest":"1.0.4","rc":"1.0.5-rc.4"},"versions":{"0.1.0":{"name":"textarea-markdown-editor","version":"0.1.0","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"b9cdda937997e062f1c63b1ff4e1be661ff6df43","_id":"textarea-markdown-editor@0.1.0","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-JJSB+vQhEJiYXEmyGu3dOjp31XSFiMtp4sfZDtgaKwvCywqu+kixHjQ9r5LafuEDWYSgbR4/szaTxPku7UCJHQ==","shasum":"da43c5d46fd47a365b11e18555287b0b5327feb3","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.0.tgz","fileCount":16,"unpackedSize":55702,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm8aJCRA9TVsSAnZWagAAfDIQAJ2G5Yuo+0CVkv2rS9ak\nbkMwoyelCzv24MC9qFLYHhGrhKe0sPxtTC4cTJQy8WyTahGuFs11kQNlc4cu\ns5S20rkHpSm5xXcyoX2ZOQwv/7/mJLN1BWwgXXrpKbV1fAoP4iGk8hWOfZ2t\nEm44ff32eXwCr8zsxPh1ONk4/H2VmYmonYdV0IvvM2bPnhVPXa1CHkTsRtTf\nL/Fe3xRYodeLshgKV4IdaPdMxWvoZ+dVg/59JzjzaLZZmSNeed26RSfsffKA\nVDgLnuEUlYV7rfw9Ic/rZsOjbOWFbtn+JoDy85SPJw6dxWZcinvHlYAWRzmr\nwHHXoQPorE9V5pm2HDibQMuP5NVzwH+Xbzue2TuYFM0Kg/9PDQYN7BPdcLqi\n7GcznM2zhG5i5zvqY9zya2KZPgZzRZvRRw/MRtODDK3r7UYayAvHhybyUKXs\n4wm2DpExlYnPmt3PxWxt6wxTM6VD6oR1oq652A87BJGOrmyZr1bLoZN4/Pzn\nubtah3cMnNHe58RLvm5vUIOpWObEUEw9iwbp4at/9rgoKrucEWym2LYU39zN\noCmQ9tkjQyqS/DYrubAL+5+9MA6XAA1UMli3pT1Hp20uHvln9i4clcB14uzX\nPNCnNxWS4mYpjnXHFlv0I9f1MJFFy4rPlpRzUkACPAjg335yj2WA/XJWKnuN\nlDLq\r\n=ams5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDEC/tsUvEEzgAtQ6E5JZF91KmsdNGene4P6zeZHxBKzAiBSfvJ5fW/CV07P0h43E5v3vjNThDb4hg5n79GlpCGrsA=="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.0_1620821640713_0.16201563195389013"},"_hasShrinkwrap":false},"0.1.1":{"name":"textarea-markdown-editor","version":"0.1.1","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"66cdb60b963bc9a620ab2c3fc7d6344c969ece67","_id":"textarea-markdown-editor@0.1.1","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-w9uL0TyasQ23bWCKLm0ttNtHW00ns4RgAXIsz0cHrJoXk3hxGzj3ip4vKTF95X06oeqMvnDL9SIPf7SXFSazFQ==","shasum":"b32b81e798ce50047c5e14487fd3ddb0d0fed28a","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.1.tgz","fileCount":16,"unpackedSize":55817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm8etCRA9TVsSAnZWagAA6KgP+wTioU9w5deKwQEU7WFu\naQOGcFzu1VVMx31jlvgi+uR4F9KQyMDNvTvVObTbploZN3mq3OfpbugxkNNa\nn2Jj3mdT20S/Do7jbjmmqDX8l/CdKVhL+ds0pY8MKITPJi1+WTyofUqsonWa\noAX0hCx7CiLSs8aJS3pQ2CUFpn+ZKzHCJv2tIamhobSYqlRKm/EsQ/Ffs4e3\nucdbQgoSnTgjXEWm5FtUXO0fyxUL/G9ijw1VAmKs8hJwF+KgpphWSV3JtZAl\nS1I0V2sCnkITNPc4BBUtqqgK6lH9laER2uqgXQJgADO67KBxVGf3/hxs2Fig\nT20+8IIiNHtG75Pg8anj8cNbaHW87x0mxVB3MwuEbJ/XeNG4+kqQa//+uCeu\nGo3gjUnU2GR+XluEvlzCDYUPSmnUAmDelwwJsfRlgZmM8cl3+nExz2vgbjqY\nJaEzbqEcYacC9vgu1EnzT7Ur+vhfXST8qVm4eQ1KyxrZntRCL60xHNRzJQln\ntZFnQ8sE3gh1DENhrKbQHPuDlZPx3TfD/ceLJqZKP3ZA6zAah3NDBi4TrBOY\nWGYytezSAO44rljNwRqIsV7CwnTrC4+0MFBt/7YBO9M//89D6B29P8G11zvB\nDc9kX7i8a/GZSkLiJSrZKuT8+PJ3ddAztE4IOdLXgwmdH+4ZD8i0cR0vvblk\nkC2M\r\n=VI1s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDM8lgoNPib2NYgymAjUwsP2HOv9PWKO8xRAxHhEreiqQIhAIf67fy+Dl1u3n3vrxLYHGtld2PtcLov9Et2vRJ9fDwy"}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.1_1620821932758_0.4078394940892265"},"_hasShrinkwrap":false},"0.1.2":{"name":"textarea-markdown-editor","version":"0.1.2","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"1b3a18f18e7e3f60d85e914633edd9334ead7040","_id":"textarea-markdown-editor@0.1.2","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-YYDQbOFj5OzH4NXsDbF3Mcew/Ocxr8LWy3aXD29cwQ6I2MB3/ee69Uq3tF7+k6MQPvKjuETnnexbAK5DUO1L1Q==","shasum":"39e27fba73efc48a9ef4dbfe44119d8fcfb47eca","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.2.tgz","fileCount":18,"unpackedSize":65862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm8/jCRA9TVsSAnZWagAAP80P/0gsVs9nGVBkFdUHP6Iv\n7sA8xTuJmDM10PRt+piCbVVJ6CdfrV3MhvIphk0qD07+6g50fDnrB9uGRuO/\nh5b0aaIf+aqRXU7q54yYc46uG/OjyUs4s0q+ybg1E8icRn42e/Fuok76Zzto\nxQ2JARQEmhvSA71/ApPPzEZJQ3iApwU6z2qFL2b38ZCT0fG+9CbS8mUikq4p\nkyu2iZce54d1HdlqstaAwUgMj9+Dguz97KODtlTydBzoGWZgOS6LaOpWH5jJ\nVHFtFwUTDfcpx0AxZAkO97krPR6jbE1EgWI63WtQQXXc/Kzs+ld9tRfsjUpF\nmlKXcTdvJxP+wS5kDh1brVsQaEpZyPSZUG6xRREKFn3xP2GybnLK0LNc98yY\nznBaEhmw0Vd0OfbchwhFhHWoVIQwP4XQcLuQD5GDof3ejm+fC53++9idi2gA\ngEMlR3eDnPhGr1RDVPA7Su7PRX249smTqo57OiyPlFOwMmMDx47jeEXgc4pj\nAIOYpffTQsLcEtUM5fgO6yB/UACFUz8lU7hBsvbtYk89iCXYrU7732ZX4VvV\nURKvYyZVqLQXbdoWxBs/otl2+rA/1Tb2eczTZdCKHyxuZm41JGtQHNV3lct6\nGmOvCdv4PLKrYlb26Ru1Tow8M1UxBLho3Adu4gCB0abaQAZN5mxqPq6HlYXq\nGH9O\r\n=Lgrf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2Xf19dDua9U94Q6M2obZ1sO1EGDB+Cizzt0Ult7QRZgIgU9u8D0CFMsRa2aQU75YLM0mroIF6phg8U4zBW1PZi8s="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.2_1620824035154_0.08702518086189626"},"_hasShrinkwrap":false},"0.1.3":{"name":"textarea-markdown-editor","version":"0.1.3","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"570a7a9d1b0e4d55f7a090061cb8c06fef99b34b","_id":"textarea-markdown-editor@0.1.3","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-o/Y6VJtyggJEfTn508agRXzoN4b583ya1YGsypkWuoclbzbMhtL6Fc9ubXXP1yOn9ivXxm+4wW1jxkGX1BEKew==","shasum":"0439e9382d43021e14324cefca6376aaaac69c7e","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.3.tgz","fileCount":20,"unpackedSize":412290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm9RZCRA9TVsSAnZWagAAq+gQAIpub/QBGoGqkLh4pHcR\nmOhGtNwb8Cdr7oNfgESyFrq6oZPlCnfl2UcCtm5NjiottKlQZLAN63sy76+G\nSbtOO83ButGKNt+LZ0zQIqVZQ4sFB0q9rKYbN9/RRvW2BTFuhR3kuN8CEAEK\nCsUC6kAl3bhvV1lZ1Q5Iii2MGzHRhOBp8d/q/FZL4Ejg380vG2ya10X6B7HV\nmPrqTiIv0RpkX66bXZnBLRPkG82kgbcoXAot1klz9HdWkYpnHu6G+o7xUwVG\n2WG5xb2IbZOuD8IpFqs/V3i96VYpoxAP0WVK3RlKNdQnCjuwQCjkxiCd8ExH\n3Vjd1igpSmfxtz5M0pbM/Q+ddrKDP5tFdW6CcIoHKgw3F0sgkYeZ1mPyvMDE\nwPuh/UW098dyepcU2Ny5K1yQGXMIlCjuBtFPHkSiO8PP29R033e/GBkl11Mf\n3+hOwQXCaLrkG+Efcjl9BhAxx9JKR9nyVicEzW9MbB4HS2M65QK2IxIjibAN\n8v/AL+wi/JN5jfLQpuDjE9nKyAx8m13bxuLbrfxFrtL35fNGkM9jA7wJTP1f\nxO4ptwSYqPOAiIOpG8T0f/octkOUevSgqT2fz6N2viIQ4oCwduDoe4/34XG8\nEYrBZnWuQCCfMr8Ae+UpqA6YewO9pxnIrpVXwxQr84N8Ewz8253VBLo8uunj\nDp/j\r\n=7azB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSn/eiDYfDYKo8g+KAv7RtcZ/kXakV5+ZIoaIyE9CoVAIgasXOodUf4vv/S1tVJJ5Kgu20zh51/a4FMfeTu1knzyw="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.3_1620825177189_0.2594348623893601"},"_hasShrinkwrap":false},"0.1.4":{"name":"textarea-markdown-editor","version":"0.1.4","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"5aa0ca0f6a4f9ee2b13af31405886b904617b599","_id":"textarea-markdown-editor@0.1.4","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-JBHY7xuvNO6HZDTqSBN+vDSI63HtbrgtCuE2cJCTNcoHk01YZ9P/1IxGcEA6nShl6hhNduLedCm1R4eN/W4bcA==","shasum":"017ee50208c20ed09b281e6283f2070662413be5","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.4.tgz","fileCount":20,"unpackedSize":412365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm9VBCRA9TVsSAnZWagAADVkP+gPJPudNUDPTF+nBGiMy\ntTdGHiiZxwkEJt5NOr0YLoCRte1SVNFzaElFMpU1JxAba525HsEiN96j3Ic4\n5VzRXAJ2ZpYudrfQGlzJ37cefXyTU3fRucFBFe244mfMUSBrU9jtqfr59ICw\nKl7Ds0tvsBnG3as+k/0VZ+CXiX+Ajnj/lUKm2o+bNstqKPfPBowA+PctwNgu\nzq3rhoFezlwARDDW54rTWDQZCBSP45rw9pL2lw4FBesqT3UWm0E3ECZ6heRc\n0nzqe2QEPmCOa572Kz9kUWnbNpKtX47sokHG82ImtwldFTKDRlFdcSz+D/8K\nGIjU6JRvunVDxPjKMAKM3EMjLk93bUyWBQnIJ7NPHCZuPKxzf/oqDgbvn8iA\nFrc1JGeDfJ09p4wVc+iAk7fjr/hdOrxIrlpdft8fhCSUriwPxpSgZZWI3VeC\nyihS94wCD/jMQk/CPX4NM9lrOYQn8gNDPbJ9+s2jP3SE0Eb8dHsbeUNy5dcZ\nUJrGv1b4gMZHbExSd7ZR64MhKkAdmICpfQOq3m+JKcUI9MKfgkkVcbpKhngx\nlqYOiCsz8EwkcFiUiOlwTHE/LWealHuQnLHwNT09ZPi7NqUJMWuml729lv++\npaMc4BZwH0J9vPq290INSCYpf6tc0l/hf9B2oGB5ncWZPo80RNEFk1AUAL5N\n/8yD\r\n=UWGe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB+9pyBZGvdDGcp42fKUbZf2j4ji+3Ipo4gBRoMogq2BAiEAsHP1FwvxmMXQiN+8nPuVLEIicwrkl+kh12KGPog2l6Q="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.4_1620825408934_0.5798559537385901"},"_hasShrinkwrap":false},"0.1.5":{"name":"textarea-markdown-editor","version":"0.1.5","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"66655033c3691212bd34c5a167825218ce117ed0","_id":"textarea-markdown-editor@0.1.5","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-BfgcM+bKRGGFk8RCv84lDx+iumjpwDYMDg1dM2atH1zctLKO3RdpjxmLyD9WJcSPDROxChy8taflh9nDF8u2MQ==","shasum":"c8255f7f1610223cff16c4d61076c1bfb577ada9","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.5.tgz","fileCount":18,"unpackedSize":69580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnAa7CRA9TVsSAnZWagAApcgP/2lkRL7M6Ug93oc5/4p2\nKLXbEfU19e94swedkQaEMMY0knv4FW4hyETcdUC6rIHp0AZecX66WTGFLmvj\nQlvViUWzaJkvu/AE3XdIDFXO2ydEilTqUIJ7Zwm6NQSAAdpfcc4kJwgxr61K\neQ14B1/8BMjc5TKChbobNtS0/UvSnzRZzO+uqBEQwcVzAL7FYhr/KrdtBQUj\nXfsi9O4DNPMtceVCWAl0FEYH/Wp8L5XNewibuEPuZjem/cBy3nlm3HvbFEat\nSR7nDeErmN0e0NXdS7VerchSuge88KVpZabxV56nBt2ISNhpPLolFxv15lPm\ns2/qT30pPGXpEyFhXaZnD5Dt6u/yihcLAXxc6PFT8alpU1jRjHfzoji//gEn\nOf3sUTFKE77ouifMJnZnyNuVlEfqAPvZGEqjdbDi2ytElZZE4VU6CLqoBwcJ\nEDr52+tKc7TLaHd5j5vnfyD2Q0K+q+OIRTtjgVpDHxTEeyNSWf1VNvNbgmdQ\nqeqJMaayqfkkoXtjkGUcJUOpKXr1Mwps/x1GFLf/y++92ogEsE3UTxyjKITU\napQVkZybyz3NNcC4u71BbXc9W4eDb/tJziawovtdl5ubITEnTwOjXQUNX1bO\nlZPGw6cau5do4o27rwwaHVez51wJJUBY2xzyy8qjJtbdYgGzOCkjVp+BnkiS\ngucr\r\n=ERWZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHos1apmwtl2HN1V7TXUE48vzrkHUUsppQ65PZa6wX5JAiEAiiFwi4lXw6nYJ4I5txInAJzZ18Y3f5ewRdqzcVA7DiE="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.5_1620838075311_0.9212008348711771"},"_hasShrinkwrap":false},"0.1.6":{"name":"textarea-markdown-editor","version":"0.1.6","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"a6bf4152724b5f50ed56ba454e15558ec62e0d69","_id":"textarea-markdown-editor@0.1.6","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ku4jhmaiozzdxMfAX9iuSBvOFgE9qKX1+78/BaBS07buR/Hh4ZwZ71FPhIuzIxJeHKcAw5AZimEB5cJsbjrJQA==","shasum":"1a7c2d9ee32f1b07e6d7dda97357c8286fd83551","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.6.tgz","fileCount":18,"unpackedSize":70106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnmITCRA9TVsSAnZWagAALNgP/0GM/5JEGhYfybsDpvgW\nXoxafEAC9AvH2ViVt+uCUdKk8kNH4Ezp6Ha5y3W9RTW40LohyaYWv8lwZwN/\ny7iBkh0OoF/a8Pd0fnudFAqJw8jazNPW1pCc4Iwe2XIW5wyZX/3QsvsUgiBV\n9CDJ5JCMPgxEkgF6rsaSFri+IqD3NZ5/XyPZm4UoXsqbAb034yEAu8t99VBu\nXtsStwSdRo5Q6c0lmRo7ZM6+xPmTZB+6YtIXXo8+WCFcuEg1RQkktIVhVy1m\n2c/hDlN22h3WeUBUWyS5KWMvpWnvn7knjDkiD07q31PIqjchULzd/TdbPhwk\nSW6LE298+IBIzeCd9fqia3A/yJ8wBuOisHAdcbZiLYJAFVJg0OBdmE3017in\nMN1tcBcN/5DNP0fgGXiKFW6Gp/1R6i5J3/rb13UcwNunWIS7x5L16t0T7vfM\nVD/2Rsq5dgPpXroKPZtDefKluqCo1liznT4pgZ6V51Gxzpy/alxnlfdAkudC\nUHveq0p1ZJcOBQjHGQUxVPdYCt2Tnht3bx0Wtoa/WfKCOfD7b6pWp3m1Nix+\nkQw/bun2g8ls8fQpZvqZck3aDwYHNw0elBhpgddd3CdhLWNj9bYb2hQ0Xxnk\n92C93cWJX1Up/OZPtT+Xr9iPFWQHGjZGi0i9cKLuaNLxqaCEqnewDP28Lovz\nA+I2\r\n=o6Tj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCepS/ikWZOYYTmA3HNUSlD3Mkcz3CC9En381zwFAe6nwIgAfWiO6ZqdmSh5YO11X+yE/OtR2rSDmJgD6qQFvCbtgI="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.6_1620992530666_0.4389468290742713"},"_hasShrinkwrap":false},"0.1.7":{"name":"textarea-markdown-editor","version":"0.1.7","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","jest-environment-jsdom-sixteen":"^2.0.0","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest --env=jsdom-sixteen","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"774ab039d46dae443c5ff6b4b60ea50c2419e788","_id":"textarea-markdown-editor@0.1.7","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-jAHVkRaXXf4NEm+XwwIrz2pPYtFGuNcVX/MYssSoG3SieA2IUToeITXXUWribCRLkusiicBvI3t0uRMg1aFYxA==","shasum":"f787005e5cd3a52dd8276640f2b7daedbbf60dcd","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.7.tgz","fileCount":18,"unpackedSize":74857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgoFNYCRA9TVsSAnZWagAAhgwP/0y05eeTjD1SslJMLbCV\nxQEnpsBOA6rdLy83q194lZ1DZrmJLNV/PJB8HTjKsuSU26d26wlH+7nsIUU8\nvj8eZef1G5eUAkrChgaye3WZ9ifkp7VMGL4HqlVmKHk2ERm3WHhjrt3Vpc6t\nza9QFAYzGq0lyIzxL6cfLOzkWzraaEzDeEWh2MokaVOk2tUY7JFj9JiCRLOr\nbMhNQmEOZT8WD9vwdi8FkX4KBDNR0xVeERovJXCj413Jh9e9gzP6iQOG4tzm\n+uZwQBsVT15QwMe6NyfSnloo4VLkkVPtt7txzKr0fMaubJdPRSIyeuCckKie\nMDR51sAx7SqWXtyjMWoUOnm02HDH3CTzDgCJUdJ3Pk0PSHiK3Ww5JY3AzLkd\n5L0Jgc4nP3c45TsRhv1OtdQrk806A8rZnQp6sJHP4AXPMIyLwEEJkZLUzRA2\n62WHf85o1YD2V0mGgW/fDsZN5jfrvsZ8z03494AfjepsMl4iHyuPStJUW/2w\ncFD5wz7KscxP5fkZZgWgm7ATRONn3PJhaWq+m5R+d4n++B8SpVTiPOdSsxX5\nzHCfMJdx8Gv8rF7eXWokCUNxj+HVlozGQxC83QRZ7yv+qM19ngSafdKo2H5r\nbA+MOnGnlw0LO3P7ktGLAM5wUYFPuk/21+7uAGHdRthqi0qLVSIpQeOvi+Pt\n9a/F\r\n=bGXZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBIHvOEL9xBlef0tazxqZMdiBegvTVGGt6M4E2YABfQMAiEAjo+LkKDnBVOP2cnZWRYd6Y1gvsL8qE1Huh4wpSzkDcY="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.7_1621119831614_0.13927606797275804"},"_hasShrinkwrap":false},"0.1.8":{"name":"textarea-markdown-editor","version":"0.1.8","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","jest-environment-jsdom-sixteen":"^2.0.0","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest --env=jsdom-sixteen","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"ee14a65be22a5ddc667c47dffd8bb685606d3047","_id":"textarea-markdown-editor@0.1.8","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-m+gruGtycDmN0LWNgCFqLSC2LBVSgbNxByHhqa4xDeVlEp9A0QJghKrDtsnB5leNyMgbIVWnKp1gWUX/tEGLLg==","shasum":"c873b37d527ab8d692b821ad72d2592944119bd9","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.8.tgz","fileCount":18,"unpackedSize":76551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgoa/YCRA9TVsSAnZWagAAG98P/1Q1MOljgYa9KnMi+WEx\narWknWDOLAxjFcmCvhEMTqfJa1VckWcxjiWV6qfXl6WCvEe2JJRgj0Si49de\nkxSRquS5cvECgXpBIuQ2pIehackzPhFbdYxdIUqcQOIGCAFecYTj7F+g6zl1\n/Fy9QO8VhznhLyTAcZUXIINXM/MJnc5R3HNjE65K6ECOcJT0fDya3nto22lL\n89C40i7JiIUreKFKji7mVEfhRwizwkUy0gys9R2w+CWKxItnLr/bG79qC2Zm\n+c2zcQuJZrQVaody7ho+gb6V1GY4IBdPXARpcnndWMH1AGpbag0P5kdh1GhB\nnzwq0K1awxDHj7ff03SPyq7ttOupyAHUqJ2RuGWaSvcybVitIgOEtnponAQQ\nzCvXOUAGeHxivzrSQvhLVrpoO+Kqmd9/9HY0V/vYzDVCHfBOBe1OWGAjuqYb\n5cX1ktSRZfLJf1kqPrev99xrttdOLAlImN9MdcPxw+EQks6B8qs//1T0jEiS\nvA8y1HTkjv3mTVawWDRU4fkNVXtftuuwGaosx24zGPVUOcrZcE+xO9O6Iz3x\nlFGUwYZmRYw/rKe4ee3DqsqzD8tULzOUXI2Tn8ky8MVJS1CujvvYJWrBLotw\nBIKGtaCCimdTT0dp5L/MDOptkQzvfwtRsRa+vccITKorL5rJI/SWW961JRFR\nVoSy\r\n=1avs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD50fMiQ7Jd7/T2W1zt5PZWGnRYvKYTmLzHo4N+k0hbKwIgc/HOTkLlxMqi+PLDfHJIBW+IUkUN3aHLCQZkMUJjGD4="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.8_1621209048193_0.903382240274474"},"_hasShrinkwrap":false},"0.1.9":{"name":"textarea-markdown-editor","version":"0.1.9","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","jest-environment-jsdom-sixteen":"^2.0.0","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest --env=jsdom-sixteen","prepublish":"npm run test -- --watchAll=false && npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"9ca5dcd4a92ee3e50edb7df1d86b3c7ac192a53b","_id":"textarea-markdown-editor@0.1.9","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-UJqr73d+ItfBOzg8WuHW3cCx11DuD3yd7YlkF2FIQRJNqOQK6rvT11DdUvEC6c5K8jRyPePrLlXO66MB+KrJ/w==","shasum":"b0f9d9861131c7cf65c6a7f52578846735e9aeb9","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.9.tgz","fileCount":18,"unpackedSize":76557,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJSvsCRA9TVsSAnZWagAA3qkQAI1uVWTFa/Pz590gKh/H\nVY4VqaQu4Nuu7B/0DuyEPEeG4Cz+5KKhTXEUdtJI6ACnjNScv+rnWgiRG7Lv\nDEiUXeKRN9thosVV4E+GhnakQOaZQZ+PGjqjmB8kuSliiVdG2C3by0qthBv8\nskA2a7ipWZ1N9Vwrl/JE6TkQd4IKqyOn9NOoBQe7VQ0Al0tsNGeJaiJCpmBE\n3cxBHOmsc0KrIJKTB3LfIAw8nXthNsr4iTJwxSojTjdkZofDUd5grCDV9mI8\nobrUKj51UCgwm1ajWwiFjVEsU51p7TlLnf7aVUFkwS2ZRnLjl0GnuI5sWNZw\nY86sDOSlttf7rl4Q0G3ipXXO19U5nqPcTQD/l3SlgbngKRYqCM1o81zvb5JC\nvLXS/SvKknyLomGqdFe7L2JccwX4YPHbMlkY3Oq8M3N9ALylVDV7/y8S7Ru9\niDsjcfXh14Cp9YSF5QHXaPpGTGXFlgv8N7sq3k8hmmWH1DnnovGEAgdgbuKh\nbuVCk9660SeXKO0VwSTUCoKpk1LXAR46D4tAgctd5VrRBgiSUdfkibAURiBM\nGd2/eqhtT2D3YplbWWyvTR5GVpM/qONr9gqYUbE3CSYmOKDTzchbKz1XuzAl\nIalQh+rWqt9Et/udtaNfJgijbgoRbu5yewX6PocaMuCjZulBYH7NZZy4B6lW\n/iGe\r\n=Ah3F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDRdCoOLUF5FuBqiP35amqm50Oqhl3S3wWtmmhHkwcv5AiB46Vz4opnKxEmRW5neXDnK7C6zHttxYEmCapb65Th8JQ=="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.9_1629826028033_0.5113200116628229"},"_hasShrinkwrap":false},"0.1.11":{"name":"textarea-markdown-editor","version":"0.1.11","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","jest-environment-jsdom-sixteen":"^2.0.0","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest --env=jsdom-sixteen","prepublish":"npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm link textarea-markdown-editor; npm link sandbox/node_modules/react; npm --prefix sandbox run start"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"8ab49b06c52841421d47b8560c479472b34d46d8","_id":"textarea-markdown-editor@0.1.11","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-3/jsisdvJIxAPy5/ub5fYoaygN6uJzRE8hthjzPiUTJHm4aCEmQ7gW488nen1zsLR/6l9HI/+j2do/+bp3IWfg==","shasum":"0eb23ebb6bee25a9ac1ec528d02876986c1fdf3b","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.11.tgz","fileCount":18,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhNhTmCRA9TVsSAnZWagAAaSQP/19s1/YM9r8G1KAca+aX\nfyGWFhcrYg+bny4dhU+pg5AG1AceqKAGh+tXQD4IRNoJlxuwMcEg0pa9JJJ0\n4T/AOuUe77UmxDDWR7TnvbTNkZZAQ6l5oaai5UnGL5BCTih/zlCATUm2Ae+u\n98VoqcCL8UrEbsfyflDn21WQH4kFNpoC9A+BGB6bi9gzRKPIQX0/MTEadw3u\nfcUIhVBzZbnLcd7d1a0WwzVO1JGAM6GbqFGKVhdBHYVYYnxlfQlPs830BR9j\n6RKy80ViVvt98nnsy5hPTC66VCK1MTntSQyjZU/KccHrCsJmWWwv9fWSms13\nGzwbuja8NpGs5+zOhDv6+J/F93Iz1vztex2SgLgc1VgJPO/p5j9+f6t4/H8z\nuuSMHUPMYp9jaiObc7/sE6+xYJivDe8dM1AiJDwas9No/XDz8/8vPGzCYRhL\nd8YNBNkNK4crBJSwN6WOuhal1hd2eP2WY9/6qHOnGtDgiiRQd3Qqu1NPEKmQ\n+g8I8OoQuawwAvCF+c1WgwqqhVV5ymu5TJb3pmS2czQ0OJRFAPcdDyL/ClFg\nmihND5hk5hGH503TeS5cxvKAIEYpdIzScSDMHg+LkW1oBBRB4Y9RgdiFf68U\nYijddyGIcE94slWx5WgLA1GPipRdNUAXGOWdskNBYSHUEZsjvOGHoBq+zokP\nyb7Q\r\n=/B8Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDG7PQCGO52Acf/9GW1HuHjkpT+D1IZkjtDGTBCDW0QsAiEA8QnkuD1a3R34Ia49ADL+DjcKc2WN5Xyg+k9yezj+wys="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.11_1630934246310_0.9045336625385763"},"_hasShrinkwrap":false},"0.1.12":{"name":"textarea-markdown-editor","version":"0.1.12","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0","react-dom":"^16.9.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","jest-environment-jsdom-sixteen":"^2.0.0","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest --env=jsdom-sixteen","prepublish":"npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm link textarea-markdown-editor; npm link sandbox/node_modules/react; npm --prefix sandbox run start"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"16c8dd8cd0d97d4c69f72939f5b8ec3581730272","_id":"textarea-markdown-editor@0.1.12","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-qCYHfcSrmUBA3r47j8SKCk8ZpG+MRvpPqNurSKrCpI9n5hGx8DfudIZA8m+kl4aNGkniZ6aEF5PyzXR8zpKOKQ==","shasum":"087abe97e2abbd7801f547d819cb44b6dc1e3c92","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.12.tgz","fileCount":16,"unpackedSize":72720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh29pzCRA9TVsSAnZWagAAfNkP+wXwZm3j9HybImCdXDu4\nOU2htJFuFEq7++xySNCEJ9Sat0hd9fDIp2QJmse17ZC3K0/Nn6siJSauTxED\nMuGz4nsWtpjCniXusUJ2GWbhKTSaV2jg4i8N1jz843BduOzCubVd2ORyrbpb\nWwF8V1McVUZLi7NQJx9NuIey5AE1M5aTGKHbIYO2yraWWJsoj016BaSPTdTI\nd6k+R2uLKCVt29SKkB/0/pTCtdvG5XeOe1yaBo6idsaTQM54BNM0hc1maNFa\nCedzMbWxafIUdDAuoEdCh2Tq2+XB0ruM+cqQnBE5dUftS5v+tkSmotcvUCS8\n1tradbO9g11xVdRSIM/Ul7QzIakaZbSW8eJL7CyC0+d+iXmntFFrTn3BGCdt\nQ9HXJhdgJSukrNEu9wKNo2lLQvJrkgs7YxgGOWoq90Rko2bw01cTFnIXNoaf\ny7al59txuZH7HKlXjNQQDZU2ewQ6tIqn+MXvI147st2e7qLWP0i6qHlzYH6r\nUze2EQEcknqUFPBa7ZZ4GooVg/NdhXZ6/pwUmML9NlnRVcMs1eHIKzmppcan\njz2c+DJ+cJBPT7IQk56kcPz8z0iR8XfeBgDUs0QJP/im+1c2p6czgq9y/cUj\nnRS3olblBzJgPXYAz4w+IRAc1f6KTO0QlvNtF6aYWgVPB+eKRfOhU1+qdduI\n7yo6\r\n=RKyy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDB7XU61OM/Z8b7DIg/uRvHc3G7k7amsyqI5r0DKP4QKAiAR0tPk63qOyF27CzhSBQFl+xEPY7EP5AYS42LTywUj6g=="}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.12_1636209181842_0.8913054289799693"},"_hasShrinkwrap":false},"0.1.13":{"name":"textarea-markdown-editor","version":"0.1.13","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.9.0 || ^17.0","react-dom":"^16.9.0 || ^17.0"},"dependencies":{"mousetrap":"^1.6.5","react-trigger-change":"^1.0.2"},"devDependencies":{"@testing-library/jest-dom":"5.11.4","@testing-library/react":"11.1.0","@testing-library/user-event":"12.1.10","@types/common-tags":"1.8.0","@types/jest":"^26.0.15","@types/mousetrap":"1.6.7","@types/node":"12.0.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","common-tags":"1.8.0","jest":"^26.6.3","jest-environment-jsdom-sixteen":"^2.0.0","react":"16.9.0","react-dom":"16.9.0","ts-jest":"^26.5.6","typescript":"^4.0.3"},"scripts":{"build":"tsc","test":"npx jest --env=jsdom-sixteen","prepublish":"npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm link textarea-markdown-editor; npm link sandbox/node_modules/react; npm --prefix sandbox run start"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"gitHead":"c968ad1b305768722ec4d26d52a653a75565bf9a","_id":"textarea-markdown-editor@0.1.13","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2r1gTPFA/wwAzt+Aa6LVZWjJNvL0aXfR6Z9T6eQBpJ1AK6gtPVCZgkO97KIrqpAmMcwgNCz0ToYj2AqPufdVeg==","shasum":"27aeda4bc95148a8ed69021f553753feb224325f","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-0.1.13.tgz","fileCount":16,"unpackedSize":72738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8ZKBCRA9TVsSAnZWagAAk0sP/RmIB60Yq9iV+KvlVYcM\nRS25o3NM6zxDHkNGmbmhU86yUmNjhejvFGJpe0DwhsQ12iQ/tMVG3YrwOnLG\nbRptRM7FoybHw3+N3DcMdefHDui4hi0qyqJ94qoq9QI3ijzpOIm5WLMrqzav\n91GokrrKDEYwSoT9qbpj6wguibbh0YTarsy8dXaAvnPcX7e9aw9L2k+bmtbq\n9gLUysENW+XjrEj3W6WpqTQDCYhqoKXk37qoSO3LOpqXio8g21DXnG8DTDwX\nLXDpnFdc3xOirDdRja9ZE2LXZkjoD3MDP3faCo0Y5Zd6e7rZrOKPsiJ3F5uu\nY/mqeolvBOV+h8bLFyBHeYngdRqm4DDi1c8bezZOn5RY0z1yv3k4byJK2P12\ndykwM987AS3tI+SgAFjRREvn0KuaUuDcE6t4P5WAGvW2TfemZGurx3d6/3wj\nlh6bz1PkBhBnl9R86/WQXGQAKWJCYmNn40w3GVBPAnTXs++wmicYn1GBpCV8\nu+aAQf85D9uzN6eT44IWWBDqISoLFKxCtYiJocI9W3yDts65E5nA+qD0ZRgE\n2Sq5TD9/cysiZR6z5Hp5RWcgtMO/QOzNrP2aSzKIzXCd3ffQBpu+a4csYikG\nG8ApMfGq1H5+8qhnY4iR01uXZQ4uIfmOqfOvxmqkQ1ymzzriZvDyDO2A23xt\nj6SH\r\n=jjsA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzjQeGTBBwome0Ad/QeQYmZetwx7HfsE+mOJ33qVudMQIhAIajjqFxQyePT6aSMs4qRt0iOHHFwwnp5K6gghKi91jR"}]},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_0.1.13_1643221632856_0.9859937055391452"},"_hasShrinkwrap":false},"1.0.0-rc.0":{"name":"textarea-markdown-editor","version":"1.0.0-rc.0","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":">=16.9.0","react-dom":">=16.9.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.4","@testing-library/react":"13.2.0","@testing-library/user-event":"14.2.0","@types/common-tags":"1.8.1","@types/jest":"27.5.1","@types/mousetrap":"1.6.9","@types/node":"17.0.33","@types/react":"18.0.9","@types/react-dom":"18.0.4","common-tags":"1.8.2","jest":"28.1.0","jest-environment-jsdom":"28.1.0","react":"18.1.0","react-dom":"18.1.0","ts-jest":"28.0.2","typescript":"4.6.4"},"scripts":{"build":"tsc","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm link textarea-markdown-editor; npm link sandbox/node_modules/react; npm --prefix sandbox run start"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"readme":"# Textarea Markdown\n\n[![CI status][github-action-image]][github-action-url] [![codecov][codecov-image]][codecov-url] [![NPM version][npm-image]][npm-url]\n\n[npm-image]: http://img.shields.io/npm/v/textarea-markdown-editor.svg\n[npm-url]: http://npmjs.org/package/textarea-markdown-editor\n[github-action-image]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml/badge.svg\n[github-action-url]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml\n[codecov-image]: https://codecov.io/gh/Resetand/textarea-markdown-editor/branch/master/graph/badge.svg?token=OBD8KR7Y98\n[codecov-url]: https://codecov.io/gh/Resetand/textarea-markdown-editor\n\n```bash\nnpm install textarea-markdown-editor\n```\n\n---\n\n**Textarea Markdown** is a simple markdown editor using only `<textarea/>`. It extends textarea by adding formatting features like shortcuts, list-wrapping, invoked commands and other to make user experience better 🙃\n\nEssentially this library just provides the textarea Component. You can choose any markdown parser, create your own layout, and use your own textarea component that is styled and behaves however you like\n\n<p style='max-width:800px;margin-top:8%' align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Resetand/textarea-markdown-editor/master/img/overview.gif\" />\n</p>\n\n## Features\n\n-   Lists wrapping\n-   Auto formatting pasted links\n-   Indent tabulation\n-   20 built-in customizable commands\n\n## Usage\n\n```tsx\nimport React, { Fragment, useRef, useState } from \"react\";\nimport TextareaMarkdown, { TextareaMarkdownRef } from \"textarea-markdown-editor\";\n\nfunction App() {\n    const [value, setValue] = useState(\"\");\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger(\"bold\")}>Bold</button>\n            <br />\n            <TextareaMarkdown ref={ref} value={value} onChange={(e) => setValue(e.target.value)} />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Ref instance provide the `trigger` function to invoke commands\n\n### Custom textarea `Component`\n\nYou can use custom textarea Component. Just wrap it with `TextareaMarkdown.Wrapper`\n\n```tsx\nimport React, { useRef, useState } from \"react\";\nimport TextareaMarkdown, { TextareaMarkdownRef } from \"textarea-markdown-editor\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nfunction App() {\n    const [value, setValue] = useState(\"\");\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <TextareaMarkdown.Wrapper ref={ref}>\n            <TextareaAutosize value={value} onChange={(e) => setValue(e.target.value)} />\n        </TextareaMarkdown.Wrapper>\n    );\n}\n```\n\nℹ️ This solution will not create any real dom wrapper\n\n### Customize commands\n\nYou can specify or overwrite shortcuts for built-in commands or create your own\n\n```tsx\nimport React, { useRef, useState } from \"react\";\nimport TextareaMarkdown, { CommandHandler, TextareaMarkdownRef } from \"textarea-markdown-editor\";\n\n/** Inserts 🙃 at the current position and select it */\nconst emojiCommandHandler: CommandHandler = ({ cursor }) => {\n    // MARKER - means a cursor position, or a selection range if specified two markers\n    cursor.insert(`${cursor.MARKER}🙃${cursor.MARKER}`);\n};\n\nfunction App() {\n    const [value, setValue] = useState(\"\");\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger(\"insert-emoji\")}>Insert 🙃</button>\n            <br />\n            <TextareaMarkdown\n                ref={ref}\n                value={value}\n                onChange={(e) => setValue(e.target.value)}\n                commands={[\n                    {\n                        name: \"code\",\n                        shortcut: [\"command+/\", \"ctrl+/\"],\n                        shortcutPreventDefault: true,\n                    },\n                    {\n                        name: \"insert-emoji\",\n                        handler: emojiCommandHandler,\n                    },\n                ]}\n            />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Note that mutation `element.value` will not trigger `change` event on textarea element. Use `cursor.setValue(...)` or other method of `Cursor`.\n\nℹ️ [Mousetrap.js](https://craig.is/killing/mice) is used under the hood for shortcuts handling.\nIt is great solution with simple and intuitive api. You can read more about combination in the documentation\n\n### 👀 You can find more examples [here](https://github.com/Resetand/textarea-markdown-editor/tree/master/sandbox/src/examples)\n\n## API\n\n-   [TextareaMarkdownProps](#textareamarkdownprops)\n-   [Command](#command)\n-   [CommandHandler](#commandhandler)\n-   [Built-in commands](#built-in-commands)\n-   [TextareaMarkdownOptions](#textareamarkdownoptions)\n-   [TextareaMarkdownRef](#textareamarkdownref)\n\n#### `TextareaMarkdownProps`\n\nℹ️ `TextareaMarkdown` accepts all props which native textarea supports\n\n| Property     | Description                     | Type                                                  |\n| ------------ | ------------------------------- | ----------------------------------------------------- |\n| **options**  | Options config                  | [`TextareaMarkdownOptions`](#textareamarkdownoptions) |\n| **commands** | Array of commands configuration | [`Command`](#command)[]                               |\n\n---\n\n#### `Command`\n\n| Name                        | Type                                | Description                                                           |\n| :-------------------------- | :---------------------------------- | :-------------------------------------------------------------------- |\n| **name**                    | `TType`                             | Built-in or custom command name                                       |\n| **shortcut?**               | `string` \\| `string`[]              | Shortcut combinations ([Mousetrap.js](https://craig.is/killing/mice)) |\n| **shortcutPreventDefault?** | `boolean`                           | Toggle key event prevent `default:false`                              |\n| **handler?**                | [`CommandHandler`](#commandhandler) | Handler function for custom commands                                  |\n| **enable?**                 | `boolean`                           | Toggle command enabling                                               |\n\n---\n\n#### `CommandHandler`\n\n```ts\nexport type CommandHandler = (context: CommandHandlerContext) => void | Promise<void>;\n\nexport type CommandHandlerContext = {\n    textarea: HTMLTextAreaElement;\n    cursor: Cursor;\n    keyEvent?: KeyboardEvent;\n    clipboardEvent?: ClipboardEvent;\n    options: TextareaMarkdownOptions;\n};\n```\n\n---\n\n#### `Built-in commands`\n\n| Name               | Description                                                      | Shortcut               |\n| ------------------ | ---------------------------------------------------------------- | ---------------------- |\n| **bold**           | Insert or wrap bold markup                                       | `ctrl/command+b`       |\n| **italic**         | Insert or wrap italic markup                                     | `ctrl/command+i`       |\n| **strike-through** | Insert or wrap strike-through markup                             | `ctrl/command+shift+x` |\n| **link**           | Insert link markup                                               |                        |\n| **image**          | Insert image markup                                              |                        |\n| **unordered-list** | Insert unordered list markup                                     |                        |\n| **ordered-list**   | Insert ordered list markup                                       |                        |\n| **code-block**     | Insert or wrap code block markup                                 |                        |\n| **code-inline**    | Insert or wrap inline code markup                                |                        |\n| **code**           | Insert or wrap inline or block code markup dependent of selected |                        |\n| **block-quotes**   | Insert block-quotes markup                                       |                        |\n| **h1**             | Insert h1 headline                                               |                        |\n| **h2**             | Insert h2 headline                                               |                        |\n| **h3**             | Insert h3 headline                                               |                        |\n| **h4**             | Insert h4 headline                                               |                        |\n| **h5**             | Insert h5 headline                                               |                        |\n| **h6**             | Insert h6 headline                                               |                        |\n\n---\n\n### TextareaMarkdownOptions\n\n| Name                                        | Type                                        | Description                                                                                                                              |\n| :------------------------------------------ | :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |\n| **preferredBoldSyntax**                     | `\"**\"` \\| `\"__\"`                            | Preferred bold wrap syntax `default: '**'`                                                                                               |\n| **preferredItalicSyntax**                   | `\"*\"` \\| `\"_\"`                              | Preferred italic wrap syntax `default: '*'`                                                                                              |\n| **preferredUnorderedListSyntax**            | `\"-\"` \\| `\"*\"` \\| `\"+\"`                     | Preferred unordered list prefix `default: '-'`                                                                                           |\n| **enableIndentExtension**                   | `boolean`                                   | Will handle `tab` and `shift+tab` keystrokes, on which will insert/remove indentation instead of the default behavior `default:true`     |\n| **enableLinkPasteExtension**                | `boolean`                                   | Will handle `paste` event, on which will wrap pasted with link/image markup if pasted is URL `default:true`                              |\n| **enablePrefixWrappingExtension**           | `boolean`                                   | Will handle `enter` keystroke, on which will wrap current list sequence if needed `default:true`                                         |\n| **enableProperLineRemoveBehaviorExtension** | `boolean`                                   | Will handle `command/ctrl+backspace` keystrokes, on which will remove only a current line instead of the default behavior `default:true` |\n| **customPrefixWrapping**                    | (`PrefixWrappingConfig` \\| `string`)[]      | Array of custom prefixes, that need to be wrapped. (Will not work with `enablePrefixWrappingExtension:false`)                            |\n| **blockQuotesPlaceholder**                  | `string`                                    | `default: 'quote'`                                                                                                                       |\n| **boldPlaceholder**                         | `string`                                    | `default: 'bold'`                                                                                                                        |\n| **codeBlockPlaceholder**                    | `string`                                    | `default: 'code block'`                                                                                                                  |\n| **codeInlinePlaceholder**                   | `string`                                    | `default: 'code'`                                                                                                                        |\n| **headlinePlaceholder**                     | `string` \\| (`level`: `number`) => `string` | `default: (lvl) => 'headline ' + lvl`                                                                                                    |\n| **imageTextPlaceholder**                    | `string`                                    | Used inside default image markup `![<example>](...)` `default: 'example'`                                                                |\n| **imageUrlPlaceholder**                     | `string`                                    | Used inside default image markup `![...](<image.png>)` `default: 'image.png'`                                                            |\n| **italicPlaceholder**                       | `string`                                    | `default: 'italic'`                                                                                                                      |\n| **linkTextPlaceholder**                     | `string`                                    | Used inside default link markup `[<example>](...)` `default: 'example'`                                                                  |\n| **linkUrlPlaceholder**                      | `string`                                    | Used inside default image markup `![...](<url>)` `default: 'url'`                                                                        |\n| **orderedListPlaceholder**                  | `string`                                    | `default: 'ordered list'`                                                                                                                |\n| **strikeThroughPlaceholder**                | `string`                                    | `default: 'strike through'`                                                                                                              |\n| **unorderedListPlaceholder**                | `string`                                    | `default: 'unordered list'`                                                                                                              |\n\n---\n\n#### `TextareaMarkdownRef`\n\nℹ️ Extends `HTMLTextAreaElement` instance\n\n```typescript\ntrigger: (command: string) => void;\n```\n","readmeFilename":"README.md","gitHead":"18755a70d461f69bfc1be8307dcabbc0ac88a7d5","_id":"textarea-markdown-editor@1.0.0-rc.0","_nodeVersion":"14.15.0","_npmVersion":"8.10.0","dist":{"integrity":"sha512-2QzAgmDZ4DWy5VMexHxwtaBD83wyvENOFWqSore4l2S0XZTytJBwsOkww9aZ7WZgUlp4tUArzqszN4Ocuy3bSA==","shasum":"a67dc7114d2319d63ca1dd7b370eb8d0d95398a2","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.0-rc.0.tgz","fileCount":20,"unpackedSize":77681,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3qEoqOxUQlYahLbhHcqVyZK68kQnLU3uXqgF0LKqN9AIgYDDraPx8uJWU8Bdy7bHZFpoDVy/52IfPOsTjxcA4Wm0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigDmcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmokRw//cf82LuC7qYrPRh7Y9EgyU/a2TDX/H4NvMNivXh4SKV4Bf53j\r\nxRo2RKbyo8t/xZbjfVa0Y+TA18gX25DOtyni9fcX3jYZrutLw/ov1vVy6P0T\r\nVKC7ZXKOiwvmCJOyRiXJyhOucOoOggmIaUwoVCX40Cwa67I7YTlGvI7+zH5I\r\nWYBTKaDfOZNM/Ye87uhmnk8s6sgFCO4KnnmfvbH+jkoOfe6VkPat7VwKwi42\r\ngTf5TUmcXQIZc3L1U/lojoaex4aT+g3rCop3BsvYSBeDO5+p8vVa8+zYjNJk\r\n46PHNbobjm6MKkmWHuxcrCnMn9E6amVc3rDf1xQeS/Pwjs8dq0RHAkCT6OVL\r\no0nJJkcvIFunYjRv+vosR//VLfe7w9JjjlKgZiEBPxQMSFjlCIZMnLjxqpBx\r\nwGqKPoaWNw3xhEP4tfwr+0pIEMSNw+tclvknMP7zG/GiZ94qtPkeS7J0vv8K\r\nCGKQ1QHevzQoZb/EepbpQS3la1MAOImY/1GiriSG/uH0VkdbTEvK61vsnKqv\r\nk1kvu9rZE5ilfO6F98Am2xI9qHnxpyeaGgvoArEahu/Q+8OvGh/v6hTDcA4S\r\nWwJlfXhiCxOaOtJPaalyQ1m91FwJHDc+upZ0WtdAuUb1vPMISzsHkd9afggx\r\nsfr/BWJevQC/i4M4LhP83vF9K//IrsNS7nE=\r\n=cM9+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.0-rc.0_1652570524319_0.09139921647663463"},"_hasShrinkwrap":false},"1.0.0-rc.2":{"name":"textarea-markdown-editor","version":"1.0.0-rc.2","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.4","@testing-library/react":"13.2.0","@testing-library/user-event":"14.2.0","@types/common-tags":"1.8.1","@types/jest":"27.5.1","@types/mousetrap":"1.6.9","@types/node":"17.0.33","@types/react":"18.0.9","@types/react-dom":"18.0.4","common-tags":"1.8.2","jest":"28.1.0","jest-environment-jsdom":"28.1.0","npm-watch":"^0.11.0","react":"18.1.0","react-dom":"18.1.0","ts-jest":"28.0.2","typescript":"4.6.4"},"scripts":{"build":"tsc","build:watch":"npm-watch build","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"readme":"# Textarea Markdown\n\n[![CI status][github-action-image]][github-action-url] [![codecov][codecov-image]][codecov-url] [![NPM version][npm-image]][npm-url]\n\n[npm-image]: http://img.shields.io/npm/v/textarea-markdown-editor.svg\n[npm-url]: http://npmjs.org/package/textarea-markdown-editor\n[github-action-image]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml/badge.svg\n[github-action-url]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml\n[codecov-image]: https://codecov.io/gh/Resetand/textarea-markdown-editor/branch/master/graph/badge.svg?token=OBD8KR7Y98\n[codecov-url]: https://codecov.io/gh/Resetand/textarea-markdown-editor\n\n```bash\nnpm install textarea-markdown-editor\n```\n\n---\n\n**Textarea Markdown** is a simple markdown editor using only `<textarea/>`. It extends textarea by adding formatting features like shortcuts, list-wrapping, invoked commands and other to make user experience better 🙃\n\nEssentially this library just provides the textarea Component. You can choose any markdown parser, create your own layout, and use your own textarea component that is styled and behaves however you like\n\n<p style='max-width:800px;margin-top:8%' align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Resetand/textarea-markdown-editor/master/img/overview.gif\" />\n</p>\n\n## Features\n\n-   Lists wrapping\n-   Auto formatting pasted links\n-   Indent tabulation\n-   Keyboard shortcuts handling\n-   17 built-in customizable commands\n\n## Usage\n\n```tsx\nimport React, { Fragment, useRef, useState } from \"react\";\nimport TextareaMarkdown, { TextareaMarkdownRef } from \"textarea-markdown-editor\";\n\nfunction App() {\n    const [value, setValue] = useState(\"\");\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger(\"bold\")}>Bold</button>\n            <br />\n            <TextareaMarkdown ref={ref} value={value} onChange={(e) => setValue(e.target.value)} />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Ref instance provide the `trigger` function to invoke commands\n\n### Custom textarea `Component`\n\nYou can use custom textarea Component. Just wrap it with `TextareaMarkdown.Wrapper`\n\n```tsx\nimport React, { useRef, useState } from \"react\";\nimport TextareaMarkdown, { TextareaMarkdownRef } from \"textarea-markdown-editor\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nfunction App() {\n    const [value, setValue] = useState(\"\");\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <TextareaMarkdown.Wrapper ref={ref}>\n            <TextareaAutosize value={value} onChange={(e) => setValue(e.target.value)} />\n        </TextareaMarkdown.Wrapper>\n    );\n}\n```\n\nℹ️ This solution will not create any real dom wrapper\n\n### Customize commands\n\nYou can specify or overwrite shortcuts for built-in commands or create your own\n\n```tsx\nimport React, { useRef, useState } from \"react\";\nimport TextareaMarkdown, { CommandHandler, TextareaMarkdownRef } from \"textarea-markdown-editor\";\n\n/** Inserts 🙃 at the current position and select it */\nconst emojiCommandHandler: CommandHandler = ({ cursor }) => {\n    // MARKER - means a cursor position, or a selection range if specified two markers\n    cursor.insert(`${cursor.MARKER}🙃${cursor.MARKER}`);\n};\n\nfunction App() {\n    const [value, setValue] = useState(\"\");\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger(\"insert-emoji\")}>Insert 🙃</button>\n            <br />\n            <TextareaMarkdown\n                ref={ref}\n                value={value}\n                onChange={(e) => setValue(e.target.value)}\n                commands={[\n                    {\n                        name: \"code\",\n                        shortcut: [\"command+/\", \"ctrl+/\"],\n                        shortcutPreventDefault: true,\n                    },\n                    {\n                        name: \"insert-emoji\",\n                        handler: emojiCommandHandler,\n                    },\n                ]}\n            />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Note that mutation `element.value` will not trigger `change` event on textarea element. Use `cursor.setValue(...)` or other method of `Cursor`.\n\nℹ️ [Mousetrap.js](https://craig.is/killing/mice) is used under the hood for shortcuts handling.\nIt is great solution with simple and intuitive api. You can read more about combination in the documentation\n\n### `β` Usage without `react`\n\n```js\nimport { bootstrapTextareaMarkdown } from \"textarea-markdown-editor/dist/bootstrap\";\n\nconst textarea = document.querySelector(\"textarea\"); // element can be obtained from anywhere, this is just an example;\n\nconst { trigger, dispose } = bootstrapTextareaMarkdown(textarea, {\n    options: {}, // optional options config\n    commands: [], // optional commands configs\n});\n```\n\nℹ️ Checkout [sandbox example](https://codesandbox.io/s/vanila-textarea-markdown-editor-5q6bqb?file=/src/index.js)\n\nℹ️ Although this is possible, this feature is more of a workaround, since the library was originally written to be used with react, your package manager probably will warn you about missing peer-dependencies\n\n---\n\n### 👀 You can find more examples [here](https://github.com/Resetand/textarea-markdown-editor/tree/master/sandbox/src/examples)\n\n---\n\n## API\n\n-   [TextareaMarkdownProps](#textareamarkdownprops)\n-   [Command](#command)\n-   [CommandHandler](#commandhandler)\n-   [Built-in commands](#built-in-commands)\n-   [TextareaMarkdownOptions](#textareamarkdownoptions)\n-   [TextareaMarkdownRef](#textareamarkdownref)\n\n#### `TextareaMarkdownProps`\n\nℹ️ `TextareaMarkdown` accepts all props which native textarea supports\n\n| Property     | Description                     | Type                                                  |\n| ------------ | ------------------------------- | ----------------------------------------------------- |\n| **options**  | Options config                  | [`TextareaMarkdownOptions`](#textareamarkdownoptions) |\n| **commands** | Array of commands configuration | [`Command`](#command)[]                               |\n\n---\n\n#### `Command`\n\n| Name                        | Type                                | Description                                                           |\n| :-------------------------- | :---------------------------------- | :-------------------------------------------------------------------- |\n| **name**                    | `TType`                             | Built-in or custom command name                                       |\n| **shortcut?**               | `string` \\| `string`[]              | Shortcut combinations ([Mousetrap.js](https://craig.is/killing/mice)) |\n| **shortcutPreventDefault?** | `boolean`                           | Toggle key event prevent `default:false`                              |\n| **handler?**                | [`CommandHandler`](#commandhandler) | Handler function for custom commands                                  |\n| **enable?**                 | `boolean`                           | Toggle command enabling                                               |\n\n---\n\n#### `CommandHandler`\n\n```ts\nexport type CommandHandler = (context: CommandHandlerContext) => void | Promise<void>;\n\nexport type CommandHandlerContext = {\n    textarea: HTMLTextAreaElement;\n    cursor: Cursor;\n    keyEvent?: KeyboardEvent;\n    clipboardEvent?: ClipboardEvent;\n    options: TextareaMarkdownOptions;\n};\n```\n\n---\n\n#### `Built-in commands`\n\n| Name               | Description                                                        | Shortcut               |\n| ------------------ | ------------------------------------------------------------------ | ---------------------- |\n| **bold**           | Inserts or wraps bold markup                                       | `ctrl/command+b`       |\n| **italic**         | Inserts or wraps italic markup                                     | `ctrl/command+i`       |\n| **strike-through** | Inserts or wraps strike-through markup                             | `ctrl/command+shift+x` |\n| **link**           | Inserts or wraps link markup                                       |                        |\n| **image**          | Inserts or wraps image markup                                      |                        |\n| **unordered-list** | Inserts or wraps unordered list markup                             |                        |\n| **ordered-list**   | Inserts or wraps ordered list markup                               |                        |\n| **code-block**     | Inserts or wraps code block markup                                 |                        |\n| **code-inline**    | Inserts or wraps inline code markup                                |                        |\n| **code**           | Inserts or wraps inline or block code markup dependent of selected |                        |\n| **block-quotes**   | Inserts or wraps block-quotes markup                               |                        |\n| **h1**             | Inserts h1 headline                                                |                        |\n| **h2**             | Inserts h2 headline                                                |                        |\n| **h3**             | Inserts h3 headline                                                |                        |\n| **h4**             | Inserts h4 headline                                                |                        |\n| **h5**             | Inserts h5 headline                                                |                        |\n| **h6**             | Inserts h6 headline                                                |                        |\n\n---\n\n### TextareaMarkdownOptions\n\n| Name                                        | Type                                        | Description                                                                                                                              |\n| :------------------------------------------ | :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |\n| **preferredBoldSyntax**                     | `\"**\"` \\| `\"__\"`                            | Preferred bold wrap syntax `default: '**'`                                                                                               |\n| **preferredItalicSyntax**                   | `\"*\"` \\| `\"_\"`                              | Preferred italic wrap syntax `default: '*'`                                                                                              |\n| **preferredUnorderedListSyntax**            | `\"-\"` \\| `\"*\"` \\| `\"+\"`                     | Preferred unordered list prefix `default: '-'`                                                                                           |\n| **enableIndentExtension**                   | `boolean`                                   | Will handle `tab` and `shift+tab` keystrokes, on which will insert/remove indentation instead of the default behavior `default:true`     |\n| **enableLinkPasteExtension**                | `boolean`                                   | Will handle `paste` event, on which will wrap pasted with link/image markup if pasted is URL `default:true`                              |\n| **enablePrefixWrappingExtension**           | `boolean`                                   | Will handle `enter` keystroke, on which will wrap current list sequence if needed `default:true`                                         |\n| **enableProperLineRemoveBehaviorExtension** | `boolean`                                   | Will handle `command/ctrl+backspace` keystrokes, on which will remove only a current line instead of the default behavior `default:true` |\n| **customPrefixWrapping**                    | (`PrefixWrappingConfig` \\| `string`)[]      | Array of custom prefixes, that need to be wrapped. (Will not work with `enablePrefixWrappingExtension:false`)                            |\n| **blockQuotesPlaceholder**                  | `string`                                    | `default: 'quote'`                                                                                                                       |\n| **boldPlaceholder**                         | `string`                                    | `default: 'bold'`                                                                                                                        |\n| **codeBlockPlaceholder**                    | `string`                                    | `default: 'code block'`                                                                                                                  |\n| **codeInlinePlaceholder**                   | `string`                                    | `default: 'code'`                                                                                                                        |\n| **headlinePlaceholder**                     | `string` \\| (`level`: `number`) => `string` | `default: (lvl) => 'headline ' + lvl`                                                                                                    |\n| **imageTextPlaceholder**                    | `string`                                    | Used inside default image markup `![<example>](...)` `default: 'example'`                                                                |\n| **imageUrlPlaceholder**                     | `string`                                    | Used inside default image markup `![...](<image.png>)` `default: 'image.png'`                                                            |\n| **italicPlaceholder**                       | `string`                                    | `default: 'italic'`                                                                                                                      |\n| **linkTextPlaceholder**                     | `string`                                    | Used inside default link markup `[<example>](...)` `default: 'example'`                                                                  |\n| **linkUrlPlaceholder**                      | `string`                                    | Used inside default image markup `![...](<url>)` `default: 'url'`                                                                        |\n| **orderedListPlaceholder**                  | `string`                                    | `default: 'ordered list'`                                                                                                                |\n| **strikeThroughPlaceholder**                | `string`                                    | `default: 'strike through'`                                                                                                              |\n| **unorderedListPlaceholder**                | `string`                                    | `default: 'unordered list'`                                                                                                              |\n\n---\n\n#### `TextareaMarkdownRef`\n\nℹ️ Extends `HTMLTextAreaElement` instance\n\n```typescript\ntrigger: (command: string) => void;\n```\n","readmeFilename":"README.md","gitHead":"52772d59fbc0d96239fb4aeb367aabd0ac8d38d6","_id":"textarea-markdown-editor@1.0.0-rc.2","_nodeVersion":"14.15.0","_npmVersion":"8.10.0","dist":{"integrity":"sha512-Ib2K7FLPQra/oGbafTAdDykCpucHXem11T64WK2dcwakt41xppgKWGSuP42c8TcnAlwNxUGg3OICAknJreRbBg==","shasum":"22e47765943fa8497fef11aaa1a421abcf81a67a","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.0-rc.2.tgz","fileCount":20,"unpackedSize":78577,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFG4XbwOjAB1p8WDhfuDnrX5NO+RvRXrTmRVhO40eUXzAiAAnJOa//hiV4OibsZsMomGuL219ddIdrIVhIZwNwAgoA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigPlXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTUQ/+KZDf8NzemXSFt/f3PLlyCAl1lTIkKjhg1FS2OJMhC4pg/APB\r\nwkofJLJhBgnsy6NtoX63JnI1xvunvczFpRwHJpcpJe0zDG+HksTXJeRRnd+c\r\n09GmPNjVB2TvhaDtUOS6zuVE46bgQbqYy6irNcJcmZcmSknNgjnfgN0KajdM\r\n5aaTNMqNOPIRjWM41ZtcD9UX6YyYamWMX/PH6qG2Cm9FfAv90pjAuDYaQJ2o\r\neqf/zBznGj7LCGZWJzjiXfiwErtrJW3cspKDJtCVImPJpkMnn7DqFT3gSfnf\r\ncmcVEqJ+LPT/UexWciPwIazE/Gzfco6mMkSoTvkGrL4Q3V8+FkUfH1L+SrVc\r\nLxSeQqpD8xECv+cLTEytqXL8lZ1UlNVicR3XiuajOsbyDP5nrD1t3cn04RSg\r\naj4XsWM39OFsU4tMD33kQJap4Xs0MImYDJT3A6GDpAePQRKIgUv+mSoxKH3a\r\nv1lb0ZjlrG6sCdWy7zjKhDbOLzU7SXuW27CJgxz5Utg0EA8Jn7TNSzKlVdEi\r\nvqC8PbD0x4L9+EYyhPzAThfH40y/iS0EsQTypRtptF5YNfEcnBl18jXkURaZ\r\nqPec7nXyqhuF5guhYWG2JwT3U3834Tcl18yDTIR+3s8vYfVjfDK/RP96FZWq\r\ni2F59HybkWLTzfNemEhshcBBVcZMPEER3kA=\r\n=IB/I\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.0-rc.2_1652619607282_0.27098708787221404"},"_hasShrinkwrap":false},"1.0.0":{"name":"textarea-markdown-editor","version":"1.0.0","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.4","@testing-library/react":"13.2.0","@testing-library/user-event":"14.2.0","@types/common-tags":"1.8.1","@types/jest":"27.5.1","@types/mousetrap":"1.6.9","@types/node":"17.0.33","@types/react":"18.0.9","@types/react-dom":"18.0.4","common-tags":"1.8.2","jest":"28.1.0","jest-environment-jsdom":"28.1.0","npm-watch":"^0.11.0","react":"18.1.0","react-dom":"18.1.0","ts-jest":"28.0.2","typescript":"4.6.4"},"scripts":{"build":"tsc","build:watch":"npm-watch build","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"gitHead":"e984da3c355218128e7da25d4db070f0321c69cd","_id":"textarea-markdown-editor@1.0.0","_nodeVersion":"14.15.0","_npmVersion":"8.10.0","dist":{"integrity":"sha512-7fWyJk1q5kk7KYVjkofoIpyr0IkrCr8LKmFimJR5r3Q2d6ENJHUjm4j2Kzd5YyBESgyxEXCaQ+aJ7CkFoEXevw==","shasum":"f829a7121b95f0007181aabf782d93f02ef2baab","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.0.tgz","fileCount":20,"unpackedSize":78732,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAO2tQ8z3TImWA6Ktqn8O0AuFQILigujlclzBib/XJqmAiEApWTopmpAJP/SCtjM0CqxiFswCaIxMXysnhyguY/IyUM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigQOTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2exAAjKuLFb4C/7ZCwRcFvt66KVuOo3jDjZH07AL3Ff25MScRh0lC\r\nuVeXHbHeHk76pWVRXg/Vh9Z65xDfB2zilLh4gMk36eIqsJwuKzf2al16ZKHE\r\n26RsqEE1oYnFVxJMqHxSgbhlV5m/y1g3UpBDRMyy9+emhVme6hXWxuFsLsrg\r\nIEI4cXmfZnttPASX63eCCPIGBIBWRLbN2eRP7y/0OqndsIAFmOjDqpOUVXr3\r\nWYM416z+PgLA3/pS1ew+/B8lGRHEyB70UjZsMH5Nu6dXTr2ybotu9Cm7Kniq\r\n1Bae0bsl/QP8/AB+WKNVs7ZukHbygfL2gmNolrXane7op0sgsp0bgtKUX1nZ\r\n91SeKC8tULixuPl2PzeT8lj7M0ye4cXLpCxSBhm2ng3Sh+Lnp19TZ2OuNsBt\r\nsdr5SZr/1jumW0zDMP8QaKQPT87I3VfL1Ya7S4jlhDPxnPm81II0LmKLo6it\r\n43mRSN3vrDf3vScc9JAqaCHsbvyXM9eXJXtmxfSIXpFMvsoeJh2MjhDlfhyk\r\n2ai+ElBmW4Hd/gg7HnD93F4SKENxAD5bfgQ//NwaNBdzsCrreveJfQQu0ky+\r\nllodgyNZ38T0ydXfJ14R4BcSTvP21A9UOlnAQkCkz2FVCAwhidnGqni0t+Gd\r\n1QnB7H7lfiIuSVUMVVaatYqrZ5rj+fuSZ2Y=\r\n=mK9Q\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.0_1652622227744_0.06846929197774543"},"_hasShrinkwrap":false},"1.0.1":{"name":"textarea-markdown-editor","version":"1.0.1","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.4","@testing-library/react":"13.2.0","@testing-library/user-event":"14.2.0","@types/common-tags":"1.8.1","@types/jest":"27.5.1","@types/mousetrap":"1.6.9","@types/node":"17.0.33","@types/react":"18.0.9","@types/react-dom":"18.0.4","@typescript-eslint/eslint-plugin":"^5.26.0","@typescript-eslint/parser":"^5.26.0","common-tags":"1.8.2","eslint":"^8.16.0","eslint-config-prettier":"^8.5.0","eslint-config-react-app":"^7.0.1","husky":"^4.3.8","jest":"28.1.0","jest-environment-jsdom":"28.1.0","lint-staged":"10.5.4","npm-watch":"^0.11.0","react":"18.1.0","react-dom":"18.1.0","ts-jest":"28.0.2","typescript":"4.6.4"},"scripts":{"lint":"eslint --max-warnings=0 --ext=ts,tsx . --fix ","build":"tsc","build:watch":"npm-watch build","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run lint && npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"gitHead":"d55ef7fe309419e8089779882ffdc5b488e78b2d","_id":"textarea-markdown-editor@1.0.1","_nodeVersion":"14.15.0","_npmVersion":"8.10.0","dist":{"integrity":"sha512-JFb2Y7sALJEVeCAFh2li1Otb/vHiXhXwaJcrbRU+NHhk5SfQcM0W9FwBZIux35TZTCv0L4bewJn9FxEB275nNQ==","shasum":"8cb68627ef8489261f4209217899dad86934a75a","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.1.tgz","fileCount":20,"unpackedSize":77644,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmNgNrPuQi1QkERxln/7KCKRvm1W9fh7VEhMHrWUFA4wIgUnwzMfTNsHSjLVy5UC9lmAnIBR1PmqTdnOVBBrB+guI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiknyRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqS8A/+I6PIPkKzfRxtALCGPaYpQCFhskQYtJSR3iuW+39UdKlmqFZa\r\nQQDiT9sT5ynDCWpdobk/gBwpg6EiwADxc5TNd5UdxZxxTDEowgz9pxh0vbuX\r\nnxgyyYg6CJxS79tO9MpIJmlP22Pizj4ALZtaDiFzr3lU6kQ1hcb4+zA+Q/jh\r\nrsjgeuNgM0RMH+izeb8VbUEvkHZBirSr6gGchTqrpGUk9NPyDQFINK+tSs1B\r\nm3+3AP6f47ubrVdSI6SPynbUZyS3orUrxEOwm4WKh7TN1m4LHU8B4RbVrh0E\r\nIKBDpHPO+nDKobw7iQAYn3tzgA2kcrgULa1merU+DNOTL8VsXsIfwX1y6IFA\r\ngKzIi1SsscRzXi65eTglIVRC7gc/YLGotd5X+GrhOmi/zanW/1sfpjWy6R69\r\n0nlLG6GstLmDO2Oc9BggNruRtxhUQz0ylmzSesm+fzUNv0QyvfyJywNQdliV\r\nHJond2Ia6gtLfveS58E5gSzbTBKGD+PBbx7xb/bal2pkLV0wi8LW4KkPLVbR\r\nS4zj3LhlKUdcD9WgvkQDBVPX7w8ss02sHO0do0zKHAqX0XYr2y0E1bwKvYr1\r\nzs9jxus4rST7hK0k7T3sJTrdcSeO9KB1884YcnyBOr6+XCpZFl2UipDVBTEc\r\nTNcgxZH4khT8MdfcHoETLAjJjU+SVbdV59M=\r\n=BtZ1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.1_1653767313201_0.9445530779377087"},"_hasShrinkwrap":false},"1.0.2":{"name":"textarea-markdown-editor","version":"1.0.2","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.5","@testing-library/react":"13.4.0","@testing-library/user-event":"14.4.3","@types/common-tags":"1.8.1","@types/jest":"29.2.1","@types/mousetrap":"1.6.10","@types/node":"18.11.9","@types/react":"18.0.24","@types/react-dom":"18.0.8","@typescript-eslint/eslint-plugin":"5.42.0","@typescript-eslint/parser":"5.42.0","common-tags":"1.8.2","eslint":"8.26.0","eslint-config-prettier":"8.5.0","eslint-config-react-app":"7.0.1","husky":"8.0.1","jest":"29.2.2","jest-environment-jsdom":"29.2.2","lint-staged":"13.0.3","npm-watch":"0.11.0","react":"18.2.0","react-dom":"18.2.0","ts-jest":"29.0.3","typescript":"4.8.4"},"scripts":{"lint":"eslint --max-warnings=0 --ext=ts,tsx . --fix ","build":"tsc","build:watch":"npm-watch build","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run lint && npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start","prepare":"husky install"},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"gitHead":"9e6e2c31ce487f03ce2870b719b96b85c9ca982d","_id":"textarea-markdown-editor@1.0.2","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-lXMh//FrHBZhI8nn4q7HwWOF/m8nW9NEH0VeBEUyqAOkjmf/5PcOrfGR+bYltCI510lwKHveRTUenn1gh2bSDg==","shasum":"2c187563739be73e56be739af83e386e666ba568","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.2.tgz","fileCount":20,"unpackedSize":78102,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCncbB+OPDNR+ziyNDhOOUE3aVoDi7MDCHrsuxH0SJ1LAIhALP8fJ4QGydfneGc0yadzOoiAlLnYfSOwkRQDokphY7B"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYO1gACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqd5xAAosWNAPxqyR89C41GOsQUtne1fPJ8VxBpLtJFHknmmYN5JxqD\r\n78VKgnEfSaN9o+fI77GmSdNsdLB1p79Fp/jxHVrN4OM7gWBV823NekpUFLTV\r\n2dCIENpJJYeE/izWC21InX3tmLOkzUTf2zfzVAiszYpiru0DKASAXUMXhfcR\r\nV5jL+OOub5CyalqVXegc/3bkQzOCJEQBNZ3o2vduKukhfu0dA35eK9hvFsad\r\n7snu4knzLFNfRgyZnzYsz5m5chiDKijR6wuywnsO5D3nupA8ECw/pFiIttnn\r\n+9THBVsnOn0eeu0vpBaWEq3mgrBajoZLOZZsejI+ayDz/6KVt7WDKdI1lutu\r\nMPORpRiLYV4HLWRq7RHGXmD1VO2+bwRk8gusIrsfO+pJ9fCc6QznSJLQNl8x\r\ndt2S12NBdUUN1Wf6TKGyJp3Lo4t8RBLlMYAnbVPt6j9WGEnwMuKF0gkcuh8j\r\nLkFZqN8TxNWqTBDQEntVk4dvuGuzR+cv2tV6VGeH/yGsbF3X3m6+QW7Fjz96\r\n9DYQCBY0w7yBds1CBFOVBPZ1a87JYV3PVl5Lq21YVonTWEGpXkIcpfTydAqR\r\npMjIGe9CtSLXvUReh7xM5CPpwQntupAh0lTE0vPtoVHrkRDmIq5IlDyluB5q\r\ncmq5R+8PscFEA9HZqFHbOSDGEX9WpPNoIAM=\r\n=ymDH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.2_1667296607970_0.6041106814358679"},"_hasShrinkwrap":false},"1.0.3":{"name":"textarea-markdown-editor","version":"1.0.3","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.5","@testing-library/react":"13.4.0","@testing-library/user-event":"14.4.3","@types/common-tags":"1.8.1","@types/jest":"29.2.1","@types/mousetrap":"1.6.10","@types/node":"18.11.9","@types/react":"18.0.24","@types/react-dom":"18.0.8","@typescript-eslint/eslint-plugin":"5.42.0","@typescript-eslint/parser":"5.42.0","common-tags":"1.8.2","eslint":"8.26.0","eslint-config-prettier":"8.5.0","eslint-config-react-app":"7.0.1","husky":"8.0.1","jest":"29.2.2","jest-environment-jsdom":"29.2.2","lint-staged":"13.0.3","npm-watch":"0.11.0","react":"18.2.0","react-dom":"18.2.0","ts-jest":"29.0.3","typescript":"4.8.4"},"scripts":{"lint":"eslint --max-warnings=0 --ext=ts,tsx . --fix ","build":"tsc","build:watch":"npm-watch build","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run lint && npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start","prepare":"husky install"},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"gitHead":"437a03548bcf848889788bfbc20b2f0485584cac","_id":"textarea-markdown-editor@1.0.3","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-zgPGH28J+126LFoB6aeWePmNN/tzmYyuSopDjav39PSpjTVI09F9Ck8jb+7bemJsPkols4WOPVOCY8cvvs1ehQ==","shasum":"dc36a0874c166468a5493d1535e449eb5ce3c21b","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.3.tgz","fileCount":20,"unpackedSize":78102,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIExpqq6Uyh03WLquea8FQw4l3w+yyvoNI+kvuFWBpfyuAiEA/+I6KhfcxJ9w5mK6nRAiKn7CBF5y4ChYWhfdPZGvou0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYPK/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQvhAAgSHB8rf2Am8PD4qlUQxwveVxz3JJrc8EJ3xosehJOTV97qlk\r\nFpoy1vGDaJyacq/cUNo87sSjwNvWuUpTNqR3affeJV/4a/lVJ3FeYim/6fGY\r\nB06HF1HvoVwWHUprsoyUzYvyWErdSS22SDjqB6JSgVoe4tfyOH9iUL0n5Isc\r\n4EfBM71pQT8ncI23jJsqVhGuUTesQtmCnzLZKijX3psPKvhHLovniNINV2lE\r\nkPkVoN2OVCXtBs3isvMOTO9g5+mbKhc2sRY3S83eaCdRdjqOfqtxysc4r5Cq\r\nA/rHy8dMkUhm/iOBkZFkc5Gq67070v1ahgWDuA/iIu7QwfFoxSYfs4uWPvPI\r\nuIm5ijVVZ/ousVk8D2vWEZBABONGR26Jw+reXvcMOxKsu9qEmGwHQ4pqFldP\r\n+tqRNv7a+V25M1wlkI6mThAiTTWdqwEv/E1CZIejpAMqThbXFCFGlvWJ4e4u\r\na/vWYYYGzHQqpppg544mlr93Xu+bnpIaCT/ofGxvuKFj5Uezz+I88Em5/zS0\r\nbXD4Z9q7r3I/OZPFOXwuOyIuC1KaOiNTeDUuJ/dhbtvyaNvz25IBtTNB+lcP\r\nhmkAfdIAxodTmcW8+4cAkJPdHca3v4T7sQhsSC4XpdhCenD/OE2qnxOr3W1X\r\nhlun2wxe3htmJDoVw3IMMKItWZ5vMbhYPOE=\r\n=9iul\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.3_1667297983223_0.3195295251162771"},"_hasShrinkwrap":false},"1.0.4":{"name":"textarea-markdown-editor","version":"1.0.4","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.5","@testing-library/react":"13.4.0","@testing-library/user-event":"14.4.3","@types/common-tags":"1.8.1","@types/jest":"29.2.1","@types/mousetrap":"1.6.10","@types/node":"18.11.9","@types/react":"18.0.24","@types/react-dom":"18.0.8","@typescript-eslint/eslint-plugin":"5.42.0","@typescript-eslint/parser":"5.42.0","common-tags":"1.8.2","eslint":"8.26.0","eslint-config-prettier":"8.5.0","eslint-config-react-app":"7.0.1","husky":"8.0.1","jest":"29.2.2","jest-environment-jsdom":"29.2.2","lint-staged":"13.0.3","npm-watch":"0.11.0","react":"18.2.0","react-dom":"18.2.0","ts-jest":"29.0.3","typescript":"4.8.4"},"scripts":{"lint":"eslint --max-warnings=0 --ext=ts,tsx . --fix ","build":"tsc","build:watch":"npm-watch build","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run lint && npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start","prepare":"husky install"},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"gitHead":"55a310c4013fedae2af7dcaa3c126bd543ccc1ee","_id":"textarea-markdown-editor@1.0.4","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-4uA8EZ0FkIL0dq89+xiA0BEo832/rKdtoi2T4Wab0wLZfHys82JE1i5YJf8BKAr/IQELF2NxQ5LITYkb8BGIFA==","shasum":"30e41f15ef3d7fe6be69fda19e7e1687d891e317","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.4.tgz","fileCount":20,"unpackedSize":80028,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAtL5eYH6pxVN4+NvkZisIMjsOYCTzwKUPebGqsJzgnuAiEAm2zbfflN/gyLDUu/vFqHqRwEmNLaq5/fleEW9Gj1exM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYUkdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrbtw/+NlBFjio42MVgCgQ2dOar8zKvHmbC3V7YRrEvX3fQ7YR5sXy8\r\n0sPjaeDnFLSEMgfUW1HSG1z0UfcwqiZSED/MxTdZqpFEv+zp+wq63qVOX5YC\r\nNx51TJbK1DT2IXcFkvbikIYF5wAAfYNMAyUvnfmunh14bxDb1cVYT00YkJMh\r\nWCzdGCWqUx+DJB6Hk3Hrkcj3JrNYRnJ229z5QRC1+eAQNM9fJtkBxF2uMiav\r\n6E12Dv/hOjDSBWb2f+8nCTB0UxxAevwERvm1rwswvWcdEIBYjomaKWBPHv2f\r\nr2vRNX30GYa/+28rIvGd0cmMgxEjDPfJsNcvRb8zml1ahIanNVMtPDjkU2BR\r\nPpQJXlA/kAD00ZFnkMRJjP5saDoqkdpf45PH/NI7vXNxXwEkI2X56301pMFV\r\nRg3CuADJawTMXW17NLBAPoN748TQxgY9K0cRekJWEm30gHwa80BbCeOl8nDv\r\n/uRytMwFLIN1+e5ZKG1vUkhZTv+Swlj3QJuyuW/zeqWwbCIs8H+3Bym1C3UY\r\nsh5bBdX3PCBSzxjwula6FbwlH9L5z8UVgB2xiGhl/CUgb9T9I+A0alV5NmM4\r\n3Cy6oQVJd1j6offcx0hv8Kd1q7XrfK5fZnd7olwChbJEfFkTta/p3lgRuzVZ\r\nSbbvquPZt9Kr66jjzllzOIvDy8W2nN40wMg=\r\n=YrSi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.4_1667320093503_0.1911936261176268"},"_hasShrinkwrap":false},"1.0.5-rc.0":{"name":"textarea-markdown-editor","version":"1.0.5-rc.0","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/cjs/index.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.5","@testing-library/react":"13.4.0","@testing-library/user-event":"14.4.3","@types/common-tags":"1.8.1","@types/jest":"29.2.1","@types/mousetrap":"1.6.10","@types/node":"18.11.9","@types/react":"18.0.24","@types/react-dom":"18.0.8","@typescript-eslint/eslint-plugin":"5.42.0","@typescript-eslint/parser":"5.42.0","common-tags":"1.8.2","eslint":"8.26.0","eslint-config-prettier":"8.5.0","eslint-config-react-app":"7.0.1","husky":"8.0.1","jest":"29.2.2","jest-environment-jsdom":"29.2.2","lint-staged":"13.0.3","npm-watch":"0.11.0","react":"18.2.0","react-dom":"18.2.0","ts-jest":"29.0.3","typescript":"4.8.4"},"scripts":{"lint":"eslint --max-warnings=0 --ext=ts,tsx . --fix ","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc","build:cjs":"tsc --module commonjs --outDir dist/cjs","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run lint && npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start","prepare":"husky install"},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"readme":"# Textarea Markdown\n\n[![CI status][github-action-image]][github-action-url] [![codecov][codecov-image]][codecov-url] [![NPM version][npm-image]][npm-url]\n\n[npm-image]: http://img.shields.io/npm/v/textarea-markdown-editor.svg\n[npm-url]: http://npmjs.org/package/textarea-markdown-editor\n[github-action-image]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml/badge.svg\n[github-action-url]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml\n[codecov-image]: https://codecov.io/gh/Resetand/textarea-markdown-editor/branch/master/graph/badge.svg?token=OBD8KR7Y98\n[codecov-url]: https://codecov.io/gh/Resetand/textarea-markdown-editor\n\n```bash\nnpm install textarea-markdown-editor\n```\n\n> There are some breaking changes since v1.0.0 released, checkout the [release note](https://github.com/Resetand/textarea-markdown-editor/releases/tag/v1.0.0)\n\n---\n\n**Textarea Markdown** is a simple markdown editor using only `<textarea/>`. It extends textarea by adding formatting features like shortcuts, list-wrapping, invoked commands and other to make user experience better 🙃\n\nEssentially this library just provides the textarea Component. You can choose any markdown parser, create your own layout, and use your own textarea component that is styled and behaves however you like\n\n<p style='max-width:800px;margin-top:8%' align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Resetand/textarea-markdown-editor/master/img/overview.gif\" />\n</p>\n\n## Features\n\n-   Lists wrapping\n-   Auto formatting pasted links\n-   Indent tabulation\n-   Keyboard shortcuts handling\n-   17 built-in customizable commands\n\n## Usage\n\n```tsx\nimport React, { Fragment, useRef, useState } from 'react';\nimport TextareaMarkdown, { TextareaMarkdownRef } from 'textarea-markdown-editor';\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger('bold')}>Bold</button>\n            <br />\n            <TextareaMarkdown ref={ref} value={value} onChange={(e) => setValue(e.target.value)} />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Ref instance provide the `trigger` function to invoke commands\n\n### Custom textarea `Component`\n\nYou can use custom textarea Component. Just wrap it with `TextareaMarkdown.Wrapper`\n\n```tsx\nimport React, { useRef, useState } from 'react';\nimport TextareaMarkdown, { TextareaMarkdownRef } from 'textarea-markdown-editor';\nimport TextareaAutosize from 'react-textarea-autosize';\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <TextareaMarkdown.Wrapper ref={ref}>\n            <TextareaAutosize value={value} onChange={(e) => setValue(e.target.value)} />\n        </TextareaMarkdown.Wrapper>\n    );\n}\n```\n\nℹ️ This solution will not create any real dom wrapper\n\n### Customize commands\n\nYou can specify or overwrite shortcuts for built-in commands or create your own\n\n```tsx\nimport React, { useRef, useState } from 'react';\nimport TextareaMarkdown, { CommandHandler, TextareaMarkdownRef } from 'textarea-markdown-editor';\n\n/** Inserts 🙃 at the current position and select it */\nconst emojiCommandHandler: CommandHandler = ({ cursor }) => {\n    // MARKER - means a cursor position, or a selection range if specified two markers\n    cursor.insert(`${cursor.MARKER}🙃${cursor.MARKER}`);\n};\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger('insert-emoji')}>Insert 🙃</button>\n            <br />\n            <TextareaMarkdown\n                ref={ref}\n                value={value}\n                onChange={(e) => setValue(e.target.value)}\n                commands={[\n                    {\n                        name: 'code',\n                        shortcut: ['command+/', 'ctrl+/'],\n                        shortcutPreventDefault: true,\n                    },\n                    {\n                        name: 'insert-emoji',\n                        handler: emojiCommandHandler,\n                    },\n                ]}\n            />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Note that mutation `element.value` will not trigger `change` event on textarea element. Use `cursor.setValue(...)` or other method of `Cursor`.\n\nℹ️ [Mousetrap.js](https://craig.is/killing/mice) is used under the hood for shortcuts handling.\nIt is great solution with simple and intuitive api. You can read more about combination in the documentation\n\n### `β` Usage without `react`\n\n```js\nimport { bootstrapTextareaMarkdown } from 'textarea-markdown-editor/dist/bootstrap';\n\nconst textarea = document.querySelector('textarea'); // element can be obtained from anywhere, this is just an example;\n\nconst { trigger, dispose } = bootstrapTextareaMarkdown(textarea, {\n    options: {}, // optional options config\n    commands: [], // optional commands configs\n});\n```\n\nℹ️ Checkout [sandbox example](https://codesandbox.io/s/vanila-textarea-markdown-editor-5q6bqb?file=/src/index.js)\n\nℹ️ Although this is possible, this feature is more of a workaround, since the library was originally written to be used with react, your package manager probably will warn you about missing peer-dependencies\n\n---\n\n### 👀 You can find more examples [here](https://github.com/Resetand/textarea-markdown-editor/tree/master/sandbox/src/examples)\n\n---\n\n## API\n\n-   [TextareaMarkdownProps](#textareamarkdownprops)\n-   [Command](#command)\n-   [CommandHandler](#commandhandler)\n-   [Built-in commands](#built-in-commands)\n-   [TextareaMarkdownOptions](#textareamarkdownoptions)\n-   [TextareaMarkdownRef](#textareamarkdownref)\n\n### `TextareaMarkdownProps`\n\nℹ️ `TextareaMarkdown` accepts all props which native textarea supports\n\n#### `options` [`TextareaMarkdownOptions`](#textareamarkdownoptions)\n\nOptions config\n\n#### `commands` [`Command`](#command)[]\n\nArray of commands configuration\n\n<!-- | Property     | Description                     | Type                                                  |\n| ------------ | ------------------------------- | ----------------------------------------------------- |\n| **options**  | Options config                  | [`TextareaMarkdownOptions`](#textareamarkdownoptions) |\n| **commands** | Array of commands configuration | [`Command`](#command)[]                               | -->\n\n---\n\n#### `Command`\n\n| Name                        | Type                                | Description                                                           |\n| :-------------------------- | :---------------------------------- | :-------------------------------------------------------------------- |\n| **name**                    | `TType`                             | Built-in or custom command name                                       |\n| **shortcut?**               | `string` \\| `string`[]              | Shortcut combinations ([Mousetrap.js](https://craig.is/killing/mice)) |\n| **shortcutPreventDefault?** | `boolean`                           | Toggle key event prevent `default:false`                              |\n| **handler?**                | [`CommandHandler`](#commandhandler) | Handler function for custom commands                                  |\n| **enable?**                 | `boolean`                           | Toggle command enabling                                               |\n\n---\n\n#### `CommandHandler`\n\n```ts\nexport type CommandHandler = (context: CommandHandlerContext) => void | Promise<void>;\n\nexport type CommandHandlerContext = {\n    textarea: HTMLTextAreaElement;\n    cursor: Cursor;\n    keyEvent?: KeyboardEvent;\n    clipboardEvent?: ClipboardEvent;\n    options: TextareaMarkdownOptions;\n};\n```\n\n---\n\n#### `Built-in commands`\n\n| Name               | Description                                                        | Shortcut               |\n| ------------------ | ------------------------------------------------------------------ | ---------------------- |\n| **bold**           | Inserts or wraps bold markup                                       | `ctrl/command+b`       |\n| **italic**         | Inserts or wraps italic markup                                     | `ctrl/command+i`       |\n| **strike-through** | Inserts or wraps strike-through markup                             | `ctrl/command+shift+x` |\n| **link**           | Inserts or wraps link markup                                       |                        |\n| **image**          | Inserts or wraps image markup                                      |                        |\n| **unordered-list** | Inserts or wraps unordered list markup                             |                        |\n| **ordered-list**   | Inserts or wraps ordered list markup                               |                        |\n| **code-block**     | Inserts or wraps code block markup                                 |                        |\n| **code-inline**    | Inserts or wraps inline code markup                                |                        |\n| **code**           | Inserts or wraps inline or block code markup dependent of selected |                        |\n| **block-quotes**   | Inserts or wraps block-quotes markup                               |                        |\n| **h1**             | Inserts h1 headline                                                |                        |\n| **h2**             | Inserts h2 headline                                                |                        |\n| **h3**             | Inserts h3 headline                                                |                        |\n| **h4**             | Inserts h4 headline                                                |                        |\n| **h5**             | Inserts h5 headline                                                |                        |\n| **h6**             | Inserts h6 headline                                                |                        |\n\n---\n\n### TextareaMarkdownOptions\n\n| Name                                        | Type                                        | Description                                                                                                                              |\n| :------------------------------------------ | :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |\n| **preferredBoldSyntax**                     | `\"**\"` \\| `\"__\"`                            | Preferred bold wrap syntax `default: '**'`                                                                                               |\n| **preferredItalicSyntax**                   | `\"*\"` \\| `\"_\"`                              | Preferred italic wrap syntax `default: '*'`                                                                                              |\n| **preferredUnorderedListSyntax**            | `\"-\"` \\| `\"*\"` \\| `\"+\"`                     | Preferred unordered list prefix `default: '-'`                                                                                           |\n| **enableIndentExtension**                   | `boolean`                                   | Will handle `tab` and `shift+tab` keystrokes, on which will insert/remove indentation instead of the default behavior `default:true`     |\n| **enableLinkPasteExtension**                | `boolean`                                   | Will handle `paste` event, on which will wrap pasted with link/image markup if pasted is URL `default:true`                              |\n| **enablePrefixWrappingExtension**           | `boolean`                                   | Will handle `enter` keystroke, on which will wrap current list sequence if needed `default:true`                                         |\n| **enableProperLineRemoveBehaviorExtension** | `boolean`                                   | Will handle `command/ctrl+backspace` keystrokes, on which will remove only a current line instead of the default behavior `default:true` |\n| **customPrefixWrapping**                    | (`PrefixWrappingConfig` \\| `string`)[]      | Array of custom prefixes, that need to be wrapped. (Will not work with `enablePrefixWrappingExtension:false`)                            |\n| **blockQuotesPlaceholder**                  | `string`                                    | `default: 'quote'`                                                                                                                       |\n| **boldPlaceholder**                         | `string`                                    | `default: 'bold'`                                                                                                                        |\n| **codeBlockPlaceholder**                    | `string`                                    | `default: 'code block'`                                                                                                                  |\n| **codeInlinePlaceholder**                   | `string`                                    | `default: 'code'`                                                                                                                        |\n| **headlinePlaceholder**                     | `string` \\| (`level`: `number`) => `string` | `default: (lvl) => 'headline ' + lvl`                                                                                                    |\n| **imageTextPlaceholder**                    | `string`                                    | Used inside default image markup `![<example>](...)` `default: 'example'`                                                                |\n| **imageUrlPlaceholder**                     | `string`                                    | Used inside default image markup `![...](<image.png>)` `default: 'image.png'`                                                            |\n| **italicPlaceholder**                       | `string`                                    | `default: 'italic'`                                                                                                                      |\n| **linkTextPlaceholder**                     | `string`                                    | Used inside default link markup `[<example>](...)` `default: 'example'`                                                                  |\n| **linkUrlPlaceholder**                      | `string`                                    | Used inside default image markup `![...](<url>)` `default: 'url'`                                                                        |\n| **orderedListPlaceholder**                  | `string`                                    | `default: 'ordered list'`                                                                                                                |\n| **strikeThroughPlaceholder**                | `string`                                    | `default: 'strike through'`                                                                                                              |\n| **unorderedListPlaceholder**                | `string`                                    | `default: 'unordered list'`                                                                                                              |\n\n---\n\n#### `TextareaMarkdownRef`\n\nℹ️ Extends `HTMLTextAreaElement` instance\n\n```typescript\ntrigger: (command: string) => void;\ncursor: Cursor\n```\n","readmeFilename":"README.md","gitHead":"2e93f29867b2d1c4cb06e11ca2504d2beb24c0f4","_id":"textarea-markdown-editor@1.0.5-rc.0","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-lj91adHfucnzhU0NCa++sKQZLAmTneo0VE/tAkLI2BMBtmS02eOxcNkj0Mt9LdUGvu6KnNkkOo1Yz6mUnOQSpw==","shasum":"957c25d35c3aa85fae7cb584455bc354fc286e34","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.5-rc.0.tgz","fileCount":40,"unpackedSize":172797,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/tDyKHjzeM9Bly746By38n2+aUH3PFgtrbswdZx15dAiEAtnWQumb8LcmCSG81vE2kpFFamNJKNPkdeoPVvrTjTjY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjasA4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp1Xw//QjHe9jpt815IKQzBxLR7bAWbWqe6cOtwMgMpkSO4wsxn/1nb\r\nIexT3X1Wl1sTTzHU8FbbpuhK9hhZuaUTnI3fydF/ew77LmjscupPnO94XTW2\r\nTLqaJuQEGSsEjluudm+79y9dsI96cIXDhS0sLKN93Xfy+DRqSzKb5M+K1QSM\r\nzbcJC+vafYZ67kvmVLhty53Op5dpBWGPHDhfmIS4E0npgLeXasrKfnEM3S0s\r\noUN3LxXOT4zVEBvR3NI/EFlj4gy2Es7eiaLKDZGqsRD0RxgUXPhTUMMaZ5El\r\nnnYANvZ64VKtNEMNAuZ3xjBHLP3h8PvCbH2+n5RDDHuiGY5eCKHTZVek4NjV\r\nb/AFp3atwYdFRiQFuPLd4pw8VO6vAW47H6xUouvFyksMyiQP7nJv/dX82xd5\r\nPN1nr0I21/NgZDAqDEvbIHExsv+eW61gC+LFDnLxHw15DrXnLp/BAN30ZQ/H\r\nhSeIy//btkheK/bnTs62nrFNoGGbMYVezBTfFSWV1AZhLlHkqrNIK/edlJZ7\r\nEfT0bJ7behvz8J8DtntI65iz+hX7aMAviPBtOA0ShFNbK6m38jWxwYnkRiE2\r\n7mp/ZiFNUI4+wj3l72nTFE2rFZ1X5i9W8XtwUXZWfPIB9bfo9a8Gqn7vm7ov\r\nh5OS9MC5nNfXaJAALQG/jcPiVRlGywe/aMw=\r\n=g/S5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.5-rc.0_1667940408761_0.5487993513309348"},"_hasShrinkwrap":false},"1.0.5-rc.1":{"name":"textarea-markdown-editor","version":"1.0.5-rc.1","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/cjs/index.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.5","@testing-library/react":"13.4.0","@testing-library/user-event":"14.4.3","@types/common-tags":"1.8.1","@types/jest":"29.2.1","@types/mousetrap":"1.6.10","@types/node":"18.11.9","@types/react":"18.0.24","@types/react-dom":"18.0.8","@typescript-eslint/eslint-plugin":"5.42.0","@typescript-eslint/parser":"5.42.0","common-tags":"1.8.2","eslint":"8.26.0","eslint-config-prettier":"8.5.0","eslint-config-react-app":"7.0.1","husky":"8.0.1","jest":"29.2.2","jest-environment-jsdom":"29.2.2","lint-staged":"13.0.3","npm-watch":"0.11.0","react":"18.2.0","react-dom":"18.2.0","ts-jest":"29.0.3","typescript":"4.8.4"},"scripts":{"lint":"eslint --max-warnings=0 --ext=ts,tsx . --fix ","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc","build:cjs":"tsc --module commonjs --outDir dist/cjs","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run lint && npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start","prepare":"husky install"},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"readme":"# Textarea Markdown\n\n[![CI status][github-action-image]][github-action-url] [![codecov][codecov-image]][codecov-url] [![NPM version][npm-image]][npm-url]\n\n[npm-image]: http://img.shields.io/npm/v/textarea-markdown-editor.svg\n[npm-url]: http://npmjs.org/package/textarea-markdown-editor\n[github-action-image]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml/badge.svg\n[github-action-url]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml\n[codecov-image]: https://codecov.io/gh/Resetand/textarea-markdown-editor/branch/master/graph/badge.svg?token=OBD8KR7Y98\n[codecov-url]: https://codecov.io/gh/Resetand/textarea-markdown-editor\n\n```bash\nnpm install textarea-markdown-editor\n```\n\n> There are some breaking changes since v1.0.0 released, checkout the [release note](https://github.com/Resetand/textarea-markdown-editor/releases/tag/v1.0.0)\n\n---\n\n**Textarea Markdown** is a simple markdown editor using only `<textarea/>`. It extends textarea by adding formatting features like shortcuts, list-wrapping, invoked commands and other to make user experience better 🙃\n\nEssentially this library just provides the textarea Component. You can choose any markdown parser, create your own layout, and use your own textarea component that is styled and behaves however you like\n\n<p style='max-width:800px;margin-top:8%' align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Resetand/textarea-markdown-editor/master/img/overview.gif\" />\n</p>\n\n## Features\n\n-   Lists wrapping\n-   Auto formatting pasted links\n-   Indent tabulation\n-   Keyboard shortcuts handling\n-   17 built-in customizable commands\n\n## Usage\n\n```tsx\nimport React, { Fragment, useRef, useState } from 'react';\nimport TextareaMarkdown, { TextareaMarkdownRef } from 'textarea-markdown-editor';\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger('bold')}>Bold</button>\n            <br />\n            <TextareaMarkdown ref={ref} value={value} onChange={(e) => setValue(e.target.value)} />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Ref instance provide the `trigger` function to invoke commands\n\n### Custom textarea `Component`\n\nYou can use custom textarea Component. Just wrap it with `TextareaMarkdown.Wrapper`\n\n```tsx\nimport React, { useRef, useState } from 'react';\nimport TextareaMarkdown, { TextareaMarkdownRef } from 'textarea-markdown-editor';\nimport TextareaAutosize from 'react-textarea-autosize';\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <TextareaMarkdown.Wrapper ref={ref}>\n            <TextareaAutosize value={value} onChange={(e) => setValue(e.target.value)} />\n        </TextareaMarkdown.Wrapper>\n    );\n}\n```\n\nℹ️ This solution will not create any real dom wrapper\n\n### Customize commands\n\nYou can specify or overwrite shortcuts for built-in commands or create your own\n\n```tsx\nimport React, { useRef, useState } from 'react';\nimport TextareaMarkdown, { CommandHandler, TextareaMarkdownRef } from 'textarea-markdown-editor';\n\n/** Inserts 🙃 at the current position and select it */\nconst emojiCommandHandler: CommandHandler = ({ cursor }) => {\n    // MARKER - means a cursor position, or a selection range if specified two markers\n    cursor.insert(`${cursor.MARKER}🙃${cursor.MARKER}`);\n};\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger('insert-emoji')}>Insert 🙃</button>\n            <br />\n            <TextareaMarkdown\n                ref={ref}\n                value={value}\n                onChange={(e) => setValue(e.target.value)}\n                commands={[\n                    {\n                        name: 'code',\n                        shortcut: ['command+/', 'ctrl+/'],\n                        shortcutPreventDefault: true,\n                    },\n                    {\n                        name: 'insert-emoji',\n                        handler: emojiCommandHandler,\n                    },\n                ]}\n            />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Note that mutation `element.value` will not trigger `change` event on textarea element. Use `cursor.setValue(...)` or other method of `Cursor`.\n\nℹ️ [Mousetrap.js](https://craig.is/killing/mice) is used under the hood for shortcuts handling.\nIt is great solution with simple and intuitive api. You can read more about combination in the documentation\n\n### `β` Usage without `react`\n\n```js\nimport { bootstrapTextareaMarkdown } from 'textarea-markdown-editor/dist/bootstrap';\n\nconst textarea = document.querySelector('textarea'); // element can be obtained from anywhere, this is just an example;\n\nconst { trigger, dispose } = bootstrapTextareaMarkdown(textarea, {\n    options: {}, // optional options config\n    commands: [], // optional commands configs\n});\n```\n\nℹ️ Checkout [sandbox example](https://codesandbox.io/s/vanila-textarea-markdown-editor-5q6bqb?file=/src/index.js)\n\nℹ️ Although this is possible, this feature is more of a workaround, since the library was originally written to be used with react, your package manager probably will warn you about missing peer-dependencies\n\n---\n\n### 👀 You can find more examples [here](https://github.com/Resetand/textarea-markdown-editor/tree/master/sandbox/src/examples)\n\n---\n\n## API\n\n-   [TextareaMarkdownProps](#textareamarkdownprops)\n-   [Command](#command)\n-   [CommandHandler](#commandhandler)\n-   [Built-in commands](#built-in-commands)\n-   [TextareaMarkdownOptions](#textareamarkdownoptions)\n-   [TextareaMarkdownRef](#textareamarkdownref)\n\n### `TextareaMarkdownProps`\n\nℹ️ `TextareaMarkdown` accepts all props which native textarea supports\n\n#### `options` [`TextareaMarkdownOptions`](#textareamarkdownoptions)\n\nOptions config\n\n#### `commands` [`Command`](#command)[]\n\nArray of commands configuration\n\n<!-- | Property     | Description                     | Type                                                  |\n| ------------ | ------------------------------- | ----------------------------------------------------- |\n| **options**  | Options config                  | [`TextareaMarkdownOptions`](#textareamarkdownoptions) |\n| **commands** | Array of commands configuration | [`Command`](#command)[]                               | -->\n\n---\n\n#### `Command`\n\n| Name                        | Type                                | Description                                                           |\n| :-------------------------- | :---------------------------------- | :-------------------------------------------------------------------- |\n| **name**                    | `TType`                             | Built-in or custom command name                                       |\n| **shortcut?**               | `string` \\| `string`[]              | Shortcut combinations ([Mousetrap.js](https://craig.is/killing/mice)) |\n| **shortcutPreventDefault?** | `boolean`                           | Toggle key event prevent `default:false`                              |\n| **handler?**                | [`CommandHandler`](#commandhandler) | Handler function for custom commands                                  |\n| **enable?**                 | `boolean`                           | Toggle command enabling                                               |\n\n---\n\n#### `CommandHandler`\n\n```ts\nexport type CommandHandler = (context: CommandHandlerContext) => void | Promise<void>;\n\nexport type CommandHandlerContext = {\n    textarea: HTMLTextAreaElement;\n    cursor: Cursor;\n    keyEvent?: KeyboardEvent;\n    clipboardEvent?: ClipboardEvent;\n    options: TextareaMarkdownOptions;\n};\n```\n\n---\n\n#### `Built-in commands`\n\n| Name               | Description                                                        | Shortcut               |\n| ------------------ | ------------------------------------------------------------------ | ---------------------- |\n| **bold**           | Inserts or wraps bold markup                                       | `ctrl/command+b`       |\n| **italic**         | Inserts or wraps italic markup                                     | `ctrl/command+i`       |\n| **strike-through** | Inserts or wraps strike-through markup                             | `ctrl/command+shift+x` |\n| **link**           | Inserts or wraps link markup                                       |                        |\n| **image**          | Inserts or wraps image markup                                      |                        |\n| **unordered-list** | Inserts or wraps unordered list markup                             |                        |\n| **ordered-list**   | Inserts or wraps ordered list markup                               |                        |\n| **code-block**     | Inserts or wraps code block markup                                 |                        |\n| **code-inline**    | Inserts or wraps inline code markup                                |                        |\n| **code**           | Inserts or wraps inline or block code markup dependent of selected |                        |\n| **block-quotes**   | Inserts or wraps block-quotes markup                               |                        |\n| **h1**             | Inserts h1 headline                                                |                        |\n| **h2**             | Inserts h2 headline                                                |                        |\n| **h3**             | Inserts h3 headline                                                |                        |\n| **h4**             | Inserts h4 headline                                                |                        |\n| **h5**             | Inserts h5 headline                                                |                        |\n| **h6**             | Inserts h6 headline                                                |                        |\n\n---\n\n### TextareaMarkdownOptions\n\n| Name                                        | Type                                        | Description                                                                                                                              |\n| :------------------------------------------ | :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |\n| **preferredBoldSyntax**                     | `\"**\"` \\| `\"__\"`                            | Preferred bold wrap syntax `default: '**'`                                                                                               |\n| **preferredItalicSyntax**                   | `\"*\"` \\| `\"_\"`                              | Preferred italic wrap syntax `default: '*'`                                                                                              |\n| **preferredUnorderedListSyntax**            | `\"-\"` \\| `\"*\"` \\| `\"+\"`                     | Preferred unordered list prefix `default: '-'`                                                                                           |\n| **enableIndentExtension**                   | `boolean`                                   | Will handle `tab` and `shift+tab` keystrokes, on which will insert/remove indentation instead of the default behavior `default:true`     |\n| **enableLinkPasteExtension**                | `boolean`                                   | Will handle `paste` event, on which will wrap pasted with link/image markup if pasted is URL `default:true`                              |\n| **enablePrefixWrappingExtension**           | `boolean`                                   | Will handle `enter` keystroke, on which will wrap current list sequence if needed `default:true`                                         |\n| **enableProperLineRemoveBehaviorExtension** | `boolean`                                   | Will handle `command/ctrl+backspace` keystrokes, on which will remove only a current line instead of the default behavior `default:true` |\n| **customPrefixWrapping**                    | (`PrefixWrappingConfig` \\| `string`)[]      | Array of custom prefixes, that need to be wrapped. (Will not work with `enablePrefixWrappingExtension:false`)                            |\n| **blockQuotesPlaceholder**                  | `string`                                    | `default: 'quote'`                                                                                                                       |\n| **boldPlaceholder**                         | `string`                                    | `default: 'bold'`                                                                                                                        |\n| **codeBlockPlaceholder**                    | `string`                                    | `default: 'code block'`                                                                                                                  |\n| **codeInlinePlaceholder**                   | `string`                                    | `default: 'code'`                                                                                                                        |\n| **headlinePlaceholder**                     | `string` \\| (`level`: `number`) => `string` | `default: (lvl) => 'headline ' + lvl`                                                                                                    |\n| **imageTextPlaceholder**                    | `string`                                    | Used inside default image markup `![<example>](...)` `default: 'example'`                                                                |\n| **imageUrlPlaceholder**                     | `string`                                    | Used inside default image markup `![...](<image.png>)` `default: 'image.png'`                                                            |\n| **italicPlaceholder**                       | `string`                                    | `default: 'italic'`                                                                                                                      |\n| **linkTextPlaceholder**                     | `string`                                    | Used inside default link markup `[<example>](...)` `default: 'example'`                                                                  |\n| **linkUrlPlaceholder**                      | `string`                                    | Used inside default image markup `![...](<url>)` `default: 'url'`                                                                        |\n| **orderedListPlaceholder**                  | `string`                                    | `default: 'ordered list'`                                                                                                                |\n| **strikeThroughPlaceholder**                | `string`                                    | `default: 'strike through'`                                                                                                              |\n| **unorderedListPlaceholder**                | `string`                                    | `default: 'unordered list'`                                                                                                              |\n\n---\n\n#### `TextareaMarkdownRef`\n\nℹ️ Extends `HTMLTextAreaElement` instance\n\n```typescript\ntrigger: (command: string) => void;\ncursor: Cursor\n```\n","readmeFilename":"README.md","gitHead":"19edc1c365ab5f3d3de9f9898240a07a8da8f241","_id":"textarea-markdown-editor@1.0.5-rc.1","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-kuBGzmvTkrb4j5d5yxGLt20xSYXbg6y4ZeLLA7VOsks442wen7C48ex5eSEOKskwBjGDYdJBZ3EbGU0UOwegMg==","shasum":"d3d07700b3bcf0ba2504cf26a068ed7b01275ac9","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.5-rc.1.tgz","fileCount":40,"unpackedSize":172071,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNgS45wSGrFXtxKh5qOQZoCFMlZDufjNpvW5OWX4MUbwIhAOtLuUza3QFD+/wyA7ffRRW02GNmBKxT4Db1am5P9A8V"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjasFVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorjA//VB8g6GANQOvyoYKT7+trG18pOvxmcG2JJ6+X/NghQ98FixEQ\r\nWLPuqgj2HxTMS4oM047te5Irm3O/U2rOKVnmCpI2C82nZ8D8dFU5hLdwIg2y\r\n7DIK5xnOwZDYPtQ9xJMLWEOstdk+K/OCoxIa7hItnwdhuZNZfUW9teIo/FOY\r\niK0cMVv1j75jJW0/4eZyZYBvEh6yx1kpjjd0t0OLVksX2pJjWd3OxwF23UvC\r\nbkI3s2Rs2u3DkGVbCm3q4weB2XjZzcY5s9WWvgsxmKnLOu35M6DB8PLK5iVJ\r\nlPLHFVwSUcIX8//liBW/VcVUxKrjxXLLBHKAwm8IirIQYPd3JK26z9GqNAQ0\r\nhR5uGV7EkQJUx4QBTBLXJqbaKcCVUerBlKlPFHj+fFYTWKiWGYwiZVuhSA4T\r\nCo25GKkAtVQjDppPBO1QhtJxbBAQujjgB1+Rq8u5kGCzwymQMfNMKJwi/24t\r\njHfQjeOMY3I6OfuI7hSQsLDH7xRY+w7VmiO24thKS1q7UvBQcQ3+3CViunuR\r\nkqFNJNJxMvzRHEV2q6GAvmq35IZwzz0tu4N5+oF7rI77/TS7hjeDTkrHS3rt\r\nZY0KUOUxWAYYYIsBu8YUe+15WKG0qOF+nn5HZPU9/Di7GFz9PKY0W/+hRRoy\r\n18l4ED/n9M9Jf+xwQcmA9E6axn/pEX1svZQ=\r\n=cVgQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.5-rc.1_1667940693385_0.18890630828360333"},"_hasShrinkwrap":false},"1.0.5-rc.2":{"name":"textarea-markdown-editor","version":"1.0.5-rc.2","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/cjs/index.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.5","@testing-library/react":"13.4.0","@testing-library/user-event":"14.4.3","@types/common-tags":"1.8.1","@types/jest":"29.2.1","@types/mousetrap":"1.6.10","@types/node":"18.11.9","@types/react":"18.0.24","@types/react-dom":"18.0.8","@typescript-eslint/eslint-plugin":"5.42.0","@typescript-eslint/parser":"5.42.0","common-tags":"1.8.2","eslint":"8.26.0","eslint-config-prettier":"8.5.0","eslint-config-react-app":"7.0.1","husky":"8.0.1","jest":"29.2.2","jest-environment-jsdom":"29.2.2","lint-staged":"13.0.3","npm-watch":"0.11.0","react":"18.2.0","react-dom":"18.2.0","ts-jest":"29.0.3","typescript":"4.8.4"},"scripts":{"lint":"eslint --max-warnings=0 --ext=ts,tsx . --fix ","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc","build:cjs":"tsc --module commonjs --outDir dist/cjs","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run lint && npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start","prepare":"husky install"},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"readme":"# Textarea Markdown\n\n[![CI status][github-action-image]][github-action-url] [![codecov][codecov-image]][codecov-url] [![NPM version][npm-image]][npm-url]\n\n[npm-image]: http://img.shields.io/npm/v/textarea-markdown-editor.svg\n[npm-url]: http://npmjs.org/package/textarea-markdown-editor\n[github-action-image]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml/badge.svg\n[github-action-url]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml\n[codecov-image]: https://codecov.io/gh/Resetand/textarea-markdown-editor/branch/master/graph/badge.svg?token=OBD8KR7Y98\n[codecov-url]: https://codecov.io/gh/Resetand/textarea-markdown-editor\n\n```bash\nnpm install textarea-markdown-editor\n```\n\n> There are some breaking changes since v1.0.0 released, checkout the [release note](https://github.com/Resetand/textarea-markdown-editor/releases/tag/v1.0.0)\n\n---\n\n**Textarea Markdown** is a simple markdown editor using only `<textarea/>`. It extends textarea by adding formatting features like shortcuts, list-wrapping, invoked commands and other to make user experience better 🙃\n\nEssentially this library just provides the textarea Component. You can choose any markdown parser, create your own layout, and use your own textarea component that is styled and behaves however you like\n\n<p style='max-width:800px;margin-top:8%' align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Resetand/textarea-markdown-editor/master/img/overview.gif\" />\n</p>\n\n## Features\n\n-   Lists wrapping\n-   Auto formatting pasted links\n-   Indent tabulation\n-   Keyboard shortcuts handling\n-   17 built-in customizable commands\n\n## Usage\n\n```tsx\nimport React, { Fragment, useRef, useState } from 'react';\nimport TextareaMarkdown, { TextareaMarkdownRef } from 'textarea-markdown-editor';\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger('bold')}>Bold</button>\n            <br />\n            <TextareaMarkdown ref={ref} value={value} onChange={(e) => setValue(e.target.value)} />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Ref instance provide the `trigger` function to invoke commands\n\n### Custom textarea `Component`\n\nYou can use custom textarea Component. Just wrap it with `TextareaMarkdown.Wrapper`\n\n```tsx\nimport React, { useRef, useState } from 'react';\nimport TextareaMarkdown, { TextareaMarkdownRef } from 'textarea-markdown-editor';\nimport TextareaAutosize from 'react-textarea-autosize';\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <TextareaMarkdown.Wrapper ref={ref}>\n            <TextareaAutosize value={value} onChange={(e) => setValue(e.target.value)} />\n        </TextareaMarkdown.Wrapper>\n    );\n}\n```\n\nℹ️ This solution will not create any real dom wrapper\n\n### Customize commands\n\nYou can specify or overwrite shortcuts for built-in commands or create your own\n\n```tsx\nimport React, { useRef, useState } from 'react';\nimport TextareaMarkdown, { CommandHandler, TextareaMarkdownRef } from 'textarea-markdown-editor';\n\n/** Inserts 🙃 at the current position and select it */\nconst emojiCommandHandler: CommandHandler = ({ cursor }) => {\n    // MARKER - means a cursor position, or a selection range if specified two markers\n    cursor.insert(`${cursor.MARKER}🙃${cursor.MARKER}`);\n};\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger('insert-emoji')}>Insert 🙃</button>\n            <br />\n            <TextareaMarkdown\n                ref={ref}\n                value={value}\n                onChange={(e) => setValue(e.target.value)}\n                commands={[\n                    {\n                        name: 'code',\n                        shortcut: ['command+/', 'ctrl+/'],\n                        shortcutPreventDefault: true,\n                    },\n                    {\n                        name: 'insert-emoji',\n                        handler: emojiCommandHandler,\n                    },\n                ]}\n            />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Note that mutation `element.value` will not trigger `change` event on textarea element. Use `cursor.setValue(...)` or other method of `Cursor`.\n\nℹ️ [Mousetrap.js](https://craig.is/killing/mice) is used under the hood for shortcuts handling.\nIt is great solution with simple and intuitive api. You can read more about combination in the documentation\n\n### `β` Usage without `react`\n\n```js\nimport { bootstrapTextareaMarkdown } from 'textarea-markdown-editor/dist/bootstrap';\n\nconst textarea = document.querySelector('textarea'); // element can be obtained from anywhere, this is just an example;\n\nconst { trigger, dispose } = bootstrapTextareaMarkdown(textarea, {\n    options: {}, // optional options config\n    commands: [], // optional commands configs\n});\n```\n\nℹ️ Checkout [sandbox example](https://codesandbox.io/s/vanila-textarea-markdown-editor-5q6bqb?file=/src/index.js)\n\nℹ️ Although this is possible, this feature is more of a workaround, since the library was originally written to be used with react, your package manager probably will warn you about missing peer-dependencies\n\n---\n\n### 👀 You can find more examples [here](https://github.com/Resetand/textarea-markdown-editor/tree/master/sandbox/src/examples)\n\n---\n\n## API\n\n-   [TextareaMarkdownProps](#textareamarkdownprops)\n-   [Command](#command)\n-   [CommandHandler](#commandhandler)\n-   [Built-in commands](#built-in-commands)\n-   [TextareaMarkdownOptions](#textareamarkdownoptions)\n-   [TextareaMarkdownRef](#textareamarkdownref)\n\n### `TextareaMarkdownProps`\n\nℹ️ `TextareaMarkdown` accepts all props which native textarea supports\n\n#### `options` [`TextareaMarkdownOptions`](#textareamarkdownoptions)\n\nOptions config\n\n#### `commands` [`Command`](#command)[]\n\nArray of commands configuration\n\n<!-- | Property     | Description                     | Type                                                  |\n| ------------ | ------------------------------- | ----------------------------------------------------- |\n| **options**  | Options config                  | [`TextareaMarkdownOptions`](#textareamarkdownoptions) |\n| **commands** | Array of commands configuration | [`Command`](#command)[]                               | -->\n\n---\n\n#### `Command`\n\n| Name                        | Type                                | Description                                                           |\n| :-------------------------- | :---------------------------------- | :-------------------------------------------------------------------- |\n| **name**                    | `TType`                             | Built-in or custom command name                                       |\n| **shortcut?**               | `string` \\| `string`[]              | Shortcut combinations ([Mousetrap.js](https://craig.is/killing/mice)) |\n| **shortcutPreventDefault?** | `boolean`                           | Toggle key event prevent `default:false`                              |\n| **handler?**                | [`CommandHandler`](#commandhandler) | Handler function for custom commands                                  |\n| **enable?**                 | `boolean`                           | Toggle command enabling                                               |\n\n---\n\n#### `CommandHandler`\n\n```ts\nexport type CommandHandler = (context: CommandHandlerContext) => void | Promise<void>;\n\nexport type CommandHandlerContext = {\n    textarea: HTMLTextAreaElement;\n    cursor: Cursor;\n    keyEvent?: KeyboardEvent;\n    clipboardEvent?: ClipboardEvent;\n    options: TextareaMarkdownOptions;\n};\n```\n\n---\n\n#### `Built-in commands`\n\n| Name               | Description                                                        | Shortcut               |\n| ------------------ | ------------------------------------------------------------------ | ---------------------- |\n| **bold**           | Inserts or wraps bold markup                                       | `ctrl/command+b`       |\n| **italic**         | Inserts or wraps italic markup                                     | `ctrl/command+i`       |\n| **strike-through** | Inserts or wraps strike-through markup                             | `ctrl/command+shift+x` |\n| **link**           | Inserts or wraps link markup                                       |                        |\n| **image**          | Inserts or wraps image markup                                      |                        |\n| **unordered-list** | Inserts or wraps unordered list markup                             |                        |\n| **ordered-list**   | Inserts or wraps ordered list markup                               |                        |\n| **code-block**     | Inserts or wraps code block markup                                 |                        |\n| **code-inline**    | Inserts or wraps inline code markup                                |                        |\n| **code**           | Inserts or wraps inline or block code markup dependent of selected |                        |\n| **block-quotes**   | Inserts or wraps block-quotes markup                               |                        |\n| **h1**             | Inserts h1 headline                                                |                        |\n| **h2**             | Inserts h2 headline                                                |                        |\n| **h3**             | Inserts h3 headline                                                |                        |\n| **h4**             | Inserts h4 headline                                                |                        |\n| **h5**             | Inserts h5 headline                                                |                        |\n| **h6**             | Inserts h6 headline                                                |                        |\n\n---\n\n### TextareaMarkdownOptions\n\n| Name                                        | Type                                        | Description                                                                                                                              |\n| :------------------------------------------ | :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |\n| **preferredBoldSyntax**                     | `\"**\"` \\| `\"__\"`                            | Preferred bold wrap syntax `default: '**'`                                                                                               |\n| **preferredItalicSyntax**                   | `\"*\"` \\| `\"_\"`                              | Preferred italic wrap syntax `default: '*'`                                                                                              |\n| **preferredUnorderedListSyntax**            | `\"-\"` \\| `\"*\"` \\| `\"+\"`                     | Preferred unordered list prefix `default: '-'`                                                                                           |\n| **enableIndentExtension**                   | `boolean`                                   | Will handle `tab` and `shift+tab` keystrokes, on which will insert/remove indentation instead of the default behavior `default:true`     |\n| **enableLinkPasteExtension**                | `boolean`                                   | Will handle `paste` event, on which will wrap pasted with link/image markup if pasted is URL `default:true`                              |\n| **enablePrefixWrappingExtension**           | `boolean`                                   | Will handle `enter` keystroke, on which will wrap current list sequence if needed `default:true`                                         |\n| **enableProperLineRemoveBehaviorExtension** | `boolean`                                   | Will handle `command/ctrl+backspace` keystrokes, on which will remove only a current line instead of the default behavior `default:true` |\n| **customPrefixWrapping**                    | (`PrefixWrappingConfig` \\| `string`)[]      | Array of custom prefixes, that need to be wrapped. (Will not work with `enablePrefixWrappingExtension:false`)                            |\n| **blockQuotesPlaceholder**                  | `string`                                    | `default: 'quote'`                                                                                                                       |\n| **boldPlaceholder**                         | `string`                                    | `default: 'bold'`                                                                                                                        |\n| **codeBlockPlaceholder**                    | `string`                                    | `default: 'code block'`                                                                                                                  |\n| **codeInlinePlaceholder**                   | `string`                                    | `default: 'code'`                                                                                                                        |\n| **headlinePlaceholder**                     | `string` \\| (`level`: `number`) => `string` | `default: (lvl) => 'headline ' + lvl`                                                                                                    |\n| **imageTextPlaceholder**                    | `string`                                    | Used inside default image markup `![<example>](...)` `default: 'example'`                                                                |\n| **imageUrlPlaceholder**                     | `string`                                    | Used inside default image markup `![...](<image.png>)` `default: 'image.png'`                                                            |\n| **italicPlaceholder**                       | `string`                                    | `default: 'italic'`                                                                                                                      |\n| **linkTextPlaceholder**                     | `string`                                    | Used inside default link markup `[<example>](...)` `default: 'example'`                                                                  |\n| **linkUrlPlaceholder**                      | `string`                                    | Used inside default image markup `![...](<url>)` `default: 'url'`                                                                        |\n| **orderedListPlaceholder**                  | `string`                                    | `default: 'ordered list'`                                                                                                                |\n| **strikeThroughPlaceholder**                | `string`                                    | `default: 'strike through'`                                                                                                              |\n| **unorderedListPlaceholder**                | `string`                                    | `default: 'unordered list'`                                                                                                              |\n\n---\n\n#### `TextareaMarkdownRef`\n\nℹ️ Extends `HTMLTextAreaElement` instance\n\n```typescript\ntrigger: (command: string) => void;\ncursor: Cursor\n```\n","readmeFilename":"README.md","gitHead":"9e1d8a8d7cdff257a876ae06c8d6dd60c3c98754","_id":"textarea-markdown-editor@1.0.5-rc.2","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-0XEtnpw66Vh7DUkdDRqypILwbnP/fBAkxCWOhtOh5uoDSbmrEfu5hALXpvWpgDBJdk0OonYdnVf5u5lvhpQDOw==","shasum":"fa6bda8b15eaa3398c37c6e307dc67f4db107cdb","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.5-rc.2.tgz","fileCount":40,"unpackedSize":171443,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo2BveKwzUoPDC2Y5G+9YRKNKQ1wmZ5PoIlEHFCnz5ugIgSzQT3Yrmqvlfm+qQH+Q2Z0cDT2Wti4S7sXk9tpMl/98="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjatYAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrbmxAAlCeDSSZwWoxjzpbbvH5iN4uaJYQ1QR2CpmMB0woFvr7phopN\r\nK02ofiHLKc1rE/mVwvpWj88fMms+bZCJVysmNnJ3tpjpb4x5DJUwYEkE99jG\r\nU1a0zsJ19qOCLn0KM/QBYLhqJfsC7cr801AscFDS4w7tl/eOjl0rmqa2Yeev\r\nqaXXdxaIoqT9inOQw59nmfy3Z1EDamAjzFuIRgsyVvY6JekkVbmm3w4IlpXF\r\nsIIGMajywpezpmpHloZGifTDYIU/kG1M0DPla/vr2Q2pJ7X8NXICrst8tHjm\r\nlcpIsK/nOhcKtqHFjcZhV222OrZR+NXuOt+DjTc0sHcKEbeuH+wLMRuy6yCv\r\nyoQtYtKRN4gaeo5XvGSZ4j5x22fMTzS01whIC0Hzu1cuwLEwAZ0fNurIfRsU\r\nUXf/Khw+hoA9MPOQUiD2IvooJJFuOHfPyEUQBdVyrAll3HmSkTvcR8EbNptB\r\n4D7So9VEBiwEzs2uNiHOWLKckkXKGO6EFOliGxhaahIBMD6niyU3E7m3HIjo\r\nXjb8uZl2c+Wd5wBIhyJ++RFcauHYLqKJ2lqLi3ExUSTCPnV1P8ea4RMrQakC\r\nt2xuHvvKcEZdZsOiQAp+kkttCUmzcKtwO9zUcuQAmwms3hZ0vnMaKQC1OJFz\r\nRd10LjWxg19s3JQYdTRGNlSk9e62vd7pSk4=\r\n=cRyC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.5-rc.2_1667945983984_0.23405560458602603"},"_hasShrinkwrap":false},"1.0.5-rc.4":{"name":"textarea-markdown-editor","version":"1.0.5-rc.4","description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","keywords":["react","textarea","markdown","editor","formatting","shortcuts"],"main":"dist/cjs/index.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"dependencies":{"mousetrap":"^1.6.5"},"devDependencies":{"@testing-library/jest-dom":"5.16.5","@testing-library/react":"13.4.0","@testing-library/user-event":"14.4.3","@types/common-tags":"1.8.1","@types/jest":"29.2.1","@types/mousetrap":"1.6.10","@types/node":"18.11.9","@types/react":"18.0.24","@types/react-dom":"18.0.8","@typescript-eslint/eslint-plugin":"5.42.0","@typescript-eslint/parser":"5.42.0","common-tags":"1.8.2","eslint":"8.26.0","eslint-config-prettier":"8.5.0","eslint-config-react-app":"7.0.1","husky":"8.0.1","jest":"29.2.2","jest-environment-jsdom":"29.2.2","lint-staged":"13.0.3","npm-watch":"0.11.0","react":"18.2.0","react-dom":"18.2.0","ts-jest":"29.0.3","typescript":"4.8.4"},"scripts":{"lint":"eslint --max-warnings=0 --ext=ts,tsx . --fix ","build":"npm run build:esm && npm run build:cjs","build:esm":"tsc","build:cjs":"tsc --module commonjs --outDir dist/cjs","test":"jest --colors","test:coverage":"npm run test -- --coverage","prepublish":"npm run lint && npm run test -- --watchAll=false && npm run build","start-sandbox":"npm run build; npm --prefix sandbox i -f; npm link sandbox/node_modules/react; npm --prefix sandbox run start","prepare":"husky install"},"watch":{"build":{"patterns":["src"],"extensions":"ts,tsx,js,jsx"}},"readme":"# Textarea Markdown\n\n[![CI status][github-action-image]][github-action-url] [![codecov][codecov-image]][codecov-url] [![NPM version][npm-image]][npm-url]\n\n[npm-image]: http://img.shields.io/npm/v/textarea-markdown-editor.svg\n[npm-url]: http://npmjs.org/package/textarea-markdown-editor\n[github-action-image]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml/badge.svg\n[github-action-url]: https://github.com/Resetand/textarea-markdown-editor/actions/workflows/ci.yaml\n[codecov-image]: https://codecov.io/gh/Resetand/textarea-markdown-editor/branch/master/graph/badge.svg?token=OBD8KR7Y98\n[codecov-url]: https://codecov.io/gh/Resetand/textarea-markdown-editor\n\n```bash\nnpm install textarea-markdown-editor\n```\n\n> There are some breaking changes since v1.0.0 released, checkout the [release note](https://github.com/Resetand/textarea-markdown-editor/releases/tag/v1.0.0)\n\n---\n\n**Textarea Markdown** is a simple markdown editor using only `<textarea/>`. It extends textarea by adding formatting features like shortcuts, list-wrapping, invoked commands and other to make user experience better 🙃\n\nEssentially this library just provides the textarea Component. You can choose any markdown parser, create your own layout, and use your own textarea component that is styled and behaves however you like\n\n<p style='max-width:800px;margin-top:8%' align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Resetand/textarea-markdown-editor/master/img/overview.gif\" />\n</p>\n\n## Features\n\n-   Lists wrapping\n-   Auto formatting pasted links\n-   Indent tabulation\n-   Keyboard shortcuts handling\n-   17 built-in customizable commands\n\n## Usage\n\n```tsx\nimport React, { Fragment, useRef, useState } from 'react';\nimport TextareaMarkdown, { TextareaMarkdownRef } from 'textarea-markdown-editor';\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger('bold')}>Bold</button>\n            <br />\n            <TextareaMarkdown ref={ref} value={value} onChange={(e) => setValue(e.target.value)} />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Ref instance provide the `trigger` function to invoke commands\n\n### Custom textarea `Component`\n\nYou can use custom textarea Component. Just wrap it with `TextareaMarkdown.Wrapper`\n\n```tsx\nimport React, { useRef, useState } from 'react';\nimport TextareaMarkdown, { TextareaMarkdownRef } from 'textarea-markdown-editor';\nimport TextareaAutosize from 'react-textarea-autosize';\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <TextareaMarkdown.Wrapper ref={ref}>\n            <TextareaAutosize value={value} onChange={(e) => setValue(e.target.value)} />\n        </TextareaMarkdown.Wrapper>\n    );\n}\n```\n\nℹ️ This solution will not create any real dom wrapper\n\n### Customize commands\n\nYou can specify or overwrite shortcuts for built-in commands or create your own\n\n```tsx\nimport React, { useRef, useState } from 'react';\nimport TextareaMarkdown, { CommandHandler, TextareaMarkdownRef } from 'textarea-markdown-editor';\n\n/** Inserts 🙃 at the current position and select it */\nconst emojiCommandHandler: CommandHandler = ({ cursor }) => {\n    // MARKER - means a cursor position, or a selection range if specified two markers\n    cursor.insert(`${cursor.MARKER}🙃${cursor.MARKER}`);\n};\n\nfunction App() {\n    const [value, setValue] = useState('');\n    const ref = useRef<TextareaMarkdownRef>(null);\n\n    return (\n        <Fragment>\n            <button onClick={() => ref.current?.trigger('insert-emoji')}>Insert 🙃</button>\n            <br />\n            <TextareaMarkdown\n                ref={ref}\n                value={value}\n                onChange={(e) => setValue(e.target.value)}\n                commands={[\n                    {\n                        name: 'code',\n                        shortcut: ['command+/', 'ctrl+/'],\n                        shortcutPreventDefault: true,\n                    },\n                    {\n                        name: 'insert-emoji',\n                        handler: emojiCommandHandler,\n                    },\n                ]}\n            />\n        </Fragment>\n    );\n}\n```\n\nℹ️ Note that mutation `element.value` will not trigger `change` event on textarea element. Use `cursor.setValue(...)` or other method of `Cursor`.\n\nℹ️ [Mousetrap.js](https://craig.is/killing/mice) is used under the hood for shortcuts handling.\nIt is great solution with simple and intuitive api. You can read more about combination in the documentation\n\n### `β` Usage without `react`\n\n```js\nimport { bootstrapTextareaMarkdown } from 'textarea-markdown-editor/dist/bootstrap';\n\nconst textarea = document.querySelector('textarea'); // element can be obtained from anywhere, this is just an example;\n\nconst { trigger, dispose } = bootstrapTextareaMarkdown(textarea, {\n    options: {}, // optional options config\n    commands: [], // optional commands configs\n});\n```\n\nℹ️ Checkout [sandbox example](https://codesandbox.io/s/vanila-textarea-markdown-editor-5q6bqb?file=/src/index.js)\n\nℹ️ Although this is possible, this feature is more of a workaround, since the library was originally written to be used with react, your package manager probably will warn you about missing peer-dependencies\n\n---\n\n### 👀 You can find more examples [here](https://github.com/Resetand/textarea-markdown-editor/tree/master/sandbox/src/examples)\n\n---\n\n## API\n\n-   [TextareaMarkdownProps](#textareamarkdownprops)\n-   [Command](#command)\n-   [CommandHandler](#commandhandler)\n-   [Built-in commands](#built-in-commands)\n-   [TextareaMarkdownOptions](#textareamarkdownoptions)\n-   [TextareaMarkdownRef](#textareamarkdownref)\n\n### `TextareaMarkdownProps`\n\nℹ️ `TextareaMarkdown` accepts all props which native textarea supports\n\n#### `options` [`TextareaMarkdownOptions`](#textareamarkdownoptions)\n\nOptions config\n\n#### `commands` [`Command`](#command)[]\n\nArray of commands configuration\n\n<!-- | Property     | Description                     | Type                                                  |\n| ------------ | ------------------------------- | ----------------------------------------------------- |\n| **options**  | Options config                  | [`TextareaMarkdownOptions`](#textareamarkdownoptions) |\n| **commands** | Array of commands configuration | [`Command`](#command)[]                               | -->\n\n---\n\n#### `Command`\n\n| Name                        | Type                                | Description                                                           |\n| :-------------------------- | :---------------------------------- | :-------------------------------------------------------------------- |\n| **name**                    | `TType`                             | Built-in or custom command name                                       |\n| **shortcut?**               | `string` \\| `string`[]              | Shortcut combinations ([Mousetrap.js](https://craig.is/killing/mice)) |\n| **shortcutPreventDefault?** | `boolean`                           | Toggle key event prevent `default:false`                              |\n| **handler?**                | [`CommandHandler`](#commandhandler) | Handler function for custom commands                                  |\n| **enable?**                 | `boolean`                           | Toggle command enabling                                               |\n\n---\n\n#### `CommandHandler`\n\n```ts\nexport type CommandHandler = (context: CommandHandlerContext) => void | Promise<void>;\n\nexport type CommandHandlerContext = {\n    textarea: HTMLTextAreaElement;\n    cursor: Cursor;\n    keyEvent?: KeyboardEvent;\n    clipboardEvent?: ClipboardEvent;\n    options: TextareaMarkdownOptions;\n};\n```\n\n---\n\n#### `Built-in commands`\n\n| Name               | Description                                                        | Shortcut               |\n| ------------------ | ------------------------------------------------------------------ | ---------------------- |\n| **bold**           | Inserts or wraps bold markup                                       | `ctrl/command+b`       |\n| **italic**         | Inserts or wraps italic markup                                     | `ctrl/command+i`       |\n| **strike-through** | Inserts or wraps strike-through markup                             | `ctrl/command+shift+x` |\n| **link**           | Inserts or wraps link markup                                       |                        |\n| **image**          | Inserts or wraps image markup                                      |                        |\n| **unordered-list** | Inserts or wraps unordered list markup                             |                        |\n| **ordered-list**   | Inserts or wraps ordered list markup                               |                        |\n| **code-block**     | Inserts or wraps code block markup                                 |                        |\n| **code-inline**    | Inserts or wraps inline code markup                                |                        |\n| **code**           | Inserts or wraps inline or block code markup dependent of selected |                        |\n| **block-quotes**   | Inserts or wraps block-quotes markup                               |                        |\n| **h1**             | Inserts h1 headline                                                |                        |\n| **h2**             | Inserts h2 headline                                                |                        |\n| **h3**             | Inserts h3 headline                                                |                        |\n| **h4**             | Inserts h4 headline                                                |                        |\n| **h5**             | Inserts h5 headline                                                |                        |\n| **h6**             | Inserts h6 headline                                                |                        |\n\n---\n\n### TextareaMarkdownOptions\n\n| Name                                        | Type                                        | Description                                                                                                                              |\n| :------------------------------------------ | :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- |\n| **preferredBoldSyntax**                     | `\"**\"` \\| `\"__\"`                            | Preferred bold wrap syntax `default: '**'`                                                                                               |\n| **preferredItalicSyntax**                   | `\"*\"` \\| `\"_\"`                              | Preferred italic wrap syntax `default: '*'`                                                                                              |\n| **preferredUnorderedListSyntax**            | `\"-\"` \\| `\"*\"` \\| `\"+\"`                     | Preferred unordered list prefix `default: '-'`                                                                                           |\n| **enableIndentExtension**                   | `boolean`                                   | Will handle `tab` and `shift+tab` keystrokes, on which will insert/remove indentation instead of the default behavior `default:true`     |\n| **enableLinkPasteExtension**                | `boolean`                                   | Will handle `paste` event, on which will wrap pasted with link/image markup if pasted is URL `default:true`                              |\n| **enablePrefixWrappingExtension**           | `boolean`                                   | Will handle `enter` keystroke, on which will wrap current list sequence if needed `default:true`                                         |\n| **enableProperLineRemoveBehaviorExtension** | `boolean`                                   | Will handle `command/ctrl+backspace` keystrokes, on which will remove only a current line instead of the default behavior `default:true` |\n| **customPrefixWrapping**                    | (`PrefixWrappingConfig` \\| `string`)[]      | Array of custom prefixes, that need to be wrapped. (Will not work with `enablePrefixWrappingExtension:false`)                            |\n| **blockQuotesPlaceholder**                  | `string`                                    | `default: 'quote'`                                                                                                                       |\n| **boldPlaceholder**                         | `string`                                    | `default: 'bold'`                                                                                                                        |\n| **codeBlockPlaceholder**                    | `string`                                    | `default: 'code block'`                                                                                                                  |\n| **codeInlinePlaceholder**                   | `string`                                    | `default: 'code'`                                                                                                                        |\n| **headlinePlaceholder**                     | `string` \\| (`level`: `number`) => `string` | `default: (lvl) => 'headline ' + lvl`                                                                                                    |\n| **imageTextPlaceholder**                    | `string`                                    | Used inside default image markup `![<example>](...)` `default: 'example'`                                                                |\n| **imageUrlPlaceholder**                     | `string`                                    | Used inside default image markup `![...](<image.png>)` `default: 'image.png'`                                                            |\n| **italicPlaceholder**                       | `string`                                    | `default: 'italic'`                                                                                                                      |\n| **linkTextPlaceholder**                     | `string`                                    | Used inside default link markup `[<example>](...)` `default: 'example'`                                                                  |\n| **linkUrlPlaceholder**                      | `string`                                    | Used inside default image markup `![...](<url>)` `default: 'url'`                                                                        |\n| **orderedListPlaceholder**                  | `string`                                    | `default: 'ordered list'`                                                                                                                |\n| **strikeThroughPlaceholder**                | `string`                                    | `default: 'strike through'`                                                                                                              |\n| **unorderedListPlaceholder**                | `string`                                    | `default: 'unordered list'`                                                                                                              |\n\n---\n\n#### `TextareaMarkdownRef`\n\nℹ️ Extends `HTMLTextAreaElement` instance\n\n```typescript\ntrigger: (command: string) => void;\ncursor: Cursor\n```\n","readmeFilename":"README.md","gitHead":"a7b79c0c6c811a952d4424090db23e730d939987","_id":"textarea-markdown-editor@1.0.5-rc.4","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-2f85Uvvk/bFOFHENa4S8GVF3T6MS+0V+bj0MpR/5D+c6VJ9pnCienWVMR6v5unwdHfnTYVIjFvWhK1cCza8XXg==","shasum":"cf1f3353dfdc4c5cee736bf91dc01276e69a0217","tarball":"https://registry.npmjs.org/textarea-markdown-editor/-/textarea-markdown-editor-1.0.5-rc.4.tgz","fileCount":40,"unpackedSize":171467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYMjeNlntcETMotNy38job4w4Ym5XE6RuplJ4jdXI3gAiEA6OJRWPk5fi/ubKItFbBE/dW4weswb0LtEWDXqAPqruQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjat9vACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9/w/5AHjkK/X28ZVRHNtQCeus+u0kZmzghSDC3bNMW7ME8MS42U9N\r\nkhSXUtFbxLDJH41vV6KdZLDzFsVBIMvBMQnUYbp07OGH5yo/wNwkhOL2NfUA\r\nHCZ9Q1bYZpwi7SxmCqdu7g535bdrLWt1zm8QzKs/ExqgUPbRWwWZLK6kYkJr\r\nji0RupA3wUx8PRg3uJUAIqFt3tDJySHpkno9XOUpqpl/R1Vtvx5h/gLNXDYq\r\n8sTbzNB2eEiTCWskei2v/3TdVH8oLwxW9EhUlfNr0oVfopn+YGND5OSP9mAQ\r\nM1jCwcc5XCa4n3+izlDJqK4b52vYAdG5dv8TAj9rNUk2sbrILVNUYZ8lE4xi\r\n+B3GxyATtMqZMEEnqguEaYG/ZflKJIBBndAMMiBes5SQkh59mJqFrKSL4IXs\r\nOpHAFvCon0fav87xHAvpdaJHJekxRj3Xogxbvprtic+JAenoAYcZwl0LdDj8\r\ns940xEsZonhKVfRIovrNaWy4vfG+o2N9UNPZxctt5+Cg071rrnKimx52E4mK\r\nFLQRjT2LHRUb/6abTFE7LBHFfI1lBlelZ1Og4B5EFZ9LGjtJiEvkGsGpC9U7\r\nFQhRzKA1fgw6snRWhUl9pXmyT+TjEYspGcXbCEEMtUgObAa9mZEly7jz18EY\r\nEwZKdI+7JOZIeEipMJ1/KH6iIsGRJcWfXTs=\r\n=CMXA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"resetand","email":"machehin00@gmail.com"},"directories":{},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/textarea-markdown-editor_1.0.5-rc.4_1667948399273_0.3397940745265482"},"_hasShrinkwrap":false}},"time":{"created":"2021-05-12T12:14:00.669Z","0.1.0":"2021-05-12T12:14:00.838Z","modified":"2022-11-08T22:59:59.566Z","0.1.1":"2021-05-12T12:18:52.909Z","0.1.2":"2021-05-12T12:53:55.273Z","0.1.3":"2021-05-12T13:12:57.430Z","0.1.4":"2021-05-12T13:16:49.126Z","0.1.5":"2021-05-12T16:47:55.502Z","0.1.6":"2021-05-14T11:42:10.819Z","0.1.7":"2021-05-15T23:03:51.753Z","0.1.8":"2021-05-16T23:50:48.331Z","0.1.9":"2021-08-24T17:27:08.227Z","0.1.11":"2021-09-06T13:17:26.461Z","0.1.12":"2021-11-06T14:33:01.964Z","0.1.13":"2022-01-26T18:27:13.029Z","1.0.0-rc.1":"2022-05-14T21:35:16.912Z","1.0.0-rc.0":"2022-05-14T23:22:04.541Z","1.0.0-rc.2":"2022-05-15T13:00:07.485Z","1.0.0":"2022-05-15T13:43:47.923Z","1.0.1":"2022-05-28T19:48:33.372Z","1.0.2":"2022-11-01T09:56:48.138Z","1.0.3":"2022-11-01T10:19:43.434Z","1.0.4":"2022-11-01T16:28:13.705Z","1.0.5-rc.0":"2022-11-08T20:46:48.896Z","1.0.5-rc.1":"2022-11-08T20:51:33.577Z","1.0.5-rc.2":"2022-11-08T22:19:44.227Z","1.0.5-rc.4":"2022-11-08T22:59:59.453Z"},"maintainers":[{"name":"resetand","email":"machehin00@gmail.com"}],"description":"UI headless React markdown editor using only textarea","homepage":"https://github.com/Resetand/markdown-textarea","author":{"name":"Resetand"},"license":"MIT","readme":"","readmeFilename":"","keywords":["react","textarea","markdown","editor","formatting","shortcuts"]}