{"_id":"@convergencelabs/codemirror-collab-ext","_rev":"3-65ed70eb220a097977c7d5e559b77b2d","name":"@convergencelabs/codemirror-collab-ext","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@convergencelabs/codemirror-collab-ext","version":"0.1.0","title":"CodeMirror Collaborative Extensions","description":"Collaborative Extensions for the CodeMirror Editor","keywords":["collaboration","CodeMirror","editor"],"homepage":"http://convergencelabs.com","author":{"name":"Convergence Labs","email":"info@convergencelabs.com","url":"http://convergencelabs.com"},"contributors":[],"repository":{"type":"git","url":"git+https://github.com/convergencelabs/codemirror-collab-ext.git"},"bugs":{"url":"https://github.com/convergencelabs/codemirror-collab-ext/issues"},"license":"MIT","main":"lib/index.js","typings":"typings/index.d.ts","publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"dependencies":{"@types/codemirror":"0.0.81","codemirror":"5.49.2","@ctrl/tinycolor":"2.5.4"},"devDependencies":{"@babel/cli":"7.7.4","@babel/core":"7.7.4","@babel/node":"7.7.4","@babel/preset-env":"7.7.4","@babel/preset-stage-3":"7.0.0","@babel/preset-typescript":"7.7.4","@babel/register":"7.7.4","babel-plugin-module-resolver":"3.2.0","babel-plugin-transform-class-properties":"6.24.1","del":"3.0.0","gulp":"4.0.0","gulp-babel":"8.0.0","gulp-bump":"3.1.1","gulp-clean-css":"4.2.0","gulp-filter-each":"1.0.1","gulp-header":"2.0.9","gulp-insert":"0.5.0","gulp-rename":"1.4.0","gulp-sourcemaps":"2.6.5","gulp-typescript":"5.0.0","gulp-uglify":"3.0.2","trim":"0.0.1","ts-loader":"6.2.1","tslint":"5.20.1","typescript":"3.7.2","webpack":"4.41.2","webpack-stream":"5.2.1"},"scripts":{"dist":"gulp dist","clean":"gulp clean"},"_id":"@convergencelabs/codemirror-collab-ext@0.1.0","_nodeVersion":"12.10.0","_npmVersion":"6.13.1","dist":{"integrity":"sha512-YURuLWTYQ+KneFdxuGotBJh0ic5GCrlDndx4rBqFVj9oCaDbLu6Wq09hTT2t2kA/4ODq8GWyFAGzQAt1UI6ohA==","shasum":"56a19b5c99bd7afcd5cdca3237716165003274d6","tarball":"https://registry.npmjs.org/@convergencelabs/codemirror-collab-ext/-/codemirror-collab-ext-0.1.0.tgz","fileCount":31,"unpackedSize":3242043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4czeCRA9TVsSAnZWagAAK1oP/1gcpc20is5mOTxYiar/\nXZTrPPuGBsQGWVJeowmkXLhbSJCzT3MOeBeB3z3UJXeo1vmAmExjCL9s2o/R\n5MRSe9n1u7d1CdcR/73NauavRZuaPGxvIznVdwo62ccZqJ272VAjJuuitgtu\nn0IB9A27D5sMTWNxQhzGkk38+aT70Fq5Xiil3aGJ7QwdY4F1rDBUuhMvhVDe\nW/F3pKcGgVRN28mgE3NgDpo7enfv6tSj9GxyxOe0YAE7yR0XVysONGKFgd6I\ncw+WC4QmGYU1+8YiOvY2s71wnV/biE/lBAziVPBN5l8tVHzTdoKCyr2LvhZS\nR9a+V9Bj0gU5Nr7sCNfnfJ0unL+SPgcZn5K5rFi1I4FJI6ssLto4+WJm0JPA\nUx/yhRhs1r+nqV4Ei6Xm6jzNC0JtZjMpNABccWPYfwUD2kuPfpbR79p9Ycsp\nSNLG2gN7oH/rXHpnj/uyi70oxNEs52rFVsYNsQkM04syQIFvwbnGUHlTWbFo\nV1jFJDBQx34z1dusI9TIRkLcd/1mHGAYbkmHSLyzmNJm0Ma427YIsyCBBm4x\n2W1ZFv1jXZTPSAh9qkg02vXPiUNJ/JkT5TjY72gkRtPiZKclPTHwN5pnC+S/\nckSgyLoV2gtcemktmKwzqIX8wgJnzRbppdUTNaL1GBN7r/WAPXq4tPHWgtVm\n53km\r\n=jBNA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHmM1OhDQyllVuUo357KXso2a6OIUxEHFubTVpvLy6hsAiEA3mc8RlXCQgaLbJnRSQvEbu9VywFrrL62Bm2220yZnWI="}]},"maintainers":[{"name":"alalonde","email":"alec@boxelderweb.com"},{"name":"convergence","email":"sysadmin@convergencelabs.com"},{"name":"mmacfadden","email":"michael@macfadden.org"},{"name":"convergencelabs-admin","email":"sysadmin@convergencelabs.com"}],"_npmUser":{"name":"convergence","email":"sysadmin@convergencelabs.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/codemirror-collab-ext_0.1.0_1575079133664_0.967067910129183"},"_hasShrinkwrap":false},"0.1.1":{"name":"@convergencelabs/codemirror-collab-ext","version":"0.1.1","title":"CodeMirror Collaborative Extensions","description":"Collaborative Extensions for the CodeMirror Editor","keywords":["collaboration","CodeMirror","editor"],"homepage":"http://convergencelabs.com","author":{"name":"Convergence Labs","email":"info@convergencelabs.com","url":"http://convergencelabs.com"},"contributors":[],"repository":{"type":"git","url":"git+https://github.com/convergencelabs/codemirror-collab-ext.git"},"bugs":{"url":"https://github.com/convergencelabs/codemirror-collab-ext/issues"},"license":"MIT","main":"lib/index.js","typings":"typings/index.d.ts","publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"dependencies":{"@ctrl/tinycolor":"2.5.4","@types/codemirror":"0.0.81","codemirror":"5.49.2"},"devDependencies":{"@babel/cli":"7.7.4","@babel/core":"7.7.4","@babel/node":"7.7.4","@babel/preset-env":"7.7.4","@babel/preset-stage-3":"7.0.0","@babel/preset-typescript":"7.7.4","@babel/register":"7.7.4","babel-plugin-module-resolver":"3.2.0","babel-plugin-transform-class-properties":"6.24.1","del":"3.0.0","gulp":"4.0.0","gulp-babel":"8.0.0","gulp-bump":"3.1.1","gulp-clean-css":"4.2.0","gulp-filter-each":"1.0.1","gulp-header":"2.0.9","gulp-insert":"0.5.0","gulp-rename":"1.4.0","gulp-sourcemaps":"2.6.5","gulp-typescript":"5.0.0","gulp-uglify":"3.0.2","trim":"0.0.1","ts-loader":"6.2.1","tslint":"5.20.1","typescript":"3.7.2","webpack":"4.41.2","webpack-stream":"5.2.1"},"scripts":{"dist":"gulp dist","clean":"gulp clean"},"_id":"@convergencelabs/codemirror-collab-ext@0.1.1","_nodeVersion":"12.10.0","_npmVersion":"6.13.1","dist":{"integrity":"sha512-3ONLz7SUbrpMaE4VfasuiYZm3CV1t9uoSfll8VZj/OHpjy1HQzchl7B7wv4+TKDDf3IpdNjMl1W1yVn4cyRcJA==","shasum":"99e1bc02ee905a59987b746e9e81f6cf44885436","tarball":"https://registry.npmjs.org/@convergencelabs/codemirror-collab-ext/-/codemirror-collab-ext-0.1.1.tgz","fileCount":31,"unpackedSize":2624635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4dYJCRA9TVsSAnZWagAAAJMP/1I3RETEA4NSz6rBBCWQ\nvNvDOL9x8pClle3KqoMWIkJgHY/xGSy6EeMAosYhvxIbGKQKyRFcZridDZBn\n6D3vTok8jx9otlrwAWvvHtxmd2zF9Wlsjqeymm2wUhYxbwsBJiu/s3ymT3FN\na2CJftEktnpsNd9KlImXCqCDLOjnUST+p/CDj0EaztwI1jeQU/RiBJJVBxh+\nWXPM4M0zEMKKwgTIBQdvFDYjoTY7lVbxf0aEabTzx5CXDJH2SzBJLIvdLcFu\nPFEVdRLNVtBEOltIXbgr5HndojUccxwzUqlogXCOoOU1Hxpb/tBYcYSkLXco\niSkNSzrYIRoh6Vyt1RAJFp7O9EOUbG2Ind5zp3J8nRVxdXg0OL40BkVY8yY7\n76sdW1g0hzxfdclEjqZFysMGrIFWyZ64T6QLhFWKrfXhTmCWJpDW++bBgXIa\nJQA1GiHxSR7TEZ52/pK5MMkwv9Db2o+tSSkWJs5P24wjZo6/e+OZBwp3FXE5\nqdFI3PIahA4oFaGudTZlcUEgmG2lVnn5LD7BhbGtbXjMEXpON0oMnjydsh4A\n9+i+FdO1fNc4Vmm9zgt5l65MI8XQ6sWRDbkST1XtHbDtzsmjL6jr8KIYTlk3\n9i2EfFW6ZrTF44ovHxclXjzGExsw0eqST4tN1N6palr+Y3IFrbaAkYaxEGFv\nVYlF\r\n=zEdn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOdVItVcS908s/Bz1c23QXLzWCQ9TAxdM8y7axyrRv9wIgdC5GhuqgKS0jlEMj2+ZTC/lVEgkimOGO8Nsl9hdyvKA="}]},"maintainers":[{"name":"alalonde","email":"alec@boxelderweb.com"},{"name":"convergence","email":"sysadmin@convergencelabs.com"},{"name":"convergencelabs-admin","email":"sysadmin@convergencelabs.com"},{"name":"mmacfadden","email":"michael@macfadden.org"}],"_npmUser":{"name":"convergence","email":"sysadmin@convergencelabs.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/codemirror-collab-ext_0.1.1_1575081480536_0.604457462200118"},"_hasShrinkwrap":false},"0.1.2":{"name":"@convergencelabs/codemirror-collab-ext","version":"0.1.2","title":"CodeMirror Collaborative Extensions","description":"Collaborative Extensions for the CodeMirror Editor","keywords":["collaboration","CodeMirror","editor"],"homepage":"http://convergencelabs.com","author":{"name":"Convergence Labs","email":"info@convergencelabs.com","url":"http://convergencelabs.com"},"contributors":[],"repository":{"type":"git","url":"git+https://github.com/convergencelabs/codemirror-collab-ext.git"},"bugs":{"url":"https://github.com/convergencelabs/codemirror-collab-ext/issues"},"license":"MIT","main":"lib/index.js","typings":"typings/index.d.ts","publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"dependencies":{"@ctrl/tinycolor":"2.5.4","@types/codemirror":"0.0.81","codemirror":"5.49.2"},"devDependencies":{"@babel/cli":"7.7.4","@babel/core":"7.7.4","@babel/node":"7.7.4","@babel/preset-env":"7.7.4","@babel/preset-stage-3":"7.0.0","@babel/preset-typescript":"7.7.4","@babel/register":"7.7.4","babel-plugin-module-resolver":"3.2.0","babel-plugin-transform-class-properties":"6.24.1","del":"3.0.0","gulp":"4.0.0","gulp-babel":"8.0.0","gulp-bump":"3.1.1","gulp-clean-css":"4.2.0","gulp-filter-each":"1.0.1","gulp-header":"2.0.9","gulp-insert":"0.5.0","gulp-rename":"1.4.0","gulp-sourcemaps":"2.6.5","gulp-typescript":"5.0.0","gulp-uglify":"3.0.2","trim":"0.0.1","ts-loader":"6.2.1","tslint":"5.20.1","typescript":"3.7.2","webpack":"4.41.2","webpack-stream":"5.2.1"},"scripts":{"dist":"gulp dist","clean":"gulp clean"},"_id":"@convergencelabs/codemirror-collab-ext@0.1.2","_nodeVersion":"12.10.0","_npmVersion":"6.13.1","dist":{"integrity":"sha512-jysEMToImIQtMuhmNy4IN9C5/z5y5yNQTngz1etKxlT0lp2RYmPTYP5zbxSTJ1BiibBOjL8l3DoTsPqRVz7fpw==","shasum":"21d1e6efc0c290b0f92fcb5d755c61865e04e13b","tarball":"https://registry.npmjs.org/@convergencelabs/codemirror-collab-ext/-/codemirror-collab-ext-0.1.2.tgz","fileCount":31,"unpackedSize":2625130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4tWKCRA9TVsSAnZWagAAdiIP/0eaqaqa2Tk5TWlncohk\nEMjrFqJiP/hqAoHBLbEmfz2E5qpNh2HfgMqmZ7Bzy9tbcQE2MTL4YXFVaJSG\naZ+aY9dAVvens/3V7+C+pyRihzZwI76ifxl6ywv5DGHhcwX2sbrTimOv2Ch+\n4aKxjUZtLFoEOzFHKRY1AfGRAy+mz/Ark37pciRaJv+sCwSMWhVD9dCCps4Y\nrI1agDY19Vi1uC+ncyM+J/5Teu04ieohpeqIGr0y510HFhxd758OODm/JmCn\n79BndaA/OOqYiNS+kA2/tbZL/ZjrC0N2ucFldrp5dmsfrIHxE4G+Em9Voyiz\ns1ZQ+WhgoOgetEnOiAz4Hxkf//37+7SpgfYfHdKkiDPiUfGW0GV0T8DKxZNG\nQ3OtfLxJ1HiQAg8CwAUPHFVmVDnz5uYf07heVC/QzHx8BYZfg/Me+xq3NtVQ\nlLtBE5BI2Uv6mu5VKhBEXn9dzRcjQUaCJ1foKbmVhmB0FXuFvmO9EckHbMb4\np7SGzGZycp3VICQ0zwNhtIA7PQMHaCi5tMSVDJqJksyBEZXI7EJcI/ORQbrE\nCmc81FzZ1hHuuQaRSPbGLKDGwd6YySUg/rEENOiBS9RjCVn7XDTjM+AOCKRR\nHLAqzuvdta5D580By2KPbOzmRRWCm0Al96fdilRVWHZQLo1/jpNKtbXVxNzP\nINxe\r\n=smZ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTM1tGswNPPCPqkqYf1qKfAaiTWy5co1m1XXVXcto+/AIhANUMe/GPIJVhm0tBpF77ZjLuFMvPveiPWTJIBJzKzeVf"}]},"maintainers":[{"name":"alalonde","email":"alec@boxelderweb.com"},{"name":"convergence","email":"sysadmin@convergencelabs.com"},{"name":"convergencelabs-admin","email":"sysadmin@convergencelabs.com"},{"name":"mmacfadden","email":"michael@macfadden.org"}],"_npmUser":{"name":"convergence","email":"sysadmin@convergencelabs.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/codemirror-collab-ext_0.1.2_1575146889758_0.6445713152614667"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-30T01:58:53.466Z","0.1.0":"2019-11-30T01:58:53.896Z","modified":"2022-04-05T01:08:57.557Z","0.1.1":"2019-11-30T02:38:00.761Z","0.1.2":"2019-11-30T20:48:10.047Z"},"maintainers":[{"name":"alalonde","email":"alec@boxelderweb.com"},{"name":"convergence","email":"sysadmin@convergencelabs.com"},{"name":"convergencelabs-admin","email":"sysadmin@convergencelabs.com"},{"name":"mmacfadden","email":"michael@macfadden.org"}],"description":"Collaborative Extensions for the CodeMirror Editor","homepage":"http://convergencelabs.com","keywords":["collaboration","CodeMirror","editor"],"repository":{"type":"git","url":"git+https://github.com/convergencelabs/codemirror-collab-ext.git"},"contributors":[],"author":{"name":"Convergence Labs","email":"info@convergencelabs.com","url":"http://convergencelabs.com"},"bugs":{"url":"https://github.com/convergencelabs/codemirror-collab-ext/issues"},"license":"MIT","readme":"## CodeMirror Collaborative Extensions\n[![Build Status](https://travis-ci.org/convergencelabs/codemirror-collab-ext.svg?branch=master)](https://travis-ci.org/convergencelabs/codemirror-collab-ext)\n\nEnhances the [CodeMirror Editor](https://codemirror.net/) by adding the ability to render cues about what remote users are doing in the system.\n\n![demo graphic](./docs/demo.gif \"Shared Cursors and Selections\")\n\n## Installation\n\nInstall package with NPM and add it to your development dependencies:\n\n```npm install --save-dev @convergencelabs/codemirror-collab-ext```\n\n## Demo\nGo [here](https://examples.convergence.io/codemirror/index.html) to see a live demo of multiple cursors, multiple selections, and remote scrollbars (Visit on multiple browsers, or even better, point a friend to it too).  This uses [Convergence](https://convergence.io) to handle the synchronization of data and user actions. \n\n## Usage\n\n### RemoteCursorManager\nThe RemoteCursorManager allows you to easily render the cursors of other users\nworking in the same document.  The cursor position can be represented as either\na single linear index or as a 2-dimensional position in the form of\n```{line: 0, ch: 10}```.\n\n```JavaScript\nconst editor = new CodeMirror(document.getElementById(\"editor\"), {\n  mode: \"javascript\",\n  lineNumbers: true,\n  value: editorContents\n});\n\nconst remoteCursorManager = new CodeMirrorCollabExt.RemoteCursorManager({\n  editor: editor,\n  tooltips: true,\n  tooltipDuration: 2\n});\n\nconst cursor = remoteCursorManager.addCursor(\"jDoe\", \"blue\", \"John Doe\");\n\n// Set the position of the cursor.\ncursor.setIndex(4);\n\n// Hide the cursor\ncursor.hide();\n\n// Show the cursor\ncursor.show();\n\n// Remove the cursor.\ncursor.dispose();\n```\n\n### RemoteSelectionManager\nThe RemoteSelectionManager allows you to easily render the selection of other\nusers working in the same document.\n\n```JavaScript\nconst editor = new CodeMirror(document.getElementById(\"editor\"), {\n  mode: \"javascript\",\n  lineNumbers: true,\n  value: editorContents\n});\n\nconst remoteSelectionManager = new CodeMirrorCollabExt.RemoteSelectionManager({editor: editor});\n\nconst selection = remoteSelectionManager.addSelection(\"jDoe\", \"blue\");\n\n// Set the range of the selection using zero-based offsets.\nselection.setIndices(45, 55);\n\n// Hide the selection\nselection.hide();\n\n// Show the selection\nselection.show();\n\n// Remove the selection.\nselection.dispose();\n```\n\n### EditorContentManager \nThe EditorContentManager simplifies dealing with local and remote changes\nto the editor.\n\n```JavaScript\nconst editor = new CodeMirror(document.getElementById(\"editor\"), {\n  mode: \"javascript\",\n  lineNumbers: true,\n  value: editorContents\n});\n\nconst contentManager = new CodeMirrorCollabExt.EditorContentManager({\n  editor: editor,\n  onInsert(index, text) {\n    console.log(\"Insert\", index, text);\n  },\n  onReplace(index, length, text) {\n    console.log(\"Replace\", index, length, text);\n  },\n  onDelete(index, length) {\n    console.log(\"Delete\", index, length);\n  }\n});\n\n// Insert text into the editor at offset 5.\ncontentManager.insert(5, \"some text\");\n\n// Replace the text in the editor at range 5 - 10.\ncontentManager.replace(5, 10, \"some text\");\n\n// Delete the text in the editor at range 5 - 10.\ncontentManager.delete(5, 10);\n\n// Release resources when done\ncontentManager.dispose();\n```\n","readmeFilename":"README.md"}