@llui/lexical-loro 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +262 -0
  3. package/dist/agent-write.d.ts +123 -0
  4. package/dist/agent-write.d.ts.map +1 -0
  5. package/dist/agent-write.js +499 -0
  6. package/dist/agent-write.js.map +1 -0
  7. package/dist/binding.d.ts +122 -0
  8. package/dist/binding.d.ts.map +1 -0
  9. package/dist/binding.js +114 -0
  10. package/dist/binding.js.map +1 -0
  11. package/dist/index.d.ts +69 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +69 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/mapping.d.ts +115 -0
  16. package/dist/mapping.d.ts.map +1 -0
  17. package/dist/mapping.js +181 -0
  18. package/dist/mapping.js.map +1 -0
  19. package/dist/order.d.ts +124 -0
  20. package/dist/order.d.ts.map +1 -0
  21. package/dist/order.js +187 -0
  22. package/dist/order.js.map +1 -0
  23. package/dist/schema.d.ts +343 -0
  24. package/dist/schema.d.ts.map +1 -0
  25. package/dist/schema.js +363 -0
  26. package/dist/schema.js.map +1 -0
  27. package/dist/seed.d.ts +72 -0
  28. package/dist/seed.d.ts.map +1 -0
  29. package/dist/seed.js +72 -0
  30. package/dist/seed.js.map +1 -0
  31. package/dist/text.d.ts +167 -0
  32. package/dist/text.d.ts.map +1 -0
  33. package/dist/text.js +289 -0
  34. package/dist/text.js.map +1 -0
  35. package/dist/to-lexical.d.ts +119 -0
  36. package/dist/to-lexical.d.ts.map +1 -0
  37. package/dist/to-lexical.js +636 -0
  38. package/dist/to-lexical.js.map +1 -0
  39. package/dist/to-loro.d.ts +154 -0
  40. package/dist/to-loro.d.ts.map +1 -0
  41. package/dist/to-loro.js +718 -0
  42. package/dist/to-loro.js.map +1 -0
  43. package/dist/undo.d.ts +94 -0
  44. package/dist/undo.d.ts.map +1 -0
  45. package/dist/undo.js +200 -0
  46. package/dist/undo.js.map +1 -0
  47. package/package.json +64 -0
  48. package/src/agent-write.ts +613 -0
  49. package/src/binding.ts +185 -0
  50. package/src/index.ts +176 -0
  51. package/src/mapping.ts +206 -0
  52. package/src/order.ts +205 -0
  53. package/src/schema.ts +509 -0
  54. package/src/seed.ts +112 -0
  55. package/src/text.ts +357 -0
  56. package/src/to-lexical.ts +792 -0
  57. package/src/to-loro.ts +914 -0
  58. package/src/undo.ts +269 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-loro.js","sourceRoot":"","sources":["../src/to-loro.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AAEH,OAAO,EACL,QAAQ,EACR,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,GAQhB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,QAAQ,EAAkC,MAAM,WAAW,CAAA;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,OAAO,EACP,eAAe,EACf,gBAAgB,GAMjB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,QAAQ,GACT,MAAM,WAAW,CAAA;AAElB,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;AAsCzF;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsB,EAAE,MAAsB;IAC9E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,kBAAkB,CAAA;IACtD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAA;IACpC,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,iEAAiE;IACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe;QAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAExE,4EAA4E;IAC5E,2DAA2D;IAC3D,MAAM,KAAK,GACT,MAAM,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;QAC1D,CAAC,CAAC,IAAI,GAAG,CAAU,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3E,CAAC,CAAC,IAAI,CAAA;IAEV,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AACjF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAsB,EAAE,WAAwB;IAClF,OAAO,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAC9C,CAAC;AAmCD,SAAS,IAAI,CACX,MAAsB,EACtB,WAAwB,EACxB,WAA2B,EAC3B,KAA0B;IAE1B,MAAM,OAAO,GAAY;QACvB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW;QACX,KAAK;QACL,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QACpC,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,CAAC;QACN,OAAO,EAAE,KAAK;KACf,CAAA;IAED,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE;QACpB,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAA;QACvB,OAAO,CAAC,KAAK,GAAG,SAAS,EAAE,CAAA;QAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5D,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAA;QACpC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YACnB,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;YACrD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;SACnC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAA;IACpF,OAAO,OAAO,CAAC,GAAG,CAAA;AACpB,CAAC;AAED,+DAA+D;AAC/D,SAAS,SAAS;IAChB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;IACjC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAA;IAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACtC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;AACjD,CAAC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,iFAAiF;AACjF,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,WAAW,CAClB,SAA2B,EAC3B,IAAiB,EACjB,OAAgB,EAChB,KAAK,GAAG,KAAK;IAEb,MAAM,SAAS,GACb,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAA;IAE3F,IAAI,CAAC,SAAS;QAAE,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAEnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,wEAAwE;QACxE,0EAA0E;QAC1E,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAEtC,4EAA4E;IAC5E,wEAAwE;IACxE,4EAA4E;IAC5E,6CAA6C;IAC7C,IAAI,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7E,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;YAAE,OAAM;IACzD,CAAC;IAED,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,SAAS,CAAC,SAA2B,EAAE,IAAiB,EAAE,OAAgB;IACjF,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAA6B,CAAA;IACzD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS;YAAE,SAAQ;QAC3D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;YAAE,SAAQ;QAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACpB,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC3B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjB,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,GAAW,EAAE,KAAc,EAAE,IAAiB;IACjE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,KAAK,CAAA;QACd,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACtB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;YACxE,MAAM,GAAG,GAA8B,EAAE,CAAA;YACzC,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;gBACtF,IAAI,UAAU,KAAK,SAAS;oBAAE,SAAQ;gBACtC,GAAG,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;YACrE,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CACb,iBAAiB,IAAI,CAAC,OAAO,EAAE,+CAA+C,GAAG,IAAI;gBACnF,IAAI,OAAO,KAAK,uDAAuD,CAC1E,CAAA;IACL,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,CAAU,EAAE,CAAU;IACvC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACxB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC5F,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7E,CAAC;IACD,MAAM,IAAI,GAAG,CAA4B,CAAA;IACzC,MAAM,KAAK,GAAG,CAA4B,CAAA;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC9E,CAAC;AAiCD,SAAS,gBAAgB,CAAC,IAAiB;IACzC,MAAM,GAAG,GAAmB,EAAE,CAAA;IAC9B,IAAI,GAAG,GAAe,EAAE,CAAA;IACxB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAChE,GAAG,GAAG,EAAE,CAAA;IACV,CAAC,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAA;YACP,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAA;IACP,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,wDAAwD;AACxD,SAAS,UAAU,CAAC,KAAmB;IACrC,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;AACzD,CAAC;AAED,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,gBAAgB,CACvB,OAA8B,EAC9B,OAAgC,EAChC,OAAgB;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;QACzB,sEAAsE;QACtE,qEAAqE;QACrE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC;YAAE,OAAO,KAAK,CAAA;QACpE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC5E,yEAAyE;YACzE,qEAAqE;YACrE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;gBAAE,SAAQ;YAClF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YAChE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YACzC,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAA;QAC9E,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,SAAQ;QACrE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7D,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,gBAAgB,CACvB,SAAyB,EACzB,KAAmB,EACnB,OAAgB;IAEhB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7D,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,WAAW,CAAC,SAAS,CAAC,CAAA;AAClE,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,SAAS,iBAAiB,CACxB,OAAyB,EACzB,OAA8B,EAC9B,OAAgC,EAChC,OAAgB;IAEhB,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAuB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAA;IAEzF,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChF,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,SAAS,CAAA;QAClC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YAClD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC3B,OAAO,CAAC,GAAG,EAAE,CAAA;YACf,CAAC;YACD,OAAM;QACR,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,oDAAoD;IACpD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAQ;QAClC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;QAC7D,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;IACxB,CAAC;IAED,2EAA2E;IAC3E,yCAAyC;IACzC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAEjE,mEAAmE;IACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,SAAQ;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;QAC5B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;QAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,eAAe,CAAC,SAAS,CAAC;gBAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QACrE,CAAC;aAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,aAAa,CACpB,QAA2B,EAC3B,OAAgC,EAChC,OAAuC,EACvC,OAAgB;IAEhB,MAAM,eAAe,GAAa,EAAE,CAAA;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAEzF,6EAA6E;IAC7E,sEAAsE;IACtE,MAAM,KAAK,GAAG,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,KAAK,MAAM,KAAK,IAAI,4BAA4B,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAE,CAAC,CAAA;IAE1F,MAAM,MAAM,GAAG,IAAI,KAAK,CAAiB,OAAO,CAAC,MAAM,CAAC,CAAA;IACxD,KAAK,MAAM,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC,SAAS,CAAA;IAEnE,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,GAAG,EAAE,CAAA;QACpD,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,GAAG,CAAA;QACnD,MAAM,KAAK,GAAG,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,GAAG,CAAA;QAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAA;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;YAChC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;gBAC5D,SAAQ;YACV,CAAC;YACD,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YACpC,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAA;QAC7B,CAAC;QACD,CAAC,GAAG,GAAG,CAAA;IACT,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,SAA4B;IACjD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAChE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAA;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CACpB,OAA8B,EAC9B,OAAgC,EAChC,OAAgB;IAEhB,MAAM,IAAI,GAAG,IAAI,GAAG,EAA2B,CAAA;IAC/C,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;YAC7C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,KAAK,CAAoB,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAc,CAAA;IACrC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,0EAA0E;YAC1E,wEAAwE;YACxE,qEAAqE;YACrE,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;YACnC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAQ;YACjC,QAAQ,EAAE,CAAA;YACV,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAClB,SAAQ;QACV,CAAC;QACD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACjD,IAAI,EAAE,KAAK,SAAS;YAAE,SAAQ;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAQ;QACvD,4EAA4E;QAC5E,qCAAqC;QACrC,IAAI,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;YAAE,SAAQ;QAC9C,IAAI,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE,SAAQ;QACnE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAyB;IACpE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAClC,gEAAgE;IAChE,uEAAuE;IACvE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAS,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAA;QACvB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;YAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAE,CAAE,GAAG,MAAM,CAAC,CAAC,CAAE;gBAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;;gBAC/C,IAAI,GAAG,GAAG,CAAA;QACjB,CAAC;QACD,IAAI,GAAG,GAAG,CAAC;YAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAE,CAAA;QAC1C,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,KAAK,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAA;IACrC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;QACf,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAE,CAAA;IAC5B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAClB,QAA2B,EAC3B,KAAmB,EACnB,GAAW,EACX,OAAgB;IAEhB,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,4EAA4E;QAC5E,2EAA2E;QAC3E,uCAAuC;QACvC,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QACjD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACrD,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IACrD,8EAA8E;IAC9E,sEAAsE;IACtE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IAC/C,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,SAAS,QAAQ,CAAC,IAAc,EAAE,KAAkB,EAAE,OAAgB;IACpE,MAAM,MAAM,GAAG,aAAa,CAC1B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CACvF,CAAA;IACD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;IAErC,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACvC,MAAM,IAAI,GACR,MAAM,KAAK,IAAI;YACb,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;YACvC,CAAC,CAAC,kBAAkB,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;QAC7D,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,EAAE,CAAA;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE;YAAE,OAAO,CAAC,GAAG,EAAE,CAAA;IACvC,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;IACtD,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACvB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAA;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,KAAkB,EAAE,OAAgB;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,CAAC,GAAG;YAAE,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC7D,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAA;IACrC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
package/dist/undo.d.ts ADDED
@@ -0,0 +1,94 @@
1
+ /**
2
+ * CRDT-aware undo/redo: Loro's `UndoManager` wired to Lexical's undo commands.
3
+ *
4
+ * ── Why not `@lexical/history` ─────────────────────────────────────────────
5
+ *
6
+ * Lexical's built-in history is SNAPSHOT-based and knows nothing about who made
7
+ * a change. Under collaboration it records our inbound writeback as though the
8
+ * local user had typed it, so undoing after a peer's edit re-applies a snapshot
9
+ * taken BEFORE that edit — reverting the REMOTE change, and (because the
10
+ * outbound sync replays the snapshot faithfully) removing it for every peer.
11
+ * No update tag avoids that; it is a property of snapshot undo.
12
+ *
13
+ * Loro's `UndoManager` is operation-based and bound to a PeerID: it records the
14
+ * commits made by this peer and ignores everything imported from others. Undo
15
+ * therefore reverts exactly the local user's own last change, wherever it now
16
+ * sits in a document other peers have moved on from — including a same-parent
17
+ * block move, which is a single LWW write to a carrier's `pos` and so undoes to
18
+ * the previous fractional index rather than to a whole-document snapshot.
19
+ *
20
+ * ── The echo seam ──────────────────────────────────────────────────────────
21
+ *
22
+ * `manager.undo()` mutates the shared document from THIS peer, so Loro reports
23
+ * the result as a `by: 'local'` batch — which echo layer (a) in `to-lexical.ts`
24
+ * drops as "our own outbound write coming back round". It is not: nothing wrote
25
+ * it to the editor, and dropping it leaves the editor permanently behind the
26
+ * document it mirrors. Loro stamps those batches with the origin
27
+ * {@link LORO_UNDO_ORIGIN} (both undo AND redo use it), and the binding lists
28
+ * {@link UNDO_ORIGINS} in `InboundTarget.localOrigins` so exactly those local
29
+ * batches are applied. The editor update the writeback performs carries
30
+ * `COLLABORATION_TAG`, so echo layer (b) keeps it from bouncing back out.
31
+ *
32
+ * That is also why {@link UNDO_ORIGINS} is passed UNCONDITIONALLY by the
33
+ * binding, whether or not this module was registered: only an `UndoManager`
34
+ * produces that origin, so allowing it costs nothing when there is none, and
35
+ * makes the inbound path independent of registration order.
36
+ *
37
+ * ── Selection ──────────────────────────────────────────────────────────────
38
+ *
39
+ * The inbound mirror mutates nodes in place and keeps NodeKeys stable, so a
40
+ * caret outside the undone region needs no help and one inside the undone text
41
+ * run is transformed by the same diff that rewrites the run. The remaining case
42
+ * is a caret in a node the undo DELETES (undoing an insert): Lexical is left
43
+ * with a selection pointing at a detached node. So the selection is snapshotted
44
+ * before the pop and restored — clamped, and only when the recorded points still
45
+ * resolve — if the post-undo selection is gone or dangling. Restoring is a
46
+ * selection-only update: it dirties no node, so the outbound listener commits
47
+ * nothing.
48
+ */
49
+ import { type LexicalEditor } from 'lexical';
50
+ import { type LoroDoc } from 'loro-crdt';
51
+ /**
52
+ * The commit origin Loro stamps on the batches produced by `UndoManager#undo`
53
+ * and `#redo`. Both use `'undo'`; there is no separate redo origin.
54
+ */
55
+ export declare const LORO_UNDO_ORIGIN = "undo";
56
+ /** Local commit origins the inbound path must apply rather than treat as echo. */
57
+ export declare const UNDO_ORIGINS: readonly string[];
58
+ /**
59
+ * Milliseconds within which consecutive local commits merge into ONE undo step.
60
+ * Matches `@lexical/history`'s delay, so typing undoes in the chunks a user of
61
+ * the non-collaborative editor already expects. `0` disables merging.
62
+ */
63
+ export declare const DEFAULT_MERGE_INTERVAL = 1000;
64
+ /** Undo steps retained before the oldest is dropped. Loro's own default. */
65
+ export declare const DEFAULT_MAX_UNDO_STEPS = 100;
66
+ /** Tuning for {@link registerLoroUndo}. */
67
+ export interface LoroUndoOptions {
68
+ /** The shared document. */
69
+ readonly doc: LoroDoc;
70
+ /** See {@link DEFAULT_MERGE_INTERVAL}. */
71
+ readonly mergeInterval?: number;
72
+ /** See {@link DEFAULT_MAX_UNDO_STEPS}. */
73
+ readonly maxUndoSteps?: number;
74
+ /**
75
+ * Local commit origins EXCLUDED from the undo stack, by prefix. Use this for
76
+ * machine-generated writes a user should never be able to undo into.
77
+ */
78
+ readonly excludeOriginPrefixes?: readonly string[];
79
+ }
80
+ /**
81
+ * Register Loro-backed undo/redo on an editor.
82
+ *
83
+ * Hand this to `lexicalForeign({ externalUndo })` — which forces the built-in
84
+ * `@lexical/history` stack off, so the two can never both be live. The returned
85
+ * disposer unregisters the commands and frees the manager.
86
+ *
87
+ * The manager is constructed HERE rather than at `loroCollab()` time on purpose:
88
+ * `lexicalForeign` calls `register` (which bootstraps the document) before
89
+ * `externalUndo`, so the boot-time seed is already committed and is NOT on the
90
+ * undo stack. A user's first undo can therefore never empty a freshly seeded
91
+ * document.
92
+ */
93
+ export declare function registerLoroUndo(options: LoroUndoOptions, editor: LexicalEditor): () => void;
94
+ //# sourceMappingURL=undo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../src/undo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EAeL,KAAK,aAAa,EAEnB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,WAAW,CAAA;AAErD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,SAAS,CAAA;AAEtC,kFAAkF;AAClF,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAuB,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAA;AAE1C,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,MAAM,CAAA;AAEzC,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;IACrB,0CAA0C;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,0CAA0C;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACnD;AA+ED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,IAAI,CA2E5F"}
package/dist/undo.js ADDED
@@ -0,0 +1,200 @@
1
+ /**
2
+ * CRDT-aware undo/redo: Loro's `UndoManager` wired to Lexical's undo commands.
3
+ *
4
+ * ── Why not `@lexical/history` ─────────────────────────────────────────────
5
+ *
6
+ * Lexical's built-in history is SNAPSHOT-based and knows nothing about who made
7
+ * a change. Under collaboration it records our inbound writeback as though the
8
+ * local user had typed it, so undoing after a peer's edit re-applies a snapshot
9
+ * taken BEFORE that edit — reverting the REMOTE change, and (because the
10
+ * outbound sync replays the snapshot faithfully) removing it for every peer.
11
+ * No update tag avoids that; it is a property of snapshot undo.
12
+ *
13
+ * Loro's `UndoManager` is operation-based and bound to a PeerID: it records the
14
+ * commits made by this peer and ignores everything imported from others. Undo
15
+ * therefore reverts exactly the local user's own last change, wherever it now
16
+ * sits in a document other peers have moved on from — including a same-parent
17
+ * block move, which is a single LWW write to a carrier's `pos` and so undoes to
18
+ * the previous fractional index rather than to a whole-document snapshot.
19
+ *
20
+ * ── The echo seam ──────────────────────────────────────────────────────────
21
+ *
22
+ * `manager.undo()` mutates the shared document from THIS peer, so Loro reports
23
+ * the result as a `by: 'local'` batch — which echo layer (a) in `to-lexical.ts`
24
+ * drops as "our own outbound write coming back round". It is not: nothing wrote
25
+ * it to the editor, and dropping it leaves the editor permanently behind the
26
+ * document it mirrors. Loro stamps those batches with the origin
27
+ * {@link LORO_UNDO_ORIGIN} (both undo AND redo use it), and the binding lists
28
+ * {@link UNDO_ORIGINS} in `InboundTarget.localOrigins` so exactly those local
29
+ * batches are applied. The editor update the writeback performs carries
30
+ * `COLLABORATION_TAG`, so echo layer (b) keeps it from bouncing back out.
31
+ *
32
+ * That is also why {@link UNDO_ORIGINS} is passed UNCONDITIONALLY by the
33
+ * binding, whether or not this module was registered: only an `UndoManager`
34
+ * produces that origin, so allowing it costs nothing when there is none, and
35
+ * makes the inbound path independent of registration order.
36
+ *
37
+ * ── Selection ──────────────────────────────────────────────────────────────
38
+ *
39
+ * The inbound mirror mutates nodes in place and keeps NodeKeys stable, so a
40
+ * caret outside the undone region needs no help and one inside the undone text
41
+ * run is transformed by the same diff that rewrites the run. The remaining case
42
+ * is a caret in a node the undo DELETES (undoing an insert): Lexical is left
43
+ * with a selection pointing at a detached node. So the selection is snapshotted
44
+ * before the pop and restored — clamped, and only when the recorded points still
45
+ * resolve — if the post-undo selection is gone or dangling. Restoring is a
46
+ * selection-only update: it dirties no node, so the outbound listener commits
47
+ * nothing.
48
+ */
49
+ import { $createRangeSelection, $getNodeByKey, $getSelection, $isElementNode, $isRangeSelection, $isTextNode, $setSelection, CAN_REDO_COMMAND, CAN_UNDO_COMMAND, COLLABORATION_TAG, COMMAND_PRIORITY_EDITOR, REDO_COMMAND, SKIP_SCROLL_INTO_VIEW_TAG, UNDO_COMMAND, } from 'lexical';
50
+ import { UndoManager } from 'loro-crdt';
51
+ /**
52
+ * The commit origin Loro stamps on the batches produced by `UndoManager#undo`
53
+ * and `#redo`. Both use `'undo'`; there is no separate redo origin.
54
+ */
55
+ export const LORO_UNDO_ORIGIN = 'undo';
56
+ /** Local commit origins the inbound path must apply rather than treat as echo. */
57
+ export const UNDO_ORIGINS = [LORO_UNDO_ORIGIN];
58
+ /**
59
+ * Milliseconds within which consecutive local commits merge into ONE undo step.
60
+ * Matches `@lexical/history`'s delay, so typing undoes in the chunks a user of
61
+ * the non-collaborative editor already expects. `0` disables merging.
62
+ */
63
+ export const DEFAULT_MERGE_INTERVAL = 1000;
64
+ /** Undo steps retained before the oldest is dropped. Loro's own default. */
65
+ export const DEFAULT_MAX_UNDO_STEPS = 100;
66
+ /** Compose teardown functions into one disposer (last-registered first). */
67
+ function mergeDisposers(disposers) {
68
+ return () => {
69
+ for (let index = disposers.length - 1; index >= 0; index--)
70
+ disposers[index]();
71
+ };
72
+ }
73
+ /** Snapshot the current range selection, or `null` if there isn't one. */
74
+ function $snapshotSelection() {
75
+ const selection = $getSelection();
76
+ if (!$isRangeSelection(selection))
77
+ return null;
78
+ return {
79
+ anchor: {
80
+ key: selection.anchor.key,
81
+ offset: selection.anchor.offset,
82
+ type: selection.anchor.type,
83
+ },
84
+ focus: { key: selection.focus.key, offset: selection.focus.offset, type: selection.focus.type },
85
+ };
86
+ }
87
+ /** The largest offset a point may hold in the node it addresses, or `null` if
88
+ * the node is gone or no longer of the recorded kind. */
89
+ function $pointCeiling(point) {
90
+ const node = $getNodeByKey(point.key);
91
+ if (node === null)
92
+ return null;
93
+ if (point.type === 'text')
94
+ return $isTextNode(node) ? node.getTextContentSize() : null;
95
+ return $isElementNode(node) ? node.getChildrenSize() : null;
96
+ }
97
+ /** Whether the editor's CURRENT selection still addresses live nodes. */
98
+ function $selectionIsLive() {
99
+ const selection = $getSelection();
100
+ if (!$isRangeSelection(selection))
101
+ return false;
102
+ for (const point of [selection.anchor, selection.focus]) {
103
+ const node = $getNodeByKey(point.key);
104
+ if (node === null || !node.isAttached())
105
+ return false;
106
+ }
107
+ return true;
108
+ }
109
+ /**
110
+ * Re-apply a snapshotted selection, clamped to the nodes as they now are.
111
+ * Returns whether it could be applied — a snapshot whose nodes the undo removed
112
+ * is dropped rather than forced.
113
+ */
114
+ function $restoreSelection(snapshot) {
115
+ const anchorCeiling = $pointCeiling(snapshot.anchor);
116
+ const focusCeiling = $pointCeiling(snapshot.focus);
117
+ if (anchorCeiling === null || focusCeiling === null)
118
+ return false;
119
+ const selection = $createRangeSelection();
120
+ selection.anchor.set(snapshot.anchor.key, Math.min(snapshot.anchor.offset, anchorCeiling), snapshot.anchor.type);
121
+ selection.focus.set(snapshot.focus.key, Math.min(snapshot.focus.offset, focusCeiling), snapshot.focus.type);
122
+ $setSelection(selection);
123
+ return true;
124
+ }
125
+ /**
126
+ * Register Loro-backed undo/redo on an editor.
127
+ *
128
+ * Hand this to `lexicalForeign({ externalUndo })` — which forces the built-in
129
+ * `@lexical/history` stack off, so the two can never both be live. The returned
130
+ * disposer unregisters the commands and frees the manager.
131
+ *
132
+ * The manager is constructed HERE rather than at `loroCollab()` time on purpose:
133
+ * `lexicalForeign` calls `register` (which bootstraps the document) before
134
+ * `externalUndo`, so the boot-time seed is already committed and is NOT on the
135
+ * undo stack. A user's first undo can therefore never empty a freshly seeded
136
+ * document.
137
+ */
138
+ export function registerLoroUndo(options, editor) {
139
+ const manager = new UndoManager(options.doc, {
140
+ mergeInterval: options.mergeInterval ?? DEFAULT_MERGE_INTERVAL,
141
+ maxUndoSteps: options.maxUndoSteps ?? DEFAULT_MAX_UNDO_STEPS,
142
+ excludeOriginPrefixes: [...(options.excludeOriginPrefixes ?? [])],
143
+ });
144
+ const pushStackState = () => {
145
+ editor.dispatchCommand(CAN_UNDO_COMMAND, manager.canUndo());
146
+ editor.dispatchCommand(CAN_REDO_COMMAND, manager.canRedo());
147
+ };
148
+ // Every batch — local commit, remote import, or our own undo — can change what
149
+ // is undoable, so the stack state is re-published on all of them rather than
150
+ // only on the paths this module drives.
151
+ const unsubscribe = options.doc.subscribe(() => {
152
+ pushStackState();
153
+ });
154
+ /** Pop one step, then repair the selection if the writeback orphaned it. */
155
+ const pop = (step) => {
156
+ let snapshot = null;
157
+ editor.getEditorState().read(() => {
158
+ snapshot = $snapshotSelection();
159
+ });
160
+ // The writeback into the editor happens synchronously, inside the document
161
+ // subscription this call triggers.
162
+ const applied = step();
163
+ pushStackState();
164
+ if (!applied || snapshot === null)
165
+ return;
166
+ const recorded = snapshot;
167
+ let needsRepair = false;
168
+ editor.getEditorState().read(() => {
169
+ needsRepair = !$selectionIsLive();
170
+ });
171
+ if (!needsRepair)
172
+ return;
173
+ editor.update(() => {
174
+ $restoreSelection(recorded);
175
+ },
176
+ // Selection-only: tagged so the outbound listener skips it outright rather
177
+ // than relying on it happening to dirty no node.
178
+ { tag: [COLLABORATION_TAG, SKIP_SCROLL_INTO_VIEW_TAG] });
179
+ };
180
+ const disposeCommands = mergeDisposers([
181
+ editor.registerCommand(UNDO_COMMAND, () => {
182
+ pop(() => manager.undo());
183
+ return true;
184
+ }, COMMAND_PRIORITY_EDITOR),
185
+ editor.registerCommand(REDO_COMMAND, () => {
186
+ pop(() => manager.redo());
187
+ return true;
188
+ }, COMMAND_PRIORITY_EDITOR),
189
+ ]);
190
+ // Publish the initial (empty) stack state so a toolbar rendered before the
191
+ // first edit shows undo/redo disabled rather than in whatever state it
192
+ // defaulted to.
193
+ pushStackState();
194
+ return () => {
195
+ disposeCommands();
196
+ unsubscribe();
197
+ manager.free();
198
+ };
199
+ }
200
+ //# sourceMappingURL=undo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo.js","sourceRoot":"","sources":["../src/undo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,yBAAyB,EACzB,YAAY,GAGb,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,WAAW,EAAgB,MAAM,WAAW,CAAA;AAErD;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAEtC,kFAAkF;AAClF,MAAM,CAAC,MAAM,YAAY,GAAsB,CAAC,gBAAgB,CAAC,CAAA;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAA;AAE1C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AAiBzC,4EAA4E;AAC5E,SAAS,cAAc,CAAC,SAAoC;IAC1D,OAAO,GAAG,EAAE;QACV,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE;YAAE,SAAS,CAAC,KAAK,CAAE,EAAE,CAAA;IACjF,CAAC,CAAA;AACH,CAAC;AAcD,0EAA0E;AAC1E,SAAS,kBAAkB;IACzB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;IACjC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9C,OAAO;QACL,MAAM,EAAE;YACN,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG;YACzB,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;YAC/B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI;SAC5B;QACD,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE;KAChG,CAAA;AACH,CAAC;AAED;yDACyD;AACzD,SAAS,aAAa,CAAC,KAAoB;IACzC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACtF,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC7D,CAAC;AAED,yEAAyE;AACzE,SAAS,gBAAgB;IACvB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;IACjC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAA;IAC/C,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACrC,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,KAAK,CAAA;IACvD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,QAA2B;IACpD,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClD,IAAI,aAAa,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACjE,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAA;IACzC,SAAS,CAAC,MAAM,CAAC,GAAG,CAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,EACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,QAAQ,CAAC,MAAM,CAAC,IAAI,CACrB,CAAA;IACD,SAAS,CAAC,KAAK,CAAC,GAAG,CACjB,QAAQ,CAAC,KAAK,CAAC,GAAG,EAClB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,EAC7C,QAAQ,CAAC,KAAK,CAAC,IAAI,CACpB,CAAA;IACD,aAAa,CAAC,SAAS,CAAC,CAAA;IACxB,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAwB,EAAE,MAAqB;IAC9E,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3C,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,sBAAsB;QAC9D,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,sBAAsB;QAC5D,qBAAqB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;KAClE,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,MAAM,CAAC,eAAe,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QAC3D,MAAM,CAAC,eAAe,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAA;IAED,+EAA+E;IAC/E,6EAA6E;IAC7E,wCAAwC;IACxC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QAC7C,cAAc,EAAE,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAC5E,MAAM,GAAG,GAAG,CAAC,IAAmB,EAAQ,EAAE;QACxC,IAAI,QAAQ,GAA6B,IAAI,CAAA;QAC7C,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAChC,QAAQ,GAAG,kBAAkB,EAAE,CAAA;QACjC,CAAC,CAAC,CAAA;QACF,2EAA2E;QAC3E,mCAAmC;QACnC,MAAM,OAAO,GAAG,IAAI,EAAE,CAAA;QACtB,cAAc,EAAE,CAAA;QAChB,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAM;QACzC,MAAM,QAAQ,GAAsB,QAAQ,CAAA;QAC5C,IAAI,WAAW,GAAG,KAAK,CAAA;QACvB,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAChC,WAAW,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACnC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,WAAW;YAAE,OAAM;QACxB,MAAM,CAAC,MAAM,CACX,GAAG,EAAE;YACH,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QAC7B,CAAC;QACD,2EAA2E;QAC3E,iDAAiD;QACjD,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,EAAE,CACxD,CAAA;IACH,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,cAAc,CAAC;QACrC,MAAM,CAAC,eAAe,CACpB,YAAY,EACZ,GAAG,EAAE;YACH,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YACzB,OAAO,IAAI,CAAA;QACb,CAAC,EACD,uBAAuB,CACxB;QACD,MAAM,CAAC,eAAe,CACpB,YAAY,EACZ,GAAG,EAAE;YACH,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YACzB,OAAO,IAAI,CAAA;QACb,CAAC,EACD,uBAAuB,CACxB;KACF,CAAC,CAAA;IAEF,2EAA2E;IAC3E,uEAAuE;IACvE,gBAAgB;IAChB,cAAc,EAAE,CAAA;IAEhB,OAAO,GAAG,EAAE;QACV,eAAe,EAAE,CAAA;QACjB,WAAW,EAAE,CAAA;QACb,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC,CAAA;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@llui/lexical-loro",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "peerDependencies": {
14
+ "lexical": "^0.48.0",
15
+ "loro-crdt": "^1.13.7",
16
+ "@llui/lexical": "^0.4.0"
17
+ },
18
+ "devDependencies": {
19
+ "@lexical/headless": "^0.48.0",
20
+ "@lexical/history": "^0.48.0",
21
+ "@lexical/list": "^0.48.0",
22
+ "@lexical/markdown": "^0.48.0",
23
+ "@lexical/rich-text": "^0.48.0",
24
+ "lexical": "^0.48.0",
25
+ "loro-crdt": "^1.13.7",
26
+ "typescript": "^6.0.0",
27
+ "vitest": "^4.1.2",
28
+ "@llui/lexical": "0.4.0"
29
+ },
30
+ "sideEffects": false,
31
+ "description": "Loro CRDT binding for the LLui ↔ Lexical editor — container schema, text-mark mapping, and concurrent-edit merging",
32
+ "keywords": [
33
+ "llui",
34
+ "lexical",
35
+ "collaboration",
36
+ "loro",
37
+ "crdt",
38
+ "editor"
39
+ ],
40
+ "author": "Franco Ponticelli <franco.ponticelli@gmail.com>",
41
+ "license": "MIT",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/fponticelli/llui.git",
45
+ "directory": "packages/lexical-loro"
46
+ },
47
+ "bugs": {
48
+ "url": "https://github.com/fponticelli/llui/issues"
49
+ },
50
+ "homepage": "https://github.com/fponticelli/llui/tree/main/packages/lexical-loro#readme",
51
+ "files": [
52
+ "dist",
53
+ "src"
54
+ ],
55
+ "publishConfig": {
56
+ "access": "public"
57
+ },
58
+ "scripts": {
59
+ "build": "tsc -p tsconfig.build.json",
60
+ "check": "tsc --noEmit -p tsconfig.check.json",
61
+ "lint": "eslint src",
62
+ "test": "vitest run"
63
+ }
64
+ }