@univerjs-pro/collaboration-client 0.5.0-nightly.202411121606 → 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 _0x3b3060=_0x22a3;(function(_0x45aef9,_0x19b8c2){const _0x283766=_0x22a3,_0x131d8e=_0x45aef9();while(!![]){try{const _0x19c3d7=parseInt(_0x283766(0x8a))/0x1*(-parseInt(_0x283766(0x89))/0x2)+parseInt(_0x283766(0x76))/0x3*(parseInt(_0x283766(0x8b))/0x4)+-parseInt(_0x283766(0x73))/0x5+parseInt(_0x283766(0x87))/0x6+-parseInt(_0x283766(0x7b))/0x7*(parseInt(_0x283766(0x85))/0x8)+-parseInt(_0x283766(0x7c))/0x9+-parseInt(_0x283766(0x75))/0xa*(-parseInt(_0x283766(0x86))/0xb);if(_0x19c3d7===_0x19b8c2)break;else _0x131d8e['push'](_0x131d8e['shift']());}catch(_0x301363){_0x131d8e['push'](_0x131d8e['shift']());}}}(_0x4a55,0xdbeae));function _0x22a3(_0x270a49,_0x14be15){const _0x4a5554=_0x4a55();return _0x22a3=function(_0x22a35e,_0x2a18fb){_0x22a35e=_0x22a35e-0x73;let _0x5255c9=_0x4a5554[_0x22a35e];return _0x5255c9;},_0x22a3(_0x270a49,_0x14be15);}function _0x4a55(){const _0xfc7f54=['Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.','Synced','You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.','Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','Syncing\x20server\x20data...','Edit\x20conflicts','8kjypiv','311267MvXyjF','4155366hasaND','Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.','426OuPONE','7612LqsRmZ','4iDleuW','5940725pHyajh','Collaboration\x20Conflict','1450PnxuKR','2214033UOhCje','Local\x20file','Syncing...','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.','Authentication\x20Error','8895859bzUvIy','4972653WBbswO','Connection\x20failed,\x20please\x20check\x20your\x20network.','The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.'];_0x4a55=function(){return _0xfc7f54;};return _0x4a55();}const e={'collab-client':{'tooltip':{'reconnect':'Click\x20to\x20Reconnect'}},'collabStatus':{'fetchMiss':_0x3b3060(0x83),'conflict':_0x3b3060(0x84),'notCollab':_0x3b3060(0x77),'synced':_0x3b3060(0x80),'syncing':_0x3b3060(0x78),'offline':'Offline,\x20edits\x20would\x20be\x20save\x20on\x20local'},'session':{'connection-failed':_0x3b3060(0x7d),'will-retry':'Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','room-full':_0x3b3060(0x82),'collaboration-timeout':_0x3b3060(0x7e)},'conflict':{'title':_0x3b3060(0x74),'content':_0x3b3060(0x79)},'permission':{'title':_0x3b3060(0x7a),'content':_0x3b3060(0x88)},'collaboration':{'single-unit':{'warning':_0x3b3060(0x81)},'closeRoom':_0x3b3060(0x7f)},'auth':{'needGotoLoginAlert':'Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.'}};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
- const _0xe05574=_0x42be;(function(_0x55f159,_0x563366){const _0x3a407c=_0x42be,_0x3e9ac0=_0x55f159();while(!![]){try{const _0x2f543e=-parseInt(_0x3a407c(0x187))/0x1+parseInt(_0x3a407c(0x18e))/0x2*(parseInt(_0x3a407c(0x18f))/0x3)+-parseInt(_0x3a407c(0x18d))/0x4*(-parseInt(_0x3a407c(0x17e))/0x5)+parseInt(_0x3a407c(0x188))/0x6*(-parseInt(_0x3a407c(0x190))/0x7)+parseInt(_0x3a407c(0x185))/0x8*(parseInt(_0x3a407c(0x189))/0x9)+parseInt(_0x3a407c(0x184))/0xa+parseInt(_0x3a407c(0x17f))/0xb*(-parseInt(_0x3a407c(0x17c))/0xc);if(_0x2f543e===_0x563366)break;else _0x3e9ac0['push'](_0x3e9ac0['shift']());}catch(_0x71c73e){_0x3e9ac0['push'](_0x3e9ac0['shift']());}}}(_0x5dc8,0xeb218));const o={'collab-client':{'tooltip':{'reconnect':_0xe05574(0x182)}},'collabStatus':{'fetchMiss':_0xe05574(0x180),'conflict':'تداخل\x20ویرایش','notCollab':_0xe05574(0x183),'synced':_0xe05574(0x193),'syncing':_0xe05574(0x194),'offline':_0xe05574(0x18b)},'session':{'connection-failed':_0xe05574(0x191),'will-retry':'اتصال\x20ناموفق\x20بود،\x20ما\x20بعداً\x20دوباره\x20تلاش\x20می\x20کنیم.','room-full':_0xe05574(0x17b),'collaboration-timeout':_0xe05574(0x17d)},'conflict':{'title':_0xe05574(0x181),'content':_0xe05574(0x18c)},'permission':{'title':_0xe05574(0x192),'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رفت.'},'collaboration':{'single-unit':{'warning':'شما\x20همان\x20پرونده\x20را\x20در\x20یک\x20تب\x20دیگر\x20باز\x20کرده\x20اید.\x20در\x20صورت\x20عدم\x20وجود\x20داده،\x20نمی\x20توانید\x20در\x20این\x20تب\x20ویرایش\x20کنید.'},'closeRoom':_0xe05574(0x18a)},'auth':{'needGotoLoginAlert':_0xe05574(0x186)}};export{o as default};function _0x42be(_0x3f18c8,_0x116263){const _0x5dc86d=_0x5dc8();return _0x42be=function(_0x42be60,_0x647b8b){_0x42be60=_0x42be60-0x17b;let _0x2adcce=_0x5dc86d[_0x42be60];return _0x2adcce;},_0x42be(_0x3f18c8,_0x116263);}function _0x5dc8(){const _0x18d399=['آفلاین،\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رفت.','4Guwkrk','2HpYoqa','1255689KcsHEb','497npsSgu','اتصال\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کرد.','2088IVKWAS','سرور\x20به\x20درخواست\x20همکاری\x20شما\x20پاسخ\x20نمی\x20دهد.\x20ویرایش\x20های\x20شما\x20در\x20محلی\x20ذخیره\x20می\x20شوند.','7630420czHzJD','120747LKvbuS','در\x20حال\x20همگام\x20سازی\x20داده\x20های\x20سرور...','تداخل\x20همکاری','برای\x20اتصال\x20مجدد\x20کلیک\x20کنید','پرونده\x20محلی','17353460XUDwmU','56bShAFp','ورود\x20شما\x20منقضی\x20شده\x20است،\x20برای\x20ورود\x20مجدد\x20کلیک\x20کنید،\x20برای\x20ذخیره\x20ویرایش\x20های\x20محلی\x20خود\x20کلیک\x20کنید.','800366XtsFSF','91656lhiqOA','1386081xWSPCC','امتیازات\x20ویرایش\x20به\x20دلیل\x20بسته\x20شدن\x20اتاق\x20همکاری\x20لغو\x20شد.'];_0x5dc8=function(){return _0x18d399;};return _0x5dc8();}
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 _0x47c4d7=_0x2b9e;function _0x2b9e(_0x5bd85c,_0x1dd457){const _0x168916=_0x1689();return _0x2b9e=function(_0x2b9e3d,_0x5690bb){_0x2b9e3d=_0x2b9e3d-0x118;let _0x2cf7f2=_0x168916[_0x2b9e3d];return _0x2cf7f2;},_0x2b9e(_0x5bd85c,_0x1dd457);}function _0x1689(){const _0x5350f5=['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.','Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','1JIwHIu','10XsAgxK','11568921bpUsuY','754568mzqfku','183276qcBxVy','9LLYUEk','Offline,\x20edits\x20would\x20be\x20save\x20on\x20local','2902560oIKkDQ','Synced','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.','7535088PAtBid','Edit\x20conflicts','The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.','3727203WBDoIT','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...','Click\x20to\x20Reconnect','6170344shBiSH','Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','Local\x20file','Syncing\x20server\x20data...','Collaboration\x20Conflict'];_0x1689=function(){return _0x5350f5;};return _0x1689();}(function(_0x3379d5,_0x3db85d){const _0x2b85ab=_0x2b9e,_0x5e3d6f=_0x3379d5();while(!![]){try{const _0x204746=parseInt(_0x2b85ab(0x123))/0x1*(parseInt(_0x2b85ab(0x127))/0x2)+parseInt(_0x2b85ab(0x130))/0x3+-parseInt(_0x2b85ab(0x126))/0x4*(parseInt(_0x2b85ab(0x124))/0x5)+-parseInt(_0x2b85ab(0x12d))/0x6+parseInt(_0x2b85ab(0x125))/0x7+parseInt(_0x2b85ab(0x11b))/0x8*(-parseInt(_0x2b85ab(0x128))/0x9)+parseInt(_0x2b85ab(0x12a))/0xa;if(_0x204746===_0x3db85d)break;else _0x5e3d6f['push'](_0x5e3d6f['shift']());}catch(_0x35b26d){_0x5e3d6f['push'](_0x5e3d6f['shift']());}}}(_0x1689,0xd507d));const e={'collab-client':{'tooltip':{'reconnect':_0x47c4d7(0x11a)}},'collabStatus':{'fetchMiss':_0x47c4d7(0x11e),'conflict':_0x47c4d7(0x12e),'notCollab':_0x47c4d7(0x11d),'synced':_0x47c4d7(0x12b),'syncing':_0x47c4d7(0x119),'offline':_0x47c4d7(0x129)},'session':{'connection-failed':'Connection\x20failed,\x20please\x20check\x20your\x20network.','will-retry':_0x47c4d7(0x122),'room-full':_0x47c4d7(0x11c),'collaboration-timeout':_0x47c4d7(0x12f)},'conflict':{'title':_0x47c4d7(0x11f),'content':_0x47c4d7(0x121)},'permission':{'title':_0x47c4d7(0x120),'content':_0x47c4d7(0x118)},'collaboration':{'single-unit':{'warning':'You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.'},'closeRoom':'Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.'},'auth':{'needGotoLoginAlert':_0x47c4d7(0x12c)}},o=e;export{o as default};
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 _0x4a08d3=_0x48f5;(function(_0x37b26a,_0x1eefaa){const _0x34a8b9=_0x48f5,_0x577d2d=_0x37b26a();while(!![]){try{const _0x2fd690=-parseInt(_0x34a8b9(0xe2))/0x1*(parseInt(_0x34a8b9(0xee))/0x2)+-parseInt(_0x34a8b9(0xe6))/0x3*(parseInt(_0x34a8b9(0xe0))/0x4)+-parseInt(_0x34a8b9(0xec))/0x5*(-parseInt(_0x34a8b9(0xde))/0x6)+-parseInt(_0x34a8b9(0xe1))/0x7*(-parseInt(_0x34a8b9(0xeb))/0x8)+-parseInt(_0x34a8b9(0xe5))/0x9*(parseInt(_0x34a8b9(0xf1))/0xa)+parseInt(_0x34a8b9(0xdb))/0xb*(-parseInt(_0x34a8b9(0xea))/0xc)+parseInt(_0x34a8b9(0xe7))/0xd;if(_0x2fd690===_0x1eefaa)break;else _0x577d2d['push'](_0x577d2d['shift']());}catch(_0x279f3a){_0x577d2d['push'](_0x577d2d['shift']());}}}(_0x1985,0xd5597));function _0x48f5(_0x40e56f,_0x5e883e){const _0x19853f=_0x1985();return _0x48f5=function(_0x48f5a3,_0x50d1fb){_0x48f5a3=_0x48f5a3-0xd8;let _0x4db23e=_0x19853f[_0x48f5a3];return _0x4db23e;},_0x48f5(_0x40e56f,_0x5e883e);}const e={'collab-client':{'tooltip':{'reconnect':_0x4a08d3(0xef)}},'collabStatus':{'fetchMiss':_0x4a08d3(0xe3),'conflict':_0x4a08d3(0xf2),'notCollab':_0x4a08d3(0xf0),'synced':_0x4a08d3(0xdc),'syncing':_0x4a08d3(0xdd),'offline':'Offline,\x20edits\x20would\x20be\x20save\x20on\x20local'},'session':{'connection-failed':_0x4a08d3(0xed),'will-retry':_0x4a08d3(0xe9),'room-full':_0x4a08d3(0xd8),'collaboration-timeout':'The\x20server\x20is\x20not\x20responding\x20to\x20your\x20collaboration\x20request.\x20Your\x20edits\x20would\x20be\x20saved\x20locally.'},'conflict':{'title':_0x4a08d3(0xe4),'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':_0x4a08d3(0xd9),'content':_0x4a08d3(0xdf)},'collaboration':{'single-unit':{'warning':'You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.'},'closeRoom':_0x4a08d3(0xe8)},'auth':{'needGotoLoginAlert':_0x4a08d3(0xda)}},o=e;export{o as default};function _0x1985(){const _0x3b03b2=['Connection\x20failed,\x20please\x20check\x20your\x20network.','152PjbYQg','Click\x20to\x20Reconnect','Local\x20file','80eBKVTF','Edit\x20conflicts','Collaboration\x20room\x20is\x20full.\x20You\x20edits\x20would\x20be\x20saved\x20locally.','Authentication\x20Error','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.','14808827GixVAP','Synced','Syncing...','3070758rdTxxV','Your\x20actions\x20are\x20conflicting\x20with\x20the\x20server\x27s\x20permissions.\x20Please\x20save\x20your\x20local\x20edits\x20elsewhere\x20as\x20they\x20will\x20be\x20discarded\x20after\x20refreshing\x20the\x20page.','20chONxt','1183WIWgjK','1719GbEPiu','Syncing\x20server\x20data...','Collaboration\x20Conflict','805797mTpLnB','65130PgEveb','27193972MBogdJ','Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.','Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','12nHbnxo','2848KWSUYZ','10eEMyJa'];_0x1985=function(){return _0x3b03b2;};return _0x1985();}
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
- function _0x2f0b(_0x5ee001,_0x52227d){const _0x24e73a=_0x24e7();return _0x2f0b=function(_0x2f0b8c,_0x5bbd50){_0x2f0b8c=_0x2f0b8c-0x120;let _0xff4a28=_0x24e73a[_0x2f0b8c];return _0xff4a28;},_0x2f0b(_0x5ee001,_0x52227d);}const _0x17bd8b=_0x2f0b;function _0x24e7(){const _0x48eef9=['协同冲突','303896MPfkBc','16482DMBWYq','已离线,编辑将在本地缓存','25VfsTPR','本地文件','678201FgZXtH','13707wAALgv','515690JAEBhI','你的操作和服务器的权限存在冲突。请在别处保存你的本地编辑,本地编辑将在刷新页面后丢弃。','你的本地文档和服务器的文档存在冲突。请在别处保存你的本地编辑,本地编辑将在刷新页面后丢弃。','99VbTaDx','正在拉取服务端数据...','权限错误','协同房间已满,你的编辑将在本地缓存','1981830XWyets','已同步','连接失败,将在一会儿之后重试连接','6632gukTiN','保存中...','编辑冲突','服务器未响应,你的编辑将在本地缓存','点击重新连接','187285qVkUcg','连接失败,请检查你的网络','由于协同房间被关闭,编辑权限被收回。','1869QMvfJX'];_0x24e7=function(){return _0x48eef9;};return _0x24e7();}(function(_0x1920e0,_0x417a0e){const _0x3809e2=_0x2f0b,_0x8bba92=_0x1920e0();while(!![]){try{const _0x48412=-parseInt(_0x3809e2(0x13a))/0x1+parseInt(_0x3809e2(0x132))/0x2+parseInt(_0x3809e2(0x129))/0x3+-parseInt(_0x3809e2(0x124))/0x4*(parseInt(_0x3809e2(0x127))/0x5)+parseInt(_0x3809e2(0x125))/0x6*(-parseInt(_0x3809e2(0x122))/0x7)+-parseInt(_0x3809e2(0x135))/0x8*(-parseInt(_0x3809e2(0x12a))/0x9)+-parseInt(_0x3809e2(0x12b))/0xa*(parseInt(_0x3809e2(0x12e))/0xb);if(_0x48412===_0x417a0e)break;else _0x8bba92['push'](_0x8bba92['shift']());}catch(_0x4ac52f){_0x8bba92['push'](_0x8bba92['shift']());}}}(_0x24e7,0xae848));const o={'collab-client':{'tooltip':{'reconnect':_0x17bd8b(0x139)}},'collabStatus':{'fetchMiss':_0x17bd8b(0x12f),'conflict':_0x17bd8b(0x137),'notCollab':_0x17bd8b(0x128),'synced':_0x17bd8b(0x133),'syncing':_0x17bd8b(0x136),'offline':_0x17bd8b(0x126)},'session':{'connection-failed':_0x17bd8b(0x120),'will-retry':_0x17bd8b(0x134),'room-full':_0x17bd8b(0x131),'collaboration-timeout':_0x17bd8b(0x138)},'conflict':{'title':_0x17bd8b(0x123),'content':_0x17bd8b(0x12d)},'permission':{'title':_0x17bd8b(0x130),'content':_0x17bd8b(0x12c)},'collaboration':{'single-unit':{'warning':'你在另一个标签页打开了同一个文件。为了避免数据丢失,这个标签页的编辑行为将会被限制。'},'closeRoom':_0x17bd8b(0x121)},'auth':{'needGotoLoginAlert':'你的登录已过期,点击确认重新登陆,点击取消去保存你的本地编辑。'}};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 _0x1ab346=_0x1bbd;(function(_0x534b19,_0x3a9b98){const _0x33589c=_0x1bbd,_0x17ffe7=_0x534b19();while(!![]){try{const _0x52acd9=-parseInt(_0x33589c(0xc4))/0x1+parseInt(_0x33589c(0xc5))/0x2+-parseInt(_0x33589c(0xd1))/0x3*(-parseInt(_0x33589c(0xcc))/0x4)+parseInt(_0x33589c(0xc7))/0x5+parseInt(_0x33589c(0xbe))/0x6*(parseInt(_0x33589c(0xcb))/0x7)+parseInt(_0x33589c(0xc6))/0x8*(-parseInt(_0x33589c(0xc9))/0x9)+parseInt(_0x33589c(0xc3))/0xa*(-parseInt(_0x33589c(0xc2))/0xb);if(_0x52acd9===_0x3a9b98)break;else _0x17ffe7['push'](_0x17ffe7['shift']());}catch(_0x4599ec){_0x17ffe7['push'](_0x17ffe7['shift']());}}}(_0x57fb,0xa8ab9));const e={'collab-client':{'tooltip':{'reconnect':_0x1ab346(0xc8)}},'collabStatus':{'fetchMiss':'Syncing\x20server\x20data...','conflict':_0x1ab346(0xd0),'notCollab':'Local\x20file','synced':_0x1ab346(0xd2),'syncing':'Syncing...','offline':_0x1ab346(0xc0)},'session':{'connection-failed':_0x1ab346(0xc1),'will-retry':'Connection\x20failed,\x20we\x20retry\x20in\x20a\x20while.','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':_0x1ab346(0xbf),'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':_0x1ab346(0xce),'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':_0x1ab346(0xca)},'closeRoom':_0x1ab346(0xcf)},'auth':{'needGotoLoginAlert':_0x1ab346(0xcd)}},o=e;function _0x1bbd(_0x58bd63,_0x476df1){const _0x57fb20=_0x57fb();return _0x1bbd=function(_0x1bbd1c,_0x5760be){_0x1bbd1c=_0x1bbd1c-0xbe;let _0x106ac8=_0x57fb20[_0x1bbd1c];return _0x106ac8;},_0x1bbd(_0x58bd63,_0x476df1);}export{o as default};function _0x57fb(){const _0x3ea773=['Authentication\x20Error','Editing\x20privileges\x20were\x20revoked\x20because\x20the\x20collaborative\x20room\x20was\x20closed.','Edit\x20conflicts','3dXIsXS','Synced','323562YzEqMc','Collaboration\x20Conflict','Offline,\x20edits\x20would\x20be\x20save\x20on\x20local','Connection\x20failed,\x20please\x20check\x20your\x20network.','5315926NNxYxs','30wlxySa','230483wpXUUx','2383064SWduYG','48EJphSp','1171020HPwNkX','Click\x20to\x20Reconnect','1996164qLDbSP','You\x20opened\x20the\x20same\x20file\x20in\x20another\x20tab.\x20In\x20case\x20of\x20data\x20missing,\x20you\x20cannot\x20edit\x20on\x20this\x20tab.','133JgJdhB','5006324AKovRw','Your\x20login\x20has\x20expired,\x20click\x20OK\x20to\x20re-login,\x20click\x20Cancel\x20to\x20save\x20your\x20local\x20edits.'];_0x57fb=function(){return _0x3ea773;};return _0x57fb();}
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
+ }