@univerjs-pro/collaboration-client 0.5.0-nightly.202411120616 → 0.5.0-nightly.202411131606

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 (84) hide show
  1. package/lib/cjs/index.js +1 -1
  2. package/lib/cjs/locale/en-US.js +1 -1
  3. package/lib/cjs/locale/fa-IR.js +1 -1
  4. package/lib/cjs/locale/ru-RU.js +1 -1
  5. package/lib/cjs/locale/vi-VN.js +1 -1
  6. package/lib/cjs/locale/zh-CN.js +1 -1
  7. package/lib/cjs/locale/zh-TW.js +1 -1
  8. package/lib/es/index.js +1 -1
  9. package/lib/es/locale/en-US.js +1 -1
  10. package/lib/es/locale/fa-IR.js +1 -1
  11. package/lib/es/locale/ru-RU.js +1 -1
  12. package/lib/es/locale/vi-VN.js +1 -1
  13. package/lib/es/locale/zh-CN.js +1 -1
  14. package/lib/es/locale/zh-TW.js +1 -1
  15. package/lib/types/config/config.d.ts +48 -0
  16. package/lib/types/controllers/collab-cursor/__tests__/doc-collab-cursor.controller.spec.d.ts +23 -0
  17. package/lib/types/controllers/collab-cursor/__tests__/serialize-text-ranges.spec.d.ts +1 -0
  18. package/lib/types/controllers/collab-cursor/__tests__/sheet-collab-cursor.controller.spec.d.ts +1 -0
  19. package/lib/types/controllers/collab-cursor/collab-cursor.controller.d.ts +22 -0
  20. package/lib/types/controllers/collab-cursor/doc-collab-cursor-entity.d.ts +38 -0
  21. package/lib/types/controllers/collab-cursor/doc-collab-cursor-render.controller.d.ts +24 -0
  22. package/lib/types/controllers/collab-cursor/serialize-text-ranges.d.ts +3 -0
  23. package/lib/types/controllers/collab-cursor/sheet-collab-cursor-entity.d.ts +39 -0
  24. package/lib/types/controllers/collab-cursor/sheet-collab-cursor-render.controller.d.ts +21 -0
  25. package/lib/types/controllers/collab-status/collab-status.controller.d.ts +18 -0
  26. package/lib/types/controllers/collaboration/__tests__/collaboration.controller.spec.d.ts +4 -0
  27. package/lib/types/controllers/collaboration/__tests__/mock-text-selection-render-manager.service.d.ts +0 -0
  28. package/lib/types/controllers/collaboration/__tests__/mocks.d.ts +54 -0
  29. package/lib/types/controllers/collaboration/collaboration-entity.d.ts +91 -0
  30. package/lib/types/controllers/collaboration/collaboration-state.d.ts +303 -0
  31. package/lib/types/controllers/collaboration/collaboration.controller.d.ts +24 -0
  32. package/lib/types/controllers/collaboration/utils/changeset-utils.d.ts +18 -0
  33. package/lib/types/controllers/collaboration/utils/empty.d.ts +2 -0
  34. package/lib/types/controllers/config.schema.d.ts +29 -0
  35. package/lib/types/controllers/data-loader/__tests__/data-loader.controller.spec.d.ts +1 -0
  36. package/lib/types/controllers/data-loader/data-loader.controller.d.ts +22 -0
  37. package/lib/types/controllers/file-name/file-name.controller.d.ts +12 -0
  38. package/lib/types/controllers/telemetry.d.ts +11 -0
  39. package/lib/types/index.d.ts +35 -890
  40. package/lib/types/locale/en-US.d.ts +3 -0
  41. package/lib/types/locale/fa-IR.d.ts +3 -0
  42. package/lib/types/locale/ru-RU.d.ts +3 -0
  43. package/lib/types/locale/vi-VN.d.ts +3 -0
  44. package/lib/types/locale/zh-CN.d.ts +39 -0
  45. package/lib/types/locale/zh-TW.d.ts +3 -0
  46. package/lib/types/models/cursor.d.ts +30 -0
  47. package/lib/types/plugin.d.ts +18 -0
  48. package/lib/types/services/auth-server/auth-server.service.d.ts +10 -0
  49. package/lib/types/services/auth-server/authz-io-http.service.d.ts +30 -0
  50. package/lib/types/services/auth-server/domain-request.service.d.ts +6 -0
  51. package/lib/types/services/auth-server/util.d.ts +1 -0
  52. package/lib/types/services/collaboration-session/collaboration-session.d.ts +59 -0
  53. package/lib/types/services/collaboration-session/collaboration-session.service.d.ts +61 -0
  54. package/lib/types/services/color-assign/color-assign.service.d.ts +10 -0
  55. package/lib/types/services/comment/comment.service.d.ts +6 -0
  56. package/lib/types/services/image-remote/image-io.service.d.ts +34 -0
  57. package/lib/types/services/ime-cache-transform/doc-transform-ime-cache.service.d.ts +13 -0
  58. package/lib/types/services/local-cache/local-cache.service.d.ts +37 -0
  59. package/lib/types/services/member/member.service.d.ts +77 -0
  60. package/lib/types/services/permission/permission.service.d.ts +12 -0
  61. package/lib/types/services/range-selection/sheet-transform-selections.service.d.ts +13 -0
  62. package/lib/types/services/single-active-unit/single-active-unit.service.d.ts +39 -0
  63. package/lib/types/services/snapshot-server/snapshot-server.service.d.ts +21 -0
  64. package/lib/types/services/socket/collaboration-socket.service.d.ts +34 -0
  65. package/lib/types/services/socket/serialize.d.ts +3 -0
  66. package/lib/types/services/state-cache-transform/doc-transform-state-cache.service.d.ts +12 -0
  67. package/lib/types/services/sync-editing-collab-cursor/doc-sync-editing-collab-cursor.service.d.ts +13 -0
  68. package/lib/types/services/text-selection/doc-transform-selections.service.d.ts +8 -0
  69. package/lib/types/services/undoredo/collaborative-undoredo.service.d.ts +19 -0
  70. package/lib/types/services/url/url.service.d.ts +12 -0
  71. package/lib/types/services/url/web-url.service.d.ts +10 -0
  72. package/lib/types/views/components/CollabStatus.d.ts +10 -0
  73. package/lib/types/views/components/CollabStatus.stories.d.ts +8 -0
  74. package/lib/types/views/shapes/doc-collab-cursor.d.ts +27 -0
  75. package/lib/types/views/shapes/sheet-collab-cursor.shape.d.ts +27 -0
  76. package/lib/types/views/shapes/text-bubble.shape.d.ts +19 -0
  77. package/lib/umd/index.js +1 -1
  78. package/lib/umd/locale/en-US.js +1 -1
  79. package/lib/umd/locale/fa-IR.js +1 -1
  80. package/lib/umd/locale/ru-RU.js +1 -1
  81. package/lib/umd/locale/vi-VN.js +1 -1
  82. package/lib/umd/locale/zh-CN.js +1 -1
  83. package/lib/umd/locale/zh-TW.js +1 -1
  84. package/package.json +16 -16
@@ -1 +1 @@
1
- const _0x20672f=_0x150d;function _0x5e8a(){const _0x4d0158=['Synced','There\x20is\x20a\x20conflict\x20between\x20your\x20local\x20copy\x20and\x20the\x20copy\x20on\x20the\x20server.\x20Please\x20save\x20your\x20local\x20edits,\x20because\x20they\x20will\x20be\x20lost\x20when\x20you\x20reload\x20the\x20page.','1HAvlmX','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.','11OTYBcV','Syncing...','Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','288SsiFcN','Connection\x20failed,\x20please\x20check\x20your\x20network.','39ohkWdE','Syncing\x20server\x20data...','10709390UNcQzq','Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.','8648OlNEiw','Authentication\x20Error','Local\x20file','1490134euwuTe','Collaboration\x20Conflict','Click\x20to\x20Reconnect','11025IUoSuR','8624fPpjWp','54024KgsNWZ','Edit\x20conflicts','2434555GABvwJ','20176308YiBRzr','3498ntrYrw','Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.'];_0x5e8a=function(){return _0x4d0158;};return _0x5e8a();}function _0x150d(_0x56a776,_0x46b200){const _0x5e8ae1=_0x5e8a();return _0x150d=function(_0x150d59,_0x1d7781){_0x150d59=_0x150d59-0x1ba;let _0x2dbe2d=_0x5e8ae1[_0x150d59];return _0x2dbe2d;},_0x150d(_0x56a776,_0x46b200);}(function(_0x2641ab,_0x59c3ea){const _0x510991=_0x150d,_0x2e46fc=_0x2641ab();while(!![]){try{const _0x1d0dbb=parseInt(_0x510991(0x1d4))/0x1*(parseInt(_0x510991(0x1c7))/0x2)+-parseInt(_0x510991(0x1be))/0x3*(parseInt(_0x510991(0x1cc))/0x4)+-parseInt(_0x510991(0x1ce))/0x5+parseInt(_0x510991(0x1d0))/0x6*(-parseInt(_0x510991(0x1cb))/0x7)+parseInt(_0x510991(0x1c4))/0x8*(-parseInt(_0x510991(0x1ca))/0x9)+-parseInt(_0x510991(0x1c2))/0xa*(parseInt(_0x510991(0x1bb))/0xb)+-parseInt(_0x510991(0x1cf))/0xc*(-parseInt(_0x510991(0x1c0))/0xd);if(_0x1d0dbb===_0x59c3ea)break;else _0x2e46fc['push'](_0x2e46fc['shift']());}catch(_0xb69bee){_0x2e46fc['push'](_0x2e46fc['shift']());}}}(_0x5e8a,0xd9d4d));const e={'collab-client':{'tooltip':{'reconnect':_0x20672f(0x1c9)}},'collabStatus':{'fetchMiss':_0x20672f(0x1c1),'conflict':_0x20672f(0x1cd),'notCollab':_0x20672f(0x1c6),'synced':_0x20672f(0x1d2),'syncing':_0x20672f(0x1bc),'offline':'Offline,\x20edits\x20would\x20be\x20save\x20on\x20local'},'session':{'connection-failed':_0x20672f(0x1bf),'will-retry':_0x20672f(0x1bd),'room-full':'Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','collaboration-timeout':'The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.'},'conflict':{'title':_0x20672f(0x1c8),'content':_0x20672f(0x1d3)},'permission':{'title':_0x20672f(0x1c5),'content':_0x20672f(0x1c3)},'collaboration':{'single-unit':{'warning':'You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.'},'closeRoom':_0x20672f(0x1d1)},'auth':{'needGotoLoginAlert':_0x20672f(0x1ba)}};export{e as default};
1
+ const _0x3d3fbf=_0x2383;(function(_0x219c26,_0x4285d6){const _0x562fc3=_0x2383,_0x19670d=_0x219c26();while(!![]){try{const _0x5a8857=parseInt(_0x562fc3(0xd0))/0x1+-parseInt(_0x562fc3(0xc8))/0x2*(parseInt(_0x562fc3(0xc6))/0x3)+-parseInt(_0x562fc3(0xc7))/0x4+parseInt(_0x562fc3(0xd1))/0x5*(parseInt(_0x562fc3(0xc0))/0x6)+-parseInt(_0x562fc3(0xcd))/0x7*(-parseInt(_0x562fc3(0xce))/0x8)+parseInt(_0x562fc3(0xd6))/0x9+parseInt(_0x562fc3(0xbe))/0xa*(-parseInt(_0x562fc3(0xd5))/0xb);if(_0x5a8857===_0x4285d6)break;else _0x19670d['push'](_0x19670d['shift']());}catch(_0x51fbb0){_0x19670d['push'](_0x19670d['shift']());}}}(_0x33b5,0x90f42));function _0x2383(_0x2a3773,_0x24d371){const _0x33b541=_0x33b5();return _0x2383=function(_0x238350,_0x1017b9){_0x238350=_0x238350-0xbc;let _0x52fa78=_0x33b541[_0x238350];return _0x52fa78;},_0x2383(_0x2a3773,_0x24d371);}const e={'collab-client':{'tooltip':{'reconnect':_0x3d3fbf(0xbf)}},'collabStatus':{'fetchMiss':_0x3d3fbf(0xd4),'conflict':_0x3d3fbf(0xcc),'notCollab':_0x3d3fbf(0xc9),'synced':_0x3d3fbf(0xd2),'syncing':_0x3d3fbf(0xc4),'offline':'Offline,\x20edits\x20would\x20be\x20save\x20on\x20local'},'session':{'connection-failed':_0x3d3fbf(0xc1),'will-retry':_0x3d3fbf(0xbd),'room-full':_0x3d3fbf(0xc5),'collaboration-timeout':_0x3d3fbf(0xcf)},'conflict':{'title':_0x3d3fbf(0xc2),'content':_0x3d3fbf(0xcb)},'permission':{'title':_0x3d3fbf(0xca),'content':_0x3d3fbf(0xd7)},'collaboration':{'single-unit':{'warning':_0x3d3fbf(0xc3)},'closeRoom':_0x3d3fbf(0xbc)},'auth':{'needGotoLoginAlert':_0x3d3fbf(0xd3)}};function _0x33b5(){const _0x45c20c=['Click\x20to\x20Reconnect','4469214cBtFeX','Connection\x20failed,\x20please\x20check\x20your\x20network.','Collaboration\x20Conflict','You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.','Syncing...','Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','295620tOaczS','1047940guZjLI','24jcrNiB','Local\x20file','Authentication\x20Error','There\x20is\x20a\x20conflict\x20between\x20your\x20local\x20copy\x20and\x20the\x20copy\x20on\x20the\x20server.\x20Please\x20save\x20your\x20local\x20edits,\x20because\x20they\x20will\x20be\x20lost\x20when\x20you\x20reload\x20the\x20page.','Edit\x20conflicts','4032413eXWmhu','16XAoake','The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.','1098145YJjEzd','5xnhIhQ','Synced','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.','Syncing\x20server\x20data...','9534217NTTWBh','6989013YroMTH','Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.','Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.','Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','20dBOFkG'];_0x33b5=function(){return _0x45c20c;};return _0x33b5();}export{e as default};
@@ -1 +1 @@
1
- function _0x3328(){const _0x185cb9=['24lhxBcC','تداخل\x20ویرایش','558906oQypCj','495342uWRyUp','اتاق\x20همکاری\x20پر\x20است.\x20شما\x20ویرایش\x20های\x20خود\x20را\x20در\x20محلی\x20ذخیره\x20خواهید\x20کرد.','20FKBTeL','همگام\x20سازی','10jHkeYi','در\x20حال\x20همگام\x20سازی...','65643SubzQh','شما\x20همان\x20پرونده\x20را\x20در\x20یک\x20تب\x20دیگر\x20باز\x20کرده\x20اید.\x20در\x20صورت\x20عدم\x20وجود\x20داده،\x20نمی\x20توانید\x20در\x20این\x20تب\x20ویرایش\x20کنید.','امتیازات\x20ویرایش\x20به\x20دلیل\x20بسته\x20شدن\x20اتاق\x20همکاری\x20لغو\x20شد.','سرور\x20به\x20درخواست\x20همکاری\x20شما\x20پاسخ\x20نمی\x20دهد.\x20ویرایش\x20های\x20شما\x20در\x20محلی\x20ذخیره\x20می\x20شوند.','222273BHPiEi','پرونده\x20محلی','6052845GTIyAR','اتصال\x20ناموفق\x20بود،\x20لطفا\x20شبکه\x20خود\x20را\x20بررسی\x20کنید.','خطای\x20اعتبارسنجی','14rxocOI','4552488wBBitg','برای\x20اتصال\x20مجدد\x20کلیک\x20کنید','ورود\x20شما\x20منقضی\x20شده\x20است،\x20برای\x20ورود\x20مجدد\x20کلیک\x20کنید،\x20برای\x20ذخیره\x20ویرایش\x20های\x20محلی\x20خود\x20کلیک\x20کنید.','یک\x20تداخل\x20بین\x20نسخه\x20محلی\x20شما\x20و\x20نسخه\x20در\x20سرور\x20وجود\x20دارد.\x20لطفاً\x20ویرایش\x20های\x20محلی\x20خود\x20را\x20ذخیره\x20کنید،\x20زیرا\x20آنها\x20پس\x20از\x20بازیابی\x20صفحه\x20از\x20بین\x20خواهند\x20رفت.','اعمال\x20شما\x20با\x20مجوزهای\x20سرور\x20تداخل\x20دارد.\x20لطفاً\x20ویرایش\x20های\x20محلی\x20خود\x20را\x20در\x20جای\x20دیگر\x20ذخیره\x20کنید\x20زیرا\x20پس\x20از\x20تازه\x20سازی\x20صفحه\x20از\x20بین\x20خواهند\x20رفت.','4483831ZnvTTr'];_0x3328=function(){return _0x185cb9;};return _0x3328();}const _0x5cd737=_0xa4f2;(function(_0x2b4f11,_0x5f3aa0){const _0x528d30=_0xa4f2,_0x3576da=_0x2b4f11();while(!![]){try{const _0x21ae8c=-parseInt(_0x528d30(0x75))/0x1*(-parseInt(_0x528d30(0x8a))/0x2)+-parseInt(_0x528d30(0x88))/0x3+-parseInt(_0x528d30(0x7f))/0x4+parseInt(_0x528d30(0x7b))/0x5+parseInt(_0x528d30(0x87))/0x6*(-parseInt(_0x528d30(0x7e))/0x7)+-parseInt(_0x528d30(0x85))/0x8*(parseInt(_0x528d30(0x79))/0x9)+parseInt(_0x528d30(0x8c))/0xa*(parseInt(_0x528d30(0x84))/0xb);if(_0x21ae8c===_0x5f3aa0)break;else _0x3576da['push'](_0x3576da['shift']());}catch(_0x3a519c){_0x3576da['push'](_0x3576da['shift']());}}}(_0x3328,0xad94f));const o={'collab-client':{'tooltip':{'reconnect':_0x5cd737(0x80)}},'collabStatus':{'fetchMiss':'در\x20حال\x20همگام\x20سازی\x20داده\x20های\x20سرور...','conflict':_0x5cd737(0x86),'notCollab':_0x5cd737(0x7a),'synced':_0x5cd737(0x8b),'syncing':_0x5cd737(0x8d),'offline':'آفلاین،\x20ویرایش\x20ها\x20در\x20محلی\x20ذخیره\x20می\x20شوند'},'session':{'connection-failed':_0x5cd737(0x7c),'will-retry':'اتصال\x20ناموفق\x20بود،\x20ما\x20بعداً\x20دوباره\x20تلاش\x20می\x20کنیم.','room-full':_0x5cd737(0x89),'collaboration-timeout':_0x5cd737(0x78)},'conflict':{'title':'تداخل\x20همکاری','content':_0x5cd737(0x82)},'permission':{'title':_0x5cd737(0x7d),'content':_0x5cd737(0x83)},'collaboration':{'single-unit':{'warning':_0x5cd737(0x76)},'closeRoom':_0x5cd737(0x77)},'auth':{'needGotoLoginAlert':_0x5cd737(0x81)}};function _0xa4f2(_0x46bab5,_0x3cc2b0){const _0x33289e=_0x3328();return _0xa4f2=function(_0xa4f2a8,_0x2131de){_0xa4f2a8=_0xa4f2a8-0x75;let _0xce100d=_0x33289e[_0xa4f2a8];return _0xce100d;},_0xa4f2(_0x46bab5,_0x3cc2b0);}export{o as default};
1
+ function _0x47fe(_0x37036c,_0x19bf73){const _0x513c53=_0x513c();return _0x47fe=function(_0x47fea6,_0x145c8e){_0x47fea6=_0x47fea6-0x131;let _0x47142a=_0x513c53[_0x47fea6];return _0x47142a;},_0x47fe(_0x37036c,_0x19bf73);}const _0x72beb0=_0x47fe;(function(_0x5c0a45,_0x15ec7c){const _0x4c1b27=_0x47fe,_0x53e442=_0x5c0a45();while(!![]){try{const _0x18aad3=parseInt(_0x4c1b27(0x135))/0x1*(-parseInt(_0x4c1b27(0x134))/0x2)+parseInt(_0x4c1b27(0x13b))/0x3+parseInt(_0x4c1b27(0x13f))/0x4+parseInt(_0x4c1b27(0x138))/0x5*(-parseInt(_0x4c1b27(0x131))/0x6)+-parseInt(_0x4c1b27(0x141))/0x7*(parseInt(_0x4c1b27(0x13d))/0x8)+-parseInt(_0x4c1b27(0x136))/0x9*(parseInt(_0x4c1b27(0x140))/0xa)+-parseInt(_0x4c1b27(0x144))/0xb*(-parseInt(_0x4c1b27(0x139))/0xc);if(_0x18aad3===_0x15ec7c)break;else _0x53e442['push'](_0x53e442['shift']());}catch(_0x4199c9){_0x53e442['push'](_0x53e442['shift']());}}}(_0x513c,0xd4a26));function _0x513c(){const _0x454346=['39459kEwFBL','در\x20حال\x20همگام\x20سازی\x20داده\x20های\x20سرور...','شما\x20همان\x20پرونده\x20را\x20در\x20یک\x20تب\x20دیگر\x20باز\x20کرده\x20اید.\x20در\x20صورت\x20عدم\x20وجود\x20داده،\x20نمی\x20توانید\x20در\x20این\x20تب\x20ویرایش\x20کنید.','3299791ZSXVia','آفلاین،\x20ویرایش\x20ها\x20در\x20محلی\x20ذخیره\x20می\x20شوند','اتصال\x20ناموفق\x20بود،\x20لطفا\x20شبکه\x20خود\x20را\x20بررسی\x20کنید.','همگام\x20سازی','اعمال\x20شما\x20با\x20مجوزهای\x20سرور\x20تداخل\x20دارد.\x20لطفاً\x20ویرایش\x20های\x20محلی\x20خود\x20را\x20در\x20جای\x20دیگر\x20ذخیره\x20کنید\x20زیرا\x20پس\x20از\x20تازه\x20سازی\x20صفحه\x20از\x20بین\x20خواهند\x20رفت.','تداخل\x20همکاری','ورود\x20شما\x20منقضی\x20شده\x20است،\x20برای\x20ورود\x20مجدد\x20کلیک\x20کنید،\x20برای\x20ذخیره\x20ویرایش\x20های\x20محلی\x20خود\x20کلیک\x20کنید.','در\x20حال\x20همگام\x20سازی...','3869682DwKLeT','برای\x20اتصال\x20مجدد\x20کلیک\x20کنید','سرور\x20به\x20درخواست\x20همکاری\x20شما\x20پاسخ\x20نمی\x20دهد.\x20ویرایش\x20های\x20شما\x20در\x20محلی\x20ذخیره\x20می\x20شوند.','21394FImaOK','1JkCmkp','1320408IeyWyb','پرونده\x20محلی','5qLbxcn','24mFYahA','تداخل\x20ویرایش','4608564fizlXS','امتیازات\x20ویرایش\x20به\x20دلیل\x20بسته\x20شدن\x20اتاق\x20همکاری\x20لغو\x20شد.','592msyITr','خطای\x20اعتبارسنجی','990872QYNbgl','30OivTjO'];_0x513c=function(){return _0x454346;};return _0x513c();}const o={'collab-client':{'tooltip':{'reconnect':_0x72beb0(0x132)}},'collabStatus':{'fetchMiss':_0x72beb0(0x142),'conflict':_0x72beb0(0x13a),'notCollab':_0x72beb0(0x137),'synced':_0x72beb0(0x147),'syncing':_0x72beb0(0x14b),'offline':_0x72beb0(0x145)},'session':{'connection-failed':_0x72beb0(0x146),'will-retry':'اتصال\x20ناموفق\x20بود،\x20ما\x20بعداً\x20دوباره\x20تلاش\x20می\x20کنیم.','room-full':'اتاق\x20همکاری\x20پر\x20است.\x20شما\x20ویرایش\x20های\x20خود\x20را\x20در\x20محلی\x20ذخیره\x20خواهید\x20کرد.','collaboration-timeout':_0x72beb0(0x133)},'conflict':{'title':_0x72beb0(0x149),'content':'یک\x20تداخل\x20بین\x20نسخه\x20محلی\x20شما\x20و\x20نسخه\x20در\x20سرور\x20وجود\x20دارد.\x20لطفاً\x20ویرایش\x20های\x20محلی\x20خود\x20را\x20ذخیره\x20کنید،\x20زیرا\x20آنها\x20پس\x20از\x20بازیابی\x20صفحه\x20از\x20بین\x20خواهند\x20رفت.'},'permission':{'title':_0x72beb0(0x13e),'content':_0x72beb0(0x148)},'collaboration':{'single-unit':{'warning':_0x72beb0(0x143)},'closeRoom':_0x72beb0(0x13c)},'auth':{'needGotoLoginAlert':_0x72beb0(0x14a)}};export{o as default};
@@ -1 +1 @@
1
- const _0x1d03c4=_0x16e2;(function(_0x84bed6,_0x1c57de){const _0xe03b3a=_0x16e2,_0x241aec=_0x84bed6();while(!![]){try{const _0x448768=-parseInt(_0xe03b3a(0x1f7))/0x1*(-parseInt(_0xe03b3a(0x1f4))/0x2)+-parseInt(_0xe03b3a(0x1fa))/0x3*(-parseInt(_0xe03b3a(0x1e8))/0x4)+-parseInt(_0xe03b3a(0x1f6))/0x5*(parseInt(_0xe03b3a(0x1ee))/0x6)+parseInt(_0xe03b3a(0x1f0))/0x7+-parseInt(_0xe03b3a(0x1ea))/0x8+-parseInt(_0xe03b3a(0x1f3))/0x9+parseInt(_0xe03b3a(0x1eb))/0xa;if(_0x448768===_0x1c57de)break;else _0x241aec['push'](_0x241aec['shift']());}catch(_0x523a38){_0x241aec['push'](_0x241aec['shift']());}}}(_0x78f1,0x1f007));function _0x16e2(_0x30fe26,_0x54be4b){const _0x78f1b4=_0x78f1();return _0x16e2=function(_0x16e25a,_0xc285df){_0x16e25a=_0x16e25a-0x1e7;let _0x311f16=_0x78f1b4[_0x16e25a];return _0x311f16;},_0x16e2(_0x30fe26,_0x54be4b);}const e={'collab-client':{'tooltip':{'reconnect':_0x1d03c4(0x1f8)}},'collabStatus':{'fetchMiss':_0x1d03c4(0x1f2),'conflict':'Edit\x20conflicts','notCollab':_0x1d03c4(0x1ec),'synced':'Synced','syncing':'Syncing...','offline':_0x1d03c4(0x1f5)},'session':{'connection-failed':_0x1d03c4(0x1fb),'will-retry':_0x1d03c4(0x1fc),'room-full':_0x1d03c4(0x1f9),'collaboration-timeout':_0x1d03c4(0x1e7)},'conflict':{'title':_0x1d03c4(0x1ef),'content':'There\x20is\x20a\x20conflict\x20between\x20your\x20local\x20copy\x20and\x20the\x20copy\x20on\x20the\x20server.\x20Please\x20save\x20your\x20local\x20edits,\x20because\x20they\x20will\x20be\x20lost\x20when\x20you\x20reload\x20the\x20page.'},'permission':{'title':'Authentication\x20Error','content':_0x1d03c4(0x1ed)},'collaboration':{'single-unit':{'warning':_0x1d03c4(0x1f1)},'closeRoom':'Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.'},'auth':{'needGotoLoginAlert':_0x1d03c4(0x1e9)}},o=e;export{o as default};function _0x78f1(){const _0x58108f=['3515710vvYckR','Local\x20file','Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.','6ymoJtG','Collaboration\x20Conflict','37457VHENCM','You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.','Syncing\x20server\x20data...','1279152hMsQuM','41540bgarmP','Offline,\x20edits\x20would\x20be\x20save\x20on\x20local','1063385VSpEzA','5MfBbJZ','Click\x20to\x20Reconnect','Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','6Iwxaik','Connection\x20failed,\x20please\x20check\x20your\x20network.','Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.','459372yXmoqm','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.','1669360ftrIlV'];_0x78f1=function(){return _0x58108f;};return _0x78f1();}
1
+ const _0x9d783c=_0x36f5;function _0x36f5(_0xdb3360,_0x368dbe){const _0x56f736=_0x56f7();return _0x36f5=function(_0x36f533,_0x844e15){_0x36f533=_0x36f533-0x1f0;let _0x1ca8d1=_0x56f736[_0x36f533];return _0x1ca8d1;},_0x36f5(_0xdb3360,_0x368dbe);}(function(_0x53a4ed,_0x56ddde){const _0x302247=_0x36f5,_0x2a5f97=_0x53a4ed();while(!![]){try{const _0x40b3c7=parseInt(_0x302247(0x206))/0x1+parseInt(_0x302247(0x207))/0x2*(parseInt(_0x302247(0x1f7))/0x3)+parseInt(_0x302247(0x1fd))/0x4*(-parseInt(_0x302247(0x1f5))/0x5)+-parseInt(_0x302247(0x201))/0x6+parseInt(_0x302247(0x1fc))/0x7+-parseInt(_0x302247(0x205))/0x8+parseInt(_0x302247(0x208))/0x9*(parseInt(_0x302247(0x202))/0xa);if(_0x40b3c7===_0x56ddde)break;else _0x2a5f97['push'](_0x2a5f97['shift']());}catch(_0xd40045){_0x2a5f97['push'](_0x2a5f97['shift']());}}}(_0x56f7,0xcf889));const e={'collab-client':{'tooltip':{'reconnect':_0x9d783c(0x1f8)}},'collabStatus':{'fetchMiss':_0x9d783c(0x203),'conflict':'Edit\x20conflicts','notCollab':_0x9d783c(0x1f9),'synced':'Synced','syncing':_0x9d783c(0x1fe),'offline':_0x9d783c(0x1f1)},'session':{'connection-failed':_0x9d783c(0x1ff),'will-retry':'Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','room-full':_0x9d783c(0x204),'collaboration-timeout':_0x9d783c(0x1f0)},'conflict':{'title':_0x9d783c(0x1f3),'content':_0x9d783c(0x1f2)},'permission':{'title':_0x9d783c(0x1f6),'content':_0x9d783c(0x1fa)},'collaboration':{'single-unit':{'warning':_0x9d783c(0x200)},'closeRoom':_0x9d783c(0x1f4)},'auth':{'needGotoLoginAlert':_0x9d783c(0x1fb)}},o=e;function _0x56f7(){const _0x2aade7=['Local\x20file','Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.','9924719zzTdql','678932oapLoo','Syncing...','Connection\x20failed,\x20please\x20check\x20your\x20network.','You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.','9820074FClkMO','1607770KjQStt','Syncing\x20server\x20data...','Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','9144352WxMrhZ','841394bIrikz','6XQceVy','72bqvABi','The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.','Offline,\x20edits\x20would\x20be\x20save\x20on\x20local','There\x20is\x20a\x20conflict\x20between\x20your\x20local\x20copy\x20and\x20the\x20copy\x20on\x20the\x20server.\x20Please\x20save\x20your\x20local\x20edits,\x20because\x20they\x20will\x20be\x20lost\x20when\x20you\x20reload\x20the\x20page.','Collaboration\x20Conflict','Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.','10NjliEx','Authentication\x20Error','423819OcNQhi','Click\x20to\x20Reconnect'];_0x56f7=function(){return _0x2aade7;};return _0x56f7();}export{o as default};
@@ -1 +1 @@
1
- const _0x2eb722=_0x29c4;function _0x356b(){const _0x14473a=['Connection\x20failed,\x20please\x20check\x20your\x20network.','Syncing...','Offline,\x20edits\x20would\x20be\x20save\x20on\x20local','80309hlcxqh','Local\x20file','383784jkbIlk','Click\x20to\x20Reconnect','5070670CWGIOX','16079ztHtkW','1845220QupxCt','5589780JajEBz','Authentication\x20Error','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.','Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','Edit\x20conflicts','The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.','1128CoofMh','Collaboration\x20Conflict','Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.','Syncing\x20server\x20data...','785301kzeSon','You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.'];_0x356b=function(){return _0x14473a;};return _0x356b();}(function(_0x30305b,_0x22e49a){const _0x3d1da1=_0x29c4,_0x5309ce=_0x30305b();while(!![]){try{const _0x52c6d4=-parseInt(_0x3d1da1(0x9f))/0x1+parseInt(_0x3d1da1(0xa1))/0x2+-parseInt(_0x3d1da1(0x9a))/0x3+parseInt(_0x3d1da1(0x8e))/0x4+-parseInt(_0x3d1da1(0x8c))/0x5+parseInt(_0x3d1da1(0x8f))/0x6+parseInt(_0x3d1da1(0x8d))/0x7*(parseInt(_0x3d1da1(0x96))/0x8);if(_0x52c6d4===_0x22e49a)break;else _0x5309ce['push'](_0x5309ce['shift']());}catch(_0x867892){_0x5309ce['push'](_0x5309ce['shift']());}}}(_0x356b,0x86e2e));function _0x29c4(_0x2bd03e,_0x281c76){const _0x356bc1=_0x356b();return _0x29c4=function(_0x29c432,_0x448132){_0x29c432=_0x29c432-0x8b;let _0x9a31b6=_0x356bc1[_0x29c432];return _0x9a31b6;},_0x29c4(_0x2bd03e,_0x281c76);}const e={'collab-client':{'tooltip':{'reconnect':_0x2eb722(0x8b)}},'collabStatus':{'fetchMiss':_0x2eb722(0x99),'conflict':_0x2eb722(0x94),'notCollab':_0x2eb722(0xa0),'synced':'Synced','syncing':_0x2eb722(0x9d),'offline':_0x2eb722(0x9e)},'session':{'connection-failed':_0x2eb722(0x9c),'will-retry':_0x2eb722(0x93),'room-full':_0x2eb722(0x92),'collaboration-timeout':_0x2eb722(0x95)},'conflict':{'title':_0x2eb722(0x97),'content':'There\x20is\x20a\x20conflict\x20between\x20your\x20local\x20copy\x20and\x20the\x20copy\x20on\x20the\x20server.\x20Please\x20save\x20your\x20local\x20edits,\x20because\x20they\x20will\x20be\x20lost\x20when\x20you\x20reload\x20the\x20page.'},'permission':{'title':_0x2eb722(0x90),'content':_0x2eb722(0x98)},'collaboration':{'single-unit':{'warning':_0x2eb722(0x9b)},'closeRoom':'Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.'},'auth':{'needGotoLoginAlert':_0x2eb722(0x91)}},o=e;export{o as default};
1
+ function _0xff32(_0x3aba31,_0x560381){const _0x3a2c5b=_0x3a2c();return _0xff32=function(_0xff3242,_0x3385ea){_0xff3242=_0xff3242-0x1c7;let _0x100a87=_0x3a2c5b[_0xff3242];return _0x100a87;},_0xff32(_0x3aba31,_0x560381);}const _0x30cb33=_0xff32;function _0x3a2c(){const _0x44266d=['Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.','Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.','10sOzDLj','206776lahEiz','Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','3610080PHePee','The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.','Offline,\x20edits\x20would\x20be\x20save\x20on\x20local','1445105lELJkO','There\x20is\x20a\x20conflict\x20between\x20your\x20local\x20copy\x20and\x20the\x20copy\x20on\x20the\x20server.\x20Please\x20save\x20your\x20local\x20edits,\x20because\x20they\x20will\x20be\x20lost\x20when\x20you\x20reload\x20the\x20page.','4427478JrnrPX','Connection\x20failed,\x20please\x20check\x20your\x20network.','Synced','Click\x20to\x20Reconnect','14981140lIvCot','7OMlSUN','Authentication\x20Error','Local\x20file','Syncing...','Collaboration\x20Conflict','1402924gTzdHD','8Ysrwrt','1298358QXKZOb','Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.'];_0x3a2c=function(){return _0x44266d;};return _0x3a2c();}(function(_0x232e27,_0x44d080){const _0x33c5c9=_0xff32,_0xa3c90d=_0x232e27();while(!![]){try{const _0x2e35ce=parseInt(_0x33c5c9(0x1d4))/0x1*(-parseInt(_0x33c5c9(0x1d3))/0x2)+-parseInt(_0x33c5c9(0x1d6))/0x3+parseInt(_0x33c5c9(0x1cb))/0x4+parseInt(_0x33c5c9(0x1d9))/0x5+parseInt(_0x33c5c9(0x1cd))/0x6*(parseInt(_0x33c5c9(0x1e0))/0x7)+parseInt(_0x33c5c9(0x1cc))/0x8*(parseInt(_0x33c5c9(0x1db))/0x9)+parseInt(_0x33c5c9(0x1df))/0xa;if(_0x2e35ce===_0x44d080)break;else _0xa3c90d['push'](_0xa3c90d['shift']());}catch(_0x3646f6){_0xa3c90d['push'](_0xa3c90d['shift']());}}}(_0x3a2c,0x94ac1));const e={'collab-client':{'tooltip':{'reconnect':_0x30cb33(0x1de)}},'collabStatus':{'fetchMiss':'Syncing\x20server\x20data...','conflict':'Edit\x20conflicts','notCollab':_0x30cb33(0x1c8),'synced':_0x30cb33(0x1dd),'syncing':_0x30cb33(0x1c9),'offline':_0x30cb33(0x1d8)},'session':{'connection-failed':_0x30cb33(0x1dc),'will-retry':_0x30cb33(0x1d5),'room-full':_0x30cb33(0x1d1),'collaboration-timeout':_0x30cb33(0x1d7)},'conflict':{'title':_0x30cb33(0x1ca),'content':_0x30cb33(0x1da)},'permission':{'title':_0x30cb33(0x1c7),'content':_0x30cb33(0x1d0)},'collaboration':{'single-unit':{'warning':_0x30cb33(0x1d2)},'closeRoom':_0x30cb33(0x1ce)},'auth':{'needGotoLoginAlert':_0x30cb33(0x1cf)}},o=e;export{o as default};
@@ -1 +1 @@
1
- const _0x547f78=_0x5372;function _0x5372(_0x33bab2,_0x2efb47){const _0x37211a=_0x3721();return _0x5372=function(_0x5372e7,_0x3ae07a){_0x5372e7=_0x5372e7-0x189;let _0x4475bd=_0x37211a[_0x5372e7];return _0x4475bd;},_0x5372(_0x33bab2,_0x2efb47);}function _0x3721(){const _0xd5dc8e=['321948CaCJTd','点击重新连接','220388wDrUBu','连接失败,将在一会儿之后重试连接','连接失败,请检查你的网络','保存中...','6081852cpdlqx','正在拉取服务端数据...','你的登录已过期,点击确认重新登陆,点击取消去保存你的本地编辑。','4ZnEAXH','4789835KUiusU','权限错误','1362450HTEzIj','协同冲突','168DNgFyy','4415118bOhxBc','2qGIpyj','服务器未响应,你的编辑将在本地缓存','你的本地文档和服务器的文档存在冲突。请在别处保存你的本地编辑,本地编辑将在刷新页面后丢弃。','13968030cYxNct','本地文件','你的操作和服务器的权限存在冲突。请在别处保存你的本地编辑,本地编辑将在刷新页面后丢弃。','你在另一个标签页打开了同一个文件。为了避免数据丢失,这个标签页的编辑行为将会被限制。'];_0x3721=function(){return _0xd5dc8e;};return _0x3721();}(function(_0x344f7a,_0x3274b6){const _0x5c653f=_0x5372,_0x591fc0=_0x344f7a();while(!![]){try{const _0x39e26e=-parseInt(_0x5c653f(0x189))/0x1*(parseInt(_0x5c653f(0x192))/0x2)+-parseInt(_0x5c653f(0x19c))/0x3+-parseInt(_0x5c653f(0x199))/0x4*(parseInt(_0x5c653f(0x19a))/0x5)+-parseInt(_0x5c653f(0x19f))/0x6+parseInt(_0x5c653f(0x196))/0x7+parseInt(_0x5c653f(0x19e))/0x8*(parseInt(_0x5c653f(0x190))/0x9)+parseInt(_0x5c653f(0x18c))/0xa;if(_0x39e26e===_0x3274b6)break;else _0x591fc0['push'](_0x591fc0['shift']());}catch(_0x40948f){_0x591fc0['push'](_0x591fc0['shift']());}}}(_0x3721,0x9e52d));const o={'collab-client':{'tooltip':{'reconnect':_0x547f78(0x191)}},'collabStatus':{'fetchMiss':_0x547f78(0x197),'conflict':'编辑冲突','notCollab':_0x547f78(0x18d),'synced':'已同步','syncing':_0x547f78(0x195),'offline':'已离线,编辑将在本地缓存'},'session':{'connection-failed':_0x547f78(0x194),'will-retry':_0x547f78(0x193),'room-full':'协同房间已满,你的编辑将在本地缓存','collaboration-timeout':_0x547f78(0x18a)},'conflict':{'title':_0x547f78(0x19d),'content':_0x547f78(0x18b)},'permission':{'title':_0x547f78(0x19b),'content':_0x547f78(0x18e)},'collaboration':{'single-unit':{'warning':_0x547f78(0x18f)},'closeRoom':'由于协同房间被关闭,编辑权限被收回。'},'auth':{'needGotoLoginAlert':_0x547f78(0x198)}};export{o as default};
1
+ function _0x5565(_0x5cee59,_0x5a7a70){const _0x7d52a1=_0x7d52();return _0x5565=function(_0x55655b,_0x96e572){_0x55655b=_0x55655b-0x7b;let _0x39047a=_0x7d52a1[_0x55655b];return _0x39047a;},_0x5565(_0x5cee59,_0x5a7a70);}const _0x3b577b=_0x5565;(function(_0x539f46,_0x2caedf){const _0x5a6a2a=_0x5565,_0x5db274=_0x539f46();while(!![]){try{const _0x283023=parseInt(_0x5a6a2a(0x8a))/0x1+-parseInt(_0x5a6a2a(0x7e))/0x2*(-parseInt(_0x5a6a2a(0x81))/0x3)+-parseInt(_0x5a6a2a(0x8e))/0x4*(-parseInt(_0x5a6a2a(0x8c))/0x5)+-parseInt(_0x5a6a2a(0x8f))/0x6*(parseInt(_0x5a6a2a(0x7f))/0x7)+parseInt(_0x5a6a2a(0x89))/0x8*(-parseInt(_0x5a6a2a(0x80))/0x9)+parseInt(_0x5a6a2a(0x88))/0xa+-parseInt(_0x5a6a2a(0x84))/0xb*(parseInt(_0x5a6a2a(0x83))/0xc);if(_0x283023===_0x2caedf)break;else _0x5db274['push'](_0x5db274['shift']());}catch(_0x43c1ef){_0x5db274['push'](_0x5db274['shift']());}}}(_0x7d52,0x5472d));function _0x7d52(){const _0x2fe672=['2457305vcbuHb','你在另一个标签页打开了同一个文件。为了避免数据丢失,这个标签页的编辑行为将会被限制。','4ZWmaBS','6iNvGTt','你的登录已过期,点击确认重新登陆,点击取消去保存你的本地编辑。','连接失败,请检查你的网络','权限错误','正在拉取服务端数据...','协同冲突','你的操作和服务器的权限存在冲突。请在别处保存你的本地编辑,本地编辑将在刷新页面后丢弃。','你的本地文档和服务器的文档存在冲突。请在别处保存你的本地编辑,本地编辑将在刷新页面后丢弃。','2GzONHa','386701NtsfDb','1931985EsMGkf','698970WevTij','已同步','732POpqQq','98296msSfod','点击重新连接','连接失败,将在一会儿之后重试连接','已离线,编辑将在本地缓存','527020TeZNXC','8BbwBdM','383752PuFjVE','由于协同房间被关闭,编辑权限被收回。'];_0x7d52=function(){return _0x2fe672;};return _0x7d52();}const o={'collab-client':{'tooltip':{'reconnect':_0x3b577b(0x85)}},'collabStatus':{'fetchMiss':_0x3b577b(0x93),'conflict':'编辑冲突','notCollab':'本地文件','synced':_0x3b577b(0x82),'syncing':'保存中...','offline':_0x3b577b(0x87)},'session':{'connection-failed':_0x3b577b(0x91),'will-retry':_0x3b577b(0x86),'room-full':'协同房间已满,你的编辑将在本地缓存','collaboration-timeout':'服务器未响应,你的编辑将在本地缓存'},'conflict':{'title':_0x3b577b(0x7b),'content':_0x3b577b(0x7d)},'permission':{'title':_0x3b577b(0x92),'content':_0x3b577b(0x7c)},'collaboration':{'single-unit':{'warning':_0x3b577b(0x8d)},'closeRoom':_0x3b577b(0x8b)},'auth':{'needGotoLoginAlert':_0x3b577b(0x90)}};export{o as default};
@@ -1 +1 @@
1
- const _0x6bfe07=_0x51aa;function _0x51aa(_0x517040,_0x4d0539){const _0x3ebde1=_0x3ebd();return _0x51aa=function(_0x51aae9,_0x1dc455){_0x51aae9=_0x51aae9-0x14a;let _0x12a682=_0x3ebde1[_0x51aae9];return _0x12a682;},_0x51aa(_0x517040,_0x4d0539);}(function(_0x3c341d,_0x51211a){const _0x238cec=_0x51aa,_0x1f199b=_0x3c341d();while(!![]){try{const _0xf14b80=-parseInt(_0x238cec(0x15e))/0x1+-parseInt(_0x238cec(0x15f))/0x2+parseInt(_0x238cec(0x154))/0x3*(-parseInt(_0x238cec(0x14d))/0x4)+parseInt(_0x238cec(0x14c))/0x5+parseInt(_0x238cec(0x14a))/0x6*(-parseInt(_0x238cec(0x153))/0x7)+-parseInt(_0x238cec(0x15b))/0x8+parseInt(_0x238cec(0x157))/0x9;if(_0xf14b80===_0x51211a)break;else _0x1f199b['push'](_0x1f199b['shift']());}catch(_0x14d8ac){_0x1f199b['push'](_0x1f199b['shift']());}}}(_0x3ebd,0xc9304));function _0x3ebd(){const _0x592ed5=['Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.','Collaboration\x20Conflict','9567400uyLoEX','There\x20is\x20a\x20conflict\x20between\x20your\x20local\x20copy\x20and\x20the\x20copy\x20on\x20the\x20server.\x20Please\x20save\x20your\x20local\x20edits,\x20because\x20they\x20will\x20be\x20lost\x20when\x20you\x20reload\x20the\x20page.','Offline,\x20edits\x20would\x20be\x20save\x20on\x20local','1594748AaJJDn','1367018VbjQka','12858arGBha','Edit\x20conflicts','7053370mYDqNh','133996wEtxKY','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.','Syncing...','Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','Connection\x20failed,\x20please\x20check\x20your\x20network.','Syncing\x20server\x20data...','1029prtTTF','99rRDlVv','Synced','Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.','38772576kAtxRl','You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.'];_0x3ebd=function(){return _0x592ed5;};return _0x3ebd();}const e={'collab-client':{'tooltip':{'reconnect':'Click\x20to\x20Reconnect'}},'collabStatus':{'fetchMiss':_0x6bfe07(0x152),'conflict':_0x6bfe07(0x14b),'notCollab':'Local\x20file','synced':_0x6bfe07(0x155),'syncing':_0x6bfe07(0x14f),'offline':_0x6bfe07(0x15d)},'session':{'connection-failed':_0x6bfe07(0x151),'will-retry':_0x6bfe07(0x150),'room-full':'Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','collaboration-timeout':'The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.'},'conflict':{'title':_0x6bfe07(0x15a),'content':_0x6bfe07(0x15c)},'permission':{'title':'Authentication\x20Error','content':_0x6bfe07(0x159)},'collaboration':{'single-unit':{'warning':_0x6bfe07(0x158)},'closeRoom':_0x6bfe07(0x156)},'auth':{'needGotoLoginAlert':_0x6bfe07(0x14e)}},o=e;export{o as default};
1
+ function _0x2351(_0x1a9a7e,_0x326b45){const _0x234c1a=_0x234c();return _0x2351=function(_0x235132,_0x558b2b){_0x235132=_0x235132-0xe3;let _0xe9876b=_0x234c1a[_0x235132];return _0xe9876b;},_0x2351(_0x1a9a7e,_0x326b45);}const _0x2ccd9e=_0x2351;(function(_0x2c2adc,_0x1bf8b7){const _0x5af8da=_0x2351,_0xac26e7=_0x2c2adc();while(!![]){try{const _0x57d40b=-parseInt(_0x5af8da(0xf1))/0x1+parseInt(_0x5af8da(0xf4))/0x2+parseInt(_0x5af8da(0xf5))/0x3*(parseInt(_0x5af8da(0xe4))/0x4)+parseInt(_0x5af8da(0xf3))/0x5+-parseInt(_0x5af8da(0xef))/0x6*(-parseInt(_0x5af8da(0xea))/0x7)+-parseInt(_0x5af8da(0xf0))/0x8+parseInt(_0x5af8da(0xf2))/0x9*(parseInt(_0x5af8da(0xe9))/0xa);if(_0x57d40b===_0x1bf8b7)break;else _0xac26e7['push'](_0xac26e7['shift']());}catch(_0x79ca56){_0xac26e7['push'](_0xac26e7['shift']());}}}(_0x234c,0xac296));const e={'collab-client':{'tooltip':{'reconnect':_0x2ccd9e(0xf7)}},'collabStatus':{'fetchMiss':_0x2ccd9e(0xed),'conflict':'Edit\x20conflicts','notCollab':'Local\x20file','synced':_0x2ccd9e(0xec),'syncing':_0x2ccd9e(0xe3),'offline':'Offline,\x20edits\x20would\x20be\x20save\x20on\x20local'},'session':{'connection-failed':_0x2ccd9e(0xe5),'will-retry':_0x2ccd9e(0xee),'room-full':_0x2ccd9e(0xf6),'collaboration-timeout':'The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.'},'conflict':{'title':_0x2ccd9e(0xeb),'content':'There\x20is\x20a\x20conflict\x20between\x20your\x20local\x20copy\x20and\x20the\x20copy\x20on\x20the\x20server.\x20Please\x20save\x20your\x20local\x20edits,\x20because\x20they\x20will\x20be\x20lost\x20when\x20you\x20reload\x20the\x20page.'},'permission':{'title':_0x2ccd9e(0xe6),'content':'Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.'},'collaboration':{'single-unit':{'warning':_0x2ccd9e(0xe7)},'closeRoom':_0x2ccd9e(0xe8)},'auth':{'needGotoLoginAlert':'Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.'}},o=e;export{o as default};function _0x234c(){const _0x456002=['10ahvhDx','1508311wVfkYE','Collaboration\x20Conflict','Synced','Syncing\x20server\x20data...','Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','6BNHhug','8240648QLXubT','754911JoaLqc','2953116raOKgS','1076505xCMVPV','806180AkZnpA','7338LevEPF','Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','Click\x20to\x20Reconnect','Syncing...','2172GfcsAB','Connection\x20failed,\x20please\x20check\x20your\x20network.','Authentication\x20Error','You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.','Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.'];_0x234c=function(){return _0x456002;};return _0x234c();}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The config key to determined the URL provided by the snapshot server
3
+ * to load snapshot. The URL should not ends with a slash.
4
+ */
5
+ /** @deprecated Will be removed in the 0.2.19 release */
6
+ export declare const SNAPSHOT_SERVER_URL_KEY = "SNAPSHOT_SERVER_URL_KEY";
7
+ /**
8
+ * Default value for `SNAPSHOT_SERVER_URL_KEY`.
9
+ *
10
+ * Determined in the protocol file in `submodules/protocol/universer/v1/snapshot.proto`.
11
+ */
12
+ export declare const DEFAULT_SNAPSHOT_SERVER_URL = "/universer-api/snapshot";
13
+ /**
14
+ * @ignore
15
+ */
16
+ export declare const SNAPSHOT_URL_KEY = "SNAPSHOT_URL_KEY";
17
+ /**
18
+ * Determines how often should we send changesets.
19
+ */
20
+ /** @deprecated Will be removed in the 0.2.19 release */
21
+ export declare const SEND_CHANGESET_TIMEOUT_KEY = "SEND_CHANGESET_TIMEOUT";
22
+ export declare const DEFAULT_SEND_CHANGESET_TIMEOUT = 2000;
23
+ /** @deprecated Will be removed in the 0.2.19 release */
24
+ export declare const COLLAB_WEB_SOCKET_URL_KEY = "COLLAB_WEB_SOCKET_URL";
25
+ export declare const DEFAULT_COLLAB_WEB_SOCKET_URL = "ws://127.0.0.1:8000/universer-api/comb/connect";
26
+ /** The heartbeat interval in milliseconds. */
27
+ export declare const HEARTBEAT_INTERVAL_KEY = "HEARTBEAT_INTERVAL";
28
+ export declare const DEFAULT_HEARTBEAT_INTERVAL = 30000;
29
+ export declare const HEARTBEAT_TIMEOUT_KEY = "HEARTBEAT_TIMEOUT";
30
+ export declare const DEFAULT_HEARTBEAT_TIMEOUT = 20000;
31
+ export declare const DEFAULT_RETRY_CONNECTING_INTERVAL = 20000;
32
+ export declare const RETRY_CONNECTING_MAX_COUNT_KEY = "RETRY_CONNECTING_MAX_COUNT";
33
+ export declare const DEFAULT_RETRY_CONNECTING_MAX_COUNT = 3;
34
+ /**
35
+ * A config key to determine how often should Univer save local edits.
36
+ */
37
+ export declare const LOCAL_CACHE_INTERVAL_KEY = "LOCAL_CACHE_INTERVAL";
38
+ export declare const LOCAL_CACHE_INTERVAL = 1000;
39
+ /** @deprecated Will be removed in the 0.2.19 release */
40
+ export declare const COLLAB_SUBMIT_CHANGESET_URL_KEY = "COLLAB_SUBMIT_CHANGESET_URL";
41
+ /** The url prefix is determined by protocol in submodules/protocol/universer/v1/comb.proto */
42
+ export declare const DEFAULT_COLLAB_SUBMIT_CHANGESET_URL = "/universer-api/comb";
43
+ /**
44
+ * The config key to determined the URL provided by the auth server
45
+ */
46
+ /** @deprecated Will be removed in the 0.2.19 release */
47
+ export declare const LOGIN_URL_KEY = "LOGIN_URL_KEY";
48
+ export declare const DEFAULT_LOGIN_URL = "/universer-api/oidc/authpage";
@@ -0,0 +1,23 @@
1
+ import { DocumentDataModel, Injector, IUniverInstanceService, RxDisposable } from '@univerjs/core';
2
+ import { DocumentSkeleton, IRender, IRenderContext, IRenderModule, DocumentViewModel, IRenderManagerService } from '@univerjs/engine-render';
3
+ import { Nullable } from 'vitest';
4
+ export declare class MockRenderManagerService implements Pick<IRenderManagerService, 'getRenderById'> {
5
+ private readonly _injector;
6
+ constructor(_injector: Injector);
7
+ getRenderById(_unitId: string): Nullable<IRender>;
8
+ }
9
+ export declare class MockDocSkeletonManagerService extends RxDisposable implements IRenderModule {
10
+ private readonly _context;
11
+ private readonly _univerInstanceService;
12
+ private _docViewModel;
13
+ private readonly _currentSkeleton$;
14
+ readonly currentSkeleton$: import('rxjs').Observable<Nullable<DocumentSkeleton>>;
15
+ private readonly _currentSkeletonBefore$;
16
+ readonly currentSkeletonBefore$: import('rxjs').Observable<Nullable<DocumentSkeleton>>;
17
+ constructor(_context: IRenderContext<DocumentDataModel>, _univerInstanceService: IUniverInstanceService);
18
+ dispose(): void;
19
+ private _update;
20
+ getSkeleton(): DocumentSkeleton;
21
+ getViewModel(): DocumentViewModel;
22
+ private _buildDocViewModel;
23
+ }
@@ -0,0 +1,22 @@
1
+ import { Observable } from 'rxjs';
2
+ import { IDocCollabCursor, ISheetCollabCursor } from '../../models/cursor';
3
+ import { Injector, IUniverInstanceService, RxDisposable } from '@univerjs/core';
4
+ import { CollaborationSessionService } from '../../services/collaboration-session/collaboration-session.service';
5
+ /**
6
+ * This controller adds collaboration cursors to Univer. It works with `CollabCursorRenderController`.
7
+ *
8
+ * This controller is also responsible for managing online collaborators' data.
9
+ */
10
+ export declare class CollabCursorController extends RxDisposable {
11
+ private readonly _univerInstanceService;
12
+ private readonly _injector;
13
+ private readonly _collabSessionService;
14
+ private readonly _entities;
15
+ private readonly _entityInit$;
16
+ constructor(_univerInstanceService: IUniverInstanceService, _injector: Injector, _collabSessionService: CollaborationSessionService);
17
+ dispose(): void;
18
+ getCollabCursors$(unitID: string): Observable<Map<string, ISheetCollabCursor> | Map<string, IDocCollabCursor>>;
19
+ private _init;
20
+ private _startSheetCollabCursor;
21
+ private _startDocCollabCursor;
22
+ }
@@ -0,0 +1,38 @@
1
+ import { ICollaborationUser, ITransformService } from '@univerjs-pro/collaboration';
2
+ import { IDocCollabCursor } from '../../models/cursor';
3
+ import { ICommandService, Injector, IUniverInstanceService, RxDisposable } from '@univerjs/core';
4
+ import { CollaborationSession } from '../../services/collaboration-session/collaboration-session';
5
+ import { ColorAssignService } from '../../services/color-assign/color-assign.service';
6
+ import { MemberService } from '../../services/member/member.service';
7
+ import { DocSyncEditingCollabCursorService } from '../../services/sync-editing-collab-cursor/doc-sync-editing-collab-cursor.service';
8
+ /**
9
+ * Each univer document instance would map to an `CollabCursorEntity` to handle collaborated editing events.
10
+ */
11
+ export declare class DocCollabCursorEntity extends RxDisposable {
12
+ readonly unitID: string;
13
+ private readonly _session;
14
+ private readonly _injector;
15
+ private readonly _colorAssignService;
16
+ private readonly _memberService;
17
+ private readonly _syncEditingCollabCursorService;
18
+ private readonly _transformService;
19
+ private readonly _univerInstanceService;
20
+ private readonly _commandService;
21
+ private _online;
22
+ private _init;
23
+ /** Cursor info of the collaboration room members. The key would be the memberID. */
24
+ private _cursorInfo$;
25
+ cursorInfo$: import('rxjs').Observable<Map<string, IDocCollabCursor>>;
26
+ get cursorInfo(): Readonly<Map<string, IDocCollabCursor>>;
27
+ private _roomMembers$;
28
+ roomMembers$: import('rxjs').Observable<ICollaborationUser[]>;
29
+ get roomMembers(): Readonly<ICollaborationUser[]>;
30
+ constructor(unitID: string, _session: CollaborationSession, _injector: Injector, _colorAssignService: ColorAssignService, _memberService: MemberService, _syncEditingCollabCursorService: DocSyncEditingCollabCursorService, _transformService: ITransformService, _univerInstanceService: IUniverInstanceService, _commandService: ICommandService);
31
+ dispose(): void;
32
+ init(): void;
33
+ private _onCursorUpdate;
34
+ private _onCursorDelete;
35
+ private _updateLocalCursor;
36
+ private _toggleOnline;
37
+ private _toggleOffline;
38
+ }
@@ -0,0 +1,24 @@
1
+ import { DocumentDataModel, ICommandService, RxDisposable, ThemeService } from '@univerjs/core';
2
+ import { IRenderContext, IRenderModule } from '@univerjs/engine-render';
3
+ import { DocSkeletonManagerService } from '@univerjs/docs';
4
+ import { CollabCursorController } from './collab-cursor.controller';
5
+ /**
6
+ * This controller works with `CollabCursorController` to render doc collaboration cursors.
7
+ */
8
+ export declare class DocCollabCursorRenderController extends RxDisposable implements IRenderModule {
9
+ private readonly _context;
10
+ private readonly _docSkeletonManagerService;
11
+ private readonly _collabCursorController;
12
+ private readonly _commandService;
13
+ private readonly _themeService;
14
+ /** Cursors stored for different Workbooks. */
15
+ private _cursorShapes;
16
+ private _cursors;
17
+ constructor(_context: IRenderContext<DocumentDataModel>, _docSkeletonManagerService: DocSkeletonManagerService, _collabCursorController: CollabCursorController, _commandService: ICommandService, _themeService: ThemeService);
18
+ private _init;
19
+ private _updateCollabCursors;
20
+ private _refreshCollabCursors;
21
+ private _removeCollabCursors;
22
+ private _initCommandExecutedListener;
23
+ private _initResize;
24
+ }
@@ -0,0 +1,3 @@
1
+ import { ITextRangeWithStyle } from '@univerjs/engine-render';
2
+ export declare function serializeDocTextRanges(ranges: ITextRangeWithStyle[]): string;
3
+ export declare function deserializeDocTextRanges(serializedTextRanges: string): ITextRangeWithStyle[];
@@ -0,0 +1,39 @@
1
+ import { ICollaborationUser } from '@univerjs-pro/collaboration';
2
+ import { ISheetCollabCursor } from '../../models/cursor';
3
+ import { CollaborationSession } from '../../services/collaboration-session/collaboration-session';
4
+ import { ICommandService, Injector, IUniverInstanceService, RxDisposable } from '@univerjs/core';
5
+ import { RefRangeService } from '@univerjs/sheets';
6
+ import { ColorAssignService } from '../../services/color-assign/color-assign.service';
7
+ import { MemberService } from '../../services/member/member.service';
8
+ /**
9
+ * Each univer document instance would map to an `CollabCursorEntity` to handle collaborated editing events.
10
+ */
11
+ export declare class SheetCollabCursorEntity extends RxDisposable {
12
+ readonly unitID: string;
13
+ private readonly _session;
14
+ private readonly _injector;
15
+ private readonly _colorAssignService;
16
+ private readonly _memberService;
17
+ private readonly _univerInstanceService;
18
+ private readonly _commandService;
19
+ private _refRangeService;
20
+ private _online;
21
+ private _init;
22
+ /** Cursor info of the collaboration room members. The key would be the memberID. */
23
+ private _cursorInfo$;
24
+ cursorInfo$: import('rxjs').Observable<Map<string, ISheetCollabCursor>>;
25
+ get cursorInfo(): Readonly<Map<string, ISheetCollabCursor>>;
26
+ private _roomMembers$;
27
+ roomMembers$: import('rxjs').Observable<ICollaborationUser[]>;
28
+ get roomMembers(): Readonly<ICollaborationUser[]>;
29
+ constructor(unitID: string, _session: CollaborationSession, _injector: Injector, _colorAssignService: ColorAssignService, _memberService: MemberService, _univerInstanceService: IUniverInstanceService, _commandService: ICommandService, _refRangeService: RefRangeService);
30
+ dispose(): void;
31
+ init(): void;
32
+ private _onCursorUpdate;
33
+ private _onCursorDelete;
34
+ private _getMergeRange;
35
+ private _onRefRangeChange;
36
+ private _updateLocalCursor;
37
+ private _toggleOnline;
38
+ private _toggleOffline;
39
+ }
@@ -0,0 +1,21 @@
1
+ import { Workbook, RxDisposable, ThemeService } from '@univerjs/core';
2
+ import { IRenderContext, IRenderModule } from '@univerjs/engine-render';
3
+ import { SheetSkeletonManagerService } from '@univerjs/sheets-ui';
4
+ import { CollabCursorController } from './collab-cursor.controller';
5
+ /**
6
+ * This controller works with `CollabCursorController` to render sheet collaboration cursors.
7
+ */
8
+ export declare class SheetCollabCursorRenderController extends RxDisposable implements IRenderModule {
9
+ private readonly _context;
10
+ private readonly _sheetSkeletonManagerService;
11
+ private readonly _collabCursorController;
12
+ private readonly _themeService;
13
+ /** Cursors stored for different Workbooks. */
14
+ private _cursors;
15
+ private _lastPointer;
16
+ constructor(_context: IRenderContext<Workbook>, _sheetSkeletonManagerService: SheetSkeletonManagerService, _collabCursorController: CollabCursorController, _themeService: ThemeService);
17
+ private _init;
18
+ private _updateCollabCursors;
19
+ private _removeCollabCursors;
20
+ private _getSheetObject;
21
+ }
@@ -0,0 +1,18 @@
1
+ import { Disposable, Injector, IUniverInstanceService } from '@univerjs/core';
2
+ import { IUIPartsService } from '@univerjs/ui';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { CollaborationController } from '../collaboration/collaboration.controller';
5
+ import { CollaborationStatus } from '../collaboration/collaboration-state';
6
+ /**
7
+ * This controller is responsible for monitoring the collaboration status of the currently focused unit.
8
+ */
9
+ export declare class DesktopCollaborationStatusDisplayController extends Disposable {
10
+ private readonly _univerInstanceService;
11
+ private readonly _uiPartsService;
12
+ private readonly _injector;
13
+ private readonly _collaborationController;
14
+ protected readonly _status$: BehaviorSubject<CollaborationStatus>;
15
+ constructor(_univerInstanceService: IUniverInstanceService, _uiPartsService: IUIPartsService, _injector: Injector, _collaborationController: CollaborationController);
16
+ private _initStatusListener;
17
+ protected _initStatusComponent(): void;
18
+ }
@@ -0,0 +1,4 @@
1
+ import { IWorkbookData } from '@univerjs/core';
2
+ export declare const TEST_UNIT_ID = "test";
3
+ export declare const ANOTHER_TEST_UNIT_ID = "test2";
4
+ export declare function getTestSheetData(id?: string): IWorkbookData;
@@ -0,0 +1,54 @@
1
+ import { IDisposable, ILocalStorageService, Nullable, ILogService } from '@univerjs/core';
2
+ import { IMessageOptions, IMessageProps } from '@univerjs/design';
3
+ import { IBeforeCloseService, IMessageService, INotificationService } from '@univerjs/ui';
4
+ import { ICombResponseEvent } from '@univerjs-pro/collaboration';
5
+ import { Subject } from 'rxjs';
6
+ import { ICollaborationSocket, ICollaborationSocketService } from '../../../services/socket/collaboration-socket.service';
7
+ /**
8
+ * The handler object for a mocked socket connection. You can terminate, send messages / error through this object.
9
+ */
10
+ export interface IMockCollabSessionSocketHandler extends ICollaborationSocket {
11
+ socket: ICollaborationSocket;
12
+ close$: Subject<CloseEvent>;
13
+ error$: Subject<Event>;
14
+ open$: Subject<Event>;
15
+ message$: Subject<ICombResponseEvent>;
16
+ }
17
+ /**
18
+ * This service provides a mocked
19
+ */
20
+ export declare class MockCollaborationSocketService implements ICollaborationSocketService {
21
+ private readonly _logService;
22
+ private readonly _handlers;
23
+ constructor(_logService: ILogService);
24
+ createSocket(url: string): Nullable<ICollaborationSocket>;
25
+ /** Test scripts could get the session handler from this method to mock network events. */
26
+ getHandler(url: string): Nullable<IMockCollabSessionSocketHandler>;
27
+ }
28
+ export declare class MockBeforeCloseService implements IBeforeCloseService {
29
+ private _onCloseCallbacks;
30
+ private _beforeCloseCallbacks;
31
+ registerBeforeClose(callback: () => string | undefined): IDisposable;
32
+ registerOnClose(callback: () => void): IDisposable;
33
+ }
34
+ /**
35
+ * A mocked local storage service which use in-memory storage.
36
+ */
37
+ export declare class MockLocalStorageService implements ILocalStorageService {
38
+ private readonly _inMemoryCache;
39
+ getItem<T>(key: string): Promise<T | null>;
40
+ setItem<T>(key: string, value: T): Promise<T>;
41
+ removeItem(_key: string): Promise<void>;
42
+ clear(): Promise<void>;
43
+ key(_index: number): Promise<string | null>;
44
+ keys(): Promise<string[]>;
45
+ iterate<T, U>(_iteratee: (value: T, key: string, iterationNumber: number) => U): Promise<U>;
46
+ }
47
+ export declare class MockMessageService implements IMessageService {
48
+ show(_options: IMessageOptions & Omit<IMessageProps, 'key'>): IDisposable;
49
+ setContainer(_container: HTMLElement): void;
50
+ getContainer(): HTMLElement;
51
+ }
52
+ export declare class MockNotificationService implements INotificationService {
53
+ show(): IDisposable;
54
+ }
@@ -0,0 +1,91 @@
1
+ import { IDisposable, IMutationInfo, Nullable, ICommandService, ILogService, Injector, IPermissionService, LocaleService, RxDisposable } from '@univerjs/core';
2
+ import { UniverType } from '@univerjs/protocol';
3
+ import { Observable, BehaviorSubject } from 'rxjs';
4
+ import { CollaborationSession } from '../../services/collaboration-session/collaboration-session';
5
+ import { CollaborationState, ICollaborationStateHandler, CollaborationStatus } from './collaboration-state';
6
+ import { DocStateChangeManagerService } from '@univerjs/docs-ui';
7
+ import { IMessageService } from '@univerjs/ui';
8
+ import { CompressMutationService, RevisionService } from '@univerjs-pro/collaboration';
9
+ import { DocTransformIMECacheService } from '../../services/ime-cache-transform/doc-transform-ime-cache.service';
10
+ import { LocalCacheService } from '../../services/local-cache/local-cache.service';
11
+ import { SheetTransformSelectionsService } from '../../services/range-selection/sheet-transform-selections.service';
12
+ import { ISingleActiveUnitService } from '../../services/single-active-unit/single-active-unit.service';
13
+ import { DocTransformStateCacheService } from '../../services/state-cache-transform/doc-transform-state-cache.service';
14
+ import { DocSyncEditingCollabCursorService } from '../../services/sync-editing-collab-cursor/doc-sync-editing-collab-cursor.service';
15
+ import { DocTransformSelectionsService } from '../../services/text-selection/doc-transform-selections.service';
16
+ /**
17
+ * Each univer document instance would map to an `CollaborationEntity` to handle collaborated editing events.
18
+ */
19
+ export declare abstract class CollaborationEntity extends RxDisposable {
20
+ readonly unitID: string;
21
+ readonly session: CollaborationSession;
22
+ protected readonly _type: UniverType;
23
+ protected readonly _injector: Injector;
24
+ protected readonly _localCacheService: LocalCacheService;
25
+ protected readonly _compressMutationService: CompressMutationService;
26
+ protected readonly _localeService: LocaleService;
27
+ protected readonly _revisionService: RevisionService;
28
+ protected readonly _logService: ILogService;
29
+ protected readonly _commandService: ICommandService;
30
+ protected readonly _messageService: IMessageService;
31
+ private _permissionService;
32
+ protected readonly _singleActiveUnitService?: ISingleActiveUnitService | undefined;
33
+ protected _state$: BehaviorSubject<Nullable<CollaborationState>>;
34
+ readonly state$: Observable<Nullable<CollaborationState>>;
35
+ protected _state: CollaborationState;
36
+ get state(): CollaborationState;
37
+ protected _collaborationPaused: boolean;
38
+ protected _changesetSessionId: string;
39
+ protected _changesetReqId: number;
40
+ readonly status$: Observable<CollaborationStatus>;
41
+ constructor(unitID: string, session: CollaborationSession, _type: UniverType, _injector: Injector, _localCacheService: LocalCacheService, _compressMutationService: CompressMutationService, _localeService: LocaleService, _revisionService: RevisionService, _logService: ILogService, _commandService: ICommandService, _messageService: IMessageService, _permissionService: IPermissionService, _singleActiveUnitService?: ISingleActiveUnitService | undefined);
42
+ init(): Promise<void>;
43
+ /**
44
+ * Pause collaboration on the document. Remote changesets would be inserted to a queue and wait for resuming.
45
+ * @returns a disposable which will resume collaboration when called.
46
+ */
47
+ pauseCollaboration(): IDisposable;
48
+ private _updateState;
49
+ protected _init(): Promise<CollaborationState>;
50
+ /**
51
+ * Could not transit the state twice at the same time. So we put a lock here in case of implementation fault.
52
+ */
53
+ private _transitionLocked;
54
+ private _unlockTransition;
55
+ private _lockTransition;
56
+ protected _onLocalMutation(command: IMutationInfo): void;
57
+ private _remoteChangesetQueue;
58
+ private _onRemoteChangeset;
59
+ private _exhaustRemoteChangesetQueue;
60
+ private _applyRemoteChangeset;
61
+ private _onRemoteACK;
62
+ private _onRemoteRejected;
63
+ private _onRemoteRetry;
64
+ private _onFetchMissResult;
65
+ private _toggleOffline;
66
+ private _toggleOnline;
67
+ private _createInitialState;
68
+ protected _createHandler(): ICollaborationStateHandler;
69
+ private _createInitialStateImpl;
70
+ private _replayCachedMutations;
71
+ }
72
+ export declare class DocCollaborationEntity extends CollaborationEntity {
73
+ readonly unitID: string;
74
+ readonly type: UniverType;
75
+ private readonly _docStateChangeManagerService;
76
+ private readonly _docTransformIMECacheService;
77
+ private readonly _docTransformStateCacheService;
78
+ private readonly _docTransformSelectionsService;
79
+ private readonly _docSyncEditingCollabCursorService;
80
+ constructor(unitID: string, type: UniverType, session: CollaborationSession, injector: Injector, localCacheService: LocalCacheService, compressMutationService: CompressMutationService, localeService: LocaleService, revisionService: RevisionService, _docStateChangeManagerService: DocStateChangeManagerService, _docTransformIMECacheService: DocTransformIMECacheService, _docTransformStateCacheService: DocTransformStateCacheService, _docTransformSelectionsService: DocTransformSelectionsService, _docSyncEditingCollabCursorService: DocSyncEditingCollabCursorService, logService: ILogService, commandService: ICommandService, messageService: IMessageService, permissionService: IPermissionService, singleActiveUnitService?: ISingleActiveUnitService);
81
+ protected _createHandler(): ICollaborationStateHandler;
82
+ protected _init(): Promise<CollaborationState>;
83
+ }
84
+ export declare class SheetCollaborationEntity extends CollaborationEntity {
85
+ readonly unitID: string;
86
+ readonly type: UniverType;
87
+ private readonly _sheetTransformSelectionsService;
88
+ constructor(unitID: string, type: UniverType, session: CollaborationSession, injector: Injector, localCacheService: LocalCacheService, compressMutationService: CompressMutationService, localeService: LocaleService, revisionService: RevisionService, _sheetTransformSelectionsService: SheetTransformSelectionsService, logService: ILogService, commandService: ICommandService, messageService: IMessageService, permissionService: IPermissionService, singleActiveUnitService?: ISingleActiveUnitService);
89
+ protected _createHandler(): ICollaborationStateHandler;
90
+ protected _init(): Promise<CollaborationState>;
91
+ }