From 9256b8ffd99d6d3778d9906b16b31224beda1ecf Mon Sep 17 00:00:00 2001 From: GitHub Actions CI Date: Tue, 19 Dec 2023 07:53:32 +0000 Subject: [PATCH] [dist][CI SKIP] GitHub Actions CI build: #, based on commit 843482bd07fc783a3bba41e2a40e1d0e603c5f9d. --- frontend/webpack-stats.pro.json | 782 ++++----- locale/ar/LC_MESSAGES/django.mo | Bin 0 -> 165057 bytes locale/ar/LC_MESSAGES/djangojs.mo | Bin 0 -> 38434 bytes locale/bg/LC_MESSAGES/django.mo | Bin 0 -> 5384 bytes locale/bg/LC_MESSAGES/djangojs.mo | Bin 0 -> 912 bytes locale/bg_BG/LC_MESSAGES/djangojs.mo | Bin 0 -> 438 bytes locale/ca/LC_MESSAGES/django.mo | Bin 0 -> 28004 bytes locale/ca/LC_MESSAGES/djangojs.mo | Bin 0 -> 11936 bytes locale/cs/LC_MESSAGES/django.mo | Bin 0 -> 74228 bytes locale/cs/LC_MESSAGES/djangojs.mo | Bin 0 -> 76021 bytes locale/cs_CZ/LC_MESSAGES/djangojs.mo | Bin 0 -> 7970 bytes locale/da_DK/LC_MESSAGES/djangojs.mo | Bin 0 -> 2248 bytes locale/de/LC_MESSAGES/django.mo | Bin 0 -> 84161 bytes locale/de/LC_MESSAGES/djangojs.mo | Bin 0 -> 91021 bytes locale/el/LC_MESSAGES/django.mo | Bin 0 -> 38942 bytes locale/el/LC_MESSAGES/djangojs.mo | Bin 0 -> 18151 bytes locale/el_GR/LC_MESSAGES/djangojs.mo | Bin 0 -> 4558 bytes locale/en/LC_MESSAGES/django.mo | Bin 0 -> 337 bytes locale/en/LC_MESSAGES/djangojs.mo | Bin 0 -> 337 bytes locale/en_US/LC_MESSAGES/djangojs.mo | Bin 0 -> 441 bytes locale/es/LC_MESSAGES/django.mo | Bin 0 -> 127296 bytes locale/es/LC_MESSAGES/djangojs.mo | Bin 0 -> 79380 bytes locale/es_AR/LC_MESSAGES/django.mo | Bin 0 -> 127314 bytes locale/es_AR/LC_MESSAGES/djangojs.mo | Bin 0 -> 79362 bytes locale/es_MX/LC_MESSAGES/django.mo | Bin 0 -> 127358 bytes locale/es_MX/LC_MESSAGES/djangojs.mo | Bin 0 -> 79395 bytes locale/fi/LC_MESSAGES/django.mo | Bin 0 -> 67960 bytes locale/fi/LC_MESSAGES/djangojs.mo | Bin 0 -> 36464 bytes locale/fr/LC_MESSAGES/django.mo | Bin 0 -> 182037 bytes locale/fr/LC_MESSAGES/djangojs.mo | Bin 0 -> 95472 bytes locale/he/LC_MESSAGES/django.mo | Bin 0 -> 10931 bytes locale/he/LC_MESSAGES/djangojs.mo | Bin 0 -> 6970 bytes locale/hr/LC_MESSAGES/djangojs.mo | Bin 0 -> 492 bytes locale/hr_HR/LC_MESSAGES/djangojs.mo | Bin 0 -> 508 bytes locale/hu/LC_MESSAGES/django.mo | Bin 0 -> 72540 bytes locale/hu/LC_MESSAGES/djangojs.mo | Bin 0 -> 44914 bytes locale/is/LC_MESSAGES/django.mo | Bin 0 -> 45436 bytes locale/is/LC_MESSAGES/djangojs.mo | Bin 0 -> 20593 bytes locale/it/LC_MESSAGES/django.mo | Bin 0 -> 70597 bytes locale/it/LC_MESSAGES/djangojs.mo | Bin 0 -> 45167 bytes locale/ja/LC_MESSAGES/django.mo | Bin 0 -> 49613 bytes locale/ja/LC_MESSAGES/djangojs.mo | Bin 0 -> 29540 bytes locale/ko/LC_MESSAGES/django.mo | Bin 0 -> 171888 bytes locale/ko/LC_MESSAGES/djangojs.mo | Bin 0 -> 93666 bytes locale/lt/LC_MESSAGES/django.mo | Bin 0 -> 26539 bytes locale/lt/LC_MESSAGES/djangojs.mo | Bin 0 -> 11150 bytes locale/lv/LC_MESSAGES/django.mo | Bin 0 -> 39879 bytes locale/lv/LC_MESSAGES/djangojs.mo | Bin 0 -> 23218 bytes locale/lv_LV/LC_MESSAGES/djangojs.mo | Bin 0 -> 4698 bytes locale/mk/LC_MESSAGES/django.mo | Bin 0 -> 447 bytes locale/mk/LC_MESSAGES/djangojs.mo | Bin 0 -> 447 bytes locale/nb/LC_MESSAGES/djangojs.mo | Bin 0 -> 429 bytes locale/nb_NO/LC_MESSAGES/djangojs.mo | Bin 0 -> 21972 bytes locale/nl/LC_MESSAGES/django.mo | Bin 0 -> 412 bytes locale/nl/LC_MESSAGES/djangojs.mo | Bin 0 -> 412 bytes locale/nl_NL/LC_MESSAGES/djangojs.mo | Bin 0 -> 31234 bytes locale/pl/LC_MESSAGES/django.mo | Bin 0 -> 70550 bytes locale/pl/LC_MESSAGES/djangojs.mo | Bin 0 -> 35161 bytes locale/pt_BR/LC_MESSAGES/django.mo | Bin 0 -> 61665 bytes locale/pt_BR/LC_MESSAGES/djangojs.mo | Bin 0 -> 30613 bytes locale/pt_PT/LC_MESSAGES/djangojs.mo | Bin 0 -> 1474 bytes locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 227460 bytes locale/ru/LC_MESSAGES/djangojs.mo | Bin 0 -> 119806 bytes locale/sk/LC_MESSAGES/django.mo | Bin 0 -> 15082 bytes locale/sk_SK/LC_MESSAGES/djangojs.mo | Bin 0 -> 3457 bytes locale/sl/LC_MESSAGES/django.mo | Bin 0 -> 101645 bytes locale/sl_SI/LC_MESSAGES/djangojs.mo | Bin 0 -> 17985 bytes locale/sv/LC_MESSAGES/django.mo | Bin 0 -> 75745 bytes locale/sv/LC_MESSAGES/djangojs.mo | Bin 0 -> 73333 bytes locale/th/LC_MESSAGES/django.mo | Bin 0 -> 155065 bytes locale/th_TH/LC_MESSAGES/djangojs.mo | Bin 0 -> 19321 bytes locale/tr/LC_MESSAGES/django.mo | Bin 0 -> 104724 bytes locale/tr/LC_MESSAGES/djangojs.mo | Bin 0 -> 33916 bytes locale/uk/LC_MESSAGES/django.mo | Bin 0 -> 48483 bytes locale/uk/LC_MESSAGES/djangojs.mo | Bin 0 -> 19628 bytes locale/vi/LC_MESSAGES/django.mo | Bin 0 -> 40574 bytes locale/vi/LC_MESSAGES/djangojs.mo | Bin 0 -> 16814 bytes locale/zh_CN/LC_MESSAGES/django.mo | Bin 0 -> 158261 bytes locale/zh_CN/LC_MESSAGES/djangojs.mo | Bin 0 -> 88538 bytes locale/zh_TW/LC_MESSAGES/django.mo | Bin 0 -> 56129 bytes locale/zh_TW/LC_MESSAGES/djangojs.mo | Bin 0 -> 28978 bytes media/assets/css/bootstrap.min.css | 6 + .../frontend/static/css/TCAccept.05d88392.css | 2 + .../static/css/TCAccept.05d88392.css.map | 1 + .../frontend/static/css/TCView.05d88392.css | 2 + .../static/css/TCView.05d88392.css.map | 1 + .../frontend/static/css/app.06d6765d.css | 2 + .../frontend/static/css/app.06d6765d.css.map | 1 + .../frontend/static/css/commons.44d6cf61.css | 15 + .../static/css/commons.44d6cf61.css.map | 1 + .../frontend/static/css/draft.99bd13be.css | 2 + .../static/css/draft.99bd13be.css.map | 1 + .../static/css/fileHistory.067ab156.css | 2 + .../static/css/fileHistory.067ab156.css.map | 1 + .../static/css/fileHistoryOld.34922be6.css | 2 + .../css/fileHistoryOld.34922be6.css.map | 1 + .../css/historyTrashFileView.bcf014b6.css | 2 + .../css/historyTrashFileView.bcf014b6.css.map | 1 + .../static/css/markdownEditor.d88bbc1a.css | 2 + .../css/markdownEditor.d88bbc1a.css.map | 1 + .../frontend/static/css/orgAdmin.bb6a05c5.css | 2 + .../static/css/orgAdmin.bb6a05c5.css.map | 1 + .../static/css/repoFolderTrash.d4170c41.css | 2 + .../css/repoFolderTrash.d4170c41.css.map | 1 + .../static/css/repoHistory.f0ad8622.css | 2 + .../static/css/repoHistory.f0ad8622.css.map | 1 + .../static/css/repoSnapshot.c6bbee77.css | 2 + .../static/css/repoSnapshot.c6bbee77.css.map | 1 + .../static/css/sdocFileHistory.f936c666.css | 2 + .../css/sdocFileHistory.f936c666.css.map | 1 + .../frontend/static/css/settings.391717d2.css | 2 + .../static/css/settings.391717d2.css.map | 1 + .../static/css/sharedDirView.945789e9.css | 2 + .../static/css/sharedDirView.945789e9.css.map | 1 + .../sharedFileViewSpreadsheet.ff1ddac7.css | 2 + ...sharedFileViewSpreadsheet.ff1ddac7.css.map | 1 + .../frontend/static/css/sysAdmin.feb7b73d.css | 2 + .../static/css/sysAdmin.feb7b73d.css.map | 1 + .../static/css/uploadLink.01103a58.css | 2 + .../static/css/uploadLink.01103a58.css.map | 1 + .../css/viewFileSpreadsheet.ff1ddac7.css | 2 + .../css/viewFileSpreadsheet.ff1ddac7.css.map | 1 + .../frontend/static/css/wiki.b992029b.css | 2 + .../frontend/static/css/wiki.b992029b.css.map | 1 + .../frontend/static/js/305.d8dbbbbc.chunk.js | 2 + .../static/js/305.d8dbbbbc.chunk.js.map | 1 + .../frontend/static/js/311.e7e04ffb.chunk.js | 2 + .../static/js/311.e7e04ffb.chunk.js.map | 1 + .../frontend/static/js/379.e48ee7a7.chunk.js | 2 + .../static/js/379.e48ee7a7.chunk.js.map | 1 + .../frontend/static/js/482.40023cf1.chunk.js | 2 + .../static/js/482.40023cf1.chunk.js.map | 1 + .../frontend/static/js/54.f8d765ee.chunk.js | 2 + .../static/js/54.f8d765ee.chunk.js.map | 1 + .../frontend/static/js/545.2cc3d80f.chunk.js | 2 + .../static/js/545.2cc3d80f.chunk.js.map | 1 + .../frontend/static/js/921.ba8481b9.chunk.js | 2 + .../static/js/921.ba8481b9.chunk.js.map | 1 + .../frontend/static/js/975.7f1d8705.chunk.js | 2 + .../static/js/975.7f1d8705.chunk.js.map | 1 + .../frontend/static/js/997.4e7b85c4.chunk.js | 2 + .../static/js/997.4e7b85c4.chunk.js.map | 1 + .../frontend/static/js/TCAccept.c1a15517.js | 2 + .../static/js/TCAccept.c1a15517.js.map | 1 + .../frontend/static/js/TCView.d87affdd.js | 2 + .../frontend/static/js/TCView.d87affdd.js.map | 1 + .../assets/frontend/static/js/app.54217b8e.js | 3 + .../static/js/app.54217b8e.js.LICENSE.txt | 1 + .../frontend/static/js/app.54217b8e.js.map | 1 + .../frontend/static/js/commons.34f4be2c.js | 3 + .../static/js/commons.34f4be2c.js.LICENSE.txt | 257 +++ .../static/js/commons.34f4be2c.js.map | 1 + .../frontend/static/js/draft.5f324749.js | 2 + .../frontend/static/js/draft.5f324749.js.map | 1 + .../static/js/fileHistory.0e76e4d0.js | 2 + .../static/js/fileHistory.0e76e4d0.js.map | 1 + .../static/js/fileHistoryOld.3f18f9ad.js | 2 + .../static/js/fileHistoryOld.3f18f9ad.js.map | 1 + .../frontend/static/js/fileView.f3d13498.js | 2 + .../static/js/fileView.f3d13498.js.map | 1 + .../js/historyTrashFileView.3099654d.js | 2 + .../js/historyTrashFileView.3099654d.js.map | 1 + .../static/js/markdownEditor.0b381ae2.js | 3 + .../js/markdownEditor.0b381ae2.js.LICENSE.txt | 15 + .../static/js/markdownEditor.0b381ae2.js.map | 1 + .../frontend/static/js/orgAdmin.6f455ad9.js | 3 + .../js/orgAdmin.6f455ad9.js.LICENSE.txt | 6 + .../static/js/orgAdmin.6f455ad9.js.map | 1 + .../static/js/repoFolderTrash.28b24f80.js | 2 + .../static/js/repoFolderTrash.28b24f80.js.map | 1 + .../static/js/repoHistory.576546cc.js | 2 + .../static/js/repoHistory.576546cc.js.map | 1 + .../static/js/repoSnapshot.8c570ae6.js | 2 + .../static/js/repoSnapshot.8c570ae6.js.map | 1 + .../frontend/static/js/runtime.a3d207a7.js | 2 + .../static/js/runtime.a3d207a7.js.map | 1 + .../static/js/sdocFileHistory.01f01c1a.js | 2 + .../static/js/sdocFileHistory.01f01c1a.js.map | 1 + .../js/sdocPublishedRevision.f8f9e895.js | 2 + .../js/sdocPublishedRevision.f8f9e895.js.map | 1 + .../frontend/static/js/search.164ffc8c.js | 2 + .../frontend/static/js/search.164ffc8c.js.map | 1 + .../frontend/static/js/settings.4f5512b2.js | 2 + .../static/js/settings.4f5512b2.js.map | 1 + .../static/js/sharedDirView.ab66951d.js | 2 + .../static/js/sharedDirView.ab66951d.js.map | 1 + .../static/js/sharedFileViewAudio.cedd033e.js | 2 + .../js/sharedFileViewAudio.cedd033e.js.map | 1 + .../js/sharedFileViewDocument.180f58d8.js | 2 + .../js/sharedFileViewDocument.180f58d8.js.map | 1 + .../static/js/sharedFileViewImage.9d0dda04.js | 2 + .../js/sharedFileViewImage.9d0dda04.js.map | 1 + .../js/sharedFileViewMarkdown.03a6a4cd.js | 2 + .../js/sharedFileViewMarkdown.03a6a4cd.js.map | 1 + .../static/js/sharedFileViewPDF.a00415f0.js | 2 + .../js/sharedFileViewPDF.a00415f0.js.map | 1 + .../static/js/sharedFileViewSVG.5fd43385.js | 2 + .../js/sharedFileViewSVG.5fd43385.js.map | 1 + .../static/js/sharedFileViewSdoc.21961792.js | 2 + .../js/sharedFileViewSdoc.21961792.js.map | 1 + .../js/sharedFileViewSpreadsheet.0ffb4373.js | 2 + .../sharedFileViewSpreadsheet.0ffb4373.js.map | 1 + .../static/js/sharedFileViewText.757e8d1a.js | 2 + .../js/sharedFileViewText.757e8d1a.js.map | 1 + .../js/sharedFileViewUnknown.a0e468e0.js | 2 + .../js/sharedFileViewUnknown.a0e468e0.js.map | 1 + .../static/js/sharedFileViewVideo.6af2fa31.js | 2 + .../js/sharedFileViewVideo.6af2fa31.js.map | 1 + .../frontend/static/js/sysAdmin.91d1d2f2.js | 3 + .../js/sysAdmin.91d1d2f2.js.LICENSE.txt | 6 + .../static/js/sysAdmin.91d1d2f2.js.map | 1 + .../frontend/static/js/uploadLink.8d2b00c1.js | 2 + .../static/js/uploadLink.8d2b00c1.js.map | 1 + .../static/js/viewFileDocument.8a503cff.js | 2 + .../js/viewFileDocument.8a503cff.js.map | 1 + .../static/js/viewFileSdoc.6adf9d14.js | 2 + .../static/js/viewFileSdoc.6adf9d14.js.map | 1 + .../static/js/viewFileSpreadsheet.77d500a4.js | 2 + .../js/viewFileSpreadsheet.77d500a4.js.map | 1 + .../static/js/viewFileText.dcddd49f.js | 2 + .../static/js/viewFileText.dcddd49f.js.map | 1 + .../frontend/static/js/wiki.9846d06a.js | 2 + .../frontend/static/js/wiki.9846d06a.js.map | 1 + media/assets/scripts/i18n/ar/djangojs.js | 654 ++++++++ media/assets/scripts/i18n/ca/djangojs.js | 355 ++++ media/assets/scripts/i18n/cs/djangojs.js | 1163 +++++++++++++ media/assets/scripts/i18n/de/djangojs.js | 1198 +++++++++++++ media/assets/scripts/i18n/el/djangojs.js | 382 +++++ media/assets/scripts/i18n/en/djangojs.js | 138 ++ media/assets/scripts/i18n/es-ar/djangojs.js | 1117 +++++++++++++ media/assets/scripts/i18n/es-mx/djangojs.js | 1118 +++++++++++++ media/assets/scripts/i18n/es/djangojs.js | 1117 +++++++++++++ media/assets/scripts/i18n/fi/djangojs.js | 683 ++++++++ media/assets/scripts/i18n/fr/djangojs.js | 1235 ++++++++++++++ media/assets/scripts/i18n/he/djangojs.js | 274 +++ media/assets/scripts/i18n/hu/djangojs.js | 794 +++++++++ media/assets/scripts/i18n/is/djangojs.js | 502 ++++++ media/assets/scripts/i18n/it/djangojs.js | 804 +++++++++ media/assets/scripts/i18n/ja/djangojs.js | 614 +++++++ media/assets/scripts/i18n/ko/djangojs.js | 1237 ++++++++++++++ media/assets/scripts/i18n/lv/djangojs.js | 553 ++++++ media/assets/scripts/i18n/nl/djangojs.js | 700 ++++++++ media/assets/scripts/i18n/pl/djangojs.js | 658 ++++++++ media/assets/scripts/i18n/pt-br/djangojs.js | 601 +++++++ media/assets/scripts/i18n/ru/djangojs.js | 1269 ++++++++++++++ media/assets/scripts/i18n/sk/djangojs.js | 92 + media/assets/scripts/i18n/sl/djangojs.js | 470 ++++++ media/assets/scripts/i18n/sv/djangojs.js | 1096 ++++++++++++ media/assets/scripts/i18n/th/djangojs.js | 383 +++++ media/assets/scripts/i18n/tr/djangojs.js | 681 ++++++++ media/assets/scripts/i18n/uk/djangojs.js | 409 +++++ media/assets/scripts/i18n/vi/djangojs.js | 423 +++++ media/assets/scripts/i18n/zh-cn/djangojs.js | 1309 +++++++++++++++ media/assets/scripts/i18n/zh-tw/djangojs.js | 620 +++++++ media/assets/scripts/lib/jquery-ui.min.js | 7 + media/assets/scripts/lib/jquery.min.js | 2 + .../assets/scripts/lib/jquery.simplemodal.js | 718 ++++++++ static/scripts/i18n/ar/djangojs.js | 786 ++++++--- static/scripts/i18n/ca/djangojs.js | 315 +++- static/scripts/i18n/cs/djangojs.js | 1228 ++++++++++++-- static/scripts/i18n/de/djangojs.js | 1352 ++++++++++++--- static/scripts/i18n/el/djangojs.js | 344 +++- static/scripts/i18n/en/djangojs.js | 104 +- static/scripts/i18n/es-ar/djangojs.js | 1273 +++++++++++--- static/scripts/i18n/es-mx/djangojs.js | 1275 +++++++++++--- static/scripts/i18n/es/djangojs.js | 1273 +++++++++++--- static/scripts/i18n/fi/djangojs.js | 844 +++++++--- static/scripts/i18n/fr/djangojs.js | 1396 +++++++++++++--- static/scripts/i18n/he/djangojs.js | 246 ++- static/scripts/i18n/hu/djangojs.js | 951 ++++++++--- static/scripts/i18n/is/djangojs.js | 602 ++++--- static/scripts/i18n/it/djangojs.js | 975 ++++++++--- static/scripts/i18n/ja/djangojs.js | 586 ++++++- static/scripts/i18n/ko/djangojs.js | 1390 +++++++++++++--- static/scripts/i18n/lv/djangojs.js | 521 +++++- static/scripts/i18n/nl/djangojs.js | 869 +++++++--- static/scripts/i18n/pl/djangojs.js | 808 ++++++--- static/scripts/i18n/pt-br/djangojs.js | 744 ++++++--- static/scripts/i18n/ru/djangojs.js | 1427 +++++++++++++--- static/scripts/i18n/sl/djangojs.js | 471 +++++- static/scripts/i18n/sv/djangojs.js | 1256 +++++++++++--- static/scripts/i18n/th/djangojs.js | 341 +++- static/scripts/i18n/tr/djangojs.js | 640 ++++++- static/scripts/i18n/uk/djangojs.js | 383 ++++- static/scripts/i18n/vi/djangojs.js | 460 +++-- static/scripts/i18n/zh-cn/djangojs.js | 1478 ++++++++++++++--- static/scripts/i18n/zh-tw/djangojs.js | 779 ++++++--- tests/github_actions_dist.sh | 0 288 files changed, 44213 insertions(+), 5575 deletions(-) create mode 100644 locale/ar/LC_MESSAGES/django.mo create mode 100644 locale/ar/LC_MESSAGES/djangojs.mo create mode 100644 locale/bg/LC_MESSAGES/django.mo create mode 100644 locale/bg/LC_MESSAGES/djangojs.mo create mode 100644 locale/bg_BG/LC_MESSAGES/djangojs.mo create mode 100644 locale/ca/LC_MESSAGES/django.mo create mode 100644 locale/ca/LC_MESSAGES/djangojs.mo create mode 100644 locale/cs/LC_MESSAGES/django.mo create mode 100644 locale/cs/LC_MESSAGES/djangojs.mo create mode 100644 locale/cs_CZ/LC_MESSAGES/djangojs.mo create mode 100644 locale/da_DK/LC_MESSAGES/djangojs.mo create mode 100644 locale/de/LC_MESSAGES/django.mo create mode 100644 locale/de/LC_MESSAGES/djangojs.mo create mode 100644 locale/el/LC_MESSAGES/django.mo create mode 100644 locale/el/LC_MESSAGES/djangojs.mo create mode 100644 locale/el_GR/LC_MESSAGES/djangojs.mo create mode 100644 locale/en/LC_MESSAGES/django.mo create mode 100644 locale/en/LC_MESSAGES/djangojs.mo create mode 100644 locale/en_US/LC_MESSAGES/djangojs.mo create mode 100644 locale/es/LC_MESSAGES/django.mo create mode 100644 locale/es/LC_MESSAGES/djangojs.mo create mode 100644 locale/es_AR/LC_MESSAGES/django.mo create mode 100644 locale/es_AR/LC_MESSAGES/djangojs.mo create mode 100644 locale/es_MX/LC_MESSAGES/django.mo create mode 100644 locale/es_MX/LC_MESSAGES/djangojs.mo create mode 100644 locale/fi/LC_MESSAGES/django.mo create mode 100644 locale/fi/LC_MESSAGES/djangojs.mo create mode 100644 locale/fr/LC_MESSAGES/django.mo create mode 100644 locale/fr/LC_MESSAGES/djangojs.mo create mode 100644 locale/he/LC_MESSAGES/django.mo create mode 100644 locale/he/LC_MESSAGES/djangojs.mo create mode 100644 locale/hr/LC_MESSAGES/djangojs.mo create mode 100644 locale/hr_HR/LC_MESSAGES/djangojs.mo create mode 100644 locale/hu/LC_MESSAGES/django.mo create mode 100644 locale/hu/LC_MESSAGES/djangojs.mo create mode 100644 locale/is/LC_MESSAGES/django.mo create mode 100644 locale/is/LC_MESSAGES/djangojs.mo create mode 100644 locale/it/LC_MESSAGES/django.mo create mode 100644 locale/it/LC_MESSAGES/djangojs.mo create mode 100644 locale/ja/LC_MESSAGES/django.mo create mode 100644 locale/ja/LC_MESSAGES/djangojs.mo create mode 100644 locale/ko/LC_MESSAGES/django.mo create mode 100644 locale/ko/LC_MESSAGES/djangojs.mo create mode 100644 locale/lt/LC_MESSAGES/django.mo create mode 100644 locale/lt/LC_MESSAGES/djangojs.mo create mode 100644 locale/lv/LC_MESSAGES/django.mo create mode 100644 locale/lv/LC_MESSAGES/djangojs.mo create mode 100644 locale/lv_LV/LC_MESSAGES/djangojs.mo create mode 100644 locale/mk/LC_MESSAGES/django.mo create mode 100644 locale/mk/LC_MESSAGES/djangojs.mo create mode 100644 locale/nb/LC_MESSAGES/djangojs.mo create mode 100644 locale/nb_NO/LC_MESSAGES/djangojs.mo create mode 100644 locale/nl/LC_MESSAGES/django.mo create mode 100644 locale/nl/LC_MESSAGES/djangojs.mo create mode 100644 locale/nl_NL/LC_MESSAGES/djangojs.mo create mode 100644 locale/pl/LC_MESSAGES/django.mo create mode 100644 locale/pl/LC_MESSAGES/djangojs.mo create mode 100644 locale/pt_BR/LC_MESSAGES/django.mo create mode 100644 locale/pt_BR/LC_MESSAGES/djangojs.mo create mode 100644 locale/pt_PT/LC_MESSAGES/djangojs.mo create mode 100644 locale/ru/LC_MESSAGES/django.mo create mode 100644 locale/ru/LC_MESSAGES/djangojs.mo create mode 100644 locale/sk/LC_MESSAGES/django.mo create mode 100644 locale/sk_SK/LC_MESSAGES/djangojs.mo create mode 100644 locale/sl/LC_MESSAGES/django.mo create mode 100644 locale/sl_SI/LC_MESSAGES/djangojs.mo create mode 100644 locale/sv/LC_MESSAGES/django.mo create mode 100644 locale/sv/LC_MESSAGES/djangojs.mo create mode 100644 locale/th/LC_MESSAGES/django.mo create mode 100644 locale/th_TH/LC_MESSAGES/djangojs.mo create mode 100644 locale/tr/LC_MESSAGES/django.mo create mode 100644 locale/tr/LC_MESSAGES/djangojs.mo create mode 100644 locale/uk/LC_MESSAGES/django.mo create mode 100644 locale/uk/LC_MESSAGES/djangojs.mo create mode 100644 locale/vi/LC_MESSAGES/django.mo create mode 100644 locale/vi/LC_MESSAGES/djangojs.mo create mode 100644 locale/zh_CN/LC_MESSAGES/django.mo create mode 100644 locale/zh_CN/LC_MESSAGES/djangojs.mo create mode 100644 locale/zh_TW/LC_MESSAGES/django.mo create mode 100644 locale/zh_TW/LC_MESSAGES/djangojs.mo create mode 100644 media/assets/css/bootstrap.min.css create mode 100644 media/assets/frontend/static/css/TCAccept.05d88392.css create mode 100644 media/assets/frontend/static/css/TCAccept.05d88392.css.map create mode 100644 media/assets/frontend/static/css/TCView.05d88392.css create mode 100644 media/assets/frontend/static/css/TCView.05d88392.css.map create mode 100644 media/assets/frontend/static/css/app.06d6765d.css create mode 100644 media/assets/frontend/static/css/app.06d6765d.css.map create mode 100644 media/assets/frontend/static/css/commons.44d6cf61.css create mode 100644 media/assets/frontend/static/css/commons.44d6cf61.css.map create mode 100644 media/assets/frontend/static/css/draft.99bd13be.css create mode 100644 media/assets/frontend/static/css/draft.99bd13be.css.map create mode 100644 media/assets/frontend/static/css/fileHistory.067ab156.css create mode 100644 media/assets/frontend/static/css/fileHistory.067ab156.css.map create mode 100644 media/assets/frontend/static/css/fileHistoryOld.34922be6.css create mode 100644 media/assets/frontend/static/css/fileHistoryOld.34922be6.css.map create mode 100644 media/assets/frontend/static/css/historyTrashFileView.bcf014b6.css create mode 100644 media/assets/frontend/static/css/historyTrashFileView.bcf014b6.css.map create mode 100644 media/assets/frontend/static/css/markdownEditor.d88bbc1a.css create mode 100644 media/assets/frontend/static/css/markdownEditor.d88bbc1a.css.map create mode 100644 media/assets/frontend/static/css/orgAdmin.bb6a05c5.css create mode 100644 media/assets/frontend/static/css/orgAdmin.bb6a05c5.css.map create mode 100644 media/assets/frontend/static/css/repoFolderTrash.d4170c41.css create mode 100644 media/assets/frontend/static/css/repoFolderTrash.d4170c41.css.map create mode 100644 media/assets/frontend/static/css/repoHistory.f0ad8622.css create mode 100644 media/assets/frontend/static/css/repoHistory.f0ad8622.css.map create mode 100644 media/assets/frontend/static/css/repoSnapshot.c6bbee77.css create mode 100644 media/assets/frontend/static/css/repoSnapshot.c6bbee77.css.map create mode 100644 media/assets/frontend/static/css/sdocFileHistory.f936c666.css create mode 100644 media/assets/frontend/static/css/sdocFileHistory.f936c666.css.map create mode 100644 media/assets/frontend/static/css/settings.391717d2.css create mode 100644 media/assets/frontend/static/css/settings.391717d2.css.map create mode 100644 media/assets/frontend/static/css/sharedDirView.945789e9.css create mode 100644 media/assets/frontend/static/css/sharedDirView.945789e9.css.map create mode 100644 media/assets/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css create mode 100644 media/assets/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css.map create mode 100644 media/assets/frontend/static/css/sysAdmin.feb7b73d.css create mode 100644 media/assets/frontend/static/css/sysAdmin.feb7b73d.css.map create mode 100644 media/assets/frontend/static/css/uploadLink.01103a58.css create mode 100644 media/assets/frontend/static/css/uploadLink.01103a58.css.map create mode 100644 media/assets/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css create mode 100644 media/assets/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css.map create mode 100644 media/assets/frontend/static/css/wiki.b992029b.css create mode 100644 media/assets/frontend/static/css/wiki.b992029b.css.map create mode 100644 media/assets/frontend/static/js/305.d8dbbbbc.chunk.js create mode 100644 media/assets/frontend/static/js/305.d8dbbbbc.chunk.js.map create mode 100644 media/assets/frontend/static/js/311.e7e04ffb.chunk.js create mode 100644 media/assets/frontend/static/js/311.e7e04ffb.chunk.js.map create mode 100644 media/assets/frontend/static/js/379.e48ee7a7.chunk.js create mode 100644 media/assets/frontend/static/js/379.e48ee7a7.chunk.js.map create mode 100644 media/assets/frontend/static/js/482.40023cf1.chunk.js create mode 100644 media/assets/frontend/static/js/482.40023cf1.chunk.js.map create mode 100644 media/assets/frontend/static/js/54.f8d765ee.chunk.js create mode 100644 media/assets/frontend/static/js/54.f8d765ee.chunk.js.map create mode 100644 media/assets/frontend/static/js/545.2cc3d80f.chunk.js create mode 100644 media/assets/frontend/static/js/545.2cc3d80f.chunk.js.map create mode 100644 media/assets/frontend/static/js/921.ba8481b9.chunk.js create mode 100644 media/assets/frontend/static/js/921.ba8481b9.chunk.js.map create mode 100644 media/assets/frontend/static/js/975.7f1d8705.chunk.js create mode 100644 media/assets/frontend/static/js/975.7f1d8705.chunk.js.map create mode 100644 media/assets/frontend/static/js/997.4e7b85c4.chunk.js create mode 100644 media/assets/frontend/static/js/997.4e7b85c4.chunk.js.map create mode 100644 media/assets/frontend/static/js/TCAccept.c1a15517.js create mode 100644 media/assets/frontend/static/js/TCAccept.c1a15517.js.map create mode 100644 media/assets/frontend/static/js/TCView.d87affdd.js create mode 100644 media/assets/frontend/static/js/TCView.d87affdd.js.map create mode 100644 media/assets/frontend/static/js/app.54217b8e.js create mode 100644 media/assets/frontend/static/js/app.54217b8e.js.LICENSE.txt create mode 100644 media/assets/frontend/static/js/app.54217b8e.js.map create mode 100644 media/assets/frontend/static/js/commons.34f4be2c.js create mode 100644 media/assets/frontend/static/js/commons.34f4be2c.js.LICENSE.txt create mode 100644 media/assets/frontend/static/js/commons.34f4be2c.js.map create mode 100644 media/assets/frontend/static/js/draft.5f324749.js create mode 100644 media/assets/frontend/static/js/draft.5f324749.js.map create mode 100644 media/assets/frontend/static/js/fileHistory.0e76e4d0.js create mode 100644 media/assets/frontend/static/js/fileHistory.0e76e4d0.js.map create mode 100644 media/assets/frontend/static/js/fileHistoryOld.3f18f9ad.js create mode 100644 media/assets/frontend/static/js/fileHistoryOld.3f18f9ad.js.map create mode 100644 media/assets/frontend/static/js/fileView.f3d13498.js create mode 100644 media/assets/frontend/static/js/fileView.f3d13498.js.map create mode 100644 media/assets/frontend/static/js/historyTrashFileView.3099654d.js create mode 100644 media/assets/frontend/static/js/historyTrashFileView.3099654d.js.map create mode 100644 media/assets/frontend/static/js/markdownEditor.0b381ae2.js create mode 100644 media/assets/frontend/static/js/markdownEditor.0b381ae2.js.LICENSE.txt create mode 100644 media/assets/frontend/static/js/markdownEditor.0b381ae2.js.map create mode 100644 media/assets/frontend/static/js/orgAdmin.6f455ad9.js create mode 100644 media/assets/frontend/static/js/orgAdmin.6f455ad9.js.LICENSE.txt create mode 100644 media/assets/frontend/static/js/orgAdmin.6f455ad9.js.map create mode 100644 media/assets/frontend/static/js/repoFolderTrash.28b24f80.js create mode 100644 media/assets/frontend/static/js/repoFolderTrash.28b24f80.js.map create mode 100644 media/assets/frontend/static/js/repoHistory.576546cc.js create mode 100644 media/assets/frontend/static/js/repoHistory.576546cc.js.map create mode 100644 media/assets/frontend/static/js/repoSnapshot.8c570ae6.js create mode 100644 media/assets/frontend/static/js/repoSnapshot.8c570ae6.js.map create mode 100644 media/assets/frontend/static/js/runtime.a3d207a7.js create mode 100644 media/assets/frontend/static/js/runtime.a3d207a7.js.map create mode 100644 media/assets/frontend/static/js/sdocFileHistory.01f01c1a.js create mode 100644 media/assets/frontend/static/js/sdocFileHistory.01f01c1a.js.map create mode 100644 media/assets/frontend/static/js/sdocPublishedRevision.f8f9e895.js create mode 100644 media/assets/frontend/static/js/sdocPublishedRevision.f8f9e895.js.map create mode 100644 media/assets/frontend/static/js/search.164ffc8c.js create mode 100644 media/assets/frontend/static/js/search.164ffc8c.js.map create mode 100644 media/assets/frontend/static/js/settings.4f5512b2.js create mode 100644 media/assets/frontend/static/js/settings.4f5512b2.js.map create mode 100644 media/assets/frontend/static/js/sharedDirView.ab66951d.js create mode 100644 media/assets/frontend/static/js/sharedDirView.ab66951d.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewAudio.cedd033e.js create mode 100644 media/assets/frontend/static/js/sharedFileViewAudio.cedd033e.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewDocument.180f58d8.js create mode 100644 media/assets/frontend/static/js/sharedFileViewDocument.180f58d8.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewImage.9d0dda04.js create mode 100644 media/assets/frontend/static/js/sharedFileViewImage.9d0dda04.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewMarkdown.03a6a4cd.js create mode 100644 media/assets/frontend/static/js/sharedFileViewMarkdown.03a6a4cd.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewPDF.a00415f0.js create mode 100644 media/assets/frontend/static/js/sharedFileViewPDF.a00415f0.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewSVG.5fd43385.js create mode 100644 media/assets/frontend/static/js/sharedFileViewSVG.5fd43385.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewSdoc.21961792.js create mode 100644 media/assets/frontend/static/js/sharedFileViewSdoc.21961792.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewSpreadsheet.0ffb4373.js create mode 100644 media/assets/frontend/static/js/sharedFileViewSpreadsheet.0ffb4373.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewText.757e8d1a.js create mode 100644 media/assets/frontend/static/js/sharedFileViewText.757e8d1a.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewUnknown.a0e468e0.js create mode 100644 media/assets/frontend/static/js/sharedFileViewUnknown.a0e468e0.js.map create mode 100644 media/assets/frontend/static/js/sharedFileViewVideo.6af2fa31.js create mode 100644 media/assets/frontend/static/js/sharedFileViewVideo.6af2fa31.js.map create mode 100644 media/assets/frontend/static/js/sysAdmin.91d1d2f2.js create mode 100644 media/assets/frontend/static/js/sysAdmin.91d1d2f2.js.LICENSE.txt create mode 100644 media/assets/frontend/static/js/sysAdmin.91d1d2f2.js.map create mode 100644 media/assets/frontend/static/js/uploadLink.8d2b00c1.js create mode 100644 media/assets/frontend/static/js/uploadLink.8d2b00c1.js.map create mode 100644 media/assets/frontend/static/js/viewFileDocument.8a503cff.js create mode 100644 media/assets/frontend/static/js/viewFileDocument.8a503cff.js.map create mode 100644 media/assets/frontend/static/js/viewFileSdoc.6adf9d14.js create mode 100644 media/assets/frontend/static/js/viewFileSdoc.6adf9d14.js.map create mode 100644 media/assets/frontend/static/js/viewFileSpreadsheet.77d500a4.js create mode 100644 media/assets/frontend/static/js/viewFileSpreadsheet.77d500a4.js.map create mode 100644 media/assets/frontend/static/js/viewFileText.dcddd49f.js create mode 100644 media/assets/frontend/static/js/viewFileText.dcddd49f.js.map create mode 100644 media/assets/frontend/static/js/wiki.9846d06a.js create mode 100644 media/assets/frontend/static/js/wiki.9846d06a.js.map create mode 100644 media/assets/scripts/i18n/ar/djangojs.js create mode 100644 media/assets/scripts/i18n/ca/djangojs.js create mode 100644 media/assets/scripts/i18n/cs/djangojs.js create mode 100644 media/assets/scripts/i18n/de/djangojs.js create mode 100644 media/assets/scripts/i18n/el/djangojs.js create mode 100644 media/assets/scripts/i18n/en/djangojs.js create mode 100644 media/assets/scripts/i18n/es-ar/djangojs.js create mode 100644 media/assets/scripts/i18n/es-mx/djangojs.js create mode 100644 media/assets/scripts/i18n/es/djangojs.js create mode 100644 media/assets/scripts/i18n/fi/djangojs.js create mode 100644 media/assets/scripts/i18n/fr/djangojs.js create mode 100644 media/assets/scripts/i18n/he/djangojs.js create mode 100644 media/assets/scripts/i18n/hu/djangojs.js create mode 100644 media/assets/scripts/i18n/is/djangojs.js create mode 100644 media/assets/scripts/i18n/it/djangojs.js create mode 100644 media/assets/scripts/i18n/ja/djangojs.js create mode 100644 media/assets/scripts/i18n/ko/djangojs.js create mode 100644 media/assets/scripts/i18n/lv/djangojs.js create mode 100644 media/assets/scripts/i18n/nl/djangojs.js create mode 100644 media/assets/scripts/i18n/pl/djangojs.js create mode 100644 media/assets/scripts/i18n/pt-br/djangojs.js create mode 100644 media/assets/scripts/i18n/ru/djangojs.js create mode 100644 media/assets/scripts/i18n/sk/djangojs.js create mode 100644 media/assets/scripts/i18n/sl/djangojs.js create mode 100644 media/assets/scripts/i18n/sv/djangojs.js create mode 100644 media/assets/scripts/i18n/th/djangojs.js create mode 100644 media/assets/scripts/i18n/tr/djangojs.js create mode 100644 media/assets/scripts/i18n/uk/djangojs.js create mode 100644 media/assets/scripts/i18n/vi/djangojs.js create mode 100644 media/assets/scripts/i18n/zh-cn/djangojs.js create mode 100644 media/assets/scripts/i18n/zh-tw/djangojs.js create mode 100644 media/assets/scripts/lib/jquery-ui.min.js create mode 100644 media/assets/scripts/lib/jquery.min.js create mode 100644 media/assets/scripts/lib/jquery.simplemodal.js mode change 100644 => 100755 tests/github_actions_dist.sh diff --git a/frontend/webpack-stats.pro.json b/frontend/webpack-stats.pro.json index a5b46a0e99e..65485789cf3 100644 --- a/frontend/webpack-stats.pro.json +++ b/frontend/webpack-stats.pro.json @@ -1,807 +1,807 @@ { "status": "done", "assets": { - "static/css/app.ce867cc5.css": { - "name": "static/css/app.ce867cc5.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/app.ce867cc5.css" + "static/css/app.06d6765d.css": { + "name": "static/css/app.06d6765d.css", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/app.06d6765d.css" }, - "static/css/app.ce867cc5.css.map": { - "name": "static/css/app.ce867cc5.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/app.ce867cc5.css.map" + "static/css/app.06d6765d.css.map": { + "name": "static/css/app.06d6765d.css.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/app.06d6765d.css.map" }, - "static/css/commons.2c40b537.css": { - "name": "static/css/commons.2c40b537.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/commons.2c40b537.css" + "static/css/commons.44d6cf61.css": { + "name": "static/css/commons.44d6cf61.css", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/commons.44d6cf61.css" }, - "static/css/commons.2c40b537.css.map": { - "name": "static/css/commons.2c40b537.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/commons.2c40b537.css.map" + "static/css/commons.44d6cf61.css.map": { + "name": "static/css/commons.44d6cf61.css.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/commons.44d6cf61.css.map" }, - "static/css/draft.dfd8ec8b.css": { - "name": "static/css/draft.dfd8ec8b.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/draft.dfd8ec8b.css" + "static/css/draft.99bd13be.css": { + "name": "static/css/draft.99bd13be.css", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/draft.99bd13be.css" }, - "static/css/draft.dfd8ec8b.css.map": { - "name": "static/css/draft.dfd8ec8b.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/draft.dfd8ec8b.css.map" + "static/css/draft.99bd13be.css.map": { + "name": "static/css/draft.99bd13be.css.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/draft.99bd13be.css.map" }, - "static/css/fileHistory.c207f9b1.css": { - "name": "static/css/fileHistory.c207f9b1.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/fileHistory.c207f9b1.css" + "static/css/fileHistory.067ab156.css": { + "name": "static/css/fileHistory.067ab156.css", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/fileHistory.067ab156.css" }, - "static/css/fileHistory.c207f9b1.css.map": { - "name": "static/css/fileHistory.c207f9b1.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/fileHistory.c207f9b1.css.map" + "static/css/fileHistory.067ab156.css.map": { + "name": "static/css/fileHistory.067ab156.css.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/fileHistory.067ab156.css.map" }, "static/css/fileHistoryOld.34922be6.css": { "name": "static/css/fileHistoryOld.34922be6.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/fileHistoryOld.34922be6.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/fileHistoryOld.34922be6.css" }, "static/css/fileHistoryOld.34922be6.css.map": { "name": "static/css/fileHistoryOld.34922be6.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/fileHistoryOld.34922be6.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/fileHistoryOld.34922be6.css.map" }, - "static/css/historyTrashFileView.d2070387.css": { - "name": "static/css/historyTrashFileView.d2070387.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/historyTrashFileView.d2070387.css" + "static/css/historyTrashFileView.bcf014b6.css": { + "name": "static/css/historyTrashFileView.bcf014b6.css", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/historyTrashFileView.bcf014b6.css" }, - "static/css/historyTrashFileView.d2070387.css.map": { - "name": "static/css/historyTrashFileView.d2070387.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/historyTrashFileView.d2070387.css.map" + "static/css/historyTrashFileView.bcf014b6.css.map": { + "name": "static/css/historyTrashFileView.bcf014b6.css.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/historyTrashFileView.bcf014b6.css.map" }, - "static/css/markdownEditor.c66eb93d.css": { - "name": "static/css/markdownEditor.c66eb93d.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/markdownEditor.c66eb93d.css" + "static/css/markdownEditor.d88bbc1a.css": { + "name": "static/css/markdownEditor.d88bbc1a.css", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/markdownEditor.d88bbc1a.css" }, - "static/css/markdownEditor.c66eb93d.css.map": { - "name": "static/css/markdownEditor.c66eb93d.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/markdownEditor.c66eb93d.css.map" + "static/css/markdownEditor.d88bbc1a.css.map": { + "name": "static/css/markdownEditor.d88bbc1a.css.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/markdownEditor.d88bbc1a.css.map" }, "static/css/orgAdmin.bb6a05c5.css": { "name": "static/css/orgAdmin.bb6a05c5.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/orgAdmin.bb6a05c5.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/orgAdmin.bb6a05c5.css" }, "static/css/orgAdmin.bb6a05c5.css.map": { "name": "static/css/orgAdmin.bb6a05c5.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/orgAdmin.bb6a05c5.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/orgAdmin.bb6a05c5.css.map" }, "static/css/repoFolderTrash.d4170c41.css": { "name": "static/css/repoFolderTrash.d4170c41.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/repoFolderTrash.d4170c41.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/repoFolderTrash.d4170c41.css" }, "static/css/repoFolderTrash.d4170c41.css.map": { "name": "static/css/repoFolderTrash.d4170c41.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/repoFolderTrash.d4170c41.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/repoFolderTrash.d4170c41.css.map" }, "static/css/repoHistory.f0ad8622.css": { "name": "static/css/repoHistory.f0ad8622.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/repoHistory.f0ad8622.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/repoHistory.f0ad8622.css" }, "static/css/repoHistory.f0ad8622.css.map": { "name": "static/css/repoHistory.f0ad8622.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/repoHistory.f0ad8622.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/repoHistory.f0ad8622.css.map" }, "static/css/repoSnapshot.c6bbee77.css": { "name": "static/css/repoSnapshot.c6bbee77.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/repoSnapshot.c6bbee77.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/repoSnapshot.c6bbee77.css" }, "static/css/repoSnapshot.c6bbee77.css.map": { "name": "static/css/repoSnapshot.c6bbee77.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/repoSnapshot.c6bbee77.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/repoSnapshot.c6bbee77.css.map" }, "static/css/sdocFileHistory.f936c666.css": { "name": "static/css/sdocFileHistory.f936c666.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/sdocFileHistory.f936c666.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/sdocFileHistory.f936c666.css" }, "static/css/sdocFileHistory.f936c666.css.map": { "name": "static/css/sdocFileHistory.f936c666.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/sdocFileHistory.f936c666.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/sdocFileHistory.f936c666.css.map" }, "static/css/settings.391717d2.css": { "name": "static/css/settings.391717d2.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/settings.391717d2.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/settings.391717d2.css" }, "static/css/settings.391717d2.css.map": { "name": "static/css/settings.391717d2.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/settings.391717d2.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/settings.391717d2.css.map" }, "static/css/sharedDirView.945789e9.css": { "name": "static/css/sharedDirView.945789e9.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/sharedDirView.945789e9.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/sharedDirView.945789e9.css" }, "static/css/sharedDirView.945789e9.css.map": { "name": "static/css/sharedDirView.945789e9.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/sharedDirView.945789e9.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/sharedDirView.945789e9.css.map" }, "static/css/sharedFileViewSpreadsheet.ff1ddac7.css": { "name": "static/css/sharedFileViewSpreadsheet.ff1ddac7.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css" }, "static/css/sharedFileViewSpreadsheet.ff1ddac7.css.map": { "name": "static/css/sharedFileViewSpreadsheet.ff1ddac7.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css.map" }, "static/css/sysAdmin.feb7b73d.css": { "name": "static/css/sysAdmin.feb7b73d.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/sysAdmin.feb7b73d.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/sysAdmin.feb7b73d.css" }, "static/css/sysAdmin.feb7b73d.css.map": { "name": "static/css/sysAdmin.feb7b73d.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/sysAdmin.feb7b73d.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/sysAdmin.feb7b73d.css.map" }, "static/css/TCAccept.05d88392.css": { "name": "static/css/TCAccept.05d88392.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/TCAccept.05d88392.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/TCAccept.05d88392.css" }, "static/css/TCAccept.05d88392.css.map": { "name": "static/css/TCAccept.05d88392.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/TCAccept.05d88392.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/TCAccept.05d88392.css.map" }, "static/css/TCView.05d88392.css": { "name": "static/css/TCView.05d88392.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/TCView.05d88392.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/TCView.05d88392.css" }, "static/css/TCView.05d88392.css.map": { "name": "static/css/TCView.05d88392.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/TCView.05d88392.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/TCView.05d88392.css.map" }, "static/css/uploadLink.01103a58.css": { "name": "static/css/uploadLink.01103a58.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/uploadLink.01103a58.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/uploadLink.01103a58.css" }, "static/css/uploadLink.01103a58.css.map": { "name": "static/css/uploadLink.01103a58.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/uploadLink.01103a58.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/uploadLink.01103a58.css.map" }, "static/css/viewFileSpreadsheet.ff1ddac7.css": { "name": "static/css/viewFileSpreadsheet.ff1ddac7.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css" }, "static/css/viewFileSpreadsheet.ff1ddac7.css.map": { "name": "static/css/viewFileSpreadsheet.ff1ddac7.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css.map" }, - "static/css/wiki.2d406fab.css": { - "name": "static/css/wiki.2d406fab.css", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/wiki.2d406fab.css" + "static/css/wiki.b992029b.css": { + "name": "static/css/wiki.b992029b.css", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/wiki.b992029b.css" }, - "static/css/wiki.2d406fab.css.map": { - "name": "static/css/wiki.2d406fab.css.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/css/wiki.2d406fab.css.map" + "static/css/wiki.b992029b.css.map": { + "name": "static/css/wiki.b992029b.css.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/css/wiki.b992029b.css.map" }, "static/js/305.d8dbbbbc.chunk.js": { "name": "static/js/305.d8dbbbbc.chunk.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/305.d8dbbbbc.chunk.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/305.d8dbbbbc.chunk.js" }, "static/js/305.d8dbbbbc.chunk.js.map": { "name": "static/js/305.d8dbbbbc.chunk.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/305.d8dbbbbc.chunk.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/305.d8dbbbbc.chunk.js.map" }, "static/js/311.e7e04ffb.chunk.js": { "name": "static/js/311.e7e04ffb.chunk.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/311.e7e04ffb.chunk.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/311.e7e04ffb.chunk.js" }, "static/js/311.e7e04ffb.chunk.js.map": { "name": "static/js/311.e7e04ffb.chunk.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/311.e7e04ffb.chunk.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/311.e7e04ffb.chunk.js.map" }, "static/js/379.e48ee7a7.chunk.js": { "name": "static/js/379.e48ee7a7.chunk.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/379.e48ee7a7.chunk.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/379.e48ee7a7.chunk.js" }, "static/js/379.e48ee7a7.chunk.js.map": { "name": "static/js/379.e48ee7a7.chunk.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/379.e48ee7a7.chunk.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/379.e48ee7a7.chunk.js.map" }, "static/js/482.40023cf1.chunk.js": { "name": "static/js/482.40023cf1.chunk.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/482.40023cf1.chunk.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/482.40023cf1.chunk.js" }, "static/js/482.40023cf1.chunk.js.map": { "name": "static/js/482.40023cf1.chunk.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/482.40023cf1.chunk.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/482.40023cf1.chunk.js.map" }, "static/js/54.f8d765ee.chunk.js": { "name": "static/js/54.f8d765ee.chunk.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/54.f8d765ee.chunk.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/54.f8d765ee.chunk.js" }, "static/js/54.f8d765ee.chunk.js.map": { "name": "static/js/54.f8d765ee.chunk.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/54.f8d765ee.chunk.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/54.f8d765ee.chunk.js.map" }, "static/js/545.2cc3d80f.chunk.js": { "name": "static/js/545.2cc3d80f.chunk.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/545.2cc3d80f.chunk.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/545.2cc3d80f.chunk.js" }, "static/js/545.2cc3d80f.chunk.js.map": { "name": "static/js/545.2cc3d80f.chunk.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/545.2cc3d80f.chunk.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/545.2cc3d80f.chunk.js.map" }, "static/js/921.ba8481b9.chunk.js": { "name": "static/js/921.ba8481b9.chunk.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/921.ba8481b9.chunk.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/921.ba8481b9.chunk.js" }, "static/js/921.ba8481b9.chunk.js.map": { "name": "static/js/921.ba8481b9.chunk.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/921.ba8481b9.chunk.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/921.ba8481b9.chunk.js.map" }, "static/js/975.7f1d8705.chunk.js": { "name": "static/js/975.7f1d8705.chunk.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/975.7f1d8705.chunk.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/975.7f1d8705.chunk.js" }, "static/js/975.7f1d8705.chunk.js.map": { "name": "static/js/975.7f1d8705.chunk.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/975.7f1d8705.chunk.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/975.7f1d8705.chunk.js.map" }, "static/js/997.4e7b85c4.chunk.js": { "name": "static/js/997.4e7b85c4.chunk.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/997.4e7b85c4.chunk.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/997.4e7b85c4.chunk.js" }, "static/js/997.4e7b85c4.chunk.js.map": { "name": "static/js/997.4e7b85c4.chunk.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/997.4e7b85c4.chunk.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/997.4e7b85c4.chunk.js.map" }, - "static/js/app.800f919a.js": { - "name": "static/js/app.800f919a.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/app.800f919a.js" + "static/js/app.54217b8e.js": { + "name": "static/js/app.54217b8e.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/app.54217b8e.js" }, - "static/js/app.800f919a.js.LICENSE.txt": { - "name": "static/js/app.800f919a.js.LICENSE.txt", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/app.800f919a.js.LICENSE.txt" + "static/js/app.54217b8e.js.LICENSE.txt": { + "name": "static/js/app.54217b8e.js.LICENSE.txt", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/app.54217b8e.js.LICENSE.txt" }, - "static/js/app.800f919a.js.map": { - "name": "static/js/app.800f919a.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/app.800f919a.js.map" + "static/js/app.54217b8e.js.map": { + "name": "static/js/app.54217b8e.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/app.54217b8e.js.map" }, - "static/js/commons.84df398e.js": { - "name": "static/js/commons.84df398e.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/commons.84df398e.js" + "static/js/commons.34f4be2c.js": { + "name": "static/js/commons.34f4be2c.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/commons.34f4be2c.js" }, - "static/js/commons.84df398e.js.LICENSE.txt": { - "name": "static/js/commons.84df398e.js.LICENSE.txt", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/commons.84df398e.js.LICENSE.txt" + "static/js/commons.34f4be2c.js.LICENSE.txt": { + "name": "static/js/commons.34f4be2c.js.LICENSE.txt", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/commons.34f4be2c.js.LICENSE.txt" }, - "static/js/commons.84df398e.js.map": { - "name": "static/js/commons.84df398e.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/commons.84df398e.js.map" + "static/js/commons.34f4be2c.js.map": { + "name": "static/js/commons.34f4be2c.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/commons.34f4be2c.js.map" }, - "static/js/draft.b5d27191.js": { - "name": "static/js/draft.b5d27191.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/draft.b5d27191.js" + "static/js/draft.5f324749.js": { + "name": "static/js/draft.5f324749.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/draft.5f324749.js" }, - "static/js/draft.b5d27191.js.map": { - "name": "static/js/draft.b5d27191.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/draft.b5d27191.js.map" + "static/js/draft.5f324749.js.map": { + "name": "static/js/draft.5f324749.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/draft.5f324749.js.map" }, - "static/js/fileHistory.88bff865.js": { - "name": "static/js/fileHistory.88bff865.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/fileHistory.88bff865.js" + "static/js/fileHistory.0e76e4d0.js": { + "name": "static/js/fileHistory.0e76e4d0.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/fileHistory.0e76e4d0.js" }, - "static/js/fileHistory.88bff865.js.map": { - "name": "static/js/fileHistory.88bff865.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/fileHistory.88bff865.js.map" + "static/js/fileHistory.0e76e4d0.js.map": { + "name": "static/js/fileHistory.0e76e4d0.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/fileHistory.0e76e4d0.js.map" }, "static/js/fileHistoryOld.3f18f9ad.js": { "name": "static/js/fileHistoryOld.3f18f9ad.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/fileHistoryOld.3f18f9ad.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/fileHistoryOld.3f18f9ad.js" }, "static/js/fileHistoryOld.3f18f9ad.js.map": { "name": "static/js/fileHistoryOld.3f18f9ad.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/fileHistoryOld.3f18f9ad.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/fileHistoryOld.3f18f9ad.js.map" }, "static/js/fileView.f3d13498.js": { "name": "static/js/fileView.f3d13498.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/fileView.f3d13498.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/fileView.f3d13498.js" }, "static/js/fileView.f3d13498.js.map": { "name": "static/js/fileView.f3d13498.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/fileView.f3d13498.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/fileView.f3d13498.js.map" }, - "static/js/historyTrashFileView.11fe180d.js": { - "name": "static/js/historyTrashFileView.11fe180d.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/historyTrashFileView.11fe180d.js" + "static/js/historyTrashFileView.3099654d.js": { + "name": "static/js/historyTrashFileView.3099654d.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/historyTrashFileView.3099654d.js" }, - "static/js/historyTrashFileView.11fe180d.js.map": { - "name": "static/js/historyTrashFileView.11fe180d.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/historyTrashFileView.11fe180d.js.map" + "static/js/historyTrashFileView.3099654d.js.map": { + "name": "static/js/historyTrashFileView.3099654d.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/historyTrashFileView.3099654d.js.map" }, - "static/js/markdownEditor.3ee490c8.js": { - "name": "static/js/markdownEditor.3ee490c8.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/markdownEditor.3ee490c8.js" + "static/js/markdownEditor.0b381ae2.js": { + "name": "static/js/markdownEditor.0b381ae2.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/markdownEditor.0b381ae2.js" }, - "static/js/markdownEditor.3ee490c8.js.LICENSE.txt": { - "name": "static/js/markdownEditor.3ee490c8.js.LICENSE.txt", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/markdownEditor.3ee490c8.js.LICENSE.txt" + "static/js/markdownEditor.0b381ae2.js.LICENSE.txt": { + "name": "static/js/markdownEditor.0b381ae2.js.LICENSE.txt", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/markdownEditor.0b381ae2.js.LICENSE.txt" }, - "static/js/markdownEditor.3ee490c8.js.map": { - "name": "static/js/markdownEditor.3ee490c8.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/markdownEditor.3ee490c8.js.map" + "static/js/markdownEditor.0b381ae2.js.map": { + "name": "static/js/markdownEditor.0b381ae2.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/markdownEditor.0b381ae2.js.map" }, - "static/js/orgAdmin.c982a7fd.js": { - "name": "static/js/orgAdmin.c982a7fd.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/orgAdmin.c982a7fd.js" + "static/js/orgAdmin.6f455ad9.js": { + "name": "static/js/orgAdmin.6f455ad9.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/orgAdmin.6f455ad9.js" }, - "static/js/orgAdmin.c982a7fd.js.LICENSE.txt": { - "name": "static/js/orgAdmin.c982a7fd.js.LICENSE.txt", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/orgAdmin.c982a7fd.js.LICENSE.txt" + "static/js/orgAdmin.6f455ad9.js.LICENSE.txt": { + "name": "static/js/orgAdmin.6f455ad9.js.LICENSE.txt", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/orgAdmin.6f455ad9.js.LICENSE.txt" }, - "static/js/orgAdmin.c982a7fd.js.map": { - "name": "static/js/orgAdmin.c982a7fd.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/orgAdmin.c982a7fd.js.map" + "static/js/orgAdmin.6f455ad9.js.map": { + "name": "static/js/orgAdmin.6f455ad9.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/orgAdmin.6f455ad9.js.map" }, "static/js/repoFolderTrash.28b24f80.js": { "name": "static/js/repoFolderTrash.28b24f80.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/repoFolderTrash.28b24f80.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/repoFolderTrash.28b24f80.js" }, "static/js/repoFolderTrash.28b24f80.js.map": { "name": "static/js/repoFolderTrash.28b24f80.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/repoFolderTrash.28b24f80.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/repoFolderTrash.28b24f80.js.map" }, "static/js/repoHistory.576546cc.js": { "name": "static/js/repoHistory.576546cc.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/repoHistory.576546cc.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/repoHistory.576546cc.js" }, "static/js/repoHistory.576546cc.js.map": { "name": "static/js/repoHistory.576546cc.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/repoHistory.576546cc.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/repoHistory.576546cc.js.map" }, "static/js/repoSnapshot.8c570ae6.js": { "name": "static/js/repoSnapshot.8c570ae6.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/repoSnapshot.8c570ae6.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/repoSnapshot.8c570ae6.js" }, "static/js/repoSnapshot.8c570ae6.js.map": { "name": "static/js/repoSnapshot.8c570ae6.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/repoSnapshot.8c570ae6.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/repoSnapshot.8c570ae6.js.map" }, - "static/js/runtime.028fa1ae.js": { - "name": "static/js/runtime.028fa1ae.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/runtime.028fa1ae.js" + "static/js/runtime.a3d207a7.js": { + "name": "static/js/runtime.a3d207a7.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/runtime.a3d207a7.js" }, - "static/js/runtime.028fa1ae.js.map": { - "name": "static/js/runtime.028fa1ae.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/runtime.028fa1ae.js.map" + "static/js/runtime.a3d207a7.js.map": { + "name": "static/js/runtime.a3d207a7.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/runtime.a3d207a7.js.map" }, - "static/js/sdocFileHistory.5d6a8c34.js": { - "name": "static/js/sdocFileHistory.5d6a8c34.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sdocFileHistory.5d6a8c34.js" + "static/js/sdocFileHistory.01f01c1a.js": { + "name": "static/js/sdocFileHistory.01f01c1a.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sdocFileHistory.01f01c1a.js" }, - "static/js/sdocFileHistory.5d6a8c34.js.map": { - "name": "static/js/sdocFileHistory.5d6a8c34.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sdocFileHistory.5d6a8c34.js.map" + "static/js/sdocFileHistory.01f01c1a.js.map": { + "name": "static/js/sdocFileHistory.01f01c1a.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sdocFileHistory.01f01c1a.js.map" }, - "static/js/sdocPublishedRevision.aeef61c9.js": { - "name": "static/js/sdocPublishedRevision.aeef61c9.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sdocPublishedRevision.aeef61c9.js" + "static/js/sdocPublishedRevision.f8f9e895.js": { + "name": "static/js/sdocPublishedRevision.f8f9e895.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sdocPublishedRevision.f8f9e895.js" }, - "static/js/sdocPublishedRevision.aeef61c9.js.map": { - "name": "static/js/sdocPublishedRevision.aeef61c9.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sdocPublishedRevision.aeef61c9.js.map" + "static/js/sdocPublishedRevision.f8f9e895.js.map": { + "name": "static/js/sdocPublishedRevision.f8f9e895.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sdocPublishedRevision.f8f9e895.js.map" }, - "static/js/search.60173edb.js": { - "name": "static/js/search.60173edb.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/search.60173edb.js" + "static/js/search.164ffc8c.js": { + "name": "static/js/search.164ffc8c.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/search.164ffc8c.js" }, - "static/js/search.60173edb.js.map": { - "name": "static/js/search.60173edb.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/search.60173edb.js.map" + "static/js/search.164ffc8c.js.map": { + "name": "static/js/search.164ffc8c.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/search.164ffc8c.js.map" }, "static/js/settings.4f5512b2.js": { "name": "static/js/settings.4f5512b2.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/settings.4f5512b2.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/settings.4f5512b2.js" }, "static/js/settings.4f5512b2.js.map": { "name": "static/js/settings.4f5512b2.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/settings.4f5512b2.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/settings.4f5512b2.js.map" }, - "static/js/sharedDirView.859e8ccc.js": { - "name": "static/js/sharedDirView.859e8ccc.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedDirView.859e8ccc.js" + "static/js/sharedDirView.ab66951d.js": { + "name": "static/js/sharedDirView.ab66951d.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedDirView.ab66951d.js" }, - "static/js/sharedDirView.859e8ccc.js.map": { - "name": "static/js/sharedDirView.859e8ccc.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedDirView.859e8ccc.js.map" + "static/js/sharedDirView.ab66951d.js.map": { + "name": "static/js/sharedDirView.ab66951d.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedDirView.ab66951d.js.map" }, "static/js/sharedFileViewAudio.cedd033e.js": { "name": "static/js/sharedFileViewAudio.cedd033e.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewAudio.cedd033e.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewAudio.cedd033e.js" }, "static/js/sharedFileViewAudio.cedd033e.js.map": { "name": "static/js/sharedFileViewAudio.cedd033e.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewAudio.cedd033e.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewAudio.cedd033e.js.map" }, "static/js/sharedFileViewDocument.180f58d8.js": { "name": "static/js/sharedFileViewDocument.180f58d8.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewDocument.180f58d8.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewDocument.180f58d8.js" }, "static/js/sharedFileViewDocument.180f58d8.js.map": { "name": "static/js/sharedFileViewDocument.180f58d8.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewDocument.180f58d8.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewDocument.180f58d8.js.map" }, "static/js/sharedFileViewImage.9d0dda04.js": { "name": "static/js/sharedFileViewImage.9d0dda04.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewImage.9d0dda04.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewImage.9d0dda04.js" }, "static/js/sharedFileViewImage.9d0dda04.js.map": { "name": "static/js/sharedFileViewImage.9d0dda04.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewImage.9d0dda04.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewImage.9d0dda04.js.map" }, - "static/js/sharedFileViewMarkdown.7dbe56ed.js": { - "name": "static/js/sharedFileViewMarkdown.7dbe56ed.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewMarkdown.7dbe56ed.js" + "static/js/sharedFileViewMarkdown.03a6a4cd.js": { + "name": "static/js/sharedFileViewMarkdown.03a6a4cd.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewMarkdown.03a6a4cd.js" }, - "static/js/sharedFileViewMarkdown.7dbe56ed.js.map": { - "name": "static/js/sharedFileViewMarkdown.7dbe56ed.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewMarkdown.7dbe56ed.js.map" + "static/js/sharedFileViewMarkdown.03a6a4cd.js.map": { + "name": "static/js/sharedFileViewMarkdown.03a6a4cd.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewMarkdown.03a6a4cd.js.map" }, "static/js/sharedFileViewPDF.a00415f0.js": { "name": "static/js/sharedFileViewPDF.a00415f0.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewPDF.a00415f0.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewPDF.a00415f0.js" }, "static/js/sharedFileViewPDF.a00415f0.js.map": { "name": "static/js/sharedFileViewPDF.a00415f0.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewPDF.a00415f0.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewPDF.a00415f0.js.map" }, - "static/js/sharedFileViewSdoc.4a7b0355.js": { - "name": "static/js/sharedFileViewSdoc.4a7b0355.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewSdoc.4a7b0355.js" + "static/js/sharedFileViewSdoc.21961792.js": { + "name": "static/js/sharedFileViewSdoc.21961792.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewSdoc.21961792.js" }, - "static/js/sharedFileViewSdoc.4a7b0355.js.map": { - "name": "static/js/sharedFileViewSdoc.4a7b0355.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewSdoc.4a7b0355.js.map" + "static/js/sharedFileViewSdoc.21961792.js.map": { + "name": "static/js/sharedFileViewSdoc.21961792.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewSdoc.21961792.js.map" }, "static/js/sharedFileViewSpreadsheet.0ffb4373.js": { "name": "static/js/sharedFileViewSpreadsheet.0ffb4373.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewSpreadsheet.0ffb4373.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewSpreadsheet.0ffb4373.js" }, "static/js/sharedFileViewSpreadsheet.0ffb4373.js.map": { "name": "static/js/sharedFileViewSpreadsheet.0ffb4373.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewSpreadsheet.0ffb4373.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewSpreadsheet.0ffb4373.js.map" }, "static/js/sharedFileViewSVG.5fd43385.js": { "name": "static/js/sharedFileViewSVG.5fd43385.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewSVG.5fd43385.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewSVG.5fd43385.js" }, "static/js/sharedFileViewSVG.5fd43385.js.map": { "name": "static/js/sharedFileViewSVG.5fd43385.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewSVG.5fd43385.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewSVG.5fd43385.js.map" }, - "static/js/sharedFileViewText.2fe6341c.js": { - "name": "static/js/sharedFileViewText.2fe6341c.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewText.2fe6341c.js" + "static/js/sharedFileViewText.757e8d1a.js": { + "name": "static/js/sharedFileViewText.757e8d1a.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewText.757e8d1a.js" }, - "static/js/sharedFileViewText.2fe6341c.js.map": { - "name": "static/js/sharedFileViewText.2fe6341c.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewText.2fe6341c.js.map" + "static/js/sharedFileViewText.757e8d1a.js.map": { + "name": "static/js/sharedFileViewText.757e8d1a.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewText.757e8d1a.js.map" }, "static/js/sharedFileViewUnknown.a0e468e0.js": { "name": "static/js/sharedFileViewUnknown.a0e468e0.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewUnknown.a0e468e0.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewUnknown.a0e468e0.js" }, "static/js/sharedFileViewUnknown.a0e468e0.js.map": { "name": "static/js/sharedFileViewUnknown.a0e468e0.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewUnknown.a0e468e0.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewUnknown.a0e468e0.js.map" }, "static/js/sharedFileViewVideo.6af2fa31.js": { "name": "static/js/sharedFileViewVideo.6af2fa31.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewVideo.6af2fa31.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewVideo.6af2fa31.js" }, "static/js/sharedFileViewVideo.6af2fa31.js.map": { "name": "static/js/sharedFileViewVideo.6af2fa31.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sharedFileViewVideo.6af2fa31.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sharedFileViewVideo.6af2fa31.js.map" }, - "static/js/sysAdmin.6fc63bb6.js": { - "name": "static/js/sysAdmin.6fc63bb6.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sysAdmin.6fc63bb6.js" + "static/js/sysAdmin.91d1d2f2.js": { + "name": "static/js/sysAdmin.91d1d2f2.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sysAdmin.91d1d2f2.js" }, - "static/js/sysAdmin.6fc63bb6.js.LICENSE.txt": { - "name": "static/js/sysAdmin.6fc63bb6.js.LICENSE.txt", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sysAdmin.6fc63bb6.js.LICENSE.txt" + "static/js/sysAdmin.91d1d2f2.js.LICENSE.txt": { + "name": "static/js/sysAdmin.91d1d2f2.js.LICENSE.txt", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sysAdmin.91d1d2f2.js.LICENSE.txt" }, - "static/js/sysAdmin.6fc63bb6.js.map": { - "name": "static/js/sysAdmin.6fc63bb6.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/sysAdmin.6fc63bb6.js.map" + "static/js/sysAdmin.91d1d2f2.js.map": { + "name": "static/js/sysAdmin.91d1d2f2.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/sysAdmin.91d1d2f2.js.map" }, "static/js/TCAccept.c1a15517.js": { "name": "static/js/TCAccept.c1a15517.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/TCAccept.c1a15517.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/TCAccept.c1a15517.js" }, "static/js/TCAccept.c1a15517.js.map": { "name": "static/js/TCAccept.c1a15517.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/TCAccept.c1a15517.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/TCAccept.c1a15517.js.map" }, "static/js/TCView.d87affdd.js": { "name": "static/js/TCView.d87affdd.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/TCView.d87affdd.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/TCView.d87affdd.js" }, "static/js/TCView.d87affdd.js.map": { "name": "static/js/TCView.d87affdd.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/TCView.d87affdd.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/TCView.d87affdd.js.map" }, - "static/js/uploadLink.d3bf7687.js": { - "name": "static/js/uploadLink.d3bf7687.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/uploadLink.d3bf7687.js" + "static/js/uploadLink.8d2b00c1.js": { + "name": "static/js/uploadLink.8d2b00c1.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/uploadLink.8d2b00c1.js" }, - "static/js/uploadLink.d3bf7687.js.map": { - "name": "static/js/uploadLink.d3bf7687.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/uploadLink.d3bf7687.js.map" + "static/js/uploadLink.8d2b00c1.js.map": { + "name": "static/js/uploadLink.8d2b00c1.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/uploadLink.8d2b00c1.js.map" }, "static/js/viewFileDocument.8a503cff.js": { "name": "static/js/viewFileDocument.8a503cff.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/viewFileDocument.8a503cff.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/viewFileDocument.8a503cff.js" }, "static/js/viewFileDocument.8a503cff.js.map": { "name": "static/js/viewFileDocument.8a503cff.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/viewFileDocument.8a503cff.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/viewFileDocument.8a503cff.js.map" }, - "static/js/viewFileSdoc.c9c556b9.js": { - "name": "static/js/viewFileSdoc.c9c556b9.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/viewFileSdoc.c9c556b9.js" + "static/js/viewFileSdoc.6adf9d14.js": { + "name": "static/js/viewFileSdoc.6adf9d14.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/viewFileSdoc.6adf9d14.js" }, - "static/js/viewFileSdoc.c9c556b9.js.map": { - "name": "static/js/viewFileSdoc.c9c556b9.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/viewFileSdoc.c9c556b9.js.map" + "static/js/viewFileSdoc.6adf9d14.js.map": { + "name": "static/js/viewFileSdoc.6adf9d14.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/viewFileSdoc.6adf9d14.js.map" }, "static/js/viewFileSpreadsheet.77d500a4.js": { "name": "static/js/viewFileSpreadsheet.77d500a4.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/viewFileSpreadsheet.77d500a4.js" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/viewFileSpreadsheet.77d500a4.js" }, "static/js/viewFileSpreadsheet.77d500a4.js.map": { "name": "static/js/viewFileSpreadsheet.77d500a4.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/viewFileSpreadsheet.77d500a4.js.map" + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/viewFileSpreadsheet.77d500a4.js.map" }, - "static/js/viewFileText.7b29a2fb.js": { - "name": "static/js/viewFileText.7b29a2fb.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/viewFileText.7b29a2fb.js" + "static/js/viewFileText.dcddd49f.js": { + "name": "static/js/viewFileText.dcddd49f.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/viewFileText.dcddd49f.js" }, - "static/js/viewFileText.7b29a2fb.js.map": { - "name": "static/js/viewFileText.7b29a2fb.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/viewFileText.7b29a2fb.js.map" + "static/js/viewFileText.dcddd49f.js.map": { + "name": "static/js/viewFileText.dcddd49f.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/viewFileText.dcddd49f.js.map" }, - "static/js/wiki.fd7804d0.js": { - "name": "static/js/wiki.fd7804d0.js", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/wiki.fd7804d0.js" + "static/js/wiki.9846d06a.js": { + "name": "static/js/wiki.9846d06a.js", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/wiki.9846d06a.js" }, - "static/js/wiki.fd7804d0.js.map": { - "name": "static/js/wiki.fd7804d0.js.map", - "path": "/Users/lidongze/seafile/seafile-10.0/data/dev/seahub/frontend/build/frontend/static/js/wiki.fd7804d0.js.map" + "static/js/wiki.9846d06a.js.map": { + "name": "static/js/wiki.9846d06a.js.map", + "path": "/home/runner/work/seahub/seahub/frontend/build/frontend/static/js/wiki.9846d06a.js.map" } }, "chunks": { "app": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/css/app.ce867cc5.css", - "static/js/app.800f919a.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/css/app.06d6765d.css", + "static/js/app.54217b8e.js" ], "draft": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/css/draft.dfd8ec8b.css", - "static/js/draft.b5d27191.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/css/draft.99bd13be.css", + "static/js/draft.5f324749.js" ], "fileHistory": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/css/fileHistory.c207f9b1.css", - "static/js/fileHistory.88bff865.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/css/fileHistory.067ab156.css", + "static/js/fileHistory.0e76e4d0.js" ], "fileHistoryOld": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/fileHistoryOld.34922be6.css", "static/js/fileHistoryOld.3f18f9ad.js" ], "fileView": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/js/fileView.f3d13498.js" ], "historyTrashFileView": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/css/historyTrashFileView.d2070387.css", - "static/js/historyTrashFileView.11fe180d.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/css/historyTrashFileView.bcf014b6.css", + "static/js/historyTrashFileView.3099654d.js" ], "markdownEditor": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/css/markdownEditor.c66eb93d.css", - "static/js/markdownEditor.3ee490c8.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/css/markdownEditor.d88bbc1a.css", + "static/js/markdownEditor.0b381ae2.js" ], "orgAdmin": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/orgAdmin.bb6a05c5.css", - "static/js/orgAdmin.c982a7fd.js" + "static/js/orgAdmin.6f455ad9.js" ], "repoFolderTrash": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/repoFolderTrash.d4170c41.css", "static/js/repoFolderTrash.28b24f80.js" ], "repoHistory": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/repoHistory.f0ad8622.css", "static/js/repoHistory.576546cc.js" ], "repoSnapshot": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/repoSnapshot.c6bbee77.css", "static/js/repoSnapshot.8c570ae6.js" ], "sdocFileHistory": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/sdocFileHistory.f936c666.css", - "static/js/sdocFileHistory.5d6a8c34.js" + "static/js/sdocFileHistory.01f01c1a.js" ], "sdocPublishedRevision": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/js/sdocPublishedRevision.aeef61c9.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/js/sdocPublishedRevision.f8f9e895.js" ], "search": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/js/search.60173edb.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/js/search.164ffc8c.js" ], "settings": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/settings.391717d2.css", "static/js/settings.4f5512b2.js" ], "sharedDirView": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/sharedDirView.945789e9.css", - "static/js/sharedDirView.859e8ccc.js" + "static/js/sharedDirView.ab66951d.js" ], "sharedFileViewAudio": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/js/sharedFileViewAudio.cedd033e.js" ], "sharedFileViewDocument": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/js/sharedFileViewDocument.180f58d8.js" ], "sharedFileViewImage": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/js/sharedFileViewImage.9d0dda04.js" ], "sharedFileViewMarkdown": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/js/sharedFileViewMarkdown.7dbe56ed.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/js/sharedFileViewMarkdown.03a6a4cd.js" ], "sharedFileViewPDF": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/js/sharedFileViewPDF.a00415f0.js" ], "sharedFileViewSdoc": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/js/sharedFileViewSdoc.4a7b0355.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/js/sharedFileViewSdoc.21961792.js" ], "sharedFileViewSpreadsheet": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/sharedFileViewSpreadsheet.ff1ddac7.css", "static/js/sharedFileViewSpreadsheet.0ffb4373.js" ], "sharedFileViewSVG": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/js/sharedFileViewSVG.5fd43385.js" ], "sharedFileViewText": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/js/sharedFileViewText.2fe6341c.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/js/sharedFileViewText.757e8d1a.js" ], "sharedFileViewUnknown": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/js/sharedFileViewUnknown.a0e468e0.js" ], "sharedFileViewVideo": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/js/sharedFileViewVideo.6af2fa31.js" ], "sysAdmin": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/sysAdmin.feb7b73d.css", - "static/js/sysAdmin.6fc63bb6.js" + "static/js/sysAdmin.91d1d2f2.js" ], "TCAccept": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/TCAccept.05d88392.css", "static/js/TCAccept.c1a15517.js" ], "TCView": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/TCView.05d88392.css", "static/js/TCView.d87affdd.js" ], "uploadLink": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/uploadLink.01103a58.css", - "static/js/uploadLink.d3bf7687.js" + "static/js/uploadLink.8d2b00c1.js" ], "viewFileDocument": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/js/viewFileDocument.8a503cff.js" ], "viewFileSdoc": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/js/viewFileSdoc.c9c556b9.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/js/viewFileSdoc.6adf9d14.js" ], "viewFileSpreadsheet": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", "static/css/viewFileSpreadsheet.ff1ddac7.css", "static/js/viewFileSpreadsheet.77d500a4.js" ], "viewFileText": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/js/viewFileText.7b29a2fb.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/js/viewFileText.dcddd49f.js" ], "wiki": [ - "static/js/runtime.028fa1ae.js", - "static/css/commons.2c40b537.css", - "static/js/commons.84df398e.js", - "static/css/wiki.2d406fab.css", - "static/js/wiki.fd7804d0.js" + "static/js/runtime.a3d207a7.js", + "static/css/commons.44d6cf61.css", + "static/js/commons.34f4be2c.js", + "static/css/wiki.b992029b.css", + "static/js/wiki.9846d06a.js" ] } } \ No newline at end of file diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..e18216cd88f39b03ffdd348bd3eb8ae721c80831 GIT binary patch literal 165057 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 literal 0 HcmV?d00001 diff --git a/locale/ar/LC_MESSAGES/djangojs.mo b/locale/ar/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..68cd9dd36216afe9d776f43a2ee966083f179a89 GIT binary patch literal 38434 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

@0ftjGQjJEE@A`kJiTW70k-f8V=smKI7 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 literal 0 HcmV?d00001 diff --git a/locale/bg/LC_MESSAGES/djangojs.mo b/locale/bg/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..a3e838f736d2b4db725a4e8fae28b27b0f4fc93c GIT binary patch literal 912 zcmb7BzfTlF7#$VGtVWHUiN#O>>f9bAB(Uch19D0t@j^~*Z07F9y_IElGc(JN4z*Dm z6OA2-G4T%o0uj9cg^hNzrH%i9e}au~_7rR^{IYM~&dm3{@0+*Z&-c9{h?BrY-~n(7 zSOZ*q0nP$nfdSwf&QeF+x0W z8GIUC0Wl7 zpskK*%~R76R0^|{sQD79A%WafNtS9-=UQX8P5zyJUnMf6=|Q4O9*LG=Gi`QHC>Gy8q$G-*q zX6O%lvoo{PhZi0xmA$D%8X+<9N{TBPv26S_=8>$xbFQ>7)w_)v8$Zl*y&ek1re!N> zM=}iPcr!8wg9fx2di6L{JZ7~-E$D#Cv{>ruXodDZt3#3wRO!fY#Uu7z{=$B+TX19x zCcznMH{jGp;g_>$+kUd^#JHGrD2u?-- literal 0 HcmV?d00001 diff --git a/locale/bg_BG/LC_MESSAGES/djangojs.mo b/locale/bg_BG/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..a6f138aec0ad3dd26cd0af13328433d450e2aa6c GIT binary patch literal 438 zcmYL^Pfx-y7{)Pr+R?Lz*Te%vOSgGo6lV+yhD0JE)2k_?bTwPMw4FoZ*YNB4S?oaJ zNq+6y^m+gNoSuBQoQ@o4jtj@J>173hiI(mfm%i&^n)JqLlpGD56N|K={tE()L4{gDoswU z(gZdclN{E9!HqjMK|ku>@q&uHo2ug0`6aI?XDDH`ATX?QPPL#C+W%n(+L^T_!MLvL zu5C(-6FBUv(Dl80B`uR~!q3vJVAr-{P>?83M$ L;XH<*Gw@o!VcUV4 literal 0 HcmV?d00001 diff --git a/locale/ca/LC_MESSAGES/django.mo b/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..0b189e6c9eab1cb73fe81fece6a83df853102a75 GIT binary patch literal 28004 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 literal 0 HcmV?d00001 diff --git a/locale/ca/LC_MESSAGES/djangojs.mo b/locale/ca/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..7de1e971d5c64c98804a76fc73fd6ee1eb530050 GIT binary patch literal 11936 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 M++Jf=_;TR=H}GPjYXATM literal 0 HcmV?d00001 diff --git a/locale/cs/LC_MESSAGES/django.mo b/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..ed11046257bc35cd7b771bd2e8b9013cebd39b4f GIT binary patch literal 74228 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 literal 0 HcmV?d00001 diff --git a/locale/da_DK/LC_MESSAGES/djangojs.mo b/locale/da_DK/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..1799fd301042ff2d31c6d955b5af03deaf55a0ed GIT binary patch literal 2248 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 Req?1L;a7@aV$Vgr_P_s7%W?n! literal 0 HcmV?d00001 diff --git a/locale/de/LC_MESSAGES/djangojs.mo b/locale/de/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..7bd6472defbf126aa37fdd1542b30ccfbb4e84b1 GIT binary patch literal 91021 zcmd442b@&Z{r7(nEFhquC@A6uL>7dlD!7WebYv;g6f8KqGrK!7JG0KrvMh)tQG+G+ z5=*RTG`7SRHE2|9QDccFwpgOZ-h20Xf6h7g&Yjt%>Mpcpe-9{{qY5r*Ikc7h8WWfc;Qk19yavLFLceQ1bK%+#POy zxaW<6J?D& zyvymo3#Xv&Rb#`A!6B&6g9>l0;}=lnIUsJ!VHlJg><*QWm2eWA1(o0DLdoC7umfBT zE8w+I>3Poe6^X7x5-`#{CBKa_vt zpz7I7DEW#*#bX6jJdT5^7ptJcITtG2)llVeGn7A{!p-3(Nt=J2pzQT<><{J72q=H{ zfy$>DQ2ARA)xIr*O7|b3{96kZ-^ZZr{RhhZmrmW`2&>)}s@(cR#ity~pM9aiIRMIi z3M&7Pf?L2+;?1J)44sA9PR?; zZVZ(9WTery+yHm=>YXFq}F;L-5 zgbMc{r(f&TIjDFY2bGR9pyF{IRQ>uhl=~OqmhdCT@1T*V1{-c4$6cZFsT|7w?oPiF zO1`GS;czkR2+x3h;e}A?UgOjcLzTp44kgd0!Drw(Q1PtK*!C_1RsQEdg>wN^{I7({mz$u%dlYU3Uxr=bhfe(il>eO@ zt-bD0@fiRW&KRip>;rvxAf#*XmO1r5p~~@VsB#>Aq;bfmg^Kro9KVDLXVa{;*9FSIp0G3A8PcVDL!AC9Sb_RVIB`N>|UEZ5KztiKrJrmFuNY_V0tT_kuJ349fkOywz`jWvEYtO3zKOAAATZpWlV! z;5ShI?9qg*!&y+_G(eTx=}_f(0aW>20+sIHJM+7s^5p?%{-oneup9bs!)@WWj$M}` zQ>gnxwLeEdirPCK4u)Si{hga_I`@QQ(LVrg15bu3uS=lvcQsTv*TL=J-B9`UEL3^) zTIPAvVP7cy2B>_$8A?7rgp!BBEmrPF!R=93LWQ@`vB8-i2S=fQI#j-_g^JH3P;&7E zRQ|jQ6~B+2`BzZ!`2osZhvk+Xq4c{#x!VrPpIzZ5aE#NhfCr-9A12@xZ~@$6g$-vh zls~ml@ku-VJXCqFfRe+Lp%2e@>N}v?r3azHeG@7_zJx08pP=H~=_oty+6qd498|tf zgYx%asCJ_s_JB*F%JWp%6aLBZDJXaELLYt)AVyw{Wn6D->p#P@Ca18o`g#0^HAZu3l+|nPVF6S%{xQ+vlEoP{*J@o z9;o+%!(kSxo?HnP&l{lf<2I;x-tYJpR6IHzW8>Qms-A5J70y_w`0wM?GoaEn7cPPa zLB-=1sC54YDm_m_*?SQx{8yp;dmE}geCW(O9BcjW2)m=-6RKYB232nRLB($-lt1$w z4~5Fd1eAFTl)Gc0!ao-(-j_J_4N&%OhhyR0PW=^>yC0$A+x<9Op4&sI2f|)(2vqq@ zhLWQLp~|NLDqojD<@X6reL9r;i=o_I4wXMQL%DkZ_J&VF#q$HG^nMT9!;ZhO`dy&% zt2dPYqn!RYsB~6A`8VI09}ZO>M?i(Q6e@nJpz`-zsC>J|snyuFaJqHz!*P!J3 zBd7ieD*VpBbnOAW4)v~3`SW+j51`V$+3~iW*b*wdu2Ah)KdAh!aGV8|{y0=TbB@PC zx%;)_4`!+mzk%|n^GQ~J zXQ=!rhsx*4umfBGFMtO_lO8Ddo1ARpw;k+*dKb78oB)-+7*u>$LHTz9Y!9!6^5+J) z3A_s`UUx&;e;g_vFGID5Uqa{J_{Zcz67K;`=gsPshGy zya5&dw@~S8|7)wiBUC<*fLp>n;O1~Vlt24B&V`EaAyD~I2WP<+sQCRA%KZya?*0Rn zPanY@;TEUa`n?PEQCC9gS3}9&(NOt)1>70_8SV*Rf(oz4={CLtq3n-?D(@JS{bL+2 zg?&-~1^V#ca5uQg8Frpt4%IIl4AqXD1yvr`!mjWh*ctu}DjhF6^EaUKS0gFzxh@fy&o2o%&)ZIk*uj9rr<{_YLU7&Cjyo zmO=S99I73!fC|47Dqm*7p|HW3Uj)0Mz5=S8ZiTXcFI0M;fJ)a(PW?VqethHfH$U6v z*Y=L(Q28+ls@!J4GFS`c-|0~KcQKT`tDw?-1N7lNQ2FyJR5<^ElG87s%B9me)_q?% z8uef(e-=Zg^K<;T@f{@(zVPq#SzyP@1Y02R-_L&^WEQ2FwvQ-1=t zLH(uE?|80_PY)>n`oPh!3@ToSLWP@v@;?O?pXG2{cnVZ_mqGP&H#q%Aq3pj3d%zE& z+L89>+4|ED%KhF@?hk;9=V4BLgi|*|<>N1*;(eA=Uk&B|ZH{Z9>gCf=>3$!U!%v{f zYv=QA`%nfYm-|7bYdTbV=0K&t21=e9;P&tssQ8@^<+F%|4gTU2vq(ofkWZRP~qJHRo?eO<;*z(Md`I2dko zv2EY?fn!lGf|9edq1vbWp~~+yxFhWPTU##%J5GTE(2qlzpX~InhKk2pr~fV719gu} ztXxz<<{259f`(0+! zu_qjfx*qNYFM`Vd=b-Gr2j#xY<+lFr1{JUU;BZ(C72erU>HHJi8NLkr!XM#oaOW#* zyr)AG9#nZ>1eGsW!yVxLP;&7yl-#@yRi2+f$={Dq<=OE{tG_jr{!UQ&GRWyqhVo}F zl-wKyRZps+>emve_UK3`dnZE0=M<=Vavq!muYpDns^;1yk_pW6P3+xCbZ-0QwpLe0sw<(?; z0Qqug4@H#pu&3tHo%{t;-9*nIS0HGO5V1* z!OGP*sC-L6<^K|=&cZIJmpPv3cn;hW{VU++@J6@=ydA2Y_zRSrJOS0-eB{(WL*@U@ zH(EIz0cAcFN}dKQU9Z_Ee z74A(?_V0sR!M{SedjU#bUUTX%p~~e4D0e;oVEr8oJEI;8RnI0txj)3|*Fc5e2)Bku zL*>)yQ0^{ryavkO+no8sa1iQeU|0Af90)uA(dO%DDE)Cz>8XOsp9N6)aR}@LV{j{& zf(q{_I0c>r<=@j#?a;Sye>nVR>+cF!j{0OM|L=tIe=St{{tA_EPeH}wd8qt(8~U(4 zl|uG+fr`&ysQ3(n@~;A_Kbi=YKZ~5Y9?IR(Q1*{^JRK^$3!%cl0(OVjI??9#hbGS8Zf2-xTQ2GO4Ke#*0!GoaE^Ehk|UxF?0RY+6nExgU<%eU}g)MdBZ zdU`yZi28Eq!?)l7xcQ%K`#uy({;S{!n1W}*OW@aV_#KS(+u`4xt5H7LzUZb zDE%s^{F@E8hlfCwUmhy|TO5yr-B6zdWquJ<{$B=nhBv?i;NM^j?tGsux8tD7VHK3S z3!wbH1S-6%9q)1cCsaG~5mdQ<4Q2l)sB~?1zs>L7Q1xY;V;xlap9v*z7ej@2HI)17 zpyccpsPx|nw}t-Ju;a8ba2o3AumYY7_lHlxz2J@y(igx3AtK;y@er~J*TMy`_rtcG&%wh`Uk}w@ zZuy8cp9<9vTnc6WJe2vEzuNg}9?nC3BisYFf0VL@6;SaxA5MmUhgGl_LboTZh2!95 zQ2xIH^X*9Ugy$NOZZ2q^1R!rAAqWlPdW8#Q04Ri zl)W$DO!z&V0QY~==KE<-<#-?L2p@($;nQ#cd=K`8TT`jFfFofixEJgICquPA)1ksy z2xaeZ_&iKP`8)n;D{oa$;Z-|zJ(S!Z4VA7_U^jR^H0=|VJgk8#|7W4(?0u+sdVjb1 z)C)>~Z`chU0A;@hj)KdfXqzpWknL8W6f+zQTsK0Fl8heta;3&)}! z{13|-D0#XV4ub!L-P-BFrlb3FcDy?fD&6y-($NU}!4-c1MyU872bJ%upvvhwxD$L5c84EArNev8%27wC^4}3EoJmmia|V=u2SL?` z#ZciL2^H^^Q1LtqN}exd}W#?!SXd-qn&yJRK8U~xvzmf%tP5b7s~x=$6KM&@c>l3Ux13whfe)7lss

!GmG@MqKhLoisvMU=g?}cT3a@}l$NO-5_$8G4E^k?XdqKI|4a(g_C^?z$ zSPzw7E1=?Y0qhTNg1z7~Q2Fs8RQ$ej`t9F#^}}%h+zj)fP~nVr`jepKYX+PElTh|< zfP>+!aC7)7><8b53a`^Uw%oRXO5a{k{!W65*8-?~Z-gqBW1!lV^Ps|84VCZrLiztJ z+`1j(V<`VVeAkW>zlN%JecrSF4|1%4%7^Jt`I3Rk-xHwX`CG?(q2lp|Gye?sMcwIr z8}1M|0QG2C1{XoKJHLc#|DJ|7!9gEbe_nu+_jlkHu>FU&UGEH)Z+k+?*?!Q6v!TK} z683>-!!6;>P~~+GRQw-Rj)CvMU7`P_HJ<_%pT$t}cnOr;-3C=|cf;=R0jT!*IXDM??acT8 z%FgQ#fK&nRad;5C^=rmlu*)|#osDoS)XQN{crsLYSHf-KT~P6T5-NY+hKfg*Z*4q! zz->_XhCSeLDD%m%1DpvZcXQ#U@DQl{t#(X7g|pPDPl3wUbD`wrGMI-q!K>je-`R9N z24%0$_tw8bP~nY&%Ac`N>DU*_{{>L-Ujil1XF|!xZ=vFSA5^@bg9`UmDE~f!BjD#y z?gso|{T%@%?^7KYK=~7gyTj#B;r;=t9z6(^PjA9u@Ea)q%6_!|jE2hR@lL%6Dxd11 zft_PI5 z%&{D1P>+U^&(&~8cq?oVpMvuDSt$AX7nJ+|z@6axQ1a2ST{}|_+d}2bASiz(L$!<5 zQ0`Yk**_5~{bxdz=S5KE^hc=jyBo^h(@^RCms5WX6`$|mJh%yq5R$_Kq4Mi6sPrEX zmG37(`FkPk1+RuX!+T*L_!^YGpJ6w+b^CUvoclqAI~>Zt2~g%!o&F-Ia%q4{?{cX8 zJ0D7}e+QMm+o9ybZ*wc`qvFAzI~wl8w`~n6;S@pg!1Q5sC-)r z70*+l!n+j8ziXk~-wNg515W)ERJ>n<3jafRI{XQ$JWt!SooTPHhYIfnsPw-BN5T)` zKG5IH=I3Ild~AV=*KeT8{f|)L{|yd-FT-K5)8^J*1ysJwg({aARQ|4jO3$w$f8J&M z)WU1FXlK?Lw(8W*?1xW>3il$YcHk~3e?EbOVW%x^`gVu%Z!%OrxDYB`N5Mhx6!;Rn z4ekQZ>}=z8J5+u=0M)*{4t@Bw)9=}(ou~S`2UPhV1QkvbRQ*^5*TU1F@_9~In~yb6 z`Cku}pG|N$yaq0YFF^UT=T_ET6;wSu6e`{^xCv~8%HJH6|G$K4*Uo{;|LdXZ-6K%( zd;_X}Y|3Ct`L!EVJYsMROhdKPS3~9Nqfq7ZE>!*c8cGg-a_a6(e&xOwRJglB#cv;| zdOicn{sO3cJi@70LCNFAumxTN)gJciZr$w(B}e0-^8H{axo(7t-*TvOyaY-v?}G~W zA*gWw0VV&hK*jG}$FHE`(SDnD-r=w>l)U`{DxK#*g>wZghu1?Nz68}?`~Y`_y|=ab zH~}i(l2G}5xzoQJsy%)KDjmD_u>R}|N1#3&svORO1K}M|a_|})4Y%3Ox|<63LLGyZ z@V8L@z6w=7{kFH|TL~oxhd||53Mw7PIrS+}<#(Cm@1W%6MyPoI1uC8|LFLaEQ2Eil zrwzx4@^4=#chjKcY7tcVHaYc4Q0Z9>RsSA`O7GWjH#n%5^>;p0`PV@Cn}L$|7B~c+ z3TMJQp~`WK9jy5_P~qP(r$Hkp&b$%IzvG<#IZ$$QEmS@D8(dbcy{AVZ+sC!z9tIaGe1 z2bGUELAievD!g}~?0*X7|0X-xeCh?I-yf>o9}U&c><^XR*--ge10}BwQ0e$Jl)KBJ z;(areT-^)RkNyB9A07JGdbA~!yB(myDTk7;iLeaLgNpx3sCsvvQ(py@{(GS0;7us^ zop-kG`$5HHq*G6DoC_7N8mM#}301zwL&f7fr~i8>|L=y1?;EfJz6T{I1ALp0!=c>I zgtB)yRJe6e?bI@;_@4n4&ugK=c^XPC{{!XzQz*G=-`B>gCsg>mLAgHwDnE{ZDyOrd z())WTdAk?N-#4M;>l-NhJNC2f&qSznUjt z_C`X<^?0aqkHbCS@lfvm43&=Op!%r~pyJzc7wg`K>Nkf&`M*C@el2u70xBIVpwf3b zR6MV8>N}w1_6aEW&q0Ov790k@hl<=;;IIh4Eap#15!tIbazDn8}VhhyM=@F1x2z5uG7xex9NKZ1&9kAb$`p9Ga} zd8qdN3^*J<0wq7+!jZ6BnN7z;DEl=~_4yd6cwY!*f3@QpI2!e{Q1!jzpmt_Gcpy}{ z#GuOYXehb9432^?LHWDYVB2pGhLXR-q0-R;<=@p%{yzXEf8RRpw404*C6xZ*P;z`c z+zb95DxPma<;PD@?e~BoR&Hm*a@0AvH@pHWyjP*(^&?cf*mGz*v(7pWD&Lks$^Dg3 z?jC~5m-gj0K3$-~8v-TAbD`2-1C<{qK!tM!RQcZvC07qa)zg1Lh5HVaymlF8#{+$! z%D=zk5GeWG9ZFuNL5&*@hw>)@O}hhUqCOt}0zLy3?*+rjk9O2=sC3;k!s>qor=uP< zvYl6j`7w@SlNdybUgZ-S@QlnS=+UJ_9OWKY%{`0rrJERkSnjf$j@yP~QQoVeh@# znf0Ax;GU=-f}28bZ=3&{L6u(@sD5L6sCu_ERQ{Gb^?2AB^#M@%dl*#y9szy05~>_7 zfrH>}PW>vB9DW5Q-(APqdB#9E5p^w8yKo(pT-*+?htIC`f{}6*-+(m4U|0n2}+K-k8kJAg|lH2u7*l~*9le*c7=-P;ZXjj9h;%@ z_gE-@S3%X=^P%$RRw(&-5z5_bQ0aIV%D?ZR%T!z6r$Uw6O;F|e3M_-)LWR?BnjObagU_Nq6%J@e`@erX z53jsmO(%T#B#jDFE$`nm+Ig2_@3Wcshx(jZ?acX$n`YZ^e|JDTa~|t4ct7?IpJUsR z{&Q`(i=pIr6;yk69aMdJ2P*$Qfa;Gs&a?Sm29;msQ0DtUwU-A&)vLpy%Has8e9l6( z&!<7vgLC12@LG5fd=FN`3G=NSTn%OKCMbW`LY3PiQ2F&wsQ7#eHJ;geftB~+P;#_4 zlw3@Ls*kgw^1BI2o>#*P_&QX1?{uJbR}K~LF^>B}#d``=do&ZOekR~1a0OJoJQ^xK zr$B}Cd#8Q@4n+M8)Of%@$mZ8vsQS|geYnc0uZ7C5`=Hv5m*D~ME2wx+UD(d-Kc5II zQU43R0{bj#=lu+SgsPuE9&Fq1xfhx}@q5KC{dahNfM?Y~U5_}oM`QPX=Prd_ zUu$fB4|4iaT!C3H*b}|q;pXqKi;K%ks1ve--qMJh&dyx!2l9LbW>i=2Z`?O(R(T4$B$0`ubB4d9)P*71F*9P&vdiiFnA{FPkA29^EmF_F6_&Bj%MT( zlow#Pj$79uj-%lPxZfT7zeN8>?%R0YAN@CFk?T^PzsJrK+`2koJ{`RQ+?%1-jxgUr zzYFSP6|TEf?mJ?BzjL=6<}Ywxi2i)I6w(}d+vEOIp8t(ra4o{0XPmn{&ku0lh~f3l zP90`nao3bk?J^_;-oqukdLr=1C741AFL81(vL zuL?U4%3|coV*UuXt|#Cd*t^%McgEde=&NsjOBT2WqNl#=YwkUG?m#%Yw&YpYHIBXU z=Odo?#IFkUPeR?<`P&b^kNSMfPv!Yl%ke@{M#SC4HM|A4PGlX_pRJz=gC+Q z)d#)JD1&R@=1xD3;i;%~J%Zj}xR2!S<@BUK68}zsYtX+0UdFvI=6~jH;9iaTO3a?% zzK!SOvA>9CUElGni*DX~n&&leckZpw+X7a?uJCH^HJA@Yox*JkYF($Jx61h;^(&F* zg{UvW?kCvojeY~qYq_6tZku^NAN_A&f5{$qf6V^H<1RdFocff^(K{YHx?(&(%X5?S z<8jO6{t3NHx%WeFAGi|#cIVEZ{w?aK;Y`$% zj8C*{Jb%mc&zS9i`+vZXx&Mj1Kf}K0b>sPU?pv@|&pm+q4(|S#&w!6{*Kxmx8t>T0 zq|N6!xERivarmFm=!J!(Gk6<2H}QNw_bTqcVzx7Ob*+#`T#s^VtQJTAC+^uiZ%LeV zb(9)=8vAbR+%@3meC|z9=g`-9s`TpP++UBq;A(N<4RQXQf%;~iyJI)$^tQ+Tb39+n zeH7-m>oclfuGVm*@O$pD zJa@y7d$9KhXX!{652y4hG5>)36sMoUpck^Cb%V9&oeOtza`h+d9gN;d=zYO+S9m?@ z={)Ni!Sh|*^{9VCm?O~pJ$Fy^c0qkO_xU_Ga$m^vt=M}7^MjrHi+SFGdl+V4L0vsC zTMmaCmHqiQ7>yrGxpl3^{vWx2%kv2^ft&wu--UWB)PKd^E~uCB`~!Dz?ZERwr%u8X zoPQ&Eei8dKxy!h9)uI=7&r*-(c{TRGb8fE1d?%jI=Dr*AbGT3Ad2{aHVD}y8wkLUc zD|%O9|6km-*h_QY!>#KGXK!oloQ--S)YTQcx|%TmJ0tT8?@Ycl2t;{&Q&bfx0HbuW_5<`FNwl7zw>wxP9D?clK_H`137# z_oDs^ce;j0%&IY)$Ng)}R$628`y1?xLT^v*t`yRr;f|QR#QkgTzoGsU_oX}^gZruQ zc<1luJa<#UMy~s?(+&HB;LmUmXLk_Kx;Ev01~ZlpyjRh?8uca4OyYcEE1gt{+7I%*OAL#As{8@q7mps2FH*gFbh@Iiw?TPP6=sm@~C;Ga&z(egL zXN2s-<4!%nsk87!-00d4KF>WJy=trF-Gq89&nG(j(jJQ5HiW6`UhYj%pUfTS*7X@2 z%>6f>FLw5%zZHILhx#Iz!~A9RW=H%z1-*mO+my6y=GVc^5 zL;XB0Le`oHcJU64a1ctFfzVGW?NyJN)QD zdA)(zqdY%_*)TZA*wXnf`*0gPFH@SbuUC(_o_fOc}-}xyw!LQpSfWQd<>PA9T{b263ks}p`K-jGZW^2%a)EX8tpe??;~mut>s<1>=!szkaj zU%%3?sgGr2HTgs~=f~1Tq4b2435 z;isD#suS5Eep6#3fu|CAJR9O;8mf%X8JuPPTuVcBCY39WRVr4KsL!P0iEK1J*r{pC z5_sNEXY$F~WKAre%qT&D_EKVPb>a!aO~eOzBm9MlSQa#7()oHnR+r(qIgwam9!L4{ zSPKb7chqoyBG29!i%P#XnM(M{92rNdNK7gdiznjceq}b{w`7|9T$6ifjuE4LMtQn4 zL1y5lF;X}Cka@2l#4Ya{Iq^zsca$^Z}Ah$lDT}2Ot#L*MABUDRnDGHW>P%DK{`&KCJT&DJ{sfXq4ms7FL}MnK56tGZG$y>t znwmr-<_3v)@Q^hRxtw2>spC-@>ws&NOJn(jPXJjz+0c-PCsC$a{8%kz>t_>nBqM7| zqufUXo6Lv5Z1jcck#N&RYf+;*11AkgNmrv%KY*MjQm8{OjvMt8ijD%#^ zJkHA2#nQ>;CUr(*ULxCID+ie!C!kE)dZ;KF8zxousflt+ENe{K+%bAJO}Tug!KZRG zBy*Biqg$8FG&TASg>aK4(MuR!Dm#IySfXl{na6CDCaFkF)U9WQ%MCnlS_`=M*4C>CyU3QR>P1mBl38j%V(FGl znpP`ILDWze^Qz-9;|&SOG^O*@FXOZE6_>P&>AHlUvO?lh%k!CRi=U%;!>x%L@d$0x z7^FkX)QwzysecMJ;V05H*_K9{Drec`3-z8_Tt{;9^)%Kr0(Hi=QK$Xkswjygn_?-o z3PVQ{)eX3a+8-WT&!+JqMLsKpn0>;-m~HxSW7{Jei5k*lYOjiy=u&x=*c`nJ&6}FD zh(rgil_|Q=BL$pEw=`s$a;B$`M5^p;?dDHj(~-oWEg92PUc~RxY4hvfcfL9jL2`cCs50hUwwx zb{RX^=A;A$|aX0Yf(!^r`S?Hsljs8lF^A+nm`sQ?-?aiG|4QLR^9S|vRt-i5apBc zlMJwPP1R8|+z-lmfm2hDqsANMv?h^~55Q-j;7u^Y0|$S$YiLW=s`6EC1W_c9&LWYj z&txb?`nZHQK^>0$WkArX+bJ=Lb}r5+*F;xG=gDNj_=RZNp@>vjqnGvPnZb$CF&)31 zj!4r?)7(JkW4_ThA(dq8L>yB@(VLJ-H8l{uOhZFcI+<_rC)u$uI_cVEwjp37Gi;+O z10$l7%;3IARS_CaOV?(ys&x!t11rgbo`x)0#z2&~QfFs9{#@0VIf)vkv_vzLrgrD; z0A<$9s)e&APo6em68eoT=7;+4x+`j5gSxAHMiD@gRxpWOiRdI6)dG7)H=C@h z&ohsx%~BB)4VrgN(Ad$NV1{cBcJLc0T=54=J3|XpF+ZMVPG!fX;V5VbrJu`dgoXG7 zW29u>iF>Mr^xMIt9l+*ebxtE5(60>Q6!#~q;R+2*c%e#-T0voEqoLAHP*xZ$Rux|v z8o5TPRPC>D2G+VQh!ti{Vx{^8)l8!b9j-{Pv@&RQGRUZ#@l%-UkdfetriUN}&LqrG zr=A_l*H`$V@dCRh5ULvkV>1bxFn2B{=F!e{G_G_S$_(GmJDiR>5=|5e4Yi^n*EH6% znQ6yT-b5y>Ev_4xNQ+-hql_liSw9GismJBs#6)eZDU}ZxxG?J$Xljt+Gf6k%d4X+mdvS%v>xmicW%^d61z_>88R?H8V0_3;ZaW zAv=3v3+UAIcAXGdpGTt}JkO__i#~_ZcO%wPZ>+dFKUF}vNL{gG2Q$V>CzdhTQtv@M zVbF)Yj7Av=WxQD$3K*G>IukzaVn^y86RgBr#XI66$-oz zs!)l#qzZ)|+nI}gSE3h)g<_bi$tD|3s~LHYwwAK9B%f)7j80N=qal}rZzfbh9h+!6 zRDUA1RLfsxQeNRX-FToIOd;um+g_=%4(OM0nu}Fat>!gnhE8Uf!rYLtRy{4JTg{V= z8rM%u%$Tk{w$9;~H!)MwWb1=_(C|l%KD~xtOX}1)1eQo?COwepbX}T}v{NieBpQRs zywhSJq#2=8g$)IG)Wk+Bj>4!mb|Ve3p5sb{ZX+AJYNZCz72&0A-}q)}%5`aqCf#(ZxoJm$hAJ zfvq|m>69o5*9^KtEJ~Zm%6GF66%Z*1nxsi8S@HoRt@cJX2=Fk+oJJF= zShj{KPn|a@o2Az_zvSdH3O3TixK7S!M>~zE{#=`Rb`8?>Z*~k=c=XkgR^WL!Eztxk zs#e2q)vRv@ePj&rTc+i32Y=Esjo~LPW4&Cfux3RluYSY!D`x3UwT@LU+jp4NLoKzk zuAPY0)HAK9)r1NeDw36$dYpz>xi{IgKn^DRk%Scq$yd=ds{&2s+v0{?U6Db=DUGY9 zH5zy^cdb1nj75)@oD9%m4V9uiHr5Yi9*z3+zwF&lr2qW zn{tcgWRUHPon<2Ho(5I$942s3B=XJ^+rSJcGaQ7d7n0{}tgr*lb?8SO*w&o@|0nS> zQ^Fv#H#$>`Tt(w#3^pcHjYXT*sQX~WV?FtlquGdLo9VTXj`axJjCIRexMWhA>u!#@ zLTRys`XHL+{%p7Ypq(E#2BWFUE|HC;^f!41P?K?Iel)bzHi0z!a38^`HH)(*+Ocw) z^G)Amwdb47xac!YPkA{Z$-CmsHK!TR&;V+oz-+mNnr>V}4UXH9NxZ_uJ!m>v8)wE$ zEw9nsi(ZKa5X&^N>fW6CPu@tf;OCJkpUZ==$diRq1%fo^8cFXl&unE^LN5omK^A><4+K*el&cA1R+u&pu9Kh(DR( zYHenjzx(jrY~MN~S(DA=GR&wa#Z5YlCki}Ul(mBwV;3H|VULAg&vfoaYNlAP6JGFO zhWG`Qf-pmc>R7&}zMx;IAKsKyrka5y+lXXL&L5x2Eb*qWS)B=1y1XgT%_|9ZuywV9 z4MlCb7YU77F2zkU&JXh?`x})Iqirg4Eva?Za^94t1odtzV=9LI-qb{@(VNQZDnDkc zE}%cxZrO!uw?dHfrp@-I#b^5yG=DIs3lbii*)$sASpx>M8lI^gaYJDyMQ*iM`-xNz zjyf?P8)b%Bk5$iKomo~cfAdXQ)lg%dMP)N5)Am00wW)?{8;oxTo%oPz zN!Ms|&Q=8W{vrYe*WH**$JIagX`s z%Tl>zX3P~>kSK??jlvEritTD?T-%p!bn8t^GbrX101t5*dD|gq6%mcbCOfJ_`oqzl zrX__zzMXk#lph(dMxWgnHDXE>H6Ye3s)}k-P|Y>l3cei*hjz>?Ih;fl=E~uT4m_}H zyks(!-3)ta3G(%!fhka8RENLh~}93r0JSm*EUg1ZWY<9 znpip8{FEh)py-HBm1cqV*AEu;=CYcVuzER=u4|Hv1rK2ruF@$cH(h z%p=tt(Q~q@s%FKsG*)h_GVHF|l?E^JZ1Os8bj+F-MkFLt=j-T`D{RxhX**5JYlLCj zBMfuij941E30otloLf1g%4b2jHdz?F zt&0|%ge%yx8YukAx)=x2jF!$t&dzY)r{HF8Q}xhzag^t=sUzzLCYL1b1AANr7s2+W z$ziOSo`Fz>OWzJ2LX&Wy8MX^W;}x@1p}~DJwX$S}XX>sDG@j9+KUHl;8m}LF zL7sB0N$5bHRu6+9!oIM1PS(+2u(^%9~Z%n&n%<43{ z)mmlPdt+RpOog2aW}(84SgEXVM8AhOtzR ztS4E=cDybG0o!D>Q}lSUYJgIYep}vQH9%8sO#zvWk#| zov5h+1z8KN>o_M1va)X0$Z87W(UxAMCfL$oKw@R2$aRZa7%LJj&V25n=V>0GS$NfhxH(i&n&jh{2;S0)nZF1#(bepEkt8Bsg*+(sE|A(=PbRL^S1Kc zx-_k;k;;O+D4L=0xDi;9o>Eh=VV3?2+i*H^(#qJh*KWM;%`~q#Xh~384@8WiuGvX6 zjhI>JNv0{D&|1)rhZ?rPX4Teuvsg|G#s%K2G=G>S{Mk;lopKH%(V;xI1m>ZJ>(g87 zyEdlCz#KGdt<#nt_DoudC#r2`NsM7wtg(^SDOjB__1t67Vm1(w5CVOH! zI+4tngDh@JSmCk!o2GL&FLngu7?K&$bpu?Zr56P3K_pqReRtuBEt&AhQ)ry?qMJ=c z3OB2dnq!*=HEVxe#Z`wti!}ra{K%$Eo~@l(ECmPE+L&r-*y!40dkBJEA0%aI&WItd zbf}rgy95m8IXa@|zvSHcY^E|X8b!0B9ZE*y3xd#GI*%E+3H*fh%i9N2+Bk z)0l*YEX9#0BeY`Mpt%#(-@Y3axV9E-`85V-{+!RDStdO+ov34w$$(hxBuPAB@k(GCNT1C- zn?%`RS`pf5?L*tHlV(|tmQ$YTl?*!<2xDp|rI7(-FgR>wLx(WJ&0w?n>&n3OUuu@v zFbLOZqN0Y7*~Dy&-5Dj8(-|um;U36jh2+k#v3f@26&)hXp%Qy`j6~Rwv|r^KdDHU- z$7w>%jOhrXO6sF}1>T?FAyZ3w=&D#Y(J2XaTGAu}0fTPZn{7`_2P9T*6dCH6oy9;^ z)UX|(_RcfEYWSIP#CZLo+zb1k!c)+Tghs(I*IKcCk1@1;i)+>+IzexPmX2CCyEp6H zCU9XWxvzX|!-koZGIG-`4vQ zLV5Yiyf7_~gqO19Pd1(fswrkO z#2MKM3dc~b+O5BYim1b2FxV2>r8z4s+T^UZ<`{P4*`1q0+a7~*w3Aq~^Q*|MRPM=w z9CFITY*=WN)@+Wl>u4v#Grfwa95QD(0_3Ux! zycEqbBfUA=fV01ak(1H%OOFj&T_;wB7RqSPZjM_|%+8udZUgn^rhP>wT&>VbHiE4K zR1GY1+w^EdNyTIsRwkzo3&WVA3QEJN3qo!N_Hz>SjrgS=vXYbJbIe;x4#DEK)pVnk zIT>WcEMnRbus2sL+WMi!yA#dRB#l;&&OmLAG1mcS9^Bx<9G6z}eZU;Ex1;H|8R1FK zO_yCMhKG$kx5*@O=Eose>a&`WQIpds9$-1m`D8h9H2&C8yoO1pmIry{46V2alf$TH z=-yaiZJQ-}EqggT)*l9Ffr0w+X%pKtHp}XPNpz$Zh9Mb|LV0Z0-rTcYa&`)q>OxC8 z3Y6kNlr!SwUbtpd&@)jlC>2VevZ)GGh13LHAtr2q>W2v{0|mR3HOa22nU{0r8*|9W z8@krIkp$eS{ziLvBPv$kKAKl#=GrYSw^hpVYBo`wH0o&rRh{rTn!sY7F$<1L`g7RG zK_1wKF#1(yx^GG#@6WU)l`qs{d1iYYJ<&e1NyjA77Mb>R%rVpwKT9jUoN^u^G6X6} zPCjyY+eC<*bgz#arO7VIypm(qCJWk5u<~}P%1i`|VbO3xZAf8=OjJzk;^aBl2UAZP z95|6=n$vDnQ8&5u=9;}I^Bd%{bo|MjbFhYFDO)<$h91L}{(=@lXdKPUgb!4Hqh$`k zsN_S5at0bJGGlPZT&-oJM}!MIMrt0yZA+qU{500=(8lSIwNA8+1(eZ+q=F?Y@Uj#4 z$G2Gh=-kTqFAZ%(IYo7gON-X*B#+j)>1v~)gbwUl9qp^LY1BdWvW|_G+73-x^@Ciq z7wgT{KKsnrQhx@EY^V@uiGswyta2DJ(MG>{AIq5YVma#_tWdKRpsAlCbAHM z56cN8Qi^|d0<`}UH)i$7#RUtMVOeNI>nv+>`Ew$zwoP9CJb@iHzy2C)Ci-f-|S8W_Y zE4F4ARl;FP*aah4(KysFe$$*=>$7&{Y8@8b5H-3owgH=N=r0Loc+o0U$)y|Y6`R@f z?i)TQ*viv395TzKT5-CJj=MAt#n#(4wR0TmSS)Qlas^akJJ`q=VFD^nYq8ln9jdyn z!?4u>#iINQ{C9^r*JHL0@6GoK7TcL^@tGmTsWg`p%!(*Ed&s=RN3(H)A?H%nWeqYj zFbcA%VUR0_#zdwu#mucJmZi>0jLlZ9UV$j|0Ih6js_@@SjGbZ>xm%CG6x(hy3L7ad z)~Db^YEfPkmaEra>RC5GDrzW7;*>Q<>KcRNa!B!jGNXzQVzNbRqw+;h(D~q^h~QYm z@i^-qZB(AnRGn7abt16R%HQ?A6Fs1$jbvudi?|wxt^4x=ZH7SOLe$J*!ieB#pE^0Hy>cyps6j7&z(NPEqzsGidDHnr*2Kx+dj+(d&Li^|QnQ zjcGc^(9Sfhq}_DG8?e)M(b-qWBUP%zm(W~UYOjZ1THZlF^ShH+01Ro_T_b{v@XSE`clY*Z_tievN=5d&m z_16SiyqjWwO&iKgAlN^er~P;R*twm3WE>eB`XB@fg%>U*>M9>9Hwy@SDk{mDvif|! zF;_8cSk9hlEO)1&%Xzgzb2u4eI%3a}VK-n>l)5-rSF+8aW%xD`u2J#I~_q-_ppbUK%5%Ld~fL z^@TIjn#*&vBd(c9vZ1Mg^gVqS~Z`|-Rm9Gur+qQemjpUJXGKy`v` z#kfC{A?dPVm5fR2IU&jNMQ=Wm7ULh7A{3Xw|nVw+p_773y$ZU7w*b z)iFqmnN)=Rf{TYc|FdDg%#l`eAo_pcMd=rMTEYQpkS`_i;j?IEBZiJ-QHDjuD+T# z5482oluxyGLgnmv6Q)*L88x%Tu$?9LK~t;Kv*~b;tj2!(fkmQZty%csLwEEu)(^8f zWlJ0ng3e0Ewz5sMT6S|Xr+K8cA4(3k!_!i28#O0lOK1|pdLEpw3)f%6?*z{MfAQ_V zl1K$bvV_mn+4aDnXE2SVX`e@!ZAv*Lb*AYG&#$?6Sfggxp?kHXRQhNgoVE__Vtwe; z4FqUX?L;GHUZY!S2A`Vts*7+hZwE$Z(wkvMWY;F6Z#FPw=3NWU_xWxQj%=cO=bL#Sy{~6ZqR&elq?5`;UPkh|$vBel_OO|Z@GUZbJva!!xwgl!7!DcvD@b&G)({iD7e zVum9@vJe?oe5@M{Q=;xD8--@AYMD7`Yl=pZb{mMVOxpgNxP*%t(RbU|?U`A9(1uCQ zzRfz3?OV6Gw6VVGc&5fTjHg((*P`Q+M2o)tsk&hrC`KUDCb~Fm&^Gq;*&+K|0r-d~ zzkC5BJUDJu!CI761%p(pGGiJq)N``}X_)DOJ7Zg{ES?lm0SeZu?9sSZ8pRWnl?8KK z@uFU6I8|7o4?{*S>kvOd(h~4rHrn%EZ30zDKw| z57?|+_oowN(&n4t>M+$9xb;EPjz+gid8aUZw|pHwXndMTGZ?N>{c*3EELS)qWOelA0_wN(!tLM9Z>-D4^nz8!XJ0+sV|Ozv z3pY6m6n3M}sq`w@WHWbi8d|?5h{%UDA_~R7bZ^7ysDBGg?Wjd!Wp@?LOSnZ-?Z75S zvzVQP4$VLsF<9rg$p%JyO{HW*Uth8_e-Rw=&KUSed0ZiepJMk-@Y^$G<~=)Y&nha~l+W-nUf zVdd<`I5RO+@2RyzJFxh_iK*(EeKpZU+*W9nz)JJ}4Ts&SL~3GHkft43Y)nl$)fU@q z&Ux&&C2Ly*^PN~nf2KJ`7-&1CDtTdQU2HXa)Xcao_ZG0Jk>Quqv-1hBuROx>e-t9wC`^GpbtVa_|Sbv0%)&)4^l z^;sC-_A%0$=!)EvBIq&nY~@zk`oiVx;1HHm2jh{7z(Ny}YjapO*wcx)Na;gCrc4yc zHmcTv^$7+5_8=-{9G)<3eSTEu5cz(ZJ<6{EUC`juj2^+u9@4TMNMUXrEZ>=yS*z0K zP0<63-X!)G($XzNaqJ+T9Qo&CK}%g>DE36z&M)}(WQsJfKA=rS8-kyl+x9eK?p`hCyWeJ2+V&Ua)LGNWndLmPOYux{ zEK5FyuTk68a@!p8$sp4On0;7DHCdtgQ(5qKG?k~pykR%Up4+Euw{HkJn-p={zEtR5 zFp$W*_4pQj4^!vS@j^#AGYt%BbS$0GOL2@$>#X3zVi`hft}nCWe-KAJHa-R!YVuNV zn*aQuwJPidCqlsg=Yu0DbVI=)-27#YblLg@rHh(-_# zrLH6rrIkiY(z2#`i}}X@tV!u?mR(mUN_X%^L{Z9v_aj^k)W_&Z3&$fkqi%e52W8v~ zv9l{$0sAxIb@xv&1Y0xjfB*jfZpD^2>wy)CoO zEQr*BAQK8&rff)sDKsK$OEC!gLs6J7C|}Ga_#{ z1WgiynV;HvPBmtl>g>OUXl5i6d56ZW=h~(!p*MItQz}pWrkQv9?fd`h?^MI~y0Gh8obl23sB-mG;UIsN1L`(SCZJCwtb`3Q;}^4V zMK#K@1*2Cx)Ht!ZP)LIdkVFJNwn~OO-i(#1lAh9uL*eDPqU!ESLQ6e7^VWPqSSEJxaeX_5bM{H?66Sc;hHFjQVm);Q* zg_4yVMTX)*g${<(X2@qwd6avL_{0l08(u}nWZlupV399+TGC^@r<;{V{YQ|Tp56bO zh+4~e=8X#1xOj2*&c6vZIx+K9*q(V8%DpA#1qBjJReU~*V>S%=qzC_z2Xix#H=Sa% zNn^@r3>LGt#P{gTmtf5Rs7*_S7bI40q>oK*{R7F>_d#6~A($^qd0OYORo-ow zOO!ngq}h)2j9_TLq`0N_)|C;Vez0rCh=zSDj|nLM9)lxm{OCAE^ zGgYT(dyzhhy1pN@)T&~W zVa&-nyciX-m1ar6t_BqAPqssg$O2Tc`HbkNIHod})mLbXt%S=N#o8<~u-dx96y0LG zoU5H8SCm2fY+7eBklmY%%?NeSb_N?=+97-XuY4lY*XJ~7JXEp%hp||%S1uZDE{iZ7 zG5;ZnF31iQ8OTK5(`Rv6-^vWUcjEy!&^Kd#y8#t^LQ}^RrgCy(sg8p1^(pG6kvt}C z!9d2;2^N?OpRQ7yQaT-1zWsj{;R89a!htLo2Q4HpT+Er5vx0=H!YCWVxt)uznT}dZ z>czF-#_>wCW@tVpU$XxwL38>AN9L3ZW7Ozd3w8y^ENw9Uay^stn18Eg)-LQ)H;c(M zD>D%x*BVIa!YH%~+5x4X50Vq?To`8?^mgMN+WPF4x1(_~2F0;5TK`?V+VFmZaSNsl z%9j7dyjqvH8y}xG5@T9(JDUB!&8sk8ZFs-IxT%TEyZt*_q{67Z%@)cwE4H7pM@|2i z^SEtKH<$|Ntc?u#U&!Bed%nSVaazbU^fs4>-sG_2M(Xg!d*c!)kIbX3Z$*`FBRo^5 zN?Df{-GAZI#ly<2jl>3BH@T0MZ+x(9<7s(q=(PAyw>?s!?Qp(G(Mfyj+5AwxiJOcM z9p6-!8#*sj;dh!nYbbBtv1h?M+~%v(oEjXl`_SS1?dcESy<+6p-8ghOypujMH`MGF z(|l*L6}+LqIp!^~;Zz07e&hT-Gp&zn4SY{8zZyF>XNI727>KhLq%$$S{g3VM=G zvr|pkSZe5G-oDTA|2`XyGB*Q>He|$tjFi0IMB|=-1wA+o{0(ZKQKd5je3;Nkz5X7@PAA7!2c~ZKzy`mZSq-8 z%*WD`9G9x8Ck%`@ZZ>1>?Sw=g%uO;d;GUacoFq3(kk@*jkynarPNetsCh@LxvRWG- zS?uuj*n*e5EJQgq@cloR|Ejmi|SR=|sz z`EL)D9n0{f!C#^mU9ucNUwg6s`=kfR1ECQRdXGMBXY z%bS>;6*kGNxp6K&03CUEx-p=C`Dz)dl$mzu^OqZCG z+ZL#2CYsDQL{rt8@R@fkm4Jd&FEQ1Re>h8`*=KU6eMmFUoDRjirJPHm8ZOV9k0!>+ zcLu$fD|^Da!6%IMRn=I!fgK(^TC(xpU*1%^c8x^UyyeI% zkR>{NR5zkEDVa7!N)(Iq$MY$sq(-BB!!lxhMlxT=E)g4)5zSdT%LRV-a=#)&jmaf~SNedc5x&55cICBzr)N>XMUx-|8v zbxPKi8zeiQNTy1?QfHNDuJ9$7K67GbAl_`-V&;o-hb zG1p{YckLSfb4-yx)?4$BSoLvEHB>HV^`BSqEEFJ#qI3$G80f6MorAY*$El6sf8Ux7 zP-9h{KL?%YE38wa#)@gp(nZayYqnH>D@}b>A-M``t2Y1jkA{r)NNtjBdvggjA!=U3 zO0SxxxA{_hFowcr)vev85=c&4(Vo;j&WFRNw&f2S?Bb}= zGSG}$si4fN6I58z&-)~jZ~1LDg-FVD`)~G^*ftF@na9X7ksms2!kigH?Q1^rh{NXz zf6~wyoF3u76p(IC$FZO6HKnT)OXv%9?lq7kkH$r-e}q@iq^FN%`IqN;4i^(X8D>&f zzTSVttDfHoGykpED;-^EW5NwA>==hSRAi@k*-ZlIDtYLRD!DwFpi1sr>{1zojIUk8 zITuNKa7bvVEqLo*ooNv82Hej#yP+HHnh+yZC5)}DA|*i$Xd@d+tkCzDe7{6zmrJs) z)D1aMXvQ|mdaNl|muOzQx}I8EXl*v^v^0M==%Tn>HT&L`}t9hX>1>vTN7WEYWDLRhYIexdyrr zL8>dMqc3pnCWP07&)#*B3WpmN-TQ?NJILtKg z>qr)zLp=jEk~7!5i)j8SaK`)wpF81PV#Z1#abj-6xPY1w9oYvm>bev&EKeeaS*9%2 zri-VY=UtEn)jwv6c{&SXPx8nZ&5qI~|18*BWChEcTf>KtlElw6?J*rOlyI7qDcYr3 z#2AY{H5F^BW==JpnZ5Zy#pFc2{%=be(|XPN>~vUDK{M|_i22BLR4Ps0t1BqVeuf;= zh)u~LY!Ki4*T^eU_+{((&%%{WwFtf1?Kqn#B&Cu`U{h_JFIqHsm5hegX;$h`-A^kQ zR@HFJg}4n&A_J-Ty5QE32zjwSxg`EL7TYV`N@nWiO&pQqi1waZBPwhM%eh zvYr>E`?}Knd6d%uf|3A{ZU;f3nv+0|7{`g_a#@K~$i$$mLy0Al zQuAUZGz8SB$BiC0swPH1LPj;yo8(FQ_kC;az1KeHkfI!?y9XU07SI2(|NFA`x_s-h zb3br9l(U`RDu(VQXVF<#Yd`lEdA*!;yyeoQC@&todI^7Jj?9d96lX2Olj3T zIY-dn5e4hBi?AqK>lbarQ>svZd2{sG+TB!LOI@-#(oaxE#or&G=|`}a-l`n>?hG^4 zFP4WF(4MiMZ_%2t6F3GcWiy<#!IPsK{Tdtb@PISY`UP=%=O(nb#uFHyuh|Qn`{qOv ze?9X3yLHnIWNZ`!h7r7V8y?hC%>^yS~Z``(af zOd{#Gb6fP^w9#>}esQeGXo#I2xKV$q7zF*=1c~*lomcfMoYOp-{@i@@nJ2Ez!??S7 zWlq8%4!!Z=wq^Q-XqlL>)e#jX-hD5~oykfzsolp^K0P4dL_m$Fj@y!$lOnmh__P7% zUMQOE4cmRZ z*(W>Uw|d8vC@dTRM*1PsH~oME3|s|iIv@WWDtR2Tf-=(p^c;k){X{P;mVbytWOZiUZ zyMXJR&LkVb@;QDv|5%-}kzsll+3+FCFaSI<{(#-8!=mE_D&2?TuCvZUU?!*QA0&O7 zN3a<4Q5c~uzf^%63Pan1YJkEu6x2Uh1HV22jY1M1LzqY^nko0%1Y0)=P@)m4{{xzt+f5o=<$ z$zdBcawfDbJtV7pYlj2G;(mQ9nf)63>`-fXC(!A;OB)`1{Q+N}1vcg>LqY_HMQ{L5 z)zZ9@`vRjj8j!!@@_@V~mW7R~j(9>Ae=tVmLA5~_gb&2pmNqlrCLk!NCbXmw{WJw`<^^GEkWmQSQqt3P5=0ZGoxZ{Ri%p<&g|f1f?~}cn$G@SMerR0%eBJ zklo&U**3utu(5gm1w**G5tOZimhu!faXY`8H)w+$U{hGu0_y2uIwtVUHA4~QO-fkY z?%nFLT}|PZ6AS7f`|11>^>g%|UGWUgg2MBuO-k#{7jFOy7(N-X;^z2$<%W=Yi~^0< z@^lfj0NqbC*Rtm`7@@Xj|_L84s#3_md%uOa}$;kNyWSn7kxV^bQKZU2q~P*?!A z48u6L1d6BVrws7dm#66VBBOR0-%nS<%Ad;vw0NKV9en&Vn3sJ$qvsvyzjLyJC`FcrBDJ7n`w$srJd$!D zn&}~Ts+%{BaFl6rp zt%L@5&1b~N8Yf2VGHp#*i`=;xVye(>3js*KNw7jU0aQ{?^rnG9?cB?-#Je=0@1#!9 zwWMrs?I3cgFHMg1)5mXaVIFs?v7wn}jC-AzE%*Q0A>lEyLeeO1ZAkU&!7Tz)3a}~G z{{t8Ix@O8qSl3&wFFXSd_6jE2m-wbG$DHz|_pcN!7r?kpPjvE8s%qj|l7ENO?xP}L zfS_>aE!Aq*o^Bg&^ZfL(sQ@<(BwOS)5fD3DYw*?s3eC=s1c^I_FV0op+D*;WU>dvZ z03o=Rh1Rl|R55z(EY3l^!uR-+SxK)5l$&SLorc~M|HX+fgeHFUGClBE7l)U`&K(?2 zgl+CiMGa$KzquJ&J?MiqNA;>+%E*v*2Qn zexAFpr{BIhmeOz8U|b=h$_P)FSGBDMp-OxMGZT@1CM;cwmy~g6!D4UciB5A@{`+;; zqrrSBBnDyMa^l%->+`UrE~=hEnTAIB%R9{o*qhIIzq=HG3Tu6~x|Aapy*^L{whsQ2 z)0ghw)Lm70$nY$!*@$yfFaRW5y+AP>4_|EIUywC)GI%lZTq`uuGilbHefv?=1kxJb z{d>8dZv6Q6O9jjEX?+m0omjnV&V=`TC86kR);;)Ou{Bx$b)|I z_1se$S3HWJUWx({oF+9XVKR_@=_BK*Pti||H&754GkCl(yQl*Jy6D4kc z_T^5qRw<3N^9NxthergoP@09U!4{iL*G?pp>r}*z?SWB-YR5)tYXBiD($PLvt&Hs* zGtKRWaoJbR^b3=Iv zb+I_8^5EiX$7dL5NywUI!HA9;kXHLsE{Ef1{tv9TS)ELFoYEe&+?im#Sf0iIxBTbN zAN{i<<&UOUKl5SlYt7vByd((WV$<{!)@6W!f1eo`k@f9d}$?*!%C4PXvljcd>S-5*vxzh;0pB5M=jAbUU73zEPm;=`SM0qH_@@$@By# zBA&n7xNYK4*?z6iez{UY{kldZ49l6N9zS}Ve7Q9Kydn3Hd)^-=YYrCsWN5c~Q&Yne<1>5j+S}Jp! z30n}%0)tSnbY2*O#f=-ShMjPsW4$FJ?6c%o! zw5y^z2(SfR7e$tZ2?ky;F+QDvR%^f>Tke@ zT5wC=GV2c=zRf(?C)-q^u)fKV5|6mo+GCAb=(7788Jm@=v*hGBM10NOB#?dCgrqe; zG#kTa%lkG!nDEE`oFSPWfDv5?nC6BUjM3AzFpTy0Lvm=ba%5>s)hly+eEb@FkdBIK z{U3Cy!rFCtx>_Pm%pMDtX%HMtTcZw`@u1>UBmYqP1z$j97?sqL(5gH0f zwqw)r8tupV&gi9Yj1AW3ba`_Nien!2)($0tg9q~Pi z6{YO|xP|9W!t@+jVZf;w5=OB2@j5{EhU zx+uM)QNM=J+|RxX`{6`4#kh21D6|m4TPH+@zZG+_SMq|Yo0Edsg2%fi%{hqj-@&=W z-|V@&N0~CKGvPWq2p7~cy-qP7Fiu2*a06*7#Koz{y*skrffHU{o?RJa(A_lM(n587 zB-cU=ST$#!7hhzgK*&qxg=-OTI5?eJ?i`RNWDq;1gRf?O%GOuxUyiJ$E$?Xa!1kY$ zGn8NCLPpLswS1L#;E9pU$JYmKv8m#_N!N(`j%@8_%Xi)VlOuhS`G*i8&zt8vpbA_=(x;ltLoZUDeT)_!Y z*tiga5=iwa*;DlOp)e_6M+nchG~N6{jAk@RA3^td!-jGIsm?DE=IwXJv$P$moJ3C~ zyMdWEQmu;j7Gf3P7;n=<$Br|6X7G8K1&wI8?1uVSd~RBC6Udeimd3Nu>lxD8{%=`n z40vPf4{FF(xd0{}sbqO+Zcgm1s`rYm#>I7)fw>Q0@}bEfRW~3 zeP@Krem585S0b>3r>np}^I{>4ZC@Y)v*;pK2t_C5V`6K8Fr5@YDpdP;A|p5ilrXH8 zM4Mkvd^RjAKQ9vnScXCY`%|O_>|LG`T!CkY$CB&HMR2q+OQiV8O2-$kDn`-r zPE3uJTZ1!OXofXF1h@ zwzLzfm^d{Ip_wodSfj82SvX^FToZ!B8YHp^7y3iSV1g%(`g#Ih6Ooe7+SKCTEmJo-_T#Gd@Zmd<2dDaXmF<6 zDNg9T@`&IJwT}{F#hrEDU7=|OHJX;oSCdHOqudd<-G#Uo~qV>X!g#S_7O7})+% z1+k|V71nA_Sbv@+)={2aG3L~8cM(EDjk#?fS14H3U%aEj(QgMk5%_A2l}1huj(4YL zodNO|emRr^4&nhzs8^UL=;cDYYw>|G4Dq;#p!yncCA8F|cp!gSS=3nN-hk(kXchNE z>6c=tcrD9;kClt3*_80vcuaYAR#)3vZ+*)Bx;{_+3l3BEd!LS=JUUmKRN(nj`k=14 zHO~CORZKC2PhmLrOLDnB)m)|Pj5=OtzjN&1+@+6oYjY+XYR8?8v2$(eNeOlvZ$;Htq>oH6e`cZY2}Hsq;oM! zgkozg{2*GX#9|y-04vfiGfma4LCFlP{OjM<-SEfvNDA48j-;s38xM2%XFLP0_UTj7vGqy~EX89KUnbnJWl^LSE=5fMWJ5LYTHv&2WkN7ir5tw33$6$!DF zQ~&jnBdUV^wM!wo_z;p?@D7M(S6cdCO{o}-dab2g$Wm4S)fPo#+qD~7+NnBDYj!G? zASRrav3$s4`#s5KEd^Wtj9K!%?~QGZGcCt>KYrHw0K5%C?l6p|B^3k{jAMBP0Q<+*^Vm~J$3MMrj? zGR4`B0o7Q-{g!wVBXSg>WG>Y_sh7?FCDo|qm5+@m7S>M@)MRqIoEBcTwGvvW>(1ju zN~-RZW|2w6!k}4{hBI;w`?W>O&d6||DLw^^_-M%2>QTtt_Dr4W+&+V$^749O*?hOZ zB)g^T&}*KWFAJUS4VW3`eQZs+ft%x6f<@kRoOyr__G0fY=0tf-P=`5jBi1B(?)8Uh zS=DelwQSz#RI_=j43HH?SP3lH57{X4!FR>CwCe~5T))gtjY29oxeaeJn7m+!+)5jY zN5A@&3pQ=K2|GjOQ>C8Ba{m~JMf;%JIpayV8zf`-(s-{58E|c{KeSrz?(Q!B=_^OA zNMxOp&CJ9{$^r{ORtjj8%-Nt>91$(Y_grB#i$`&mvCih!&)Ba77sSu8KD3b6sx2|D zHs0BuYN8Zf2u8V948bw}*<60{WWcKPjn-i6nSh1m7i`ydW9s9$n=ZENpDLD=a)Cd5 zbYd4njShvm{f673v5ot`5`?jAcct8myOsx%QI;!xM$5G}3FXo>{0*h7eK8`o!)w+X z?%`jaHF1Nf%cy{?Mz3MmMT2^GCSvp^8F@kO^h;;)0J3Odb1tGpS8i9(S& z*$9!tzY05SG4Io@^Z7{*<)bSnN06rNoM=$P8lN|!$c|{P$ytvcPMo!1e1W+h0v$IR zZ2)5G%2?F1S0{;8NTSpX}f$G7+aT$y0p51>(tll^ z=RchCY^Obt7GY6J;9h+B;!o!;DSNhT%zzZXwGUHth9TMDW%hX0tetJemhZ84+wyWh zhq{k(JlqXp8@qqbuc*-LTqko|c2S^nwVY;zOmwAG3s^oC&v)kl*seSy;kM~1n=MYT z8&b5%=nyNtSe|KF19E8krY*MqeD&;XYo1;f+fMMPJamQ|e|kq;`fgMt+{`L$NrkP| ztTwZ|nBHTj;2?5574?=}pXT}(Vv>488cS2)%%($&gQ}U_y5(EU;4WpD^Be2|ibjWi z)29=rJ9k2Zji3*6_7+OmN)@$RJJ^fuyq6@ ztWDGFEYt9oG1r$TciRkS@PgD~2Pj+`6{Y0^g}MOHQAH6Z)42By|s0H zKRqA`(<)wj^#+pI`c8DD-nu+ zPQp#N+qXY*hPJf&G$kPKr*~ev#A=CSGUG6LYvLGJDI2^&u*xWXZ8!tZ@K-` z9Ft9e2%pL^jSZ`iw@JZk zdOVaw-D!M#&!E=YKFdkDFHA?=cQ0KCJXq)cP}g!n%Qtt0hsg-QPcGHns-jvheA`(+?kxA%w#kQ+*vdq;Y7fymqiMA? zCD>I^@>2j;Rc=g<7PTRWkC8@$6j@V;*JeH5f_R^=jBYUj!T!uY1Sy3drl>u)m?Mlv zqgP{|#`XzF8l3>7jo+xwBscG>^Ub_`m#Y_v63+hux2Nf427zoUmbY z!fNko`8xn0Yqk1>vjwm67=h*A8$sttgyzcA@fetXheb%z(f(JDKl|nW*L2$JtR;Q_^7lspp}he1bxQcPwe+;L{7)_0WL~P|;SKLuoVN5= z8f}xMpa7Qs!(L`Pu*-U_^BD)|98@t05(b`f;Y%w!?U|<>k#p%KqLTpE4^H*4BznH#8W{IrlQI=w2u>wvIK-#onWc{y7~rfM8nOs& z9-xGtduT=ndZMw0H-tZ#9SVGiCLEzo^v@F|iC8X6f0>MXecx(QkD;3UQ@Wjr6B6uW zlQ)S3n|TABj`;ACk(i95IBMsI9g?)xOOu4z&&O~p`D$&^NWTm{Ay!G8 zZ7x8O3gpOKfNq93wjK|u2q!`(+z$&(4~TcATQ{4)Ah0EUaPkVq{I&~%JEvg>XXVCr zJM?VboODxBPqwQy5zgTboqHj~faL+hwI*yP+JFtRpFDWomk0__0nzE&BkFB67^1_H zfFhDLK$(T+?Wm9U?mv{SIw?5pP+Du*@iAA$7Ezz2?f$^2NGIIZW^J2-xv|~8dEuVL z#4rSOayuPE4YSri)ov#|8`^DBWtX{7U>Zt=mX^6|xwFbD)^7;tKV`-rayIMr_Gsgs zpLGeee5E7EK0ji}q{y~#BYH~Uoqjcq! zsN}&S^R!qcp}uN#eS>$;)M!ys@7?#uwQFC{9!`%$Ol~^x(hRRgc3zrSuRbs)elpG->Kn~&7}FIkc$+@$ z`m(ra?U%V~@|P{wBe|uuGu5gUy9urkM;@1syV1DEk>krn8OH=?ymj|)*~oy5Z>}wA zZhv!O$KaP{uu?hD9KQKRJU*Ro-B&=)qmp`p2^TGbHy}-{;7r`k*X^Lp(z9keV&gaV zWOwnqKfT7u@O0(ERUApKzs2<~dhOcB17VSmJJFS_52%PL$kX}WJXl~u?YxO+#(5Wl zpVpodA1W)f?WK<0Ks~NjHqe}YmAAMr#N~WeX5FWWdq&2@9ynt54 z%r_{Z)^b&=Ol^5hqm5Oy^48RXllr@BpluPoKxiC zzT?6J7QTG@cB=lb8FvEs#Q9H!+q=i`RAk9=9F{B4U6_JaU1A?!3?fYFR*DYJj zG=V9d$Spq+oyhj)@RWGKjk%Mq$WX1qSiqhQ=&8$>pudK2!q;t8UMkhbG&5glIe`~c5pu`_<>`j*C7VY(&fVC9+j=$PlT9Dp^`{Xuq0I zDN9ey)-u2)DIe=OMi2a31 zVx1#khVi@j&A~#%8?H)bCMo@4hTvJ$H@bE{bAG5Z4}=m;Dqs^k;Y)tFAW;kQ5yEp#?YWKryr{F_=un&^z8qE&i=mDX!kM8iYoa5iPkZXJ;}O| zH-hFc_#Jx2+~?)NmY9Tv~4H zPu4Qif6@}#(>zAaBF4H?q&_Xhu<_I)b9Jkvvk&zwCb8aX%p}5>TA#5r*V`xxgTjVA zG#&#*^6}51D{EsnVJ*-+)q%AGrH@|N`((912dVYmIwvS|Rk|^FqRKyQnXs4@!~}}X zl~jqPw|Qf=MIteR7)c!}#Fm4K;Z*pYaONm&SypB!|K^?o%i8|bI`M&Hyt`^%{c3Hu zk8xQGx03cPH6=y(5P{_Xh5*v=M-a!6R*o% z*kW`wNt0hhZujB^o|rd6QjVUpX1zT3NNXQ^;a*xiso1(>CTjOiGZhn8zOKHt)0^i4 z44OHi9FOGHT1rPydYn3|tsrBZ5P-|CW4US z)CLv#t+B$b)Rw|H>&`X&WO4o zM+2R;YFF1fAVS+;U?_K_kRDS&SkoFCfRcB;kVcX}UJkn=l%c$D~ zK{k!9W@{Q+==N6MYNwOc)#qYv!?QD%SG(>?Gm=6a##3whM@vP++%0^{F@s$b&UV}SsWdS6#_0=Yun-?8+*E z`E2T#{FUh}VKhCB&{aB((dQ7^rE2mhRumE8l@Xg?(@PDCF%-TZ?b55O)iKoEX;Rk3 zxfeWYX7gb^bZJd|W{_TntrcoKI9~Hh)BXlTk@C7_dFXe6cN)7am+HjWPR^-en2H@h z>V+E1soGMhbf$%Baw2+A%Y1fFr(>5B$a$NZ{a_Wb(D^)o)#=)}W5~JL%6eZTL)wFa z@owPZeMo%|s%eQ^1l7D;KaBlczhEY^+jOn$BNO_E_wHLlXDo2p_f@49C%CR|(=@M` z{4HG@g4PuA&;BSL43#*^g)!-Dp6OlD>vx#Bk{ zO$x!#ok0Jrg_z_jyZ;*3IC1!^uR-hYktY28<)NI*;MpgWSm@7j9?nrz$a}lk{)Af+ znI)>aBd;xA2`E;HfXD14$mcenura|w0}J~cPSF`%m=HjNYoh2y7z;cnVYX1{Rt;g-lVi6peF&*+!#LF34kyliyW(_2Ek*lo8=dLkhF1%F)lBRy zTsT09ZY`-JEr11HQPoxcX^UWN2wHdmHTbW};j4{N=y>_vJHtBOnu- z2y3_h$MVjXhYIlvT9|8-$tp*05#EHzH=-# zln&TQWGOKbo28L=d}77sbtz3g78h-JK9T7oq87l$7Bf|H+DGDf^YxHg697Ix@EBDP z^H&3zVwM3C26VZ0ulUctJAZL-w)#5!b}b|#MP;19?comvC{U3Z=q=R2Jbg%uQt;mM zHcu3t;K%CIds^MnudR5d=}a|AE*d>af{y+QZukudVYw7K>Y6nuv+A6aZ{ehMKDzPr z;2^Mv%z8AsC4E;Wi_`2c3}m98Q2bJ6rv^Z&1?~0FlN^Ory1_Huh|r?_UmYIVvWZR^ z^=vR83h$~`^qi*AEK9@8VJHGIGJWPz)){d)!Y9rvn_$6(-5S4~gL{HwoDtX1ZuC5T zCeLby;(3T;$V2RMwP<;DW()w0@enQA1+QB&&jVHj{RNLPfB3WENRe?7po;mGL|O7I z#XM&Z+5r9FofQE_X)+9o>xVx_3vF@$3_s+{j0@&-WreH+*djON{?^W7?8#cP+awqp5uPeM9+>PyCP})R>&z#s3C9KvO#a literal 0 HcmV?d00001 diff --git a/locale/el/LC_MESSAGES/django.mo b/locale/el/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..1d911ca83f2eecfa618a6383d0039b0cb86f8744 GIT binary patch literal 38942 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 xXJ&YvpRTyIy01t(Ne~e*xi?neYGr literal 0 HcmV?d00001 diff --git a/locale/el/LC_MESSAGES/djangojs.mo b/locale/el/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..78744ebdfd9a4e051363aa9bbf1f67394ea1bef2 GIT binary patch literal 18151 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 literal 0 HcmV?d00001 diff --git a/locale/el_GR/LC_MESSAGES/djangojs.mo b/locale/el_GR/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..7b7a22f9bd05a640b05ae6ba1d16bc95880c56fd GIT binary patch literal 4558 zcma)-ZE#dq8OINn`Vz5kQj1FKsiie(-E5%N(xtRbAs|X<27*kjPUo_FAzLTm~YR2dN_*d{M#&5!pz(2u{!oNf5 zTgdCfa1oTrOQ7`K2yceB`1vkB|3%1B(*v)E+u#RbKfDI+hSGNkeh40g+V>^M&-~bP z6l&ch)V@E5l7GXG--L?8TTu4@#ee@7l>RGNtaVpILT(oO@eNS^Erp762UOgu?h@rREuApY6Mev_c`C7<8`mTq0cstbmSKw#hE_fq6>c@2``M2S9@NZD{y?`XE zZkE7D;Z2ZF<_XVldwv(*%KR&S{7WePZ$bI_9+W@U!iKl!e6uN*6`s!2UMQ_E<# z(d376rTSP+)AP9|+}XUBzI@WtO8czq8FL3*>HC8G>!2ymdQ|Uv?xg8%(IemTw0mf( zlP=olX?h-{sg^h@vyWn{xO|GH_$nuQ*3s6wo-u1Yl^4ab(~nhWdQ@L}a4EWBTfQ{0sErpdZ4ehOoz29{14$>g@D3~=tR17O- zO-6sCKs@ve5W4gvQ{%=)-GP)p2) zC=KH%sMsxGygQ6-R~%Pkvk@N#0^FGC@HtJ((M~3k)NZYnB~T2g)(#yP4Li^Dd~gnN4KSEpWZ& zo`dxFre;%>Uxbc1$+K(2RKa+t7RIh5NMf-VhGf0{!enB4f+Qg*rP)rw{O`E+#NqC8 zb%0fIb%$c;IUAPE_?>$wstg*}+ZLCJ&*m_ahlEb0?TV^^ySwbYUEQ4gVzoct7nJveQNC$!zT&my!^)%UH|N`0 zx;J!pUGQpodq>NfDn%P%)?f|0Qz{`}s|4j}6(t|UNtmwQ+Pf~d@`9X?X09tLQi{>e zf?c`2oX#3tux_uGp2|QRRC4R8aeq>XS9;03lrAuI7&X0?>cs!XT!snEws!l2nxCIGJC>9`9}^XhkzIYTuaRCTr6?4+}{PF)bM#t};o=^G&vXw0VD75ROxZb!1|xdWp81H3-%l;ATJ-xzWcR$gX{ z;2hz0#{$)4?Wjy*A2u}EDU3MV{Hh}|df}Ub^RhF148NYj6VhujX}&mQ&tH~W3fp8q zauqU00lR{-m^ayYhT?0MZC$m>rc>^-@<&f6@&w&U72pXD?-WtM9n86C?+HH59zLHj zxz!lLTIJ7$XF{iIHbyEE3PeY5%FRnF@y0GcR<1^zS*)z9;-v`($Qe!9n3Zki_~{(h z-G!plH$lozbN9T2{ltG}XLj*3^B#fY=o!K?-C-nnh+I#Y>;?3456F!d@#jhH&cqqE znkUUKs(?BCI$(e1$!lDCf#D|uW;%HtG1vW~B=V7a4k>bR5A@fwk8wkH$1 zG0zdtONY95C^dv%BR<>|jr|46&&TTju6ha%r>UvSE1puu+i?u%tX~L?o93L3WRvES z+HK}y=G%#8MlCnkRCao{#N3s3(L^pg%2xi6pTKoR+1G*#hN=h&_wOP*;|o_YSBbfM z@f7u`Gc@PQegP%^pVJ}4h7}`MPK}{vagUOov-n12mBVQQIZe(up3ll03CR@MHO<6n nlRZ7-ge>G1zyckgGc#B9i@51DT2gjV>RwWTnr1*Svu^$ia$Cwy literal 0 HcmV?d00001 diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..6c5906d1cd061dff54de8b533942893de34efc9e GIT binary patch literal 337 zcmYL@Jx{|h5Qd9j%E-dP;DHUUz!pqFHI3Uw*h!U-O0b#M1fyU_j*H-j@b~yFTo(FD zk8Zg4bkFbc(a#8TfSe*{$RTop42h8wT;AXuI{#UD_pUbq(k-mD?~SvRtk~?4EjU^8 zqD=EFDs<<30NFQY3lF=dhsseBt#T;zrx|V_Q9)Dk#909{hlG)3PGx%joM$`|st-_k zW&2hI=P8-jLXeC}P9|KkR7_ct6ud0&v1*&0YBW?@eNZA;wx|b_i4fD)jGb@x9W;=s z)e&`(o~PoXL1HJnrasJ?BXZgTj{lD(w~q zH^was#>D`VoGFbaTErs~9(7IJ3KbcOM5bJ16v8DphvpP^S3kGT7MHcg8Bde literal 0 HcmV?d00001 diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..f0ecfe8d45195cc9f84ea07853aecd35e897c142 GIT binary patch literal 127296 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

    8KzEg|tJ>;}0b@Sb(8FSp$$_ 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 literal 0 HcmV?d00001 diff --git a/locale/es_MX/LC_MESSAGES/djangojs.mo b/locale/es_MX/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..30383da29b9e2a6305757d63bd75f8b70efd253c GIT binary patch literal 79395 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 literal 0 HcmV?d00001 diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..210b830e51b53015785fe4201319bc1a1d7749c8 GIT binary patch literal 67960 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 literal 0 HcmV?d00001 diff --git a/locale/fi/LC_MESSAGES/djangojs.mo b/locale/fi/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..ab59edb388036d7448de6b1ad5d7fd6648b396be GIT binary patch literal 36464 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 literal 0 HcmV?d00001 diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..7701635ac6a814eb019735197b1125e0d8e52316 GIT binary patch literal 182037 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 J?eFAg{|^*ZGAsZ9 literal 0 HcmV?d00001 diff --git a/locale/fr/LC_MESSAGES/djangojs.mo b/locale/fr/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..75493ed1809daec171d49c4333399e3b5cb894d1 GIT binary patch literal 95472 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%0Dx71W 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 literal 0 HcmV?d00001 diff --git a/locale/he/LC_MESSAGES/django.mo b/locale/he/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..254bc0b9f99c3098af3a76523c6991d7d7fa164a GIT binary patch literal 10931 zcmbW5dvILUea8>);5tr1NXUcGgM&d1)=IW<0D*bL*dV}<*fNCT2CjCmw2Sw}y}Oo0 z6A}o}LQ3#MvMp?cP>dzH=`@`tDb1vl(iz%;Kgvv|W%(lsP1BjSDV=umXqcwM^z%LU z?A2WfLMIph_H)ns_xqjS`JF3%c+TnLhUX-5K2kozm>GG!9jQ$ zY`~>(FFYGQ3>j*kfEU4Wn1kPjXTpDj?}q>7%WuMuQ$FK8$+(s9y_9?4Iq*98F1Q2o z&+Ovo1F#G=--D1T%%f0x9D%AI(1vHSa7`|F6Sy;Wwf5dI^3Qz6#gCpF-)q z0wqs{tDwg9K>7JHh)U*WsP*oIvU|7ZeNcXS6w2=hpyFT>Iz6E5_&SuI{}yWA*P!C* z7f^aH!zk%-F4VY>Le2YesQp?6rPt+9^IZ*P*AB=(Q{-nA{2Y{ib5Q&B9F)B;K#hM5 z%FciG<$rzkd$yqb z@*lqZOQ`wYO(*TkhoJgj?0Gf(ZOYrB;xvL+z{jE1{~IVjy$m&P3u?X}`TEx(TWfyq z%V**=?cXveKVJYf{|cz_8=>sp3bl{BpyIL!wcaDp#W$265Bc&@D7&XUzYQ;?{5>fD zy$Kb+=g>*#{4%KZJ_BXfAk;dahb!Pw*ae@5TIVNF`}Lnt`}0$%dEbDVZz;}}A9|tu zcm>2{vk6MyUA{gKHSS)heR~+nu0v4sJ`J^x&qC$3Z$O>H=b+~Md#L#O3Dmgr2rBv8 zLg{%a)V#gE{(2}oZ-tuoHYopx@VQfrX~N}{b1Z_3%%`E|Ekc$s_d@CWn6ICN>nP8_ z4e$q0`*k77T7Jwy+1n3$;WnuG9)OC2#~??|9D~y1ParNd--Xhn1!d3wKtj`;!KP^3 zM?6<~UIW!{8`StaeL05m&;3yI{SlO&f9KoJxgZ($G0!e2yVrW&4CUtl%B~U5hoIKk z4=tR7il>*L?0p?dpPzZY30G1+o8Y!^E!4aNum|1)HU3E`|9l5Zj~Af){(WEm1=PGt zZKBV4Q0rX;agn(cYTlcm=KUN*v)1J>mLc#nalwSV})&Ik6g7ok5Tvp8&u$Md1$tryB4w?NIa9ZK)pq4w);sP*?kjr$VRJcr?p@M}=^ z{2Z#^DL6&_mO|-g;ad1f&wHTuX%foLZ$jm%??L{VAM&GlP9upZZkIvrr-iu0TnW42 zoe-1EL$D9dK9O?Uq-?^Viz6-md^xx$<4Ann^T4w}m-p76WQ@(u`o_v7W^64KU0a8O|kjs&Sh(&Hk_OpYR*carRN#r_Y7b2f!AH{Zv977Hu z`;i-wAwydusVdN`F_PK?^ zlgPNQTmdgbmLWO|UC4#VCgf)1IMPIZA9)BlgnS0kb6Ntk2kQGl&*=$F9)20oeSW5| z69$mO$P{t{(epXvi^vm5_PL6}T4W+qd4Yd_&~q@;_5kmXBm0o^kZX}EknPAxJ*bTL6 zBgi*mSJ+f4hkC1&s^`=$KpG=`Dq^e;aLcq47z_ z(FN7Hv^$oDRd@OndhOoMJ((z?p}L#3YQwg_YBm#l!Ek6c*9xVf5+S;I)cTQT3mL-w z*yStY<+4+m&p9Beo==CF$^|>2N!okA=y)yMgDv4mnsrDrD%RUcC|j`kBt-=-Yi$Yl zHq4e9|L~@Mx@s<+1?82l7@Mu-!u&)O7WrgrwLI#AnRCs~)`nc6oa9wo3}Rakqe>}` z$&xx;F*yOV8acC-2B$`B(tO!|v0cG%P^zv>TkLi+U1Pquz*p%w>g8%u*kC!R?w%iz z*~eT*tzs-L)}r~z`_lH9h*3tY1dV*rY)cK%Yg|)|-(K2XGX7wbP4Pfrt4(E+&f0V{ zI{GRJv|FsRxN}st9j%l65pyHtx$hVoxLb>3S_~TQN*t***|2hHH}_lnK4f4N?kUxp z_}OQq?O{;p*3KFCc6(G}|F?&g+8*NA(-z3}d9F%za#v=XX_!;rEH})KV9&f6-1Akb z64}A1Ho{@gsh!&=m*XuAqI}UNm$@&vt7=DBosTo69cLb+Ngx{5XfQ);c9e#zq~;x^ z`$Ds$IauKa*`X^Uj+NC$ZE_P9ba!{uCm#lHUoT(kuE0(%Wbakh&CVTTCCQFV?D|8Q|k$H(8nQiDs-zTCR)Pj|*uElbgjIqoB++ zR2a3%ZB%frTp#oCLlP<%h}cpg4Otc{hB|JsZ4VFplq01^F^L-;X*%lbVW4IPq987s zoz-BF+lYPGQ$lTbjV-8aAMuLIfB7V#?5yr4Nmm)~Xp?W4c1hDH(K4bsYmS(k^b z{{ZtPrL3feWR|JxuPEgzWTdrwiOubiK0ey#$lSqwa0j1<$pJ}9f z-iVr9{uprj7Fp3*B>P0QdpLRB{e|w^$TK9)J{yNYu{pS8dsrt^b#IP`ONH)FHHYKw zfm)wkvTbYkc8<8ZcHh9w*k{-Du3p={y0?4HI@^1BU+>yWdwG`V^6X}Zt8qEtWcS%y zn$<$ED(TIT%ji)ZZsOzafiS4_*_*<_h^^=G!*X5xPiqZ@QTIk4G=27p!BQjDvd+NcL@x``kSMWlqccs17_S!z1G_G0PxZ1VRz1Q{c?2weMp;7a!VV<>DEzuu2t$nSD z)>Laed6}dz(K=>ZCtEYTJnjD6X^pkUThFw##C!`4kdOXqR=J!xCV7;u=vO!6nv|9jLN zqYkxZEm|LM%{rS{9Xp+zqI2jtmFPJqoyR(7WeT}# z!p+5$&$JFOzndF3NQDVxvb9gEb=LH$s?%v53bQTvVzxDA@Wk=fG<}_q4!G4$c9^Fw z-dS?uF1vxoH4d}6- z=}u62Skq~!KRgQxN1ZbJWp_uX)cW7B1FCpG&Jl46Kh!vgfd^2;ZG{f)ajkn8U5P~P zkxuW44wGb&vrZOG&^W=o3`+aHWd{~WhfOg=+dy8>9BscbhYsI3znrPGf6g+Jz}WAU zB}&KWM7Uwk44wD4o=snT2q_b}?epyx6J;ntCNA(bl13PgU8Y= zKvL0$9mlUp5MtXQUKQ=6eQ93bSH96Y_{yKRCg^vR^$tjf zX%;w05s%A1huv;ZDfko)N#=D9?>N&7@~6uZ$rgLZXL`TYzH~I}=$~+=V|03?7UyZj z2+5G%Iy5d7oJ`I|k`?f2a%hrl@6J!hLOT8va=RO=1>9fCnC-7m?^aEx))jGb-rd!@ zplyE8JB7}?|1s{@B)vs(lioTy{Rh!#jLT+mrE*p0os{;MA^UY}u|ay*v3728FI}ou zU!B-7vTV}9@3z13l>O(3N``fAjjFkAW_3v&V}fa&CO5Z@xM ziI62Abv2R>5P~2zGV^LzG73$*WUnHV)M&FkwRWm>x}^(tXO6+Me?8?Qi0kV&88hV^ zfd%uc%YcrlW(a6poo2CAv+NGa)^>n#{B+;#(kZWxraXAaPm8M#A2t!ex(eHN^X-ozQyz<_EsN)4Am`gP{*+2cA0V8 zLWp!TQZaQ%LP%Yh3oEpF46#X1B1zeSJ;Rhi`RO zqXMO-c*EF^p-$J#SnH0izeF-i(66JHOJZ7gT**SGqqFl7Ds`;MDmn{%;#pQ#Dt6zo z{GuZ1j29G=KS<0M%5m)*mH|iUL2Kr-TiJ^%bdCw#rp_N!x+i&pdE2KiF+07>(g`z5 z=x+>0Bzen!bRUzgbEr==xvZ*t{A6;g%I6cU0}2uUZS=N1+^t4nqDI+(84*+*Bt+bcQF??Yyr-n!P`C}gj6jP^u-;^9PpJ4r44k_q|r z6`hFX^mKWR^!4ec(Dw+tuFY`YA$*xH{G%$PVzRqOb@-e@nQ7e_wJ14GtD*_*I)jYw n6I|qSPv&nPchuTWb(u`Z&*uiBMwiv}a<^V4O8uy(`po|UqOqaK literal 0 HcmV?d00001 diff --git a/locale/he/LC_MESSAGES/djangojs.mo b/locale/he/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..c3316a07e12a62402ac456722d5b290a41bc490b GIT binary patch literal 6970 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%0ASZv{6YW`zj&8wVvayKPU(mG`{2PZ{Z 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 C_pl`Z literal 0 HcmV?d00001 diff --git a/locale/hu/LC_MESSAGES/djangojs.mo b/locale/hu/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..5944ad82fd6a8c301b08bff537c2888eb6cc1da0 GIT binary patch literal 44914 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 literal 0 HcmV?d00001 diff --git a/locale/is/LC_MESSAGES/django.mo b/locale/is/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..b82a2f26aab5c5813eeb642223505d056e0e1ffe GIT binary patch literal 45436 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 literal 0 HcmV?d00001 diff --git a/locale/is/LC_MESSAGES/djangojs.mo b/locale/is/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..f6b3c6ce97b80ecc2c86e7b69c86801a956e37b1 GIT binary patch literal 20593 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
  1. yE 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 literal 0 HcmV?d00001 diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..8c6ee2d099f9ff7047c74dc15492b1c732929ff0 GIT binary patch literal 61665 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 literal 0 HcmV?d00001 diff --git a/locale/pt_BR/LC_MESSAGES/djangojs.mo b/locale/pt_BR/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..2fdc94132867a0ce7da3f86adf0bdb3d3726f7d9 GIT binary patch literal 30613 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 Q$+gX0e$L8v@?qqE0U7UyA^-pY literal 0 HcmV?d00001 diff --git a/locale/pt_PT/LC_MESSAGES/djangojs.mo b/locale/pt_PT/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..b1823f642d91cc872ccd908bea4f771099d1e67d GIT binary patch literal 1474 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 z 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 literal 0 HcmV?d00001 diff --git a/locale/ru/LC_MESSAGES/djangojs.mo b/locale/ru/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..9b8e63ea6551f4fc0330adaf15103deaf28589c3 GIT binary patch literal 119806 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ʐy@T0dJo^33hmk;ELOA+W!Y93X zbJV@Cy9)C+-~n(axR|hxLH!BpTY2<56tiWhzvkHyb$h}%67`Wj-ubxsfG0_q%e>j; z*w5wBFNXO-Q%0`9{yo%_c?M&?0yjy_Mxp)};a-h?49_y3&Y{@VD9j$?tApBjbvCH1 zjV9;!3Q`M`@pP~-QCk~S#)D|AE|KgR=@HH1D4NLzi|eDA%)(SUHX)HLk0)!gbC(2F zbED~KRW_c^1kq$HNF=Lj8)ETH-fcxT?VOg!7sP9q1gYvEJ2xIwr)q0c3lqtj!9lX2 zt}>qP6*Sb>6M1bsOJKbMY;!snatd$hAk$b^nX1hcr>Ztu6`z}`jm6W2>A_7^Lz>95 zK{Az1R41yU*+fbi3XK<#YBPz&i8mhW8R;AB6OX1rT`HNK8$@eTs29fL^PRGP5Q{dF zQB3>y2}Yrg>|z)ZR3~cVK_WxJkt;G&n~KKbv9e%9IvzBp8iGuNS1gQ@qHIcKx*$$r z;HN%X6W=}J!&sOgVwF)QS{DzJ`V*~9$D^^vAigM($z~{I^F|?(=d#F%$>Rxdemtr8 zt5WrecuWx}jH=p1ePt?|j^U~@)sVHn!L$sDhDIjAm&nsER(CRo{=gV8~diA(^G$xsY9`_+-3H*2IHaYditHKbuN7 z1{sDu{JNx(j+|=-iDb?(eI_%vX?Th?9>kMX>Bf47Fz?uv3*!O3yN2v!=Q4;hIMg`T zPM-|=r~}0hY>3usv?%RIQvbq7q5D2L=jkLN)KbohA!;fDjM|Wh9~-AE5mn^J^=ef+ z$)!^(vl(U`hCK~)1uZ=s#az|p0#d}OWMf^bA>+ERv~F^6rA8VUZ(K#Vu~mLMM@H1w z2V>%lmev3##Iw;@G#d@3O(}PF6B%ZuV349G&`@nWXkwuBC_D|pnM6#Zx0}icH&Qgt zx8F!I~zGs7sNe%_mc-iqZ#MVpgBJwS-vZnph&a zAX=M<1sSGuwN5(CI{UG?Zk;^Q^3;ac60{Xt&@B`EwWAsF%26YxGkcm;^4A_zLWQ!x zI>aF_8KeV5oWj!Sk?Hy0dR9gM7v6Fe@z>c}=hov3x7dAEs;*wrPi^DcVoGGHQpqI6 zuog$@cwLHVwK({-x@XvP%{Ht;b%_7QJ7cF8q5Ocl_Sl^BqVU)1-t|;905?Gwj!XYd zGL^@oID=>=aFgR&B5z2#0o9FQF(&LP$%kti6dIECn(Q(X8yWuox+ofw*3XNRMGRTm zdK$4fGNK`tNV&gRODk%InNgCHC1_RHd}XGtSvko8H+77#RSZXsegyObrkjB@w$T3& zu4BmKbSMq_$O~1Bw^1nRdT?X}!Xq-cVQ^%RXx0449&wGgnP5gb!EBe8PFOZ*y4I`` zt<9wT_@z4YrBD{xBhA8uxfO+zk$ceEqlmt==Pbgdg!6P0!O{)$i;7CKXU_ZLG*a@M zL~Kssn2oi>^H6Z3imT#2)*^HAP+(!g{VFEKjxvdZXn}=}oJp~xY(mR~LPyS|z|lyG zNM+CZfT~HP>BTP1A%e>C(gpPj ziELvq+ExLWB&!qYx{w8hVMDDfToWDbmNiAX!8yzE$?8;Ey$;bmbdt!MNhnJrxcG89Ns4)mTdU`^wtQRcFh|3{lAM(vxSHyN#oof4o4mZ(?bs~Q zjH2G_bUBZUlS{0fnn{Xw?Ds>ca82d3@=SK<^V!~A4+C!)2HQ4=eI zsWYbr)1$Qw@tlr!&e*p4y^m3B3pDzPY!tIgB@;jdh5ez?xiOAzo zyw-0xc-_Q;)o&O^(LRKCmm6)pe(DY*L+4YOKtlC2rqn`pF8N;IZW@d=dmpB%G*i&$ zOnPxrUNXLjK}Itb{SC1bcPYs^aTUBP+x+rlRg*9kF>e*_z-Xy!-eW;QE@HV!uFyeY zQe&=n zUZ5@<&gEu)HdPN1pK9etlA=f8*0f;J$Bf3WUFfuAt)nJ{-D_Z4((Hqcoq`U)$?g7;Ti~MB8SPO*D}(%ewo;H){T5zXFcmpB#k`r&4vZU1!@c{4dI?6% zamn1atAt_;aW2zEWt4jn36&X8H-FtP9j86VV^Y#uhjYt!9eu+q1h_W@jx-DP! zwkcQb)2PR5zYFDDcLabZx4rHvogMPJ49T}0saDs;D97?Oq(j$)%#`IG}z+N&=(-ccN^%d|v{rmI-C)kH?8(?}KW zFD1E%S}vHm{N(A33n!yO^9n0G+d+2orpd8+CC4k-_+SFhEv>XjEYxd4F+Kan;oKXg zg)Y)zhDR`Zk=7w*79i9q2u?ni;SqQ$t6grIAB;KvZ zf<(F@Ge=%}nk3*IlUT3nIT&>=>pcq+?*p-ss#_1oo^*(O_Ph%#k2RUQY)b;p=XcG4 z6ozhd3aR_wWFk?gw&&VeSuol58`5!`MG7NxE9$TY*SV&Oe614Py3~~I)2-5=!fm9r z6n;9c0}D3!oachlFSb}+@fSGGFzyvdhQ zK}$ou4~Bux#=T(ST(Zf?pUGNMR%hcR4i%u6f!vAf!gyscZM>^v&YsJHF~|sBcMmKQ!mBA;GPT?*F_i2k%OW!*L(D> z#?5uiC<;uKs>xd&+AB$}$>w8hp87MX zcYsTc(PNQYDNnb(-6Sm94Eg1lKBdLD-=(9)AT?$fB1yjl!zM9Og82j~gkq01aT+8O zJR!Ok+uIklRvmav$K&jDhBAJrmw+SrNYj_aZ>s^?gN~Y`To<8*ap=bc@8lTQzQ$Tq z@kpp}3!c0V!Q07-f!|B$Ws@lqjFZxstx-~>Zgbe2cF#D+Y@BM-td}~TMA}3Zoet5u zvLTyA#>Ee-mP9pstQLXmg_*etx?e6W%CM8kDx=w|xq0(^KaPy8O;sY)bJ|WdWr96Y zsriwy-04V#+oF-Ng=e|yfZ<8*V$R)lH>Id?yS;V%Bx3wwEo*-Z+p9AUDs=9Y@wOU) zswsHy2jd2Y|HwGXi1k=xT)eiPj{wEu{L!q?7&3P};LQWSZR~ybPGdq_u|FNK=$PNHFCycU zEK9gWgCfQ(m8|I%_=A-!#|qIJ7GjLYtRcvZccD2?yVd-uZ!l?_ZkvqHhRf+;d0mA&)Cz35l5^uWJ92B`{FX=V&J+RISprqUsO6R> z3~AZ9ISbbm+)TqElLqF{hb$zH>_S|ySvoNX&crWdiR5xf1>icf_s1cJR z`qRUtS6zoI*8<-D2H_TQ1$&xtGs}QvO@rEIsK|Bwa@`p8a+6cLEn(bY?4={8wzELH zn`gGU)4|HdNVzV_+26p%EoWlGls9)<`|b*z+Ys>!a+QF3w?s|rZ#G%cxyscAogh#= zY(^KYVc0CswR%&LE`K)V?#P822{C>^aU;2#)7|(_oZf>C@%ily=fRD!a>Lw3nX2vT z4Jz$mRh#RCmJvc{$rWB@m3a)=C}@qsYxWw$x5IA4sbT zLu(N?4$(&JJ{!%O{Vw`Cx24&ZR@%dW)R45uqlK`oS7<}$cH$R@;7HRG5h>gsf6c^C zEfZ6bi7AsA{L-OTgHFy&m;P*q56%62At$8CADEhC=lt0|RJe8OszBHN!X{{L)YgK= zI4RObZn(1`jjGCvgJF!$%(m{8Mi+ur9UF}j%wr114S&wAM&h`(v~ywu)=jjvxw#9w zoW_J~Ct&-j%9;}89}2BpUH6fCZ&VEvoaAkn6m#fA2>LJ8m`x|#nR0$|%QX;ppW9~^ zFG9f_l>Et>m!l3fBIzXA+pH;*&|@x@Dv`Bh%eiwBg3TIKg)$Zf zQ<#;gKjrhewB#}ZYK6@7V*b5koj=L3q~&wuA`F9K#_du#EV3W6k3Ru&*OhX|KuH>U zm?rYuq>u~JPh#AfQ!}#4ql-F1xs_&@a1lzhvg16B2|S7fz7AzXKVC;?wmPutqJCKJ zB2yK`V5Pb`Gix;Y{Fs}hHg*bn7Hwav2j2sHk;`eFCOWt7u*nA_+D&eLcAX;M{Bj}a zx;ESQ3c+o0R^?mF>dXo{hgA@wkTshk-;ElPtd&T758H`bLFMZ?SH(^Iu2PXK_1CE) z{U$9XmTUIP1RYQ}7jmi$YXF8r+KH+7#6WYaPvyjBN-oR#;yJD}< z&8HiKUE9q!Atf`{p1izQWTp(}UAVKO{IRd@V69^9M)lle;@)=B_N>maNEmXrJGpj4 zo!eSVB&o5Svv9P}8CV@os;-VqVrw%LH6oLe{KGCDO!lqaYo{O+m!fVA?Q;fRELhdt zk3>Zl?&jsHCaVj>E@?IiL>c{p zGTUk?cWcWxtHBYr;*-b+?j5gC6e61ire1<}MtWChq}%+F6PxVwD$ewBcK~zNnMmQu zWs$~jKNQ;InqfC>e|=w;STKpr4l4Y>hE$fb!AWe(hdtfdYMb7f+C5epg6+tXvm}=$ zX|7DWse;#vSS@fPN|QvBS4}3fu8J~ry3>VR%Lo;=DHF+Qi{z=$ba2jIQk7esx^bke z$Xu5%Oxn@~vB+e)*v@WeF5}cRZAb0ZIfdS!lOlYBDX(PMPjY9gz|x!KW#%EHbuB?rm`Yica3mKVR%mJ&BsU%*_TpNLt!_8_4b(?Ba*hPAhV&3yJT9p6Sj&S z@62dl&J8AcOV*y8t+0xYYvV1QVavsb$>t-))mPi+ZaQORus0}+9az=YhxcQPJY$zi zmL}sh2&{XzYZxmh)Y)%#AkJxWGr z1*T>e9S`Y%6PR7Hj$Ft0!mZ2fv)`x{5d5Hp*RTa90?75PmLIsGJSucB%^7IIY`q zxGrudG;y5tQdI6BY>Z;^H$~Z1Bu7dP3Fh{c-Nj^#wwSbm>t`1y1%&s;a)v240~Kl+ z2s9n>t`-U!Dt}YeUrj-*kfOZoR2Iq2gn3mspXIDVvD}>4Ea)t4mh%%#fk`;;VWhVp7W&tH z{jG((=)1c@T#XC2!bYsrf!8W-sCT!%CKpaHkb`POzqybVb&|1PDuf=7!0&jOpNQ+L``5b~l!FWI==4~Zt6lyZZ@2`cUtM-G?GwHs2W*ltz9ri(XGiy}xl;%Hd! zD2KYS?&!%|*@BAO-=_ClO*u`W$57U7%(-Rs%+$G@L z0Fs@{`KE3PGWsKPPSN43{msj8&M;_t%hpW85hWb0%)ZHmLGSIL!RAzj<7R%eXcT`ExNEayguK^y@9_ElJoBCL8qxrZs90OtyHGO znc3~Hdog5+dovOP_uAD6yKxcf+$+XYQnV|#A8hh_q(X-S`onJ5B#SkY_}nlN7P5C~{Uuxt7aHdLJ13kOaP*1Bzue>wOVU; zToKw73Z1z))X1b!f!j``SKC&;*RXM!bEIo=wOkbRR-C=(Hp%j4F6nu#VhMGYt5BEE z4YlSf3mcB8^~d%GY#VR1?J&Ae4k$EM$OYdWFz2pW;7ZcPiq%Qs6oaGxgL|PQggv!f|)2RP(tOs#VKiz=H1QJ zg|YZTuzM8R%nV(+&C0NQnP+FDu|w-`{h?iR{%y)|7o$QizfX)V2qv(_7^y&Pun(1x z3AcOW+KldHxEC*-J>Sk?xzFbPLah>*i7L~nh3b}U@DRd5#F(l|=;+=Z6js!0OK2M5 zMe@p^ci1oVf+z>k+_7|*m31b~aVO_tQXy*^2J>A6?J^JslbjCvJlzQ-smtjtq9z+) z6%Caf$VMu(F~IFVPwjYzx2W6&cfIST$u(@=MLl74zE*S1v57P7k5H0oVss3I zaZMH5t@w_#a)2Q8n& zCcP<_KIL$ZZ4MNBl||F)j)RP14~`!La0(xu)ZuE?=~$hPs}W=KyGxM|CDlW8+`tO^rt-p%=t)=A_yIyS)*0J4MNUN>N{6WLo8&}#d9*f4k zCTU8$yQcNwJyN<;w;oOx>&Z%#!Bh2%nV{SLMJ*K1TBF3+gVF+ZO|}{>SKm3q09Nt2 z)-ODCYtl&B$KV43k}=o(?UvQXU<0|kWn0j2w2QX3BFpF~q_`l$L;50bO`T-*@f6lR zF1{w|$siQ!_E%By$}pU}{MLF?7tFLO|Dsori~4614-EUs3}UOB0;m=zV*G`h)mNQ; z2&14&H3=nWuiCdG#8q6lVJAOPuBG(+s{~rJYJZ@(oUmM{a$wICQG{Ks3S=o>7NW7U z$)H6YHxu03eOe3U>^L>YO`#Q+P$Lz(i5jjSOc!4HaaOhnz(Q}Id4y83y;S9HTCxla zx>#nqAOfU03kp9YR~C__HfrsPFS;7aS(`T*S=k>px3$GVOPm^y*4eUhDmSimwG$)W zRkOctd}Rd`o(fLYEe!qf3tXo}eh#k!5jz#etKjMesyjM9J1>0rFTt(Fx!G)eW^nJ` z8M|#;=3g!-EnW|@}EnSZ0LhlEC`m9YHdARV7!$|4HdX{Ii1^B&-HHxD&;~$trj!+R}i$J!G)ig zR$z&`hC1%dbG02OeJAW;e!^naD+Ns|#)VmEPhV!){mM8;&9Pu2r%#J|k3e{z%Uxb}o$}>gF?z~$z8EowB)fW5CH{4F=bQ#sZpfAF z#^;X@a;GO0l8LTiUffbFH{y#9zK!Tqi^ZX zh$z)-%?|5puG_fpYBqWMrhEVH{$-n7RPM0QuBL~l8U4eq!McR2sMk8rw{SgX%^ z=F_}tvHkxjsan?4rq{THS6|lKP_Fd#mP{{Z6n&R~IiI$j6aK81gs)nMld{{lm#pdD zK2TU;=g+s+YOD#(A6|y9u2k}}kM2IOHde14Ib!nEk>f^K8`V6NAHhj|IEd?ZcQSWK zT4i6uVQVc>?Y4{PBlxs1+@7A*I059QdSrxj11HONI-Svi+uY|`4z6=I?pANLFdm)H zkdW)=;hoLgws-EEu@(O>z60ANQDK$L=aZ$jiyF==Zjj`3su3Adr_%CB?%dFoy94Q8 znlH4&4Ksnszs&x+;%^@9j3npPix|u-?o$qPqV9FuB~Gl>{(##DcT!N!%IUCMHAIf+ zGzYOyuk$!J6x)%Ui<%@c($&Y^W{C@gNwr=AHlJRg`4n!i`mhVD-0u7_q?1;O1EsE1 z*nTtlR0(A!^z%eXFRg{Ollj}y)!X2Q9qauT(0sKqBHN~jl(y5-1~U=!wcn{jMmdH z{n-#VF8n)e8WP;jvJDD$$F!H;s6?3auZTIZCd?p>hfOl`BXOtDAGM^|%&E5N!%?S5 zQnhn9zCCO+Iccd1w{{9YtFh+5++K{%u`>3S{3uS@{psGihRPV{E`cJKaR#DI+xhWE zeGyu{#0^!*BI8H-H2kG&-072S_IEJg)6V?m8$Y=h8cY{%-3tCXRCQW?O*(3)j$ClaU4rmSI)h(_g&I44^*X&l zImRv1yg|A43=7nQ3pGlA(*q-KqUkTRHK9gr&CYt=3-d*5{Lm#=_gMPmJUTg>wy{RB z$|7Spr>Anv#9mHapihNK>q`ff21Q%+^yX%azMfFccfsA~e@Ij|?9I%<8E(??)-7{6 z7EO0$gC3H+d!R7Ro{BX_`KTl6k3X$*%E|d7E2po}^hWW?SvUeY zjh2eGGE%yU#fq%VoaPpi?nv3n)h@=kORxUi1G!yQsNs~$bd2WVT1@Xf5pwZRb!D*XI!PK$LqQ6cBK+rlJY;UT`Lc3fTQf*+=Q z4aNStI`>NV-H7SD`YB1rF%y}w>fpn*HF1O_wqn<(ouA8m1WcGMLoX+hnY7 zBTo+R4|;tlWDO1-G|;%M2IPVhy#gP#`bL|pGbM601Hz2Cak{NtuP!PHEjEg7MeBAg z|DA%p#v&;-oV%D2=J8gPjBGCS3u8LO>K9fsioQq?*@q6g4=qbOBx;8A_xxv%%KY^V z7ESuPdmYzK672c239GGtBE%5&&W(BG-B=_ck z6%4}Gs&9Ub)rG1xzxNTQ&rND7W7jhMDQ?php=C!gyLVIQwFtm!A8t1}a4#E4#PtHG zN}F18MN5IGFd3~7a;<75$7*D8iD#p%Nv_-g77pZ1E%PC)Hq+%zUU%V>YYTj3DD@=S zkIIR7EqP$mLr2P%geEWQhp%M0g9YBp=T4Rq+QgL;8OWE8-dAI7<86Vx{|*5Ev4z{j zw^^=?KI;ZSx5G(sDV+(f_$kEPHxKM^!G=pdyym6|cO+Bw!a}SfH*f^`=#55Y%wv*nRoHYCTLx=&>%v#tT;&xk#5}pHZd5W&g@~tOWTF z7?dK{GF_vzgfxc92veclHAzI%_M;tqIg_;E{^uJ8D&6z5&61*ghp+w=kDp38vLT~*iQ?flebFM~w$()y2XtbJ0=jo0}@^5TLod|@y%mo6NZ zuS!7ErYi)@NrbhqUQT{-yK!`*G+!9f3riZDI5ElRAzaYr-#A?*8M-wB3twiMEcUK}7kqR-Ef5uJ;!@Zklp)zuFER2EuW|YR2k}QNb5~Sif*`ASt+@KiL-=3S4QK zQ{>E@>@3ilY1Pk7(a0EV;z0$0BI{Q0(JtNsbiwnUnXSU@9D?Sh)TN6TGdY1b6vN#@ z*IlM5i_GFXPCT6c6m9$KZBM|2hWu&AW(pxooKL_Y%|vA`-wkn~k^z zrNg7*5k9h}g2cX`mv4U|*mb$0vsRiL z*$YFDtm+`NYFaaEaoHq^zMt#ftIM!kU+Zi=;;&|iTugBLaG6ZuRZR^~+>9xUxT_YL z!>Nhz+fxy?Z*$i>B8{Q2ssB+#Co7rYy``rFt2aL_;@&6Wtu{(2e{s$U30ScgJ4aF5 zPKfJE3SKXY*efHF2o}3-FxwL;i>&_pZKdw3h1#<(+LUvr0uc=r^r~W;-mK-h@>i6dSWS!G`l39GNO3?MC%T%m2D4&egZl@sWy8k+msmnx6 z1fYU%Td=>bPY;K|dpW`{5Y+g5iH2V!)?JNpTtZ=f;1f?A%-a7$sg06Q0CIhT?e+Zk z=`^M^UB;{2{=Z7_4DS9!d7me@_>!2JaqkL-8CQoGgCp^4y-u^P!b@yof*>C0-rpZ|pr^*@qcj;P9@PC=MaH*kE_`g_IYYKMV z)3ch)xY69C;Qwh^<jbq~g8Pysn*7*v5~9Rky&N?kXty8ptb zPlvVJb<9MA|F0s}Jz5SewJldVK33{aTLvSD>iaCMbiE**E#+(7iCF0#4K*psP= z=7o#GxWbe##5gla-cSq(Pz@kT5)LVfDuE2PBdi0m94G=30#7_|rXqw6=!WDaSPj|2GwR-KdkGMFgN+w2Uuho~QpUeNbbg#8mx7VlmGIxx4%j4`acsV`xli`cw zOnz;3izzha?bVf~DA5&0U%xqY867yI$>&QGzPq}*KD|D>{w)N&zFhxKG^+dR3(>K< za(KD^wP@2CSc}&8ss3ilFV<(YWUc1L>dN}eJ&foj+@{O;rU|>cK1JhCnSEEY7s}UX zy34IU16wy2U37rJ-PH}K|1JMA;Av=LIo!SFRlw8LZrkqidPnlug$|})@93^%aXEFk zt&g5V;O*5_{UJ8Ky55n@zMzd3@9UDS<+(mv-}(NMt6yk}p*5dI*F`#9=kw_0&($9p z>-y?u;;8xZ8I8U;v|OEApGk{B9V7^G_SX`}a{W5G@fwt~^raQ;28;Xx9!T2j-|^4s zEQQO=dTss2`t%PLWw!OJOS)c0UhqCCiix|W86iNO%}|LFp`H#kz2dQ9%XQ5v6~D3C zJ+xST#3lY(ec@CJp5EZXmrQ$#f3MK+3)pQHS^r90Uvl}AP_NZx`d`RLruC<|wtjW7 z`hb7Xll5;juw=OOuu@2I1Nv#rN`Ecd;1zsv*QyUPdtKCBTYcHNw^&_-K=Exyd~1HL zZkM0p5v15QklyNlK+`GBB(b4p*7nol$6|FJ(yj;3MDggtdS|hE3spsOaHViZlZO;< zuHQtv%rdX?CQ8I;puy^MB+4AjCLLXJZC4iL$%PhgFy=M1CgTu{mU({0Xg3%m7K!B= zl_t|LzYON4WG`WTvOW`3p(A5*bzeBv#VZD}LJ11dGEa94s(-tFQ$`}4c$L{BY{wN>8opXFSSI(gOK*oHE9BRbRL2~VR@3V z6>D^16aTD4P4`W$QI*Mbm@s^jetd?MlI=`eLE$z2hoB%lLFlxV#*#VGLN<6Kl)R-6 z?YgZM3xM4cH#8k-^|4h~$_?V$4_u^|+?AD1S3AABLhH7i*U3IludpT{!zKjbz=)S< z?33cLR#`=5(7kEB_)pTZHG;I&_9>f13Il#kSI4CCvtS9{#^C?u>dW<+PQ&d)s<{;d zFn`wzP6sx*>VmT~r~o7)=yUxS2En>_kiWtL`l&}fd}q+90dKjCEAphYhX43B#RAfFA|IjcMun=pfCk!6Te(J@U;=Gi>Bi1r zhloO;_^^#F-@tF*(G{8DdE%(}C_|oO9xiBO0Nr#O28DRrK7bRAC}eegv3eH=AWn_%3B)32u+hozf-SGw z?WV|on>G^Mz)XoviF9a)sDf%GSBBK>(m?P-Yek78=G;1cv{7Kd#oWjQ1R3FR`jXk9 zq)?~jKM?e9M`z+{Ffbq*n^y>u6DM>FQigtJl6k3hHU(q?HyTFiJ4Ch|i@cY5KX9D7tHk27%&=c0vYXIqIHp{LUBi zofFGD?<~EC2;*{k<=>qThMYTvpszxmq6hE~=_{auqz+%h#8fQUH1vMfDUbH~`oF`TtAI6tEqvV101dF-Iq-pI zQXUqVO|I7VJLeqGX*HC$b6A;%Pi4Sqh_o*O3z@saHw5p4oeW11R{I;dSqB|U{+Y?# z6b7BXbKb)kltBM=M5uyWL;t3ksc7wEc_XcjNJS+Xc~n7L_HwuPF{pV~drX|@=~TQ? z>Ok>N2IJ&J;Z!Fo-p_1uEjMs2sRmg2J%ueT;~4h?2?tlr@?29_Liv{YKxt`1HV)IH z6$(L}fnf$F;f@Fc&aTKCD)mNj+2x9Cm=41fo4qyL9;j|wo5q>eR4!B7lvU*b zL=|}ZNoNre95}}#@l)WXm^kHQpbgQ3s|wT;M7WSAq6z7H+Bop#2u{&_Zx0;yGQ41X zVe^AqFo`KJ6M{^XNi|sFeZ|Q`(wNv0;k#R>vMbd0!#M(Np~nqX;v#|I4QoeIbbDFIAxgMlOMi&MUs1>yfvY2TaIkG`b0|!z8q?loJ+5B@(vk zO{6%pxS$*;Hbo-)CfRj>DLhHRW$cDbDPN!dZZNSSZh0V%TOEC}IXD(g5wKKr5U8w9 z_4!mSgu4plK{u{N)zoZQpY=@JbcY?%ro_LYBVx8(rBY%Z=D7p6*>&m9s7yuFNI&K} zj^;{TM0%*PqRV~Gw`b@6oJm3EN$qkquQ3ET-+4Oc2k^vllJ%hV%J&npRNGbx6iO}z zE538!#PKJ-d%`TyR-={pD*sLCI1P9TiOv1v;e_i%f5Y)fXUAn5~D*O3|_ES~uvOBtkH+fIs zE_gsN)QI1K`Ni)qR+kWrg7QyTHkFHD%P17$Yh_a8S-iCB|QwtqKSf^nd{Hd8?M;Tz2FS85g&v z1V474AvNnVkIC^O#$TS5yev6X1j=5slvvyL_+?a2 zE5(Vk*R(!+Xgq05hsdrgHltJ3K=(HOjKb9b5{uQJps8L03{SjVebEl3zRa1HG`bgd zn5&aWsPI_}s${^A`UNfoh%l|$ZKg#{ge+<_*fiE;&~!xD58l7R2x7Q)VjQVb&DZwj zt>w#@9?uuFL*DkI2zh0aW_3Sf!cyl&@_8Z$?AZ<9qMwg4r1@qRAVm=m4wE{bA=$^kpd?9NNhj+>7&bE{HI?m(!XfR7!_qjXb<3k z0d|ii{lO;_A}@<`ZqPKFib%(uoQZC^5a)H;zIFgt{)o6Hd}cTxn6)HERVaFsC6tum zEe7hIvT@|u?b1X#mfK`8_vGmVTDfsW;~ZKZe}kUF}^+o z%#%A&(AFUc@Od;^_XtGWrkCXP#z7)Vai?%RZe{RF6KbUMmqpW@&q(ury(YRb`^CUx!zrKXrs$)q^lZc7m6`X=gAHGbSg23Px)$^GO; zv^T_=!^&lLz!T@Gz~xh!kD@i(XLU$cR|NIf<2a$&M+_4?=Oo>x9= zM>PjBa~%~?Z`Bbt57Ue1;Vh<_x$@qg6GFtlK5fv5(?E`EGbPm+D)p6AQT-=gy&7do zMeWt6qi6h9BGBArQo@$X=ht^P`uw_~(3xR+{;-*j0XuC*e!rnG+0E2n@?_(d4fDYv zCDjo~z=R79p_%lD?tY5dJMp%V;l7AT1QK_% zWZ_gfvr}d2>$7PP)p%XriIt?Q^3Ws=S_`a9Yg8nk{1Ef{Y^9LOkB2M36>8`Vr)g+@ zVmS=v3L$5*GXO*+UiD&0?RIm@^GE12g`?_B3$~<$VnL<_R!MD6X@h)9#SpOGh~yliNFj52OUF_ zmj`iiT4bS=itf^R6t^~Odjptj)??0hNTOo5*pLjsKbcN06#awBcd_F@69Y$Cgo9K; zlZx^%G0_?4A(KWd`nqbhR9huOiUMTf6!(lA-|WqI(#z(#cP;YkgKLFC=Mq zqjLo4!#M`kmBCnlmXIuZj;ld@ZVM9><%CmZol>HVq9Em{*qM(3`5?`3PcGGA zEchj6DyVQFU3Ic#FFK)b)a=wym62B*Z%3IDfpkZkGa9qI=0uov-z8z#{-)v?=&EXs z)E@#JU75PWJZnj2FF!5l8s0v@WEBL@MLm)nUx4goYwGZ@FiTL z-50M;x*6@0Z0^42ZW2Y9`L#g)cp%u3bCO%)K-5%bQ!~N16sbCtzr4##-6H_M3$z0K zTuKkzn#9<;ud(&)1ZtTqRsJgsP({mx)Czx5F?>9&Q{azq$BSdQui_YiD7i1;{S3)M z$k6<>gCJd3d$g?|qZw`mz(|vThjWHncFESz4PR)_Q2WuKe}q8fUU`P_Eah=25p10=uEdCf0*EB- z&KMtdQstH&LQhUzjY_DVg!@&*pvqwpxx)rIq8<30cK5=)W9X2j4e@FR5dJ`K4ggQ1 ztp(bru+;eu-r?oT{z%*_7_h5}?!Hm&jkV>JS%>Z@O!cKfcwSN(RJotE~bv zGxrg6e&;~E^M0Dc{gJ_EKz_w+`j zty@Y`dQDGe5SGR%!%AKf*FI+MH-%N*%!tK(0~}?xTN!*<&nYb-yj)-iNdy7+JJ@2l zF?MQ&EfJ_k8lY|5j;t6}5%qW{|0}Bf9;5Dyl&?kYX9(H^BJj9Am{xIolzHr>&vM~l zrcho%xCRQt*r3^a^w~6=53$R+fS!cdyrQ3vqeve0NoptpIgSZH@r{}V&OqD26W&%^>`;?q0v1*P* zFIInqXdY{KX{9E&C?@6o3rWH9!@qK_CEZrEwOF}YVaK1$SAT2r+z!Q9tUlt}A5|Du$MCr*v8y;&vHT|oS(EC1s<-KZ9dc6HF7JCsJwHGU zRnh96=j7|qxxj!P%CK8&er-ND_0>xDNb=#+UIC0UO_`7|4qeC z=16LQuoaMz+(l_&mxm&ADu5QpeV43KQ`^g& zIgUvlMv!WZg?^cjo$#tczS;MqqsMu1=u69gd*8p2D*oi?6UUF8IQA5uwSQ7yzbb@^ z5Hv^nt9Z@JPYdXbK1-A1g z9GTfOW}aJ{$zv#h#PpVv2dW`pLkz0d2}Dt{raRR*1S1k9a!ttOD!JC|C6%SqN)S%M zIV^rh9NfURIl6`sAaX)EGZ}o07GhI5@8bC(G{YstB%o5ntGCGbgbt?R)%evO_aeI? zQp84+0gzo~=>lyfBJJr-cps}Mby2y^8rF(fKn_?So|04*ey z9~8nha$i`FKbU>oo%LMGED~;we!{@aujc5K%M|6bMJzvxN>t2YddUx=Ocf14IkDGV zhvBg2N{T6zqKVDnov!%|2bipfe+QYcUg?ku^0YOCfOpc-&k`$`;|3R$m?DYxe7Lwg zI-4k|NlCP+;#0uVg75~Kh=KeIdYPnJVX}J)#}J|E92C`BW|tpY2KzU0bPEk!tbUIz z1;YYTyrGI|%JyJ2)XCXu=}NSWs*$IpQWD&q~V-~R^98E8|xL|8@Jm(eQhEGY!s={J3rZqf7ecgb>imL|lEx%7T zi~4GGtpZO7ea<2T)Ou#ZucHy=C9cl(D;cwQ-#>tv0cH44tq#su4ctPp>AS;EvE92Y zNP%Mr3tj~MFrTC1mtvTD2h+!F|G*7Hcjo~`4W(ES;?pA~Qq4F#>{Uc1gF&kbpJFJ; zwN0pyg{u14gyI^9I7PqhI#M-MG-FzZ&h!Wc@uH%?9UrH-fr4jJY1&lsF}^NdF}0#K zsiG_>oQZ71i0aq`T6nt83qU-vT4-09?o$)Y4>?e6l6ocs^tqxT+YYIkK=>;m%V}6)_I(eVzhN_|pUKV`QG9gsvh=RZlSXVtcqj7>k zdVfwz1}lf6)Qv?{r?EJhBF?E(Qc!ACuzG7iGOEYC3typ<+YN_CH{e3b zTy#UOJuD-=c4xKQy{roGyU+qfQev06lUM~XB7@wZZjn|zI=2`oQMZGi)>qhFMiTIF zrZxxDmzRfLdiKOi?f4Rp6zNXqou_YZ_Hzo`y!j(%Iss4E!Ry67kg%1bW9T6!AOObb zVJMfX2jO_VyUBRc(PwE#R+n(qIIU2G&y`wQ%(G)T7iBIuM-hIs8-jhIui9#n9*Ng@ zq|9R2*lylo_B%qk*O%VA`*^&oAw8Mhd6?M+nGE861;|y#6+}(ng`ss!TcC!l1R*$C zH?+cSnFdav*MX(y2v6o}jjc-6@B{RbPlTB1@lS=MB9h>MhFFa-EoGAM37dirF5_5? zVTl&3(HfC|8ccM#w0v$yZG@BA9%$7Ie>HvPIAj4m13-TkL2oofv=Qh zvHHk(P+nAt`$z-s(AJd)Nl}f7FLFQr{NJR$XB0r5;~&K{9M*wTx~5?-Y8(WveNc^a z-5Ovam4nlx`za9^_w_?<@@aB?I#-`iW7IB?LgEnb>eE^HjFuXYIL`id*>e?h>A@*po36EzbWIKb0{icl0qKmOA6I|UY)qv*Hk(mo!6+@}|0JwHvxuF9jU(30bUu(vOeU>=sk8uMB>UK0hSS%kc!f*WV{+| zQe5RfDh$gp!WD+UFsZsY{Jw-h(>stb%i)K_qR3-EI9_!}?=FE2Mi~fDIRi;|!n=A> z_Z#Gt zKJyTm;7@7ft6-ciMNo%B3pJ$=uw>QzpY)Zt3K|^ZkM?60tG(NZ_k&3wz`&@8^C7^s zh5U#&XciU1Nl{a#WF(7Pg#L62NMp+3UWZ)=rPh(%s4oMEjhZ(+FUftc@^eDMjBOFY&uU#w;m zNB&)G?|t2ZaYYXUu2sO$4Jg9Wt=AKPRX|-~?&v2wBI7H`wo}Zc+Q2XX6x2Vh(C+K%Ff71=3ES;nmPKy+ zd}%#EVa$f-OY8Q9j?NRNb-Nf>S}<&9wJS<3SnkfiX&kJy6yD264aXs2U%KAdak@73 zcSwwsS6uf$;VmadvH33UF?Eh`;^7~b3-+aTm@jM=$%v0w*Wt?D_ugGb*kqUjicw~T z4Jr*mGsVB^Pu78fiZxh}8wC5N3?QN^O%Rd=ed%R$DfGCkJ5NBG{*@kjVv^2zSV+2mEZ`k|f% zAGm?R^EQx!10$Q8u7;#5Uf|y!{l}wqi@!g1{K?Lg;bst{PoWW1WLYEc95j?}g@r6- zfTwuYLBLgYsnKd!L&G3olc+8JeIu@$9mz@q}x~HrXN}np@^kR~d3c$2H!@?Df zhtVq6<{aiFv%Gq2ZhXmrc#GLO+1&>~3}g78Lkd0><|_0|QJI#m$xDW%l9p(g zIYc`@;>aoOF^Ud3aE@RUJ_MH_JjAWH<}?p;Q}SXVS#$~XGf9|W9N3gdQw??kce(Lk zs^Uk!I*z!)s7#M2jlkVIO)78ZUQ_N?X_l0$eS_$Hw-j4tTSF*SF{vUGlATk>#-Sn) z=Q~N(1y##LsS*UsF(-FIF}3xiU4K`5vVsQdH{R{C6fKq(+LR^@!~*GffQo*7nc@}6 z%YCGoSTND3U$S6;S=|CtE_kI@^zOLQ{#0rj(q-sZvK&Ebfi5Qg*HdTs|G9k6lPaJb zmYM)X`x=5eRUV>%825c~lv(Miu+@SqHCJ9^#-Ay2eOBHK2aHI@}fM6XMD$UV5Pl&kS$6YxJ?JQZRpG1H?`}kFE z*%y@8r-+NJ0Ngv<5s`Ew){XdS=44f&w>qIcC^t7o+G7nz^5sEqR?sX6?n)`;%<&b~ z9zE-F#1QhBuI=(&=0!$mKda^B$uCa%U{D7@pwm0)kJPzuz@dqnqt*}9QVKfTJK1-o zQ8PBFL8R~5`22~bdItjzV+09kD-@orWrL*vg>rD4d&d-rt|@|T^nX(~RGfS!+2K>{ z_$tR$pyFeL-u{&*5DRr(1u`Ekmp+%|YH-g$la2twQ4}t$EQL5;+c?|^M6H zAO@s6`f_ZZ98!9RCMG@a*uzy6y@A9p4e)Y26NCYmD#Wtw*y7X!^X!f_tMrXB%5qRp zhSd9Q#-@j5I?1>Hn4r)=hZDo3BjY8_A;BiAJ+HB3&H-;7maI?jVY^9dC+Egl@Vrnk zdHYgBk%IsMODQZ%F*i0CTiciyep`IrKdhsm?aT`$snfQwhiu;HsvHxeIzncZ^-+g( z8oDwq#s7j}Z|tC8MqRErB+%8;wjwygH@>4ewwBw%9>KX%37^KRkFNv}Q7rLIRj<+m zcdOmQOK#fIxrd9AJ?Dge^9f$*V70kMCgLzbE>4-K9W_-|Ta|Vk$j>5-3ne%Z-y}Tv zX+aQbg^6dizPysl1r;CHUuMdF3*j^=mpI z7FLB44QYVaCi+TEPBE^)ZCVOe4AXtqcII+Ou_}Ca+o^oi8C5Y$98?pap=;ju(;6&O zL^v|K9V*p($M{$nP&@1L*nr@3#bhoSZ4M4BXK3P$%#NKYq2=VI}RR8vnLY6GfEO9?Cb_nEFbc6R~N>Wq&J>ynfX-l;l>K~<%l;bC0YW+{%bY;BAA ztur}<7&(=;l{i7n_@=mmYVlJ;c}JukY_^#xf-3ZN%Yi$%JLy}|feKUyEmhEJ=-SY7 zp0tgfI*ziL^WfM^S234u+Wb@TBj*XqUNB5qaXiiGpMK~>+4V=21PqvpJ$zg=oovle zgtBRCw~+-MR7d6I)vK$p3RNmVd3Xuk{456t6`)618!`ZM*6q zS#GX9R*l)0D!+s;ipuCOVK6?6arqG{w`e6<`|y?bke7cc2aRWzj=!TYSfb#pMf{3; z>5jN+L9Nd=51%zZ68K4-Vqvpff%J@VAaSCA#`;L|T*{3E&uzrN(pp z^RvPb$u>y6Uz4Gmb)d(310~x{+4k?!l~|dMFu`EgXng1~;ilnM6W5WU zboCH+B?kCQkfAP70;0>;hHi5MLld+Zf969e_AY1mR zpt_Q#^gltvcH@}){b+ToMb>i%;-#|UcGFAQ@Uu2*f?xzj%&a^M+1(SHb&~oBOEM_T z&M|5~b@}7tP}2GE!H(JBiXR-~>J$ve$VOw?5=Uz^La96nY;h>5N}1mPkV%hXu04(F zOC?RL@f;-oiUa(l9ziQfm?-~QWwA1fAMwVC6TI{|C#3jRGC`IUiY8lfRaCzdj$Tz9 z1VqRUV?~OfMkr#huJ zt~b<{NvA7ub-DpVTSi%RoIv$@AiqQ1)}EcAB@P-Czv4C#fQcw zL4-{{Ix%~r6PP+q?+@d$0yKuP`=mo>LT*#y2w``E-uFZ^0)*P~r-Q4JCJ&BB(QTdo zv>E8!ohGxJZ`2LU|70KJ6!)OD%Mb7=KCA9XmFk<#gd5v+=LB!Y#yqfqw3{=9P!+)f zGL9`=1BX*cZE%z#Lir%pEKfHNh=|zmR7R?E1jJlO)YVinPS8^sWd7jTwlmnnt6&um zLXe@xIpz`37f{}$UN#g`MrEr`IyI|uf@O~( z3}_z__|b2b@pDrf`0t~4GVcxZRVuV?JJ>hVG$BFnyjrtVwSyNsg9QN&T_T5;QybdU zC-5i**k2}g%jFNJ>WFBQ8;Zj~{LWgU4e~cd+?<&5OH1TAL%KH1aD>%`GDW<&#IHK} zLEQ>}CWx0~a@wcDFAgp}ESw1_R_Lwfp%M{jpx{RAJcY^TLkkoew6me|3Yn`ycO8?x zfS%jDwPMj8?#27#TCkK)4`m?VkF21|6-)6GA1c~X(L}{f?Fysb?gz!f7Vtr+iqetd$jCY&0HUSULsz`vsVkb!aZNNrAIH= zQb93byK(Y0Svkz(N7}uRJSLYCK3iXDUOwzQx!?+uq{19ucJ9vB_!NwM$k5UUeGx)c zIKn;$TAxZo%1%#~^W>6<+@l{5(^ZAP>o%r$B;ujE=yK_R-s38b)s(d zUC1953G2I#7m!D5eh_oLZj~XMk?e%Zi&&bBf}~2+7v z`&We{fx)4xmeARz?S!1vC%Z)uG@O-=NLMq@_0y?Sl_Xt()q_rTuRCWnF{uIDaY}Js zDK`c|<2s~Hs$^pCsJAr9XLCo_-;lFI!$$3~xf1%cJ?fBg(hJthj9ax)TI?}|GmZS> zs{A?tK9jTD)0hQC>$eRVGf%-31?{0V+k?ogo3;sByfcuF{(3rGsc=yfLey%qFD+k3&yCjX2X%KvG)HE?2Rt zA7bls!y9Fj@~}p3-pZK1H33@oLL47Pj!0lsXRb*^0}?S@MZ890z&j3jtIAkb4sStW1=-)GX1RmkhNkmZl_0D-$ND(5Xi98mZEnE&@?1^+XH( zIGk7lTIpOO^eRa#X?rKvJQP=FewuN&K64?ktR zh?B*o$M=*n2N#Ha3KmSVFYb*TE2vP9(|cR8L@rG(+cqK0ocbxzRX-lWzs+n=d1NGR)ME-R3Rcs(9(${*Vy|-|H9t7f+&t zv*JbCE#PlG@6d{D`zh{k2HWpI!}67ScGhL-qr~9`VIj~tQDq-Z9W5Z&ztN6mOXFm% z^G&s!LCXM=`ysMO8(hgc<)iPlVrk#6>M9Znj*H_4AXhx5EUW1e=zunfU#T{HjY&pPUyHR~kLPquCbNtm@h)WMIA<3Q~SfvI>DTzF zkTAghZiHylrO)(JC^SJ&pTOO2-Z;tP=m!K_Ley-vi|>6d$6SiY(|aHa6e83~n<7Yt z!Ae>(2bVijv1~^ULo4hplSABOsFn#xc-T5gkzd=wW9INXCoL4;+qfz*LIGbRL#3B5Lq}0OT$JH5CzzKNadp1->g%) z=_r?I)pED5YZzr$r@7duSl$()zY8mn;Ghd5#5;R>9^~e)*HGDL zjL=B^kz9T#GD-*1n6Nq##~9Ta4tG?YBK;v3(|xU_VDtk zJ7imUu@ZFXPi^HOw&o|ZEM4-d^ihpOgcYp%GwIrtY&VS1xO&GDBaq4b$Dgx5jSQq& z*aoCX(W9cJdWU!vA(WVN>hSWJlP6y|aroYQpLq7zi%%Xp^3vnaz3}XjLr)xgP7KkJ zb2Z@p{r~QJhwlHYzdm&Tq3<33>-+AzFE~8iOp8Z?bY4fQDrs?&!&Ctc49I5{Y_|L$ z!h<#{ByJ<1S^kv~Wcj`OLJzCs?dII@;0X&G53rVXiXd_~fCm*(v0Q$I;QpZXEq#MA zltGGKzMkmeMGyxpAzC?hP8%)G>XkHp*3#$3!O25QpPeBNvSKo#;XxWMfqIIO#h3EV z@}RM2UW^`i7aN+WQ9XFpn!%(|ZZzI18*k%? zrRL}XWsZF%+ko{_j?Q5Rbp0WB<)ox?$5+d%)stjLp#@HF`BS#_Ub^>z7ao7&8NQm5 zCmqz>S{UD$dGw*5|J}n6KJ*xda4*mHJ|&~tmo=7NOO!=$B;AGhczz*6(qyl!(s35c zE3jo8G87EYWzI}3L)CS-WRguGDN9}E0h?X>n$J6HVObOYY;OT$ z8I{*YAA{r$V;Z}L{WUk;g%5Y@9oWus75Qlq<#F;(YT!|w9?@-Mst-=`DsR}`Lb@9AA3 z>ZdBG-RNO?5@?fwriV3s`x1OnK|@(-s<2CT>(`NH zRjG?>7GhKGPS>*|U_71Za!*1;)E1-9P9So7SyG_<=Ffq=FV-g|Nj{v>Q}j26TKUx= zH&jnWV3i}b`yNr1rbRc2T|V;G^1%ll`Nf0({(*=QaJ%Ec*ai{l(Cy@4wdvG8E~%uY ze)h4H+q@pk%}*DNAN1YyRx7YYT#e`1WJuK4W&4vz2u5Men33*F;CZvoC0&it*{Nc+ zO*P1V9rRRR&QZyUsh?jSpAOIuTOQ0I>Ezb_sTW4Gc?N@c_`gLd?vF!B39|;PmtAS% z1(T1SJbvW)r%yif<0HR3^6V?~5cWGLaG?(Ebkg`OndOLYl^wLN001U;>`?@QLx#Yj zCvUr;BJV)np3~nZK$O|qWNGn^OVlfB=(aKFm^Q`i(hCy>s-}S1qOgK$;Leyy#FS#Z z=RBVjgku^=KE+wu2gU30KffL;R1y74!zCO^)$aHxGveyk2hSeREAw29e);L+$6kEl zvC<(TS(RgU4=~#;eZ=`(p9I-IjH#7Lil0u#8FHcoBfkXox)mXu@>p|Ay;bC?c6?zO zf*Qz>2TY3{mdZO#z|KW)BT;*MsdJxkExJL_%riK*p%dkxc!f`*Ga zDL{gzAi5%DTFS{@a$6#^MPoM=x3U>m2m2KTCpCG-QB^FbI}U zmCCX!Q=74En1Rxd7&09M>c$}p3u)?|@;#y*1b`MhZ%*UKIpu`^HhIw zl1kM|Cll6rZlj^9k1(DC?S!0)L-J{j`mTZ@_m9(s9BR3MkmKnIM#3;dS(`px|0HFB zw7N?!U*k|1i*q=a5~t8&xxPpgfp1(1mx}w)0!Dr7yQ2*oB(&Ga9i{8cFlnW&p}K1S zN~hC6G|B)W6S`55;_N!NyS!YVZCXm{D+cf*1pt1u$>XOG;we6ji;?gNa_^s?Jl2vN z15MVc0h@L1HRO9NDLsiQrM*(mOT^hvMQ^2%!?5Ri@d*nX z6vx&C#846HXR7P_#YS!~dEJAIPGOz$=p=)Hzx1KydZR8~D!dS;zXP>R2M3~<1G?0^ z`>?*(T5X2awVZ5!;y@k~)kTshcsd(jjC9lpw>h*Ls*j^q;sYZyzEX)~+c2Hw=fqxC zNB>F3cPgTi-KAypmN_g@;l#^NdB=IWP2B6Ma04`z@`>TNjbUK}B#!7yD}e9C(&@{n<|s@kzpFl{Q}Q<)Et<`K27U*^DBbdPpDRnB(@& z%rUdRY-pY1J`|ih%u6`Me|=1=Ge06F+^dQnV&EJx=;h2Jk~3GLmC|n=K+q1S+>I)G z3bIoP#pgR`2O7pegw+;ns@=-W-S*T)G2mcV!AcBv-;=^+ zB|mm=q=A~I)JJG1Dpb3g_PtVj)pw@c&QO4%NDxm^MFl9{2i+U7-pQLYL3=5kQeQo3cMe{tESTxD z5)hF2kVSkIWY>(*Pd${95J+st{B=z$e@mG^ zY$z8qGs@dE(FBncC7Y1(2dLkjhP9<0p@(Ld4?Obl@_`pmKC@U|O3-ERm4!6ChTMv^ z`UE!%Q%iAS5?ypUGR+Sk_&YlT$wMx2(YbcGTqGjc%XEg_7>)G!FYVEs?<8O5@}@N` zh5gv)iK8cv^un`C=oq37BT1j1QZgY2Njlc&1epeO3Epfm+_^vkC@7H zM2e`_)C!I?uWM6|=6cW%0PU{3lUsbqbY!f2oRxQ^FkZzH2L_qHS z2m^vjXTq7Zr%DerFqWIJN9Sa~y2@Y21FwBW2^KhvQj&EHKCsA{xqI_7&q0I)$ zln@4)+K^KSMTVeqtP?pUYaOO^SrRU|!;qE&7|-gJ9k>Vr>M)s$f0jkVFE0=QzDXyS zhp}YnRUJX`SH?xys+FnyEOG0-vHveK%e0qBO#oSn>%rqex~G#G%LIwVXTMBSdaO2o zktVUNLOeKXB_q^9>hL(y9cywYm9I9`dYX^~(=1N)n)KD5%H79GM^-0Nq_$cqozQb9 z5`5ELT9s7_Jyr!;Y8@tDKSz?FA${B=tYtzeE3IrOt5ZXD5ecRguvf=eRR+~ta_Ky4 zGh51aLV3tHifTQ&dst>7;($O3q68tfMp>pma;z)b;Z=W20S+_%$6Sq=EFPjWlwhF( z57EXEN`0eYvWH&x6#CGGK+kTsDYi%V9GpDH^1x2>|;iD^~*Cjz0)Nx}y4nB=LbGu{gPMc6MEk@O$RGYbGET z-e&Eg0eC1#SEQ@c3=XoS-Z&L`5aA|m^kq~Z%H@|}TcpcZsafpTNC4%IJ~l!qBk8d; z?Q__yt5L(fsKh}too?%WT##FwhDmi@AD@LJhj3xLIXI+=Qv7&qo-wi2G^~gmcF!Hq zYUY|-6%52`?BRkJbBF9On3Mr)`N4&Or&3-nwx2BAg(WIH#^c>lfkw?moHY`HMQpKU z7)*h>TG)753Mljx2LcJMq+`=c`Wu~5_#@lU@Y4JIcq#Ki(**xDC&M}o3PqdPz1}&T z86fOy8PH#Ti!l%{7ph2H;HYDFDqmyrS`55^RN1NbQ?=4^iarh;jf6P(tgS`J(%&}! zr05C{^iaoT_M|g5DMFF@leMAzPOI_`13LXFG|5)5ebu|929+kKw4V{A37J=5#>}it zQ`}Mk{!j)N`71S$A)*&46>;!1|zwC_I*P+%Q7it%;TL51Xv9z2P$Y zbgu#>Vl%X(MuSK;DUn3GS2!_Iziq;b%EAXqLOHg>e%5rM=Oo}%b5<5%R1#|pPvWOJ z5(JzGBeMEnU8#)Q0I{JY>xx1Svm9L3CNr2Fsi$9Ky$!?r%hWa+)Rg>NsFIOuFy(CA zex0{Y6zJHtKCp>8=fk}AfO!(9=!%llyL8Y|*q-yO!J1v*MQIrl>&Y?024RiBcpzQe zN(>$OUzl?#FVMCULENa77#&X?IyVUrjz}U!bbYfr+bP5i9K^T4qEa2r(CF|)yLkm_ z2x#^;nqjpPO@Fo9Pe{4&n-?WWDNU7I(`p?ajAS@vhGdC&EE3elNxRW??hFjPtG87_ z5!qJzaMsHwC}7^=nzrlP}VsJ_wBy$6zm^qa~TEj z%R9TOUj-7sV<$&l@>>B3vt-RUNqZd!iOgqY)0i}E2pH71?;09DDaf~vgT-`=>}u96 zT*UR}ZzoTC-X&x3APPEtz|%NSa1Zv<0a>Pi+*pb6-BJ)n>BRiT5k-H2IwThk+)6Cj-JI^Nvx;(6A(V8I?@X50% zWl%`9{T%ziWfoT_Ivp2VeCt3_&&~FkJ<)+G2-$u;+w*KX-~T<_o6?4p0$o%&cI{7Y zYL72X_bLH)ImM8ruHdwHco|lOfOtBI+)tQvl@O_vJznOGCw$k0Fsp8=6xmH_uJ;9% z^KOt!(r4Eq2nmO(q#zfFV`rrlU2utNCRYS9WX?_Z^`#fna zVd!xOwgF_j?2zgYzrzCUfG!B^T#{wg_L^bFGJX@9fuh0kibZKIMY_s4=)y#yg5xTf zB^Ioyh-EpUj-nGA+yCRq`{d?VpKrh7`06uSp58KtN2*k1)xXVYhoXB)?+`gzW&$## zhD!^%>QAK#*iHb9#=6a}j-Z1M+BR2)3Dy;=rm)zC_OEZewG^WBn!H{WZ`%Ca z;^n9KL>UK8I`4YRwHT31J5G;3ri0@&Zfs+96Cg$sx1t(hgOi&yTt0dH@uyA#lpJa~ zw0QZsqtEL}jphY6lsWaKwCQztq8Q-%La_#47HoUnyIfsj&Grkhnr8$S4YDj(A3?XD ziO~6j@y!nnQ38eZ1(`Z-zBX?Cu9ZzE*X`9uyMZFHejN~$N$i3N9N6gAdob@5@G3V2 z$tRw9{P>Z_(#d?ORY@6`5}#9t@-H9fftTQ=T;H(Qja=(Evt&kzBk76LoBA zzUEVGwJM>{S9=uB;6Uapf;yUOn*aIz|LIeHYAlrke5P@D{L z)M7p;%E(a!K;#MV>4Hof0`9l2C21!w6{UKxh!#8ercYr8129K^a88VOcsXS=3FH5l zs@OepIrCC|U+ACTH&s|{rBOtycS_8?AT_&ZTf(co+<6dM7MLY25be}FgX+(9co#9s zcRYCP#pm_a<eEoBM=mncQ)&;|C9Yif3`~H`>ES64w~u)->dD&S@)pBoM5j=n zo)@T=;^zl?i%Gq3Szl!-vvconIaSrZaQWMi%AWJy`7&lXL*x}tb$q>2sh2W4_r8|H zC@Kmm`o@sZ5=9UlEtTF4p-NHt(p|Bw0&ZN{w<+B1=f5+q)XSP>_%|c$?$TyyxU=Oc zo^{4#xz~~dQuLkU02${K32(lhiRyJ|DkE5)tooraXnVwD6)Imx5*am=S$+IE2Ci2T R=6**^iUOJ{K3|dA{{x$px$po0 literal 0 HcmV?d00001 diff --git a/locale/sk/LC_MESSAGES/django.mo b/locale/sk/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..e2130fdb5e8cf4840ebfee16d13656426986eae7 GIT binary patch literal 15082 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 literal 0 HcmV?d00001 diff --git a/locale/sk_SK/LC_MESSAGES/djangojs.mo b/locale/sk_SK/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..620f5dcdf7816650503c5b097eec2d68f32f6b6c GIT binary patch literal 3457 zcma)+Uu+yl9mfYKfnF&oVsU50T1@(9Vh8GDv^A8r_5e=lS20k4C&*mJlY0-w+4 zzXO)={yh*E+sBQ*|0d_}!1v+(E_fLH3;03sU*P*eT1@Nj$L#~)Lm;hx6np?YmcLJc z_v8Hx_%JvFl8fsgRIx9DM?sO#e*+{v-vn{7Z|C#h2N5Fs0r*kyW$;7b&+_lT0?F=g zL9+J;ko3F(lD~fk$?m^F+V>Vnc`INM#We!b{wG0NcM&9ePk{yS8SvBKTK?`q^8aff z>3nW@{JsQI+&=cT{A>(D^?eF50(k;L z`8yB!0^|&25<=s%5IURBLn@HB4~m`6g$7c^PC_1soQBZ20HJuPmWG4QhyI1(puEu_ zf2npkWH>0+&*d+aug4%159NmX!f;URG^Pf~?vLir;~>(S<@W?wgisAV2`ND+ztfOo z5E_(M`j_dvhJ$MS9ON?)stX!)9#mszA)kWKpxl?~p&EuHlI|U)9jitWt6Ir>CgCp0 zAGU?|+#7DC^9FOir5uk`(+b-=&#FnN46Am97naQk9mt5yL`rJ!*o>9J%W$}u%_P?1 z1CNDoRXCf)o~Ce;&B{pnA^20)Bym0$f-bNs_R45Hd!Zu7W|frzeCe@Sqenb%OBr)` zl}*is%Cor+7P5KVWLV<$NWu&cS~6(EeaW@-+s3v_Y#s~Pyoo|-9m@xh>}q9k@Cpk2M>;iSyDT~2Q5~YwxgWG z1|CXHA^h)T)~)O+lQ_02MOY+922Yo*LRMDu@)`QxkYbav-;g@QElcq_k_A(!jYdl# zGyGzYHG0m=4qI2DH0-i9dJFZF`}{0&yn&+%MbELiHCIp;#f7kVpvOtkN}7dL85`@1 zHMgb0;>Bdk6)%|zFVt6xt8kf27Ez3{!Y9WkP8G*-o#ErBDwC(57{@5k;TA7hp!hDvyEI=seQzC^+myCArvntE-m37^P2~@KuJFuOp&lhxM8$by zJFdcYoV~i~lT&=~I6bQQF+Rbkr};QPew=H1n&9X0hUM@0bZ(kY4i=rA<|nae;$YEH z+JBx;R``jrsRGVVg<}6zwjP=NJ5r~&2VDujwN3j-yJGA6ed*hVHN50b;TQ7hZH~2w zH$Vg7rm0O=?Z3)>dJ7G!t=0Y=t%BqoU24N7`+Y29i&>w7-k$G5KQ+rqyc-G%;&jy4!&@9J@79as?5`XpN|P{FuCr zlt`~itdZVoqER88a_@%HZTv!+gFSfEF~Pmo1``44<}UmD1iq7NMJW$9x4JzXt%D+@8bj$_GMrdI5~uI)Z7 literal 0 HcmV?d00001 diff --git a/locale/sl/LC_MESSAGES/django.mo b/locale/sl/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..5e29a5f8cb77cb4edf7aae8a7c01b63be4fa526f GIT binary patch literal 101645 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 CDl}L~w``02 zTni1fAu-0ytqj39w{H;Ym@JV6(+%VO4Fr~;ruy|nq<3N%uKOd?hD>$TyaFoJ_2FR< zxyEEut}c_$Mb6#Wt(6%j)d3SbP1Tqhq0KS5n9^92NsMKBx@hm_OglwzDCB`y$r$&4XPL1GBCB9%pbG`YSlNdK<=In8k$0Wv4`YP$FOcNb# zI0P{^<+4>}%<tQ+@P+PH<1pDk0|J`ko# zE)&vI0ft~Y3wcvhwDoKiCB|i#H&?nns$fJ@HZ^KQ6(%NzJ7V2flg>88DyfwL>sgzn z1#<{9oRCVvW(9j#>=ZIWVAIs%{vf(qFgV#I>k{knVcC1_L<-oeqJBNB9cFI>T=`QF z-m}JTrnTeTdeE=;61MCcL%#h2a7>=%&{QpNr)qo;jc2oK7pmvFs`JjJW>8)d+O?Y8 z`NS}}nXFvfp5j#N+(LcW zPGU}GvV5l)%!AVv{QH$@%(WK#PD>BiU_-W>Ka6MXyD*6`jA!#LF+Nq5ZD~>m0pY!5G^q@TP&uXK3p-aYD@$%^gCGUqXet z_yjF9i%-!)Gp*o5^=!>dB8?=?(lAHs7E`bdn-7c{H2HJ;D{j|WgHLP~f&=Z=Xc7=p4ntk&Yh!8!;g>O~ zhNgT=+?nPO*%Z?(Hegp~u40M8l?S(togpWs;qEntg9Z*P+M2=-eU9IDlh7A=^iv5J z@Jb!YHqUb2pz?0c=c?-9;xr=Z`cbdOE?rZ@pKx&)smxVqQCKCBVijt%+pqnKcxO-S zk*9Q3rV(wfDw(B_{6ZuoEBcr+UYrUcr^#4IzuHKQw>G1NG}9!v<5ojHo&1IE30JBz zcjyw%mM}_n!@@6DBL%}~kxjCiVmj#eQxfByUMDX-U@2L{;X^Q_Vqm{=4p}(2$Se)EcDgAO z5F}KI@$61%*OqCS+LuPF#DxAj0ZL3@G;@EVorvhP9Ex zBss3SwRqF)U6E9H?@@oyN?T50wz;rd!5#C2z$e0WoZ97ZE4^rUi5qA3x&?Pp$KXT9XJ}#(>LkTwjESyu!$D8h7S%dGWSnp{$U37>c^`AqrbQD=Wx^kk zYOq<)6kMyXa)13eX@^4$Fiaj36B@P87fj1kH)}V`w9LW#hrQ^8MrKiz;xH`TXd2Q@ z^}_=&vx}QWL!;TLCW@yYVMyL47NG`h8EOP|BE__*5K5b)_Jqb-mLYXGV~+0s5}T{n zAmt=JJo8jgn#V`B@k$RZCDr`j`0K+6Go%6>knw;YlPvoo8Eo=k7T{uC9x!UQYOUx&ix^BQt zIw!ggIN_m28*aS}^V`U+vlVm5Mik8vFSKDhJSw*JdunpwG8m7fnzM5}TbnGZ*NT<9 z%cg26{#2HpxG1K0Sl*3mesNcB1*&w@&VIPL zl}+VY{J9;+6+__+%9p{4QMzT@N`qR_{V)WEBG4q%&5he~v2wvJ6r0b;Ft-U76UE4D zJltw-OSm0A4iMc2#mc3k+D(8t+RSmy!S?-PMN=HAX74rt6%yt{V5zX8krLNN{4tj) z4TxcrOtV>{y%RUG6hd=u*r`>6ih0$}tc*C5Vtd8!kQ6-0R?%yRG8)ZRk}BC1JAR<+R-TBxk~S$_6b{!CEZm7Qu$=eRkuv?`@#knW^# zY?I-%w~!3ykd$b2bJscifl}N>Y?|XH1@4qiGj;3UkToU*zWm%|Cq?gP$89Deesh%0 z%^iNl>)0I?xnTc?eoV^L{q~}&T=8kVsbRCCr~_3o(-((3w13*f<^HdiGmgU*wYAIQ z+~s|Vx9--8%2#)`*c55YzdNc?Z-X#q80|C7wRJwk*d3v|e75@-h(Bm!ek+@@_i6is(s%J#B~b?wT`xr@J>j6I z^+)UEnKzTAzml9JCq8!8^;fciJi1eraz-6LGvgMQ-}#8Arr^wF6lsbiEtckRgWnAf zZJ7K1)$RMRF)j^QOKe=XQ7#2;;Q4|+)wlTYM((bPOj&qtZTT}qqQ3=S7yaHrqnqsXd)*H8UyWA zEKJuH>2nQKzBh4~?l^eR{YJJ|oDCtlMNuzpZY-!FpapWq3daTNy)6DbU6b9!B<;Fuajokeb{&?*0g)D&A0fk=U8*wok6IRUxini4T4;d0$o0s`?Fe`LkbBW2bXV0|tT#Z}8 zsMaKfeh%jaF)^85#1%gG)|#}X;_l@6y*X~+Bqp;CMA!sMDP%CBZqTR!BkBg*l6*22 zY)4GC%XO~q!%fQA9CKJ=a=Khkz#j${JEceC5B-e(*tscH#jzkMYSj-+W?_+-oXMv5 zQQN2wX0ga8Jy}c2EbKV{%J_3ITigmyKoWYS{fE+*!*%c#Nl?gTJ{6FyX`zF`*PV#7sa9o zosE|5^n#j#lDG=xO5Ke*G4+Q243=Wz42wxXUGqYJ*F-me?7-G{6Ullm@Tfy%A&v8e zcGAlo1^R{D@E{(pU0LvUip6;jqhbKlblKlHcj*ZGA_YDA8eMFsoGO!v=CP zaJ3LCcQ+d^E(dps-CbzcK~Oa_J{6qLRi# zwtSc_53VCjd)d&o8QbA5*u9!jQmf(M^{hLRcbCH z)8fmK7|t9>imwdq=S^v(+s_Au)@24RQ=zRL3I*Kp4P4$?ZD@_}<<=kBQY~nk zI?y1i%sOLr*|M3FlPbJqWXGvf!u7x3?25FNemrYs>NW`ow`k8GD9od5V?@1lnLo{n z-HiA0I)bV3xCZ>|XW*xPJ zifFgoo$Yhh%eD@d1kK*O2KTJjsd;4lawW!v@R8zZs#P#`6Wf@86AZT( zb9#TRPP0jAnXn3~CjQ2%$PJ3zJDbV{T=xebx=O+okzh)r!;I#kbakYl?$m^l=g^8(N|rhB02wY>1u6I;lsj7*a80G z`bpkPGvUiA&My@|oqf+N{cCj&<&s!&N#{yS3g2r=6=e~1C^Ry6XV6~ZU)>4D=mxe6 zG`u?Wzj)0j9->R_68a+lvYxCeV~3v7hc%^sQF<>_Qbkk0xW-M;xnJhw$ax5zsm@fY z429WzkqsL&?t+4wQe(3e>kR*b>D-@dbQN!BXz4t60a>gu{c~#(-WqjR9!wmf8v@j$ zJ3{kI1sc0tyKAb>hJB#${SP@;14?pn8tfE(LkrXxnf9S!&LUN~y&JpkvD7kOD}<3fuK=hWWJuqd3B zzh54U)RhB~N0Hg-_jKaH2bES2n8E1w;%KD8pM+>>A!EOQlTxnpMUszJSBOW^8`0fLpgZ$n~Ka`4>14 zgc&*}a)$%qS%!amxItr+!glp(@8+0m4(Y>Jjpam3F5A%dZ=o?Cr2H&w@1I3dO^us^ zgm;A9Q04=4cZb;2;Qhx8qhw7ujT`2zl?uOcid8(jnseYOyxC3$T`jofYBc;LA{BRh znDY7SbCF>#QM3g-Bb(NZ&ly>+c>v|kx=?jdGuXbZc7L-8b)bH@2;X{kyVw+|vkCW* zq{(6AJK0DPl)4#0S;4@rE?35`Diti_BX+@bmfj?2rKO84yz*JF^Yf7~8LEi*&=ogt z^veT(5vO1gt`=gUE2lPgM6*8{J?BU4lk_TNI^K|CerR5W9y<(aSQI9sM`Xx6p~<3R zIuaVIXLkd&@7m+W%3ZN3X9aj{aTgJ1QmIYaUnPo2d}2!4W+OX&E1Hn{$h|+zALeJ- zt%bbsf>O)}DYx6Gks@$cIznTo3ru3nDP01)9W%M6pd}&-_s(A%MgRRj<^6j;ve{ zt+*rCfrbtG2e#4|($O)ONY%3;N4Jc)=TiMSDd3g5^kOy#}#}!fGtQdY6^U8dO z_N{W|cPHY76L$H9X;0+EtipH2S%$bmX=Shcgs}zb8aGNVvDfGQfsO0*ZGhD{IiMhB z!5BoKD1>m=b`j?X>WE}%yEn8T-&_Z|FDFFluu8OxbI1?xFzC{l6=`T4=3|f_6IW`l ziIv?F_(L~tV(4#mvcKc@Gl^R*QVF-s@MxrMl^SKsU)iS{mCS2S;P?3J(|%^)cijp} za3>fo;ourf8K0P$sb_x|Wb@6n?E5m1kIg3c;pXa0y~!AV8CX*dC-;e&+}z;U&NI_Y zD+%A~b!UDvvl;EH*s=?qvWXkVXa{B|UYASgk1bVp(j|`8!;&|&ae{L(mP@=}rf-lS zhP*6-&A_sR_B#4&8sk-S**Hl_si{vWN6`i(eUII8=WW52IMR!RZCkn7bV1Np=FH9e z?7V43H~y+Ml}7SiiLT(JSr>s9F@&~ZK3=u(nO3 z38G$BcbBV*rkoP4@WPs(HHUXR2+nV6v37C(wCm(e7PwEnFbSZi4&;vf8)6&%-dtXp z514gz$ijFPnYcNkeK7+=w?OnLY*r+BpUcd~M_UbMFj3NO>PhaSAG0&2SF{SRxN5u! zJ(J(Nh&Ek9w~>w7k?NT%W%|qdk<-!G62;91nLXG{vskO1kSUonoVi3P(GjOo>KJVk zpx2eGywT1q*LH%stD>07=lPxyT~4o3zu{R?a9>!t6x_*HucMC9>!hK^w!JE~ zLpqzyAEyY10o^a~a$qO+72ZCd(T*EVt#`3=mPB~oqS+K1f7&y0G3iI$3BHa)7kZCVwhd<}~!0;7Ok0l7N}tZUplHd<@D!#>`E z>(7NLHrD(L0CvL{e_0L%xS67$38z)M+^Wy@6h0!$FdLzZw8O5c4ShVvpITpr=bDAV zjAF3&VKu7FrJZuMp*)zDWHE|Yb}yTkMoz*q;D&&Nh`duUzN%Q(R0I=}oX>_;r|m-4 zkhW@6U^euI$7)<@4CZR@fU1i&53~^TZ(4=nC|%^web~#b{JdL#KoLbAzVaXD#t+ru zri~X)G+6$HgLu%bk&+eXeM5(Q!KEj;T!;e+%!0oCVp zm_zXfKU-w3oGqKQpqTHL;?i}u4h!|>F833hi40!D5{|?)N+5GMcX7e>1HSg%eTO#g zDhvqk7a-Q|<^dnKk<2=EU5e{8Tx)ik(RL9b=1>RcTJIJ)E-WJybC{IEL0Zt4Z6V4c z$5MhRhFfM5rp|^fsnN}b;yV^;9Tl^WVpTsH7Q2S>P>0-fLt7Y`{Wq z<;~mmH=wL{Llgu6%t5VNP{y zAV1pejCSCdI@#H5Frk5~MsE85e|NjLRUGzykDI0aKZ?qiEfc)>gv4Khag#>BXXkhP z*qf==9y3dpN`IwbXKI7y%?1Z2Z8q>qHDPH}+MmKW3pc@bDhd~orrGD6R@LbSK5cT< zr*#Jq@9su*q;MZm4dqJr?I_)tqV32s%owc(XKCaKJC3ZMVtOIXgo z`_Pv~jsDxbatHdwW=i6y6N~ZeCa51aBY{m`0 z*Q&n3b)*zccr2`@(cm^D+)yA55$b5O(6y6p-A>dWl}CMMadJ_jl70Dl|CcJ)YgXzx zWQf*XBUtfzX(c1gVg?6wcWxffiWRA1ytfTn-$va=vbt9{Zn=@9Fg&_3Me`@!e)RpO zpSY4r9msN$?x%46^d?-$x!I7*mM<>i^w-!lRJhmcqe^fC6%(5@X(fiVZNO`KV>1yO zz5EP3=ciNssS_r~?vtE$w3E${2Oo>iAaelgM%^7Qx01_gbdJ-PIwO|~KXz}_-wgB%9=H1yJGiQ3 zi;ZDglMhn>Xhqcl1VK%IW3~n^c@4PKe26E z$tYLNwL^P#O?pI%KR6Cq)bN}k%}HNX^MBn}LC~|%z#z+pMxHlvc~d|-T|6Cu#6i1? zHa1Z>Skyj!K}R1@IC2cE4=XYwKkgnNnd1(nn{m?weRH--FEm}Xuq4^nv4Bd0iEt#s zni;y&S|*6POjwuZJ7CP;WATU0Ihr*Wozqa&boO;_x6%jf#5Nu(&4uq5tq`(CX%}{Q z9n$v~?rXOM*lOj`kZe?KlL@XoQ#`JBcZkMK+xco^n>l{G5R7;4j_IvJ!YLd(L~D7b zVS25sm8JVUS}!-Chtq^Moj7sRJC?;^JMW<#`+s&_kXnh(0NuG};d54h8i4ym6wEAKsrk$p$lH~L+ zPh;9Dsy59E#TK31D8{zk_9}IscPL}wpp5F1uk@%ZE8cL8qfu4`$7W!wV7b7kd(_e0 zkHRopYTw1wfZ^WmDJsO){?whW>@MOTd0bg?a>cKj76nmwp|VYxwmr9EK?^tH+Gqoz zRagdXdkk&eg61#fv~{?xvKm>pYOkSr@t9!S%dNxkuek)>i%zXtH*$L!Cg`p$nbwxt z`j7y$77R0IS+3EpRlL3v`;%xxM{UKb{lWi*)V1>VmxZp_U#rZ7mVYF2dV`b%Gx*q7 zgZW5Tt6yCGu!ac^K zCQ@wY<8m&m={d9+N6D7Dqh5|K0FYoQ)NVUVFU=nXda#Rm2_Zku~|%H;>&UxNz>aV(-kU z&>sY29s6GmC6)m5878mIi2wLwhs6y;uLo<@8W;UG#y(Y)8i4NNx)?wlTSx9!d@J;Zg^RSUJow|G6*6J(SGGAmVdv-HD+J}Yd0QJ7zG7WyldSEg+8wi^ ztG_Gp>k7>eAuG7BkJ!3<<93Sq$8K!P!+r7*mn=SWi;@Zd!3;yV%i%wwVe7N_l*$IV zio|SYtxa{hmKLdoq2&KyaLcsB?7C!He{}!X_gh*G=nKXAByYF4mCGbAn=s8u(|p)+ z=@!VI>0QzHP*|t?H(lM-iGG6~G{bsP9lYxn!}G3S4A&J1m6d>3^kJ%1SZj?YaNU}X z{r?2~4-&}+XB@67+)~jk2iP@X7FO8I504S-^{5Khjq2W?b{MnvZ9sp=%=X)~+;F85 zZAJL?F)c_bVLi{aVM<3y<`xL9Sq5ni%OK8fjd$e|RQ%dp%mNSoRZhI<Vd<1SXK^yY#S}CIUDg2c#+Xk%8owh2*cADD=@d5w!N5eVXl>P z;fy1fatkYcB$xR#2Lc*--TY18-JCL0cmL>(IdhpuiRm&RP1D~X^j`egK(vVw9sxA^ zHzug0qMZItlxt zp^_Di=h}2}$0lxR!-_^I#XC;!{D&BMuTfw6Miyy)HSX($^c^}z@&UV4t89G8h217yXexI#?@C+S zQoe4e7WxytTCNv6)X#>m!K-k1d%jR7c0Z~*T^-$)b4B4RMmN}E`)uySFkVXm;r+>l zQ+GPrMp@Ibk<75Q+CC}$3wO5Mu9%vPOG#G$&kiR~8nJl`PoH^Hf9&?6R5|Q#xE(7A zQh4dbWm)$lX6ww=x>d!;7yk4~92YX$8voUR)_WuVu8%+2v36;jKr3!9jw#yPv18My z6V?%*x>oO<|BJ$Xirn{f=E%PvYF%`pTOm8{W3=uZ*w?(~nr&?QvQ6z?RCJjSw}SoF zRq;u+KZdlJif;#p4a?=$Rf2jd-e=|>Y}mwA8&x* zzq6?%l~@)|CwtAp*d-+i`JH_ z0oGKx1&8TDLnuGQ$=@#gab+SN9wW5tq9vI~`5#>z-!GDE=IS{u8|Rc(=(mutN+vXizG3vYV$V> zNN{2JipCE&V7j>NeIQ>w?i?n(X2fgL?rMm?@)IW7m8ClwjYc-_R}%@f11=%!bF<}i zaQYanM1RVJU_1HaWoiGHo{{B8Vz&RnP)L_>+NFCV6FdLkY=jDmgU&a+1*;nrkK9 z)Q3`VAT$3-5c8p^L*G*WpW4plN3QF>^LLTW=&!hLLo;NeE{d`;<1i8xy<*c6A0tvU zObkF&vy1HNM^#T(cS~+$VZ(s4v4A)a2LZCMvX}%39C(5Ru#MOoNqcIgy&$d@AEsq_wRR1E8-WWJ=jNw^Ww(*aFc-$rl)J+fTS3E+?y74 znfun)p=grp{VpwQR<_l-Z51J|ps0 z%%bVEr98`O>3+Bt+&@@6!uQ991`bgkG<(n}%8zC$7GJ_b#6UH}5`(FiYD%l61P^d; z?|>aamtx~2u$nWyMn=7^vn6K?jrWjySoaF z&_Dg{V3F;~gt9dRgpcU*79E_B@gS!4hn^U@

    f%cup9d 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%0A3wF{z*DK*`~JAHEo>{7R_y*Fovq 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 literal 0 HcmV?d00001 diff --git a/locale/sv/LC_MESSAGES/djangojs.mo b/locale/sv/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..0d38fedf2a3074df9f9d2b58f6d8fd15219e3aec GIT binary patch literal 73333 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 Hz$E$~OiUUR literal 0 HcmV?d00001 diff --git a/locale/th/LC_MESSAGES/django.mo b/locale/th/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..59d1b9c269cc1db51978e2d12d77cd537bda1811 GIT binary patch literal 155065 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

    ?txGd2&YeNZ1Eop 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 literal 0 HcmV?d00001 diff --git a/locale/zh_CN/LC_MESSAGES/djangojs.mo b/locale/zh_CN/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..a8ce1a0ad69a093607959b721f0850cb5a58f4ee GIT binary patch literal 88538 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 literal 0 HcmV?d00001 diff --git a/locale/zh_TW/LC_MESSAGES/django.mo b/locale/zh_TW/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..53dc8619deaefbc51b882edcca1b9edcd9292dec GIT binary patch literal 56129 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 RVTxecdm5QQyzih){|~uw&%FQu literal 0 HcmV?d00001 diff --git a/locale/zh_TW/LC_MESSAGES/djangojs.mo b/locale/zh_TW/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..5ba8dc0c11cac43844cbd53928de0c1da33842de GIT binary patch literal 28978 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.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}@viewport{width:device-width}html{font-size:16px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;line-height:1.5;color:#373a3c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #818a91}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}pre{margin-top:0;margin-bottom:1rem}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#818a91;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{margin:0;line-height:inherit;border-radius:0}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-box-sizing:inherit;box-sizing:inherit;-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}.h1{font-size:2.5rem}.h2{font-size:2rem}.h3{font-size:1.75rem}.h4{font-size:1.5rem}.h5{font-size:1.25rem}.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300}.display-2{font-size:5.5rem;font-weight:300}.display-3{font-size:4.5rem;font-weight:300}.display-4{font-size:3.5rem;font-weight:300}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.dl-horizontal{margin-right:-1.875rem;margin-left:-1.875rem}.dl-horizontal::after{display:table;clear:both;content:""}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;margin-bottom:1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote-footer{display:block;font-size:80%;line-height:1.5;color:#818a91}.blockquote-footer::before{content:"\2014 \00A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse .blockquote-footer::before{content:""}.blockquote-reverse .blockquote-footer::after{content:"\00A0 \2014"}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img,.img-fluid{display:block;max-width:100%;height:auto}.img-rounded{border-radius:.3rem}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:.25rem;line-height:1.5;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#818a91}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:#f7f7f9;border-radius:.25rem}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#333;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;line-height:1.5;color:#373a3c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:.9375rem;padding-left:.9375rem;margin-right:auto;margin-left:auto}.container::after{display:table;clear:both;content:""}@media (min-width:544px){.container{max-width:576px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:940px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{padding-right:.9375rem;padding-left:.9375rem;margin-right:auto;margin-left:auto}.container-fluid::after{display:table;clear:both;content:""}.row{margin-right:-.9375rem;margin-left:-.9375rem}.row::after{display:table;clear:both;content:""}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:.9375rem;padding-left:.9375rem}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-1{width:8.333333%}.col-xs-2{width:16.666667%}.col-xs-3{width:25%}.col-xs-4{width:33.333333%}.col-xs-5{width:41.666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333%}.col-xs-8{width:66.666667%}.col-xs-9{width:75%}.col-xs-10{width:83.333333%}.col-xs-11{width:91.666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.333333%}.col-xs-pull-2{right:16.666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.333333%}.col-xs-pull-5{right:41.666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.333333%}.col-xs-pull-8{right:66.666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.333333%}.col-xs-pull-11{right:91.666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.333333%}.col-xs-push-2{left:16.666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.333333%}.col-xs-push-5{left:41.666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.333333%}.col-xs-push-8{left:66.666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.333333%}.col-xs-push-11{left:91.666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.333333%}.col-xs-offset-2{margin-left:16.666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.333333%}.col-xs-offset-5{margin-left:41.666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.333333%}.col-xs-offset-8{margin-left:66.666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.333333%}.col-xs-offset-11{margin-left:91.666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:544px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.333333%}.col-sm-2{width:16.666667%}.col-sm-3{width:25%}.col-sm-4{width:33.333333%}.col-sm-5{width:41.666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333%}.col-sm-8{width:66.666667%}.col-sm-9{width:75%}.col-sm-10{width:83.333333%}.col-sm-11{width:91.666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.333333%}.col-sm-pull-2{right:16.666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.333333%}.col-sm-pull-5{right:41.666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333%}.col-sm-pull-8{right:66.666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.333333%}.col-sm-pull-11{right:91.666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.333333%}.col-sm-push-2{left:16.666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.333333%}.col-sm-push-5{left:41.666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333%}.col-sm-push-8{left:66.666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.333333%}.col-sm-push-11{left:91.666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.333333%}.col-sm-offset-2{margin-left:16.666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.333333%}.col-sm-offset-5{margin-left:41.666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333%}.col-sm-offset-8{margin-left:66.666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.333333%}.col-sm-offset-11{margin-left:91.666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:768px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.333333%}.col-md-2{width:16.666667%}.col-md-3{width:25%}.col-md-4{width:33.333333%}.col-md-5{width:41.666667%}.col-md-6{width:50%}.col-md-7{width:58.333333%}.col-md-8{width:66.666667%}.col-md-9{width:75%}.col-md-10{width:83.333333%}.col-md-11{width:91.666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333%}.col-md-pull-2{right:16.666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.333333%}.col-md-pull-5{right:41.666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333%}.col-md-pull-8{right:66.666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.333333%}.col-md-pull-11{right:91.666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333%}.col-md-push-2{left:16.666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.333333%}.col-md-push-5{left:41.666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333%}.col-md-push-8{left:66.666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.333333%}.col-md-push-11{left:91.666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333%}.col-md-offset-2{margin-left:16.666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.333333%}.col-md-offset-5{margin-left:41.666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333%}.col-md-offset-8{margin-left:66.666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.333333%}.col-md-offset-11{margin-left:91.666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:992px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.333333%}.col-lg-2{width:16.666667%}.col-lg-3{width:25%}.col-lg-4{width:33.333333%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}.col-lg-9{width:75%}.col-lg-10{width:83.333333%}.col-lg-11{width:91.666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333%}.col-lg-pull-2{right:16.666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.333333%}.col-lg-pull-5{right:41.666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333%}.col-lg-pull-8{right:66.666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.333333%}.col-lg-pull-11{right:91.666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333%}.col-lg-push-2{left:16.666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.333333%}.col-lg-push-5{left:41.666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333%}.col-lg-push-8{left:66.666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.333333%}.col-lg-push-11{left:91.666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333%}.col-lg-offset-2{margin-left:16.666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.333333%}.col-lg-offset-5{margin-left:41.666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333%}.col-lg-offset-8{margin-left:66.666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.333333%}.col-lg-offset-11{margin-left:91.666667%}.col-lg-offset-12{margin-left:100%}}@media (min-width:1200px){.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-1{width:8.333333%}.col-xl-2{width:16.666667%}.col-xl-3{width:25%}.col-xl-4{width:33.333333%}.col-xl-5{width:41.666667%}.col-xl-6{width:50%}.col-xl-7{width:58.333333%}.col-xl-8{width:66.666667%}.col-xl-9{width:75%}.col-xl-10{width:83.333333%}.col-xl-11{width:91.666667%}.col-xl-12{width:100%}.col-xl-pull-0{right:auto}.col-xl-pull-1{right:8.333333%}.col-xl-pull-2{right:16.666667%}.col-xl-pull-3{right:25%}.col-xl-pull-4{right:33.333333%}.col-xl-pull-5{right:41.666667%}.col-xl-pull-6{right:50%}.col-xl-pull-7{right:58.333333%}.col-xl-pull-8{right:66.666667%}.col-xl-pull-9{right:75%}.col-xl-pull-10{right:83.333333%}.col-xl-pull-11{right:91.666667%}.col-xl-pull-12{right:100%}.col-xl-push-0{left:auto}.col-xl-push-1{left:8.333333%}.col-xl-push-2{left:16.666667%}.col-xl-push-3{left:25%}.col-xl-push-4{left:33.333333%}.col-xl-push-5{left:41.666667%}.col-xl-push-6{left:50%}.col-xl-push-7{left:58.333333%}.col-xl-push-8{left:66.666667%}.col-xl-push-9{left:75%}.col-xl-push-10{left:83.333333%}.col-xl-push-11{left:91.666667%}.col-xl-push-12{left:100%}.col-xl-offset-0{margin-left:0}.col-xl-offset-1{margin-left:8.333333%}.col-xl-offset-2{margin-left:16.666667%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-4{margin-left:33.333333%}.col-xl-offset-5{margin-left:41.666667%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-7{margin-left:58.333333%}.col-xl-offset-8{margin-left:66.666667%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-10{margin-left:83.333333%}.col-xl-offset-11{margin-left:91.666667%}.col-xl-offset-12{margin-left:100%}}.table{width:100%;max-width:100%;margin-bottom:1rem}.table td,.table th{padding:.75rem;line-height:1.5;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #eceeef}.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover tbody tr:hover{background-color:#f5f5f5}.table-active,.table-active>td,.table-active>th{background-color:#f5f5f5}.table-hover .table-active:hover{background-color:#e8e8e8}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:#e8e8e8}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover{background-color:#d0e9c6}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover{background-color:#c4e3f3}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover{background-color:#faf2cc}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover{background-color:#ebcccc}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.table-responsive{display:block;width:100%;min-height:.01%;overflow-x:auto}.thead-inverse th{color:#fff;background-color:#373a3c}.thead-default th{color:#55595c;background-color:#eceeef}.table-inverse{color:#eceeef;background-color:#373a3c}.table-inverse.table-bordered{border:0}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#55595c}.table-reflow thead{float:left}.table-reflow tbody{display:block;white-space:nowrap}.table-reflow td,.table-reflow th{border-top:1px solid #eceeef;border-left:1px solid #eceeef}.table-reflow td:last-child,.table-reflow th:last-child{border-right:1px solid #eceeef}.table-reflow tbody:last-child tr:last-child td,.table-reflow tbody:last-child tr:last-child th,.table-reflow tfoot:last-child tr:last-child td,.table-reflow tfoot:last-child tr:last-child th,.table-reflow thead:last-child tr:last-child td,.table-reflow thead:last-child tr:last-child th{border-bottom:1px solid #eceeef}.table-reflow tr{float:left}.table-reflow tr td,.table-reflow tr th{display:block!important;border:1px solid #eceeef}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#55595c;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:.25rem}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{border-color:#66afe9;outline:0}.form-control::-webkit-input-placeholder{color:#999;opacity:1}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999;opacity:1}.form-control::placeholder{color:#999;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eceeef;opacity:1}.form-control:disabled{cursor:not-allowed}.form-control-file,.form-control-range{display:block}.form-control-label{padding:.375rem .75rem;margin-bottom:0}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:2.25rem}.input-group-sm input[type=date].form-control,.input-group-sm input[type=time].form-control,.input-group-sm input[type=datetime-local].form-control,.input-group-sm input[type=month].form-control,input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:1.8625rem}.input-group-lg input[type=date].form-control,.input-group-lg input[type=time].form-control,.input-group-lg input[type=datetime-local].form-control,.input-group-lg input[type=month].form-control,input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:3.166667rem}}.form-control-static{min-height:2.25rem;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.275rem .75rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.75rem 1.25rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.form-group{margin-bottom:1rem}.checkbox,.radio{position:relative;display:block;margin-bottom:.75rem}.checkbox label,.radio label{padding-left:1.25rem;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox label input:only-child,.radio label input:only-child{position:static}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.checkbox+.checkbox,.radio+.radio{margin-top:-.25rem}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:1.25rem;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:.75rem}input[type=checkbox].disabled,input[type=checkbox]:disabled,input[type=radio].disabled,input[type=radio]:disabled{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label{cursor:not-allowed}.form-control-danger,.form-control-success,.form-control-warning{padding-right:2.25rem;background-repeat:no-repeat;background-position:center right .5625rem;-webkit-background-size:1.4625rem 1.4625rem;background-size:1.4625rem 1.4625rem}.has-success .checkbox,.has-success .checkbox-inline,.has-success .form-control-label,.has-success .radio,.has-success .radio-inline,.has-success .text-help,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#5cb85c}.has-success .form-control{border-color:#5cb85c}.has-success .input-group-addon{color:#5cb85c;background-color:#eaf6ea;border-color:#5cb85c}.has-success .form-control-feedback{color:#5cb85c}.has-success .form-control-success{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNzkyIj48cGF0aCBmaWxsPSIjNWNiODVjIiBkPSJNMjMzLjggNjEwYy0xMy4zIDAtMjYtNi0zNC0xNi44TDkwLjUgNDQ4LjhDNzYuMyA0MzAgODAgNDAzLjMgOTguOCAzODljMTguOC0xNC4yIDQ1LjUtMTAuNCA1OS44IDguNGw3MiA5NUw0NTEuMyAyNDJjMTIuNS0yMCAzOC44LTI2LjIgNTguOC0xMy43IDIwIDEyLjQgMjYgMzguNyAxMy43IDU4LjhMMjcwIDU5MGMtNy40IDEyLTIwLjIgMTkuNC0zNC4zIDIwaC0yeiIvPjwvc3ZnPg==)}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .form-control-label,.has-warning .radio,.has-warning .radio-inline,.has-warning .text-help,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#f0ad4e}.has-warning .form-control{border-color:#f0ad4e}.has-warning .input-group-addon{color:#f0ad4e;background-color:#fff;border-color:#f0ad4e}.has-warning .form-control-feedback{color:#f0ad4e}.has-warning .form-control-warning{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNzkyIj48cGF0aCBmaWxsPSIjZjBhZDRlIiBkPSJNNjAzIDY0MC4ybC0yNzguNS01MDljLTMuOC02LjYtMTAuOC0xMC42LTE4LjUtMTAuNnMtMTQuNyA0LTE4LjUgMTAuNkw5IDY0MC4yYy0zLjcgNi41LTMuNiAxNC40LjIgMjAuOCAzLjggNi41IDEwLjggMTAuNCAxOC4zIDEwLjRoNTU3YzcuNiAwIDE0LjYtNCAxOC40LTEwLjQgMy41LTYuNCAzLjYtMTQuNCAwLTIwLjh6bS0yNjYuNC0zMGgtNjEuMlY1NDloNjEuMnY2MS4yem0wLTEwN2gtNjEuMlYzMDRoNjEuMnYxOTl6Ii8+PC9zdmc+)}.has-danger .checkbox,.has-danger .checkbox-inline,.has-danger .form-control-label,.has-danger .radio,.has-danger .radio-inline,.has-danger .text-help,.has-danger.checkbox label,.has-danger.checkbox-inline label,.has-danger.radio label,.has-danger.radio-inline label{color:#d9534f}.has-danger .form-control{border-color:#d9534f}.has-danger .input-group-addon{color:#d9534f;background-color:#fdf7f7;border-color:#d9534f}.has-danger .form-control-feedback{color:#d9534f}.has-danger .form-control-danger{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNzkyIj48cGF0aCBmaWxsPSIjZDk1MzRmIiBkPSJNNDQ3IDU0NC40Yy0xNC40IDE0LjQtMzcuNiAxNC40LTUyIDBsLTg5LTkyLjctODkgOTIuN2MtMTQuNSAxNC40LTM3LjcgMTQuNC01MiAwLTE0LjQtMTQuNC0xNC40LTM3LjYgMC01Mmw5Mi40LTk2LjMtOTIuNC05Ni4zYy0xNC40LTE0LjQtMTQuNC0zNy42IDAtNTJzMzcuNi0xNC4zIDUyIDBsODkgOTIuOCA4OS4yLTkyLjdjMTQuNC0xNC40IDM3LjYtMTQuNCA1MiAwIDE0LjMgMTQuNCAxNC4zIDM3LjYgMCA1MkwzNTQuNiAzOTZsOTIuNCA5Ni40YzE0LjQgMTQuNCAxNC40IDM3LjYgMCA1MnoiLz48L3N2Zz4=)}@media (min-width:544px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;padding:.375rem 1rem;font-size:1rem;font-weight:400;line-height:1.5;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:.25rem}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{text-decoration:none}.btn.focus{text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0}.btn.disabled,.btn:disabled{cursor:not-allowed;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#025aa5;border-color:#01549b}.btn-primary.active,.btn-primary:active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#014682;border-color:#01315a}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary:disabled.focus,.btn-primary:disabled:focus{background-color:#0275d8;border-color:#0275d8}.btn-primary.disabled:hover,.btn-primary:disabled:hover{background-color:#0275d8;border-color:#0275d8}.btn-secondary{color:#373a3c;background-color:#fff;border-color:#ccc}.btn-secondary:hover{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.focus,.btn-secondary:focus{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.active,.btn-secondary:active,.open>.btn-secondary.dropdown-toggle{color:#373a3c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-secondary.active.focus,.btn-secondary.active:focus,.btn-secondary.active:hover,.btn-secondary:active.focus,.btn-secondary:active:focus,.btn-secondary:active:hover,.open>.btn-secondary.dropdown-toggle.focus,.open>.btn-secondary.dropdown-toggle:focus,.open>.btn-secondary.dropdown-toggle:hover{color:#373a3c;background-color:#d4d4d4;border-color:#8c8c8c}.btn-secondary.disabled.focus,.btn-secondary.disabled:focus,.btn-secondary:disabled.focus,.btn-secondary:disabled:focus{background-color:#fff;border-color:#ccc}.btn-secondary.disabled:hover,.btn-secondary:disabled:hover{background-color:#fff;border-color:#ccc}.btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.btn-info.active,.btn-info:active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#269abc;border-color:#1f7e9a}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info:disabled.focus,.btn-info:disabled:focus{background-color:#5bc0de;border-color:#5bc0de}.btn-info.disabled:hover,.btn-info:disabled:hover{background-color:#5bc0de;border-color:#5bc0de}.btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#419641}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#398439;border-color:#2d672d}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success:disabled.focus,.btn-success:disabled:focus{background-color:#5cb85c;border-color:#5cb85c}.btn-success.disabled:hover,.btn-success:disabled:hover{background-color:#5cb85c;border-color:#5cb85c}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#eb9316}.btn-warning.active,.btn-warning:active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#d58512;border-color:#b06d0f}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning:disabled.focus,.btn-warning:disabled:focus{background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning.disabled:hover,.btn-warning:disabled:hover{background-color:#f0ad4e;border-color:#f0ad4e}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#c12e2a}.btn-danger.active,.btn-danger:active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#ac2925;border-color:#8b211e}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger:disabled.focus,.btn-danger:disabled:focus{background-color:#d9534f;border-color:#d9534f}.btn-danger.disabled:hover,.btn-danger:disabled:hover{background-color:#d9534f;border-color:#d9534f}.btn-primary-outline{color:#0275d8;background-color:transparent;background-image:none;border-color:#0275d8}.btn-primary-outline.active,.btn-primary-outline.focus,.btn-primary-outline:active,.btn-primary-outline:focus,.open>.btn-primary-outline.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-primary-outline:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-primary-outline.disabled.focus,.btn-primary-outline.disabled:focus,.btn-primary-outline:disabled.focus,.btn-primary-outline:disabled:focus{border-color:#43a7fd}.btn-primary-outline.disabled:hover,.btn-primary-outline:disabled:hover{border-color:#43a7fd}.btn-secondary-outline{color:#ccc;background-color:transparent;background-image:none;border-color:#ccc}.btn-secondary-outline.active,.btn-secondary-outline.focus,.btn-secondary-outline:active,.btn-secondary-outline:focus,.open>.btn-secondary-outline.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.btn-secondary-outline:hover{color:#fff;background-color:#ccc;border-color:#ccc}.btn-secondary-outline.disabled.focus,.btn-secondary-outline.disabled:focus,.btn-secondary-outline:disabled.focus,.btn-secondary-outline:disabled:focus{border-color:#fff}.btn-secondary-outline.disabled:hover,.btn-secondary-outline:disabled:hover{border-color:#fff}.btn-info-outline{color:#5bc0de;background-color:transparent;background-image:none;border-color:#5bc0de}.btn-info-outline.active,.btn-info-outline.focus,.btn-info-outline:active,.btn-info-outline:focus,.open>.btn-info-outline.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-info-outline:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-info-outline.disabled.focus,.btn-info-outline.disabled:focus,.btn-info-outline:disabled.focus,.btn-info-outline:disabled:focus{border-color:#b0e1ef}.btn-info-outline.disabled:hover,.btn-info-outline:disabled:hover{border-color:#b0e1ef}.btn-success-outline{color:#5cb85c;background-color:transparent;background-image:none;border-color:#5cb85c}.btn-success-outline.active,.btn-success-outline.focus,.btn-success-outline:active,.btn-success-outline:focus,.open>.btn-success-outline.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success-outline:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success-outline.disabled.focus,.btn-success-outline.disabled:focus,.btn-success-outline:disabled.focus,.btn-success-outline:disabled:focus{border-color:#a3d7a3}.btn-success-outline.disabled:hover,.btn-success-outline:disabled:hover{border-color:#a3d7a3}.btn-warning-outline{color:#f0ad4e;background-color:transparent;background-image:none;border-color:#f0ad4e}.btn-warning-outline.active,.btn-warning-outline.focus,.btn-warning-outline:active,.btn-warning-outline:focus,.open>.btn-warning-outline.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning-outline:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning-outline.disabled.focus,.btn-warning-outline.disabled:focus,.btn-warning-outline:disabled.focus,.btn-warning-outline:disabled:focus{border-color:#f8d9ac}.btn-warning-outline.disabled:hover,.btn-warning-outline:disabled:hover{border-color:#f8d9ac}.btn-danger-outline{color:#d9534f;background-color:transparent;background-image:none;border-color:#d9534f}.btn-danger-outline.active,.btn-danger-outline.focus,.btn-danger-outline:active,.btn-danger-outline:focus,.open>.btn-danger-outline.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger-outline:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger-outline.disabled.focus,.btn-danger-outline.disabled:focus,.btn-danger-outline:disabled.focus,.btn-danger-outline:disabled:focus{border-color:#eba5a3}.btn-danger-outline.disabled:hover,.btn-danger-outline:disabled:hover{border-color:#eba5a3}.btn-link{font-weight:400;color:#0275d8;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus{border-color:transparent}.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled:focus,.btn-link:disabled:hover{color:#818a91;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.25rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .75rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height;-o-transition-property:height;transition-property:height}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-right:.25rem;margin-left:.25rem;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropup .dropdown-toggle::after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:1rem;color:#373a3c;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#e5e5e5}.dropdown-item{display:block;width:100%;padding:3px 20px;clear:both;font-weight:400;line-height:1.5;color:#373a3c;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#2b2d2f;text-decoration:none;background-color:#f5f5f5}.dropdown-item.active,.dropdown-item.active:focus,.dropdown-item.active:hover{color:#fff;text-decoration:none;background-color:#0275d8;outline:0}.dropdown-item.disabled,.dropdown-item.disabled:focus,.dropdown-item.disabled:hover{color:#818a91}.dropdown-item.disabled:focus,.dropdown-item.disabled:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:"progid:DXImageTransform.Microsoft.gradient(enabled = false)"}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:.875rem;line-height:1.5;color:#818a91;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:.3em solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:2}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar::after{display:table;clear:both;content:""}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn .caret{margin-left:0}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:.3em .3em 0;border-bottom-width:0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 .3em .3em}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group::after{display:table;clear:both;content:""}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:.25rem;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1;color:#55595c;text-align:center;background-color:#eceeef;border:1px solid #ccc;border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.275rem .75rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.25rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:last-child>.btn-group:active,.input-group-btn:last-child>.btn-group:focus,.input-group-btn:last-child>.btn-group:hover,.input-group-btn:last-child>.btn:active,.input-group-btn:last-child>.btn:focus,.input-group-btn:last-child>.btn:hover{z-index:3}.c-input{position:relative;display:inline;padding-left:1.5rem;color:#555;cursor:pointer}.c-input>input{position:absolute;z-index:-1;opacity:0}.c-input>input:checked~.c-indicator{color:#fff;background-color:#0074d9}.c-input>input:focus~.c-indicator{-webkit-box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9;box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.c-input>input:active~.c-indicator{color:#fff;background-color:#84c6ff}.c-input+.c-input{margin-left:1rem}.c-indicator{position:absolute;top:0;left:0;display:block;width:1rem;height:1rem;font-size:65%;line-height:1rem;color:#eee;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#eee;background-repeat:no-repeat;background-position:center center;-webkit-background-size:50% 50%;background-size:50% 50%}.c-checkbox .c-indicator{border-radius:.25rem}.c-checkbox input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTYuNCwxTDUuNywxLjdMMi45LDQuNUwyLjEsMy43TDEuNCwzTDAsNC40bDAuNywwLjdsMS41LDEuNWwwLjcsMC43bDAuNy0wLjdsMy41LTMuNWwwLjctMC43TDYuNCwxTDYuNCwxeiINCgkvPg0KPC9zdmc+DQo=)}.c-checkbox input:indeterminate~.c-indicator{background-color:#0074d9;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0wLDN2Mmg4VjNIMHoiLz4NCjwvc3ZnPg0K)}.c-radio .c-indicator{border-radius:50%}.c-radio input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQsMUMyLjMsMSwxLDIuMywxLDRzMS4zLDMsMywzczMtMS4zLDMtM1M1LjcsMSw0LDF6Ii8+DQo8L3N2Zz4NCg==)}.c-inputs-stacked .c-input{display:inline}.c-inputs-stacked .c-input::after{display:block;margin-bottom:.25rem;content:""}.c-inputs-stacked .c-input+.c-input{margin-left:0}.c-select{display:inline-block;max-width:100%;-webkit-appearance:none;padding:.375rem 1.75rem .375rem .75rem;padding-right:.75rem\9;color:#55595c;vertical-align:middle;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC) no-repeat right .75rem center;background-image:none\9;-webkit-background-size:8px 10px;background-size:8px 10px;border:1px solid #ccc;-moz-appearance:none}.c-select:focus{border-color:#51a7e8;outline:0}.c-select::-ms-expand{opacity:0}.c-select-sm{padding-top:3px;padding-bottom:3px;font-size:12px}.c-select-sm:not([multiple]){height:26px;min-height:26px}.file{position:relative;display:inline-block;height:2.5rem;cursor:pointer}.file input{min-width:14rem;margin:0;filter:alpha(opacity=0);opacity:0}.file-custom{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid #ddd;border-radius:.25rem}.file-custom::after{content:"Choose file..."}.file-custom::before{position:absolute;top:-.075rem;right:-.075rem;bottom:-.075rem;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;content:"Browse";background-color:#eee;border:1px solid #ddd;border-radius:0 .25rem .25rem 0}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:inline-block}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#818a91}.nav-link.disabled,.nav-link.disabled:focus,.nav-link.disabled:hover{color:#818a91;cursor:not-allowed;background-color:transparent}.nav-inline .nav-item{display:inline-block}.nav-inline .nav-item+.nav-item,.nav-inline .nav-link+.nav-link{margin-left:1rem}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs::after{display:table;clear:both;content:""}.nav-tabs .nav-item{float:left;margin-bottom:-1px}.nav-tabs .nav-item+.nav-item{margin-left:.2rem}.nav-tabs .nav-link{display:block;padding:.5em 1em;border:1px solid transparent;border-radius:.25rem .25rem 0 0}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link.disabled:focus,.nav-tabs .nav-link.disabled:hover{color:#818a91;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover{color:#55595c;background-color:#fff;border-color:#ddd #ddd transparent}.nav-pills::after{display:table;clear:both;content:""}.nav-pills .nav-item{float:left}.nav-pills .nav-item+.nav-item{margin-left:.2rem}.nav-pills .nav-link{display:block;padding:.5em 1em;border-radius:.25rem}.nav-pills .nav-item.open .nav-link,.nav-pills .nav-item.open .nav-link:focus,.nav-pills .nav-item.open .nav-link:hover,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover{color:#fff;cursor:default;background-color:#0275d8}.nav-stacked .nav-item{display:block;float:none}.nav-stacked .nav-item+.nav-item{margin-top:.2rem;margin-left:0}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;padding:.5rem 1rem}.navbar::after{display:table;clear:both;content:""}@media (min-width:544px){.navbar{border-radius:.25rem}}.navbar-full{z-index:1000}@media (min-width:544px){.navbar-full{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:544px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar-sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1030;width:100%}@media (min-width:544px){.navbar-sticky-top{border-radius:0}}.navbar-brand{float:left;padding-top:.25rem;padding-bottom:.25rem;margin-right:1rem;font-size:1.25rem}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}.navbar-divider{float:left;width:1px;padding-top:.425rem;padding-bottom:.425rem;margin-right:1rem;margin-left:1rem;overflow:hidden}.navbar-divider::before{content:"\00a0"}.navbar-toggler{padding:.5rem .75rem;font-size:1.25rem;line-height:1;background:0 0;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}@media (min-width:544px){.navbar-toggleable-xs{display:block!important}}@media (min-width:768px){.navbar-toggleable-sm{display:block!important}}@media (min-width:992px){.navbar-toggleable-md{display:block!important}}.navbar-nav .nav-item{float:left}.navbar-nav .nav-link{display:block;padding-top:.425rem;padding-bottom:.425rem}.navbar-nav .nav-link+.nav-link{margin-left:1rem}.navbar-nav .nav-item+.nav-item{margin-left:1rem}.navbar-light .navbar-brand{color:rgba(0,0,0,.8)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.8)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.6)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .active>.nav-link:focus,.navbar-light .navbar-nav .active>.nav-link:hover,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.active:focus,.navbar-light .navbar-nav .nav-link.active:hover,.navbar-light .navbar-nav .nav-link.open,.navbar-light .navbar-nav .nav-link.open:focus,.navbar-light .navbar-nav .nav-link.open:hover,.navbar-light .navbar-nav .open>.nav-link,.navbar-light .navbar-nav .open>.nav-link:focus,.navbar-light .navbar-nav .open>.nav-link:hover{color:rgba(0,0,0,.8)}.navbar-light .navbar-divider{background-color:rgba(0,0,0,.075)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .active>.nav-link:focus,.navbar-dark .navbar-nav .active>.nav-link:hover,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.active:focus,.navbar-dark .navbar-nav .nav-link.active:hover,.navbar-dark .navbar-nav .nav-link.open,.navbar-dark .navbar-nav .nav-link.open:focus,.navbar-dark .navbar-nav .nav-link.open:hover,.navbar-dark .navbar-nav .open>.nav-link,.navbar-dark .navbar-nav .open>.nav-link:focus,.navbar-dark .navbar-nav .open>.nav-link:hover{color:#fff}.navbar-dark .navbar-divider{background-color:rgba(255,255,255,.075)}.card{position:relative;display:block;margin-bottom:.75rem;background-color:#fff;border:1px solid #e5e5e5;border-radius:.25rem}.card-block{padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card>.list-group:first-child .list-group-item:first-child{border-radius:.25rem .25rem 0 0}.card>.list-group:last-child .list-group-item:last-child{border-radius:0 0 .25rem .25rem}.card-header{padding:.75rem 1.25rem;background-color:#f5f5f5;border-bottom:1px solid #e5e5e5}.card-header:first-child{border-radius:.25rem .25rem 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f5f5f5;border-top:1px solid #e5e5e5}.card-footer:last-child{border-radius:0 0 .25rem .25rem}.card-primary{background-color:#0275d8;border-color:#0275d8}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-danger{background-color:#d9534f;border-color:#d9534f}.card-primary-outline{background-color:transparent;border-color:#0275d8}.card-secondary-outline{background-color:transparent;border-color:#ccc}.card-info-outline{background-color:transparent;border-color:#5bc0de}.card-success-outline{background-color:transparent;border-color:#5cb85c}.card-warning-outline{background-color:transparent;border-color:#f0ad4e}.card-danger-outline{background-color:transparent;border-color:#d9534f}.card-inverse .card-footer,.card-inverse .card-header{border-bottom:1px solid rgba(255,255,255,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote>footer,.card-inverse .card-link,.card-inverse .card-text{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{border-radius:.25rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{border-radius:.25rem .25rem 0 0}.card-img-bottom{border-radius:0 0 .25rem .25rem}@media (min-width:544px){.card-deck{display:table;table-layout:fixed;border-spacing:1.25rem 0}.card-deck .card{display:table-cell;width:1%;vertical-align:top}.card-deck-wrapper{margin-right:-1.25rem;margin-left:-1.25rem}}@media (min-width:544px){.card-group{display:table;width:100%;table-layout:fixed}.card-group .card{display:table-cell;vertical-align:top}.card-group .card+.card{margin-left:0;border-left:0}.card-group .card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group .card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group .card:not(:first-child):not(:last-child){border-radius:0}.card-group .card:not(:first-child):not(:last-child) .card-img-bottom,.card-group .card:not(:first-child):not(:last-child) .card-img-top{border-radius:0}}@media (min-width:544px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:.25rem}.breadcrumb::after{display:table;clear:both;content:""}.breadcrumb>li{float:left}.breadcrumb>li+li::before{padding-right:.5rem;padding-left:.5rem;color:#818a91;content:"/"}.breadcrumb>.active{color:#818a91}.pagination{display:inline-block;padding-left:0;margin-top:1rem;margin-bottom:1rem;border-radius:.25rem}.page-item{display:inline}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link,.page-item.active .page-link:focus,.page-item.active .page-link:hover{z-index:2;color:#fff;cursor:default;background-color:#0275d8;border-color:#0275d8}.page-item.disabled .page-link,.page-item.disabled .page-link:focus,.page-item.disabled .page-link:hover{color:#818a91;cursor:not-allowed;background-color:#fff;border-color:#ddd}.page-link{position:relative;float:left;padding:.5rem .75rem;margin-left:-1px;line-height:1.5;color:#0275d8;text-decoration:none;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#014c8c;background-color:#eceeef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.333333}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.275rem .75rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.pager{padding-left:0;margin-top:1rem;margin-bottom:1rem;text-align:center;list-style:none}.pager::after{display:table;clear:both;content:""}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eceeef}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover{color:#818a91;cursor:not-allowed;background-color:#fff}.pager .disabled>span{color:#818a91;cursor:not-allowed;background-color:#fff}.pager-next>a,.pager-next>span{float:right}.pager-prev>a,.pager-prev>span{float:left}.label{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.label-default{background-color:#818a91}.label-default[href]:focus,.label-default[href]:hover{background-color:#687077}.label-primary{background-color:#0275d8}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#025aa5}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}@media (min-width:544px){.jumbotron{padding:4rem 2rem}}.jumbotron-hr{border-top-color:#d0d5d8}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:15px;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:35px}.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d0e9c6}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faf2cc}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebcccc}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:block;width:100%;height:1rem;margin-bottom:1rem}.progress[value]{-webkit-appearance:none;color:#0074d9;border:0;-moz-appearance:none;appearance:none}.progress[value]::-webkit-progress-bar{background-color:#eee;border-radius:.25rem}.progress[value]::-webkit-progress-value::before{content:attr(value)}.progress[value]::-webkit-progress-value{background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[value="100"]::-webkit-progress-value{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}@media screen and (min-width:0\0){.progress{background-color:#eee;border-radius:.25rem}.progress-bar{display:inline-block;height:1rem;text-indent:-999rem;background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[width^="0"]{min-width:2rem;color:#818a91;background-color:transparent;background-image:none}.progress[width="100%"]{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}}.progress-striped[value]::-webkit-progress-value{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-striped[value]::-moz-progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}@media screen and (min-width:0\0){.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}}.progress-animated[value]::-webkit-progress-value{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-animated[value]::-moz-progress-bar{animation:progress-bar-stripes 2s linear infinite}@media screen and (min-width:0\0){.progress-animated .progress-bar-striped{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}}.progress-success[value]::-webkit-progress-value{background-color:#5cb85c}.progress-success[value]::-moz-progress-bar{background-color:#5cb85c}@media screen and (min-width:0\0){.progress-success .progress-bar{background-color:#5cb85c}}.progress-info[value]::-webkit-progress-value{background-color:#5bc0de}.progress-info[value]::-moz-progress-bar{background-color:#5bc0de}@media screen and (min-width:0\0){.progress-info .progress-bar{background-color:#5bc0de}}.progress-warning[value]::-webkit-progress-value{background-color:#f0ad4e}.progress-warning[value]::-moz-progress-bar{background-color:#f0ad4e}@media screen and (min-width:0\0){.progress-warning .progress-bar{background-color:#f0ad4e}}.progress-danger[value]::-webkit-progress-value{background-color:#d9534f}.progress-danger[value]::-moz-progress-bar{background-color:#d9534f}@media screen and (min-width:0\0){.progress-danger .progress-bar{background-color:#d9534f}}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right{padding-left:10px}.media-left{padding-right:10px}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:0}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-flush .list-group-item{border-width:1px 0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}a.list-group-item,button.list-group-item{width:100%;color:#555;text-align:inherit}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#818a91;cursor:not-allowed;background-color:#eceeef}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#818a91}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#a8d6fe}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9{padding-bottom:42.857143%}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.embed-responsive-1by1{padding-bottom:100%}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out,-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header::after{display:table;clear:both;content:""}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.5}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer::after{display:table;clear:both;content:""}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:544px){.modal-dialog{width:600px;margin:30px auto}.modal-sm{width:300px}}@media (min-width:768px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;opacity:0;line-break:auto}.tooltip.in{opacity:.9}.tooltip.bs-tether-element-attached-bottom,.tooltip.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip.bs-tether-element-attached-bottom .tooltip-arrow,.tooltip.tooltip-top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.bs-tether-element-attached-left,.tooltip.tooltip-right{padding:0 5px;margin-left:3px}.tooltip.bs-tether-element-attached-left .tooltip-arrow,.tooltip.tooltip-right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bs-tether-element-attached-top,.tooltip.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip.bs-tether-element-attached-top .tooltip-arrow,.tooltip.tooltip-bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bs-tether-element-attached-right,.tooltip.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip.bs-tether-element-attached-right .tooltip-arrow,.tooltip.tooltip-left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;line-break:auto}.popover.bs-tether-element-attached-bottom,.popover.popover-top{margin-top:-10px}.popover.bs-tether-element-attached-bottom .popover-arrow,.popover.popover-top .popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.bs-tether-element-attached-bottom .popover-arrow::after,.popover.popover-top .popover-arrow::after{bottom:1px;margin-left:-10px;content:"";border-top-color:#fff;border-bottom-width:0}.popover.bs-tether-element-attached-left,.popover.popover-right{margin-left:10px}.popover.bs-tether-element-attached-left .popover-arrow,.popover.popover-right .popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.bs-tether-element-attached-left .popover-arrow::after,.popover.popover-right .popover-arrow::after{bottom:-10px;left:1px;content:"";border-right-color:#fff;border-left-width:0}.popover.bs-tether-element-attached-top,.popover.popover-bottom{margin-top:10px}.popover.bs-tether-element-attached-top .popover-arrow,.popover.popover-bottom .popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-top .popover-arrow::after,.popover.popover-bottom .popover-arrow::after{top:1px;margin-left:-10px;content:"";border-top-width:0;border-bottom-color:#fff}.popover.bs-tether-element-attached-right,.popover.popover-left{margin-left:-10px}.popover.bs-tether-element-attached-right .popover-arrow,.popover.popover-left .popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-right .popover-arrow::after,.popover.popover-left .popover-arrow::after{right:1px;bottom:-10px;content:"";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-.7rem -.7rem 0 0}.popover-content{padding:9px 14px}.popover-arrow,.popover-arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover-arrow{border-width:11px}.popover-arrow::after{content:"";border-width:10px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.carousel-item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:transform .6s ease-in-out,-o-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.carousel-item.active.right,.carousel-inner>.carousel-item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.carousel-item.active.left,.carousel-inner>.carousel-item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.carousel-item.active,.carousel-inner>.carousel-item.next.left,.carousel-inner>.carousel-item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-prev::before{content:"\2039"}.carousel-control .icon-next::before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media (min-width:544px){.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .icon-prev{margin-left:-15px}.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix::after{display:table;clear:both;content:""}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-xs-left{float:left!important}.pull-xs-right{float:right!important}.pull-xs-none{float:none!important}@media (min-width:544px){.pull-sm-left{float:left!important}.pull-sm-right{float:right!important}.pull-sm-none{float:none!important}}@media (min-width:768px){.pull-md-left{float:left!important}.pull-md-right{float:right!important}.pull-md-none{float:none!important}}@media (min-width:992px){.pull-lg-left{float:left!important}.pull-lg-right{float:right!important}.pull-lg-none{float:none!important}}@media (min-width:1200px){.pull-xl-left{float:left!important}.pull-xl-right{float:right!important}.pull-xl-none{float:none!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.invisible{visibility:hidden!important}.text-hide{font:"0/0" a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-xs-left{text-align:left!important}.text-xs-right{text-align:right!important}.text-xs-center{text-align:center!important}@media (min-width:544px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-muted{color:#818a91}.text-primary{color:#0275d8!important}a.text-primary:focus,a.text-primary:hover{color:#025aa5}.text-success{color:#5cb85c!important}a.text-success:focus,a.text-success:hover{color:#449d44}.text-info{color:#5bc0de!important}a.text-info:focus,a.text-info:hover{color:#31b0d5}.text-warning{color:#f0ad4e!important}a.text-warning:focus,a.text-warning:hover{color:#ec971f}.text-danger{color:#d9534f!important}a.text-danger:focus,a.text-danger:hover{color:#c9302c}.bg-inverse{color:#eceeef;background-color:#373a3c}.bg-faded{background-color:#f7f7f9}.bg-primary{color:#fff!important;background-color:#0275d8!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#025aa5}.bg-success{color:#fff!important;background-color:#5cb85c!important}a.bg-success:focus,a.bg-success:hover{background-color:#449d44}.bg-info{color:#fff!important;background-color:#5bc0de!important}a.bg-info:focus,a.bg-info:hover{background-color:#31b0d5}.bg-warning{color:#fff!important;background-color:#f0ad4e!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#ec971f}.bg-danger{color:#fff!important;background-color:#d9534f!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#c9302c}.m-x-auto{margin-right:auto!important;margin-left:auto!important}.m-a-0{margin:0 0!important}.m-t-0{margin-top:0!important}.m-r-0{margin-right:0!important}.m-b-0{margin-bottom:0!important}.m-l-0{margin-left:0!important}.m-x-0{margin-right:0!important;margin-left:0!important}.m-y-0{margin-top:0!important;margin-bottom:0!important}.m-a-1{margin:1rem 1rem!important}.m-t-1{margin-top:1rem!important}.m-r-1{margin-right:1rem!important}.m-b-1{margin-bottom:1rem!important}.m-l-1{margin-left:1rem!important}.m-x-1{margin-right:1rem!important;margin-left:1rem!important}.m-y-1{margin-top:1rem!important;margin-bottom:1rem!important}.m-a-2{margin:1.5rem 1.5rem!important}.m-t-2{margin-top:1.5rem!important}.m-r-2{margin-right:1.5rem!important}.m-b-2{margin-bottom:1.5rem!important}.m-l-2{margin-left:1.5rem!important}.m-x-2{margin-right:1.5rem!important;margin-left:1.5rem!important}.m-y-2{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-a-3{margin:3rem 3rem!important}.m-t-3{margin-top:3rem!important}.m-r-3{margin-right:3rem!important}.m-b-3{margin-bottom:3rem!important}.m-l-3{margin-left:3rem!important}.m-x-3{margin-right:3rem!important;margin-left:3rem!important}.m-y-3{margin-top:3rem!important;margin-bottom:3rem!important}.p-a-0{padding:0 0!important}.p-t-0{padding-top:0!important}.p-r-0{padding-right:0!important}.p-b-0{padding-bottom:0!important}.p-l-0{padding-left:0!important}.p-x-0{padding-right:0!important;padding-left:0!important}.p-y-0{padding-top:0!important;padding-bottom:0!important}.p-a-1{padding:1rem 1rem!important}.p-t-1{padding-top:1rem!important}.p-r-1{padding-right:1rem!important}.p-b-1{padding-bottom:1rem!important}.p-l-1{padding-left:1rem!important}.p-x-1{padding-right:1rem!important;padding-left:1rem!important}.p-y-1{padding-top:1rem!important;padding-bottom:1rem!important}.p-a-2{padding:1.5rem 1.5rem!important}.p-t-2{padding-top:1.5rem!important}.p-r-2{padding-right:1.5rem!important}.p-b-2{padding-bottom:1.5rem!important}.p-l-2{padding-left:1.5rem!important}.p-x-2{padding-right:1.5rem!important;padding-left:1.5rem!important}.p-y-2{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-a-3{padding:3rem 3rem!important}.p-t-3{padding-top:3rem!important}.p-r-3{padding-right:3rem!important}.p-b-3{padding-bottom:3rem!important}.p-l-3{padding-left:3rem!important}.p-x-3{padding-right:3rem!important;padding-left:3rem!important}.p-y-3{padding-top:3rem!important;padding-bottom:3rem!important}.pos-f-t{position:fixed;top:0;right:0;left:0;z-index:1030}.hidden-xs-up{display:none!important}@media (max-width:543px){.hidden-xs-down{display:none!important}}@media (min-width:544px){.hidden-sm-up{display:none!important}}@media (max-width:767px){.hidden-sm-down{display:none!important}}@media (min-width:768px){.hidden-md-up{display:none!important}}@media (max-width:991px){.hidden-md-down{display:none!important}}@media (min-width:992px){.hidden-lg-up{display:none!important}}@media (max-width:1199px){.hidden-lg-down{display:none!important}}@media (min-width:1200px){.hidden-xl-up{display:none!important}}.hidden-xl-down{display:none!important}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/media/assets/frontend/static/css/TCAccept.05d88392.css b/media/assets/frontend/static/css/TCAccept.05d88392.css new file mode 100644 index 00000000000..32cf4fbc62f --- /dev/null +++ b/media/assets/frontend/static/css/TCAccept.05d88392.css @@ -0,0 +1,2 @@ +body{overflow:hidden}#wrapper{height:100%}.top-header{background:#f4f4f7;border-bottom:1px solid #e8e8e8;flex-shrink:0;padding:.5rem 1rem}.content{max-width:950px} +/*# sourceMappingURL=TCAccept.05d88392.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/TCAccept.05d88392.css.map b/media/assets/frontend/static/css/TCAccept.05d88392.css.map new file mode 100644 index 00000000000..5b2e4878b5e --- /dev/null +++ b/media/assets/frontend/static/css/TCAccept.05d88392.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/TCAccept.05d88392.css","mappings":"AAAA,KACE,eACF,CACA,SACE,WACF,CACA,YACE,kBAAmB,CACnB,+BAAgC,CAEhC,aAAc,CADd,kBAEF,CACA,SACE,eACF","sources":["css/tc-accept.css"],"sourcesContent":["body {\n overflow: hidden;\n}\n#wrapper {\n height: 100%;\n}\n.top-header {\n background: #f4f4f7;\n border-bottom: 1px solid #e8e8e8;\n padding: .5rem 1rem;\n flex-shrink: 0;\n}\n.content {\n max-width: 950px;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/TCView.05d88392.css b/media/assets/frontend/static/css/TCView.05d88392.css new file mode 100644 index 00000000000..0d1ec8f96cb --- /dev/null +++ b/media/assets/frontend/static/css/TCView.05d88392.css @@ -0,0 +1,2 @@ +body{overflow:hidden}#wrapper{height:100%}.top-header{background:#f4f4f7;border-bottom:1px solid #e8e8e8;flex-shrink:0;padding:.5rem 1rem}.content{max-width:950px} +/*# sourceMappingURL=TCView.05d88392.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/TCView.05d88392.css.map b/media/assets/frontend/static/css/TCView.05d88392.css.map new file mode 100644 index 00000000000..075376910e4 --- /dev/null +++ b/media/assets/frontend/static/css/TCView.05d88392.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/TCView.05d88392.css","mappings":"AAAA,KACE,eACF,CACA,SACE,WACF,CACA,YACE,kBAAmB,CACnB,+BAAgC,CAEhC,aAAc,CADd,kBAEF,CACA,SACE,eACF","sources":["css/tc-accept.css"],"sourcesContent":["body {\n overflow: hidden;\n}\n#wrapper {\n height: 100%;\n}\n.top-header {\n background: #f4f4f7;\n border-bottom: 1px solid #e8e8e8;\n padding: .5rem 1rem;\n flex-shrink: 0;\n}\n.content {\n max-width: 950px;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/app.06d6765d.css b/media/assets/frontend/static/css/app.06d6765d.css new file mode 100644 index 00000000000..8bb88360f0f --- /dev/null +++ b/media/assets/frontend/static/css/app.06d6765d.css @@ -0,0 +1,2 @@ +#info-bar{background:#fddaa4;color:#1f0600;padding:4px 10px}#info-bar .close{color:#888;cursor:pointer;font-size:16px;line-height:1}#info-bar-info a{color:#a68558;text-decoration:underline}.activity-details{cursor:pointer;text-decoration:underline}.activity-details:hover{color:#333}.mobile-activity-time{display:inline-block;margin-bottom:.2em}.cur-activity-modifiers{margin-left:-.5rem}.cur-activity-modifiers:hover{background:#f5f5f5;cursor:pointer}.cur-activity-modifiers .toggle-icon{color:#999}.activity-modifier-selector-container{background:#fff;border:1px solid #e8e8e8;margin-top:2px;width:320px;z-index:2}.activity-selected-modifiers{background:#f6f6f6;border-bottom:1px solid #dde2ea;line-height:1;min-height:2rem}.activity-selected-modifier{align-items:center;background:#eaeaea;border-radius:10px;display:inline-flex;margin-right:10px;padding:0 8px 0 2px}.unselect-activity-user{color:#909090;cursor:pointer}.unselect-activity-user:hover{color:#5a5a5a}.activity-user-list{max-height:200px;min-height:4rem}.activity-user-item{cursor:pointer}.activity-user-item:hover{background:#f5f5f5}.activity-user-name{font-size:14px}.share-dialog .share-dialog-content{min-height:28rem}.account-dialog .nav .nav-item{padding:0}.account-dialog .nav .nav-item .nav-link{color:#8a948f;font-weight:400;padding:.5rem 0;transition:none;width:100%}.account-dialog .nav .nav-item .nav-link.active{border-bottom:.125rem solid #ff8000;color:#ff8000;text-decoration:none}.account-dialog .nav-pills .nav-item .nav-link{color:#333;padding:.3125rem 1rem .3125rem 8px}.account-dialog .nav-pills .nav-item .nav-link:hover{background-color:#f5f5f5}.account-dialog .nav-pills .nav-item .nav-link.active{background-color:#ff8000;border:none;color:#fff}.account-dialog table{table-layout:fixed;width:100%}.account-dialog .accounts-list{max-height:400px;overflow:auto}.account-dialog .accounts-list table thead tr{border-bottom:1px solid #efefef;height:2.1875rem}.account-dialog .accounts-list table tbody tr{border-bottom:1px solid #efefef;height:2.5625rem}.account-dialog table th{font-weight:500;padding:.3125rem .1875rem}.account-dialog table td{color:#333;font-size:14px;padding:3px .1875rem;word-break:break-all}.account-dialog table td a{color:inherit;text-decoration:none}.account-dialog .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-dialog .select-module{font-size:16px}.account-dialog .select-module.select-module-icon{height:1.5rem;width:1.5rem}.account-dialog .select-module.select-module-name{margin-left:.5rem}.account-dialog .op-target{word-wrap:break-word;color:#ea7500}.account-dialog{height:calc(100% - 56px);max-width:600px}.account-dialog .account-dialog-content{display:flex;flex-direction:row;min-height:27rem;overflow:hidden;padding:0}.account-dialog-content .account-dialog-side{border-right:1px solid #eee;display:flex;flex:0 0 25%;padding:12px 8px}.account-dialog-content .account-dialog-main{flex:1 1;padding:.5rem 1.5rem 2rem}.account-dialog-content .account-dialog-main .tab-content{flex:1 1}.account-dialog-content .account-dialog-main .tab-pane{height:100%}.account-dialog .wechat-input-content{height:250px}.accounts-manage .accounts-manage-header{border-bottom:1px solid #efefef;padding:.375rem 0}.accounts-manage .accounts-manage-header button{font-weight:400}.accounts-manage .no-accounts{height:400px}.accounts-manage .no-accounts img{width:120px}.accounts-manage .no-accounts p{color:#afafaf;margin-top:1rem}.accounts-manage .accounts-list-body{cursor:pointer;max-height:400px;overflow-y:auto}.accounts-manage td,.accounts-manage th{border-color:#efefef;padding:.5rem .1875rem}.accounts-manage th{color:#999}.accounts-manage .accounts-list-body tr:hover{background-color:#f9f9f9}.accounts-manage .accounts-list-body .account-operation-btn{display:none;margin-right:.2rem}.accounts-manage .accounts-list-body tr:hover .account-operation-btn{align-items:center;cursor:pointer;display:inline-flex;height:24px;justify-content:center;width:24px}.accounts-manage .account-operation-btn .dtable-font{color:#999;font-size:14px}.accounts-manage .account-operation-btn:hover .dtable-font{color:#5a5a5a}.add-account,.edit-account{height:100%}.add-account .add-account-header,.edit-account .edit-account-header{border-bottom:1px solid #efefef;padding:.375rem 0}.add-account .back-btn,.edit-account .back-btn{cursor:pointer;height:18px;width:18px}.add-account .back-btn .dtable-icon-return,.edit-account .back-btn .dtable-icon-return{color:#999;font-size:14px}.add-account .back-btn:hover .dtable-icon-return,.edit-account .back-btn:hover .dtable-icon-return{color:#5a5a5a}.add-account .add-account-header-text,.edit-account .edit-account-header-text{margin-left:.25rem}.add-account .add-account-btn,.edit-account .edit-account-btn{border-color:#ff8000;color:#ff8000;font-weight:400;margin:0;padding-bottom:0;padding-top:0}.add-account .account-loading-tip{margin-top:1rem}.add-account .add-account-btn:hover,.edit-account .edit-account-btn:hover{background-color:transparent}.base-account{height:calc(100% - 38px)}.base-account input[type=checkbox]{margin-top:-2px;vertical-align:middle}.base-account .account-name-desc{margin-top:.375rem}.base-account .base-account-password .input-group .form-control{border-right:none;height:38px}.base-account .base-account-password .input-group .input-group-text{border-radius:0 3px 3px 0;height:38px}.lib-decrypt-form .intro{color:#464646;font-size:1.3em}.lib-decrypt-form .password-input{margin:0 auto;width:50%}.lib-decrypt-form .submit{margin:1.5em auto 1em;width:50%}.tag-list-container{list-style:none;max-height:15rem;overflow:auto}.add-tag-link{color:#666}.add-tag-link:hover{background:#f5f5f5;color:#444;text-decoration:none}.tag-list-item{height:2.5rem}.tag-list-item.hl{background:#f5f5f5}.tag-selected-icon{color:#999}.tag-delete-icon{color:#999;font-size:18px}.tag-delete-icon:hover{color:#444}.tag-dialog-back{color:#888;cursor:pointer;margin-right:10px}.tag-dialog-back:focus,.tag-dialog-back:hover{color:#444}.tag-color-option .colorinput-color:before{display:none}.tag-color-option .color-selected{opacity:0}.tag-color-option .colorinput-input:checked~.colorinput-color .color-selected{opacity:1}.tag-color-popover .popover{max-width:360px}.tag-color-popover .colorinput-color,.tag-color-popover .tag-color{height:20px;width:20px}.tag-color-popover .tag-color-option .colorinput-input:checked~.colorinput-color .color-selected{font-size:12px}.dirents-more-menu{border:1px solid #ccc;border-bottom-left-radius:0;border-bottom-right-radius:2px!important;border-top-left-radius:0;border-top-right-radius:2px!important;height:30px;margin-left:0;padding:4px 15px;width:46px}.dirents-more-menu:hover{background-color:#fff;border:1px solid #ccc}.list-tag-popover .popover{max-width:500px;width:500px}.list-tag-popover .add-tag-link{cursor:pointer}.list-tag-popover .tag-list-footer{align-items:center;border-top:1px solid #dedede;display:flex;flex-wrap:wrap;justify-content:flex-end;padding:1rem}.list-tag-popover .tag-list-footer .item-text{color:#ff8000;cursor:pointer}.list-tag-popover .tag-list-footer a:hover{text-decoration:none}.list-tag-popover .tag-color{height:20px;width:20px}.add-item-btn{align-items:center;background:#fff;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #dedede;cursor:pointer;display:flex;font-size:14px;font-weight:500;height:30px;overflow:hidden;padding:0 10px;position:relative}.add-item-btn:hover{background-color:#f5f5f5}.add-item-btn .dtable-icon-add-table{font-size:12px;font-weight:600;margin-right:10px;-webkit-transform:none;transform:none}.add-item-btn .add-new-option{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-filetag-popover .edit-filetag-popover-input{color:#212529;font-size:14px;height:30px;max-height:30px}.edit-filetag-popover .popover{padding:10px 10px 0;width:200px}.edit-filetag-popover .tag-list-container{padding:10px 0}.edit-filetag-popover .tag-list-container .tag-not-found{opacity:.5}.edit-filetag-popover .tag-list-item{height:30px}.edit-filetag-popover .tag-item{align-items:center;border-radius:10px;display:flex;margin:.25rem 0;max-width:130px;padding:0 .5rem;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.edit-filetag-popover .tag-item .tag-name{color:#fff;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-filetag-popover .add-item-btn{margin:0 -10px}.extra-attributes-dialog .selected-single-select-container{-webkit-appearance:none;appearance:none;background:#fff;border:1px solid rgba(0,40,100,.12);border-radius:3px;height:38px;padding:0 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none;width:100%}.extra-attributes-dialog .selected-single-select-container.disable{background-color:#f8f9fa}.extra-attributes-dialog .selected-single-select-container.focus{border-color:#1991eb!important;box-shadow:0 0 0 2px rgba(70,127,207,.25)}.extra-attributes-dialog .selected-single-select-container:not(.disable):hover{cursor:pointer}.extra-attributes-dialog .selected-single-select-container .fa-caret-down{color:#949494;font-size:16px}.extra-attributes-dialog .selected-single-select-container .single-select-option{border-radius:10px;font-size:13px;line-height:20px;max-width:250px;overflow:hidden;padding:0 10px;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:-webkit-min-content;width:min-content}.single-select-editor-popover .popover,.single-select-editor-popover .popover-inner{max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.single-select-editor-container{background-color:#fff;min-height:160px;overflow:hidden;width:320px}.single-select-editor-container .search-single-selects{padding:10px 10px 0}.single-select-editor-container .search-single-selects input{font-size:14px;max-height:30px}.single-select-editor-container .single-select-editor-content{max-height:200px;min-height:100px;overflow-x:hidden;overflow-y:scroll;padding:10px}.single-select-editor-container .single-select-editor-content .single-select-option-container{align-items:center;border-radius:2px;color:#212529;display:flex;font-size:13px;height:30px;justify-content:space-between;padding-left:12px;width:100%}.single-select-editor-container .single-select-editor-content .single-select-option-container:hover{background-color:#f5f5f5;cursor:pointer}.single-select-editor-container .single-select-editor-content .single-select-option{border-radius:10px;height:20px;line-height:20px;margin-right:10px;overflow:hidden;padding:0 10px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.single-select-editor-container .single-select-editor-content .single-select-option-selected{text-align:center;width:20px}.extra-attributes-dialog .column-name{padding-top:9px}.extra-attributes-dialog .column-item{min-height:56px}.extra-attributes-dialog{margin:28px 0 0}.extra-attributes-dialog .extra-attributes-content-container{height:100%;overflow:hidden}.extra-attributes-dialog .modal-body{overflow-y:scroll;padding:30px}.extra-attributes-dialog .modal-body .form-control.disabled{background-color:#f8f9fa}.apply-properties-dialog .apply-properties{align-items:center;display:flex;height:38px;justify-content:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.apply-properties-dialog .apply-properties .loading-tip{display:inline-block;height:16px;margin:0;width:16px}.tip-for-new-file{align-self:flex-start;margin:0 auto;padding:2em 1em}@media (min-width:768px){.tip-for-new-file{padding:5em 8em}}.big-new-file-button{background:#fff;border:1px solid #d1d1d1;border-radius:8px;cursor:pointer;margin:0 .75em 1.5em;padding:.9em 2em 1em;width:160px}.big-new-file-button:focus,.big-new-file-button:hover{border-color:#eb9205;color:#eb8205}.repo-info-bar{border:1px solid #e6e6dd;border-radius:5px;margin:10px 16px 0;padding:10px}.used-tag-list{list-style:none}.used-tag-item{display:inline-block;margin:auto 15px}.used-tag{border-radius:50%;cursor:pointer;display:inline-block;height:12px;width:12px}.used-tag-name{margin:0 .25rem}.used-tag-files{color:#888;font-size:14px}.used-tag-files:hover{cursor:pointer;text-decoration:underline}.file-info{cursor:pointer;display:inline-block;margin:0 15px}.file-info a{color:#333}.info-icon{color:#888;vertical-align:-3px}.readme-dialog-edit{position:absolute;right:16px}.readme-dialog .modal-body{padding:0 30px}.tr-drop-effect{background-color:#f8f8f8}.star-empty{color:#d0d0d0}.dir-icon{max-width:24px;position:relative;text-align:center}.dir-icon .locked{height:1rem;left:50%;position:absolute;top:50%;width:1rem}.tag-list-title{overflow:hidden}.dirent-sdoc-draft-identifier{background:#eee;border-radius:10px;color:#888;display:inline-block;font-size:14px;height:20px;line-height:20px;margin-left:6px;padding:0 8px}.grid-view{align-content:flex-start;display:flex;flex:1 1;flex-wrap:wrap;list-style:none;padding:.625rem 1rem 10rem}.grid-item{line-height:0;padding:10px 4px;position:relative;text-align:center;width:134px}.grid-item:hover .grid-file-img-link{background:#f8f8f8}.grid-item:hover a{color:#eb8205}.grid-file-img-link{border-radius:3px;font-size:0;height:96px;line-height:0;margin:0 auto 6px;position:relative;text-align:center;width:96px}.grid-file-img-link .thumbnail{background:#fff;border:1px solid #ddd;border-radius:1px;max-height:88px;max-width:88px;padding:1px}.grid-file-img-link:before{content:"";display:inline-block;height:100%;vertical-align:middle}.grid-file-name{display:inline-block;font-size:14px;line-height:17px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:keep-all}.grid-file-name-link{color:#333;font-size:.875rem}.grid-file-locked-icon{bottom:0;position:absolute;right:10px;width:16px}.grid-selected-active{background-color:#f8f8f8}.grid-link-selected-active{color:#eb8205}.grid-drop-show{background:#f8f8f8}.main-panel{overflow:hidden}.cur-view-content.lib-content-container{padding:0}.view-mode-container{display:flex;flex-direction:row!important;min-height:0;overflow:hidden!important;padding-left:0!important}.dir-colunm-view{display:flex;width:100%}.dir-content-nav{background-color:#fff;border-right:1px solid #eee;display:flex;flex:0 0 25%;flex-direction:column;overflow:hidden}.dir-content-nav:hover{overflow:auto}.dir-content-main{display:flex;flex:1 0 74.5%;flex-direction:column;overflow:auto}.tree-view{border:1px solid rgba(69,170,242,0);flex:1 1;line-height:1.5;margin-left:-9px;padding:12px 12px 12px 0}.tree-view-drop{border:1px solid #45aaf2}.tree-view-drop:before{border-left:1px solid #45aaf2;content:"";display:block;float:left;height:calc(100% + 24px);margin-left:8px;margin-top:-12px}.tree-node-inner{cursor:pointer;height:24px;line-height:1.625;position:relative}.tree-node-inner-hover{background-color:#f5f5f5;border-radius:.25rem}.tree-node-inner .tree-node-text{font-size:14px;line-height:24px;overflow:hidden;padding-left:2.8rem;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 1.5rem)}.tree-node-inner .left-icon{align-items:center;display:flex;left:0;padding-left:1.5rem;position:absolute;top:0}.folder-toggle-icon{align-content:center;color:silver;display:flex;justify-content:center;left:0;line-height:1.625;position:absolute;width:1.5rem}.tree-node-drop{background-color:#ffefb2}.tree-node-icon{color:#b0b0b0;display:inline-block;text-align:center;width:1rem}.tree-node-inner .right-icon{bottom:0;color:#888;font-size:.8125rem;position:absolute;right:.5rem;text-align:center;top:0;width:1rem;z-index:2}.tree-node-inner .right-icon i{font-size:.8125rem;height:100%;line-height:1.625rem!important;vertical-align:middle;width:100%}.tree-node-hight-light{background-color:#ff9800!important;border-radius:4px;color:#fff}.tree-node-hight-light i{color:#fff}.dropdown-menu{min-width:8rem}.parent-path{position:relative}.parent-path .form-text{font-size:.9375rem;margin-left:.25rem;margin-top:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.dir-content-main .wiki-page-container{display:flex;flex:1 1;padding:0 1rem 1.25rem}.wiki-page-content{flex:1 1}.wiki-page-content .ml-2{text-decoration:underline}.wiki-page-content .ml-2:hover{color:#eb8205;text-decoration:underline}.wiki-page-content .wiki-open-file{background-color:#fff;border:none;border-radius:50%;bottom:10px;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12);color:#999;cursor:pointer;font-size:16px;height:40px;right:10px;-webkit-user-select:none;-ms-user-select:none;user-select:none;width:40px;z-index:1050}.wiki-page-content .wiki-open-file i{left:12px;position:absolute;top:12px}.wiki-page-content .wiki-open-file:hover{background-color:#f6f6f6}.wiki-page-content .sf-slate-viewer-scroll-container{background-color:#fff;border:none;overflow:inherit;padding:0}.wiki-page-content .sf-slate-viewer-article-container{display:block;width:100%}.dir-content-main .wiki-page-content .article{border:none;margin:0;max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;padding:0 10px}.wiki-page-content a{cursor:pointer}.wiki-page-ops{position:fixed;top:10px}@media (min-width:768px){.wiki-page-ops:before{border-left:1px solid #ddd;bottom:3px;content:"";left:-16px;position:absolute;top:3px}}.wiki-page-list-item{line-height:1.6;margin:3px 0;word-break:break-all}.wiki-page-link,.wiki-page-link:hover{color:#444;font-size:1.15em;font-weight:400;margin-left:5px}#wiki-page-last-modified{color:#666;font-size:12px;padding:40px 10px}.dir-content-resize{cursor:ew-resize;flex:0 0 .5%}.readonly-tip-message{align-items:center;background-color:#fefbdc;display:flex;justify-content:center;padding:.25rem 0}.transfer-group-name{line-height:2rem;margin-left:10px}.group-transfer-select .true__dropdown-indicator,.reviewer-select .true__indicator-separator{display:none}.manage-members{max-height:300px;min-height:200px;overflow-y:auto;padding:.5rem 0}.manage-members-table td,.manage-members-table th{text-align:left;vertical-align:middle}.add-members-select .true__indicator-separator{display:none}.add-members{display:flex;justify-content:space-between}.add-members .add-members-select{width:385px}.add-members .btn{width:75px}.group-error{margin-top:10px}.group-manage-members-dialog .search-group-members{background:#f1f1f1;border:1px solid transparent;color:#999;font-size:14px;font-weight:400;margin:12px 0 0}.group-manage-members-dialog .search-group-members.active{background:#fff;border-color:#ccc}.group-manage-members-dialog .search-group-members .input-group-input,.group-manage-members-dialog .search-group-members .input-group-text{background:transparent;border:none;color:inherit}.group-manage-members-dialog .search-group-members.active .input-group-input{color:#495057}.group-manage-members-dialog .search-group-members .input-group-input:focus{box-shadow:none}#group-members-popover,#group-setting-popover{right:0;top:42px}.group-member-list-header{border-bottom:1px solid #e3e3e5;margin-bottom:0;padding-bottom:10px}.group-member-list{border-top:0;margin-top:0;max-height:400px;padding-top:0}.group-member-list .user-item{line-height:2rem}.group-member-list .user-item:hover{background-color:#f8f8f8}.group-member-list .user-item .group-member-name{margin:0 5px;max-width:70%}.group-member-list .user-item .group-member-admin{color:#888;font-size:12px}.department-group-icon{color:#888;margin-left:.25rem}.group-top-op-icon{display:inline-block;font-size:22px;margin:3px 0 0 10px}.cur-view-content-groups .group-list-panel{padding-bottom:1rem}.group-list-panel .group-item-heading{border-bottom:1px solid #e6e6e6;font-size:1rem;font-weight:400;margin:.75rem 0 0;padding:.25rem}.group-list-panel .group-item-empty-tip{border-bottom:1px solid #e5e5e5;color:#a4a4a4;padding:4px 0;text-align:center} +/*# sourceMappingURL=app.06d6765d.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/app.06d6765d.css.map b/media/assets/frontend/static/css/app.06d6765d.css.map new file mode 100644 index 00000000000..58d37c9e5ce --- /dev/null +++ b/media/assets/frontend/static/css/app.06d6765d.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/app.06d6765d.css","mappings":"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","sources":["css/system-notification.css","css/files-activities.css","css/sub-folder-permission.css","css/repo-seatable-integration-dialog.css","css/lib-decrypt.css","css/repo-tag.css","css/dirents-menu.css","components/popover/list-tag-popover.css","css/common-add-tool.css","css/edit-filetag-popover.css","components/dialog/extra-attributes-dialog/editor/single-select/index.css","components/dialog/extra-attributes-dialog/column/index.css","components/dialog/extra-attributes-dialog/index.css","css/apply-folder-properties.css","css/tip-for-new-file.css","css/repo-info-bar.css","css/dirent-list-item.css","css/grid-view.css","css/lib-content-view.css","css/transfer-group-dialog.css","css/manage-members-dialog.css","css/group-view.css","css/groups.css"],"sourcesContent":["#info-bar {\n color: #1f0600;\n padding: 4px 10px;\n background: #fddaa4;\n}\n#info-bar .close {\n font-size: 16px;\n line-height: 1;\n color: #888;\n cursor: pointer;\n}\n#info-bar-info a {\n color: #a68558;\n text-decoration: underline;\n}\n",".activity-details {\n text-decoration: underline;\n cursor: pointer;\n}\n.activity-details:hover {\n color: #333;\n}\n.mobile-activity-time {\n display: inline-block;\n margin-bottom: .2em;\n}\n\n.cur-activity-modifiers {\n margin-left: -0.5rem;\n}\n\n.cur-activity-modifiers:hover {\n background: #f5f5f5;\n cursor: pointer;\n}\n\n.cur-activity-modifiers .toggle-icon {\n color: #999;\n}\n\n.activity-modifier-selector-container {\n width: 320px;\n background: #fff;\n border: 1px solid #e8e8e8;\n margin-top: 2px;\n z-index: 2;\n}\n\n.activity-selected-modifiers {\n min-height: 2rem;\n background: #f6f6f6;\n border-bottom: 1px solid #dde2ea;\n line-height: 1;\n}\n\n.activity-selected-modifier {\n display: inline-flex;\n align-items: center;\n margin-right: 10px;\n padding: 0 8px 0 2px;\n border-radius: 10px;\n background: #eaeaea;\n}\n\n.unselect-activity-user {\n color: #909090;\n cursor: pointer;\n}\n\n.unselect-activity-user:hover {\n color: #5a5a5a;\n}\n\n.activity-user-list {\n min-height: 4rem;\n max-height: 200px;\n}\n\n.activity-user-item {\n cursor: pointer;\n}\n\n.activity-user-item:hover {\n background: #f5f5f5;\n}\n\n.activity-user-name {\n font-size: 14px;\n}\n",".share-dialog .share-dialog-content {\n min-height: 28rem;\n}\n","/* common */\n.account-dialog .nav .nav-item {\n padding: 0;\n}\n\n.account-dialog .nav .nav-item .nav-link {\n padding: 0.5rem 0;\n color: #8a948f;\n font-weight: normal;\n transition: none;\n width: 100%;\n}\n\n.account-dialog .nav .nav-item .nav-link.active {\n color: #ff8000;\n text-decoration: none;\n border-bottom: 0.125rem solid #ff8000;\n}\n\n.account-dialog .nav-pills .nav-item .nav-link {\n padding: .3125rem 1rem .3125rem 8px;\n color: #333;\n}\n\n.account-dialog .nav-pills .nav-item .nav-link:hover {\n background-color: #f5f5f5;\n}\n\n.account-dialog .nav-pills .nav-item .nav-link.active {\n background-color: #ff8000;\n color: #fff;\n border: none;\n}\n\n.account-dialog table {\n width: 100%;\n table-layout: fixed;\n}\n\n.account-dialog .accounts-list {\n max-height: 400px;\n overflow: auto;\n}\n\n.account-dialog .accounts-list table thead tr {\n border-bottom: 1px solid #efefef;\n height: 2.1875rem;\n}\n\n.account-dialog .accounts-list table tbody tr {\n border-bottom: 1px solid #efefef;\n height: 2.5625rem;\n}\n\n.account-dialog table th {\n padding: 0.3125rem 0.1875rem;\n font-weight: 500;\n}\n\n.account-dialog table td {\n padding: 3px 0.1875rem;\n color: #333;\n font-size: 14px;\n word-break: break-all;\n}\n\n.account-dialog table td a {\n text-decoration: none;\n color: inherit;\n}\n\n.account-dialog .ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.account-dialog .select-module {\n font-size: 16px;\n}\n\n.account-dialog .select-module.select-module-icon {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n.account-dialog .select-module.select-module-name {\n margin-left: 0.5rem;\n}\n\n.account-dialog .op-target {\n color: #ea7500;\n word-wrap: break-word;\n}\n\n/* custom */\n.account-dialog {\n max-width: 600px;\n height: calc(100% - 56px);\n}\n\n.account-dialog .account-dialog-content {\n padding: 0;\n min-height: 27rem;\n display: flex;\n flex-direction: row;\n overflow: hidden;\n}\n\n.account-dialog-content .account-dialog-side {\n display: flex;\n flex: 0 0 25%;\n padding: 12px 8px;\n border-right: 1px solid #eee;\n}\n\n.account-dialog-content .account-dialog-main {\n flex: 1;\n padding: 0.5rem 1.5rem 2rem;\n}\n\n.account-dialog-content .account-dialog-main .tab-content {\n flex: 1;\n}\n\n.account-dialog-content .account-dialog-main .tab-pane {\n height: 100%;\n}\n\n.account-dialog .wechat-input-content {\n height: 250px;\n}\n\n.accounts-manage .accounts-manage-header {\n border-bottom: 1px solid #efefef;\n padding: .375rem 0;\n}\n\n.accounts-manage .accounts-manage-header button {\n font-weight: normal;\n}\n\n.accounts-manage .no-accounts {\n height: 400px;\n}\n\n.accounts-manage .no-accounts img {\n width: 120px;\n}\n\n.accounts-manage .no-accounts p {\n margin-top: 1rem;\n color: #afafaf;\n}\n\n.accounts-manage .accounts-list-body {\n max-height: 400px;\n overflow-y: auto;\n cursor: pointer;\n}\n\n.accounts-manage th,\n.accounts-manage td {\n padding: .5rem .1875rem;\n border-color: #efefef;\n}\n\n.accounts-manage th {\n color: #999;\n}\n\n.accounts-manage .accounts-list-body tr:hover {\n background-color: #f9f9f9;\n}\n\n.accounts-manage .accounts-list-body .account-operation-btn {\n display: none;\n margin-right: .2rem;\n}\n\n.accounts-manage .accounts-list-body tr:hover .account-operation-btn {\n display: inline-flex;\n width: 24px;\n height: 24px;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n\n.accounts-manage .account-operation-btn .dtable-font {\n font-size: 14px;\n color: #999;\n}\n\n.accounts-manage .account-operation-btn:hover .dtable-font {\n color: #5a5a5a;\n}\n\n.add-account,\n.edit-account {\n height: 100%;\n}\n\n.add-account .add-account-header,\n.edit-account .edit-account-header {\n padding: .375rem 0;\n border-bottom: 1px solid #efefef;\n}\n\n.add-account .back-btn,\n.edit-account .back-btn {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.add-account .back-btn .dtable-icon-return,\n.edit-account .back-btn .dtable-icon-return {\n font-size: 14px;\n color: #999;\n}\n\n.add-account .back-btn:hover .dtable-icon-return,\n.edit-account .back-btn:hover .dtable-icon-return {\n color: #5a5a5a;\n}\n\n.add-account .add-account-header-text,\n.edit-account .edit-account-header-text {\n margin-left: .25rem;\n}\n\n.add-account .add-account-btn,\n.edit-account .edit-account-btn {\n margin: 0;\n padding-top: 0;\n padding-bottom: 0;\n font-weight: normal;\n border-color: #ff8000;\n color: #ff8000;\n}\n\n.add-account .account-loading-tip {\n margin-top: 1rem;\n}\n\n.add-account .add-account-btn:hover,\n.edit-account .edit-account-btn:hover {\n background-color: transparent;\n}\n\n.base-account {\n height: calc(100% - 38px);\n}\n\n.base-account input[type=\"checkbox\"] {\n margin-top: -2px;\n vertical-align: middle;\n}\n\n.base-account .account-name-desc {\n margin-top: .375rem;\n}\n\n.base-account .base-account-password .input-group .form-control {\n height: 38px;\n border-right: none;\n}\n\n.base-account .base-account-password .input-group .input-group-text {\n height: 38px;\n border-radius: 0 3px 3px 0;\n}\n\n",".lib-decrypt-form .intro {\n color: #464646;\n font-size: 1.3em;\n}\n.lib-decrypt-form .password-input {\n width: 50%;\n margin: 0 auto;\n}\n.lib-decrypt-form .submit {\n width: 50%;\n margin: 1.5em auto 1em;\n}\n",".tag-list-container {\n max-height: 15rem;\n list-style: none;\n overflow: auto;\n}\n\n.add-tag-link {\n color: #666;\n}\n\n.add-tag-link:hover {\n color: #444;\n text-decoration: none;\n background: #f5f5f5;\n}\n\n.tag-list-item {\n height: 2.5rem;\n}\n\n.tag-list-item.hl {\n background: #f5f5f5;\n}\n\n.tag-selected-icon {\n color: #999;\n}\n\n.tag-delete-icon {\n color: #999;\n font-size: 18px;\n}\n\n.tag-delete-icon:hover {\n color: #444;\n}\n\n.tag-dialog-back {\n color: #888;\n cursor: pointer;\n margin-right: 10px;\n}\n\n.tag-dialog-back:hover,\n.tag-dialog-back:focus {\n color: #444;\n}\n\n/* overwrite the code from seafile-ui */\n.tag-color-option .colorinput-color::before {\n display: none;\n}\n\n.tag-color-option .color-selected {\n opacity: 0;\n}\n\n.tag-color-option .colorinput-input:checked ~ .colorinput-color .color-selected {\n opacity: 1;\n}\n\n/* tag-color */\n.tag-color-popover .popover {\n max-width: 360px;\n}\n\n.tag-color-popover .tag-color {\n width: 20px;\n height: 20px;\n}\n\n.tag-color-popover .colorinput-color {\n width: 20px;\n height: 20px;\n}\n\n.tag-color-popover .tag-color-option .colorinput-input:checked ~ .colorinput-color .color-selected {\n font-size: 12px;\n}\n",".dirents-more-menu {\n margin-left: 0;\n padding: 4px 15px;\n border: 1px solid #ccc;\n border-top-right-radius: 2px !important;\n border-bottom-right-radius: 2px !important;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n width: 46px;\n height: 30px;\n}\n.dirents-more-menu:hover {\n background-color: #fff;\n border: 1px solid #ccc;\n}\n",".list-tag-popover .popover {\n width: 500px;\n max-width: 500px;\n}\n\n.list-tag-popover .add-tag-link {\n cursor: pointer;\n}\n\n.list-tag-popover .tag-list-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #dedede;\n}\n\n.list-tag-popover .tag-list-footer .item-text {\n color: #ff8000;\n cursor: pointer;\n}\n\n.list-tag-popover .tag-list-footer a:hover {\n text-decoration: none;\n}\n\n.list-tag-popover .tag-color {\n width: 20px;\n height: 20px;\n}\n",".add-item-btn {\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n font-weight: 500;\n border-top: 1px solid #dedede;\n background: #fff;\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n position: relative;\n height: 30px;\n padding: 0 10px;\n overflow: hidden;\n}\n\n.add-item-btn:hover {\n background-color: #f5f5f5;\n}\n\n.add-item-btn .dtable-icon-add-table {\n margin-right: 10px;\n font-size: 12px;\n font-weight: 600;\n transform: none;\n}\n\n.add-item-btn .add-new-option {\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n",".edit-filetag-popover .edit-filetag-popover-input {\n max-height: 30px;\n font-size: 14px;\n color: #212529;\n height: 30px;\n}\n\n.edit-filetag-popover .popover {\n padding: 10px;\n width: 200px;\n padding-bottom: 0px;\n}\n\n.edit-filetag-popover .tag-list-container {\n padding: 10px 0;\n}\n\n.edit-filetag-popover .tag-list-container .tag-not-found {\n opacity: 0.5;\n}\n\n.edit-filetag-popover .tag-list-item {\n height: 30px;\n}\n\n.edit-filetag-popover .tag-item {\n display: flex;\n align-items: center;\n max-width: 130px;\n margin: 0.25rem 0;\n padding: 0 0.5rem;\n width: fit-content;\n border-radius: 10px;\n}\n\n.edit-filetag-popover .tag-item .tag-name {\n color: #fff;\n font-size: 13px;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.edit-filetag-popover .add-item-btn {\n margin: 0 -10px;\n}\n",".extra-attributes-dialog .selected-single-select-container {\n height: 38px;\n width: 100%;\n padding: 0 10px;\n border-radius: 3px;\n user-select: none;\n border: 1px solid rgba(0, 40, 100, .12);\n appearance: none;\n background: #fff;\n}\n\n.extra-attributes-dialog .selected-single-select-container.disable {\n background-color: #f8f9fa;\n}\n\n.extra-attributes-dialog .selected-single-select-container.focus {\n border-color: #1991eb!important;\n box-shadow: 0 0 0 2px rgba(70, 127, 207, .25);\n}\n\n.extra-attributes-dialog .selected-single-select-container:not(.disable):hover {\n cursor: pointer;\n}\n\n.extra-attributes-dialog .selected-single-select-container .fa-caret-down {\n font-size: 16px;\n color: #949494;\n}\n\n.extra-attributes-dialog .selected-single-select-container .single-select-option {\n text-align: center;\n width: min-content;\n max-width: 250px;\n line-height: 20px;\n border-radius: 10px;\n padding: 0 10px;\n font-size: 13px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* editor */\n.single-select-editor-popover .popover,\n.single-select-editor-popover .popover-inner {\n width: fit-content;\n max-width: fit-content;\n}\n\n.single-select-editor-container {\n min-height: 160px;\n width: 320px;\n overflow: hidden;\n background-color: #fff;\n}\n\n.single-select-editor-container .search-single-selects {\n padding: 10px 10px 0;\n}\n\n.single-select-editor-container .search-single-selects input {\n max-height: 30px;\n font-size: 14px;\n}\n\n.single-select-editor-container .single-select-editor-content {\n max-height: 200px;\n min-height: 100px;\n padding: 10px;\n overflow-x: hidden;\n overflow-y: scroll;\n}\n\n.single-select-editor-container .single-select-editor-content .single-select-option-container {\n width: 100%;\n height: 30px;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 13px;\n color: #212529;\n padding-left: 12px;\n}\n\n.single-select-editor-container .single-select-editor-content .single-select-option-container:hover {\n background-color: #f5f5f5;\n cursor: pointer;\n}\n\n.single-select-editor-container .single-select-editor-content .single-select-option {\n padding: 0 10px;\n height: 20px;\n line-height: 20px;\n text-align: center;\n border-radius: 10px;\n margin-right: 10px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.single-select-editor-container .single-select-editor-content .single-select-option-selected {\n width: 20px;\n text-align: center;\n}\n\n",".extra-attributes-dialog .column-name {\n padding-top: 9px;\n}\n\n.extra-attributes-dialog .column-item {\n min-height: 56px;\n}\n",".extra-attributes-dialog {\n margin: 28px 0 0 0;\n}\n\n.extra-attributes-dialog .extra-attributes-content-container {\n height: 100%;\n overflow: hidden;\n}\n\n.extra-attributes-dialog .modal-body {\n overflow-y: scroll;\n padding: 30px;\n}\n\n.extra-attributes-dialog .modal-body .form-control.disabled {\n background-color: #f8f9fa;\n}\n",".apply-properties-dialog .apply-properties {\n justify-content: center;\n align-items: center;\n width: fit-content;\n display: flex;\n height: 38px;\n}\n\n.apply-properties-dialog .apply-properties .loading-tip {\n display: inline-block;\n height: 16px;\n width: 16px;\n margin: 0;\n}\n",".tip-for-new-file {\n margin: 0 auto;\n padding: 2em 1em;\n align-self: flex-start; /* for repo wiki mode */\n}\n@media (min-width: 768px) {\n .tip-for-new-file {\n padding: 5em 8em;\n }\n}\n.big-new-file-button {\n padding: .9em 2em 1em; \n border-radius: 8px; \n margin: 0 0.75em 1.5em;\n cursor: pointer;\n width: 160px;\n background: #fff;\n border: 1px solid #d1d1d1;\n}\n.big-new-file-button:hover,\n.big-new-file-button:focus {\n border-color: #eb9205;\n color: #eb8205;\n}\n",".repo-info-bar {\n padding: 10px;\n margin: 10px 16px 0;\n border: 1px solid #e6e6dd;\n border-radius: 5px;\n /* background: #f8f8f8; */\n}\n\n.used-tag-list {\n list-style: none;\n}\n\n.used-tag-item {\n display: inline-block;\n margin: auto 15px;\n}\n\n.used-tag {\n display: inline-block;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n cursor: pointer;\n}\n\n.used-tag-name {\n margin: 0 0.25rem;\n}\n\n.used-tag-files {\n color: #888;\n font-size: 14px;\n}\n\n.used-tag-files:hover {\n cursor: pointer;\n text-decoration: underline;\n}\n\n.file-info {\n margin: 0 15px;\n display: inline-block;\n cursor: pointer;\n}\n\n.file-info a {\n color: #333;\n}\n\n.info-icon {\n color: #888;\n vertical-align: -3px;\n}\n\n.readme-dialog-edit {\n position: absolute;\n right: 16px;\n}\n\n.readme-dialog .modal-body {\n padding: 0 30px;\n}\n",".tr-drop-effect {\n background-color: #f8f8f8;\n}\n\n.star-empty {\n color: #d0d0d0;\n}\n\n.dir-icon {\n position: relative;\n text-align: center;\n max-width: 24px;\n}\n\n.dir-icon .locked {\n position: absolute;\n width: 1rem;\n height: 1rem;\n top: 50%;\n left: 50%;\n}\n\n.tag-list-title {\n overflow: hidden;\n}\n\n.dirent-sdoc-draft-identifier {\n display: inline-block;\n font-size: 14px;\n color: #888;\n background: #eee;\n padding: 0 8px;\n height: 20px;\n line-height: 20px;\n border-radius: 10px;\n margin-left: 6px;\n}\n",".grid-view {\n padding: 0.625rem 1rem 10rem;\n list-style: none;\n display: flex;\n flex-wrap: wrap;\n flex: 1;\n align-content: flex-start;\n}\n\n.grid-item {\n width: 134px;\n padding: 10px 4px;\n text-align: center;\n position: relative;\n line-height: 0;\n}\n\n.grid-item:hover .grid-file-img-link {\n background: #f8f8f8;\n}\n\n.grid-item:hover a {\n color: #eb8205;\n}\n\n.grid-file-img-link {\n width: 96px;\n height: 96px;\n margin: 0 auto 6px;\n position: relative;\n border-radius: 3px;\n font-size: 0;\n text-align: center;\n line-height: 0;\n}\n\n.grid-file-img-link .thumbnail {\n max-width: 88px;\n max-height: 88px;\n padding: 1px;\n background: #fff;\n border: 1px solid #ddd;\n border-radius: 1px;\n}\n\n.grid-file-img-link::before {\n content: '';\n display: inline-block;\n vertical-align: middle;\n height: 100%;\n}\n\n.grid-file-name {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n word-break: keep-all;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 17px;\n font-size: 14px;\n}\n\n.grid-file-name-link {\n color: #333;\n font-size: 0.875rem;\n}\n\n.grid-file-locked-icon {\n position: absolute;\n bottom: 0;\n right: 10px;\n width: 16px;\n}\n\n.grid-selected-active {\n background-color: #f8f8f8;\n}\n\n.grid-link-selected-active {\n color: #eb8205;\n}\n\n.grid-drop-show {\n background: #f8f8f8;\n}\n",".main-panel {\n overflow: hidden;\n}\n\n.cur-view-content.lib-content-container {\n padding: 0;\n}\n\n.view-mode-container {\n display: flex;\n flex-direction: row !important;\n overflow: hidden !important;\n padding-left: 0 !important;\n min-height: 0;\n}\n\n.dir-colunm-view {\n display: flex;\n width: 100%;\n}\n\n.dir-content-nav {\n flex: 0 0 25%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: #fff;\n border-right: 1px solid #eee;\n}\n\n.dir-content-nav:hover {\n overflow: auto;\n}\n\n.dir-content-main {\n flex: 1 0 74.5%;\n display: flex;\n flex-direction: column;\n overflow: auto;\n}\n\n/*tree view */\n.tree-view {\n margin-left: -9px;\n padding: 12px 12px 12px 0;\n line-height: 1.5;\n flex: 1;\n border: 1px solid rgba(69,170,242,0);\n}\n\n.tree-view-drop {\n border: 1px solid rgba(69,170,242);\n}\n\n.tree-view-drop::before {\n border-left: 1px solid rgba(69,170,242);\n content: '';\n margin-left: 8px;\n height: calc(100% + 24px);\n display: block;\n margin-top: -12px;\n float: left;\n}\n\n.tree-node-inner {\n position: relative;\n height: 24px;\n cursor: pointer;\n line-height: 1.625;\n}\n\n.tree-node-inner-hover {\n background-color: #f5f5f5;\n border-radius: 0.25rem;\n}\n\n.tree-node-inner .tree-node-text {\n padding-left: 2.8rem;\n width: calc(100% - 1.5rem);\n font-size: 14px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 24px;\n}\n\n.tree-node-inner .left-icon {\n position: absolute;\n display:flex;\n align-items:center;\n top: 0;\n left: 0;\n padding-left: 1.5rem;\n}\n\n.folder-toggle-icon {\n position: absolute;\n left: 0;\n color: #c0c0c0;\n line-height: 1.625;\n width: 1.5rem;\n display: flex;\n align-content: center;\n justify-content: center;\n}\n\n.tree-node-drop {\n background-color:rgb(255,239,178);\n}\n\n.tree-node-icon {\n display: inline-block;\n width: 1rem;\n text-align: center;\n color: #b0b0b0;\n}\n\n.tree-node-inner .right-icon {\n position: absolute;\n top: 0;\n right: 0.5rem;\n bottom: 0;\n width: 1rem;\n color: #888; \n z-index: 2; \n font-size: 0.8125rem;\n text-align: center;\n}\n\n.tree-node-inner .right-icon i {\n width: 100%;\n height: 100%;\n vertical-align: middle;\n font-size: 0.8125rem;\n line-height: 1.625rem !important;\n}\n\n.tree-node-hight-light {\n color: #fff;\n border-radius: 4px;\n background-color: #ff9800 !important;\n}\n\n.tree-node-hight-light i {\n color:#fff;\n}\n\n.dropdown-menu {\n min-width: 8rem;\n}\n\n.parent-path {\n position: relative;\n}\n\n.parent-path .form-text {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n margin-top: 0;\n margin-left: 0.25rem;\n font-size: 0.9375rem;\n}\n\n/* file layout */\n.dir-content-main .wiki-page-container {\n padding: 0 1rem 1.25rem;\n display: flex;\n flex: 1;\n}\n\n/* wiki-page-content */\n.wiki-page-content {\n flex: 1;\n}\n\n.wiki-page-content .ml-2 {\n text-decoration: underline;\n}\n\n.wiki-page-content .ml-2:hover {\n text-decoration: underline;\n color:#eb8205;\n}\n\n.wiki-page-content .wiki-open-file {\n width: 40px;\n height: 40px;\n font-size: 16px;\n border-radius: 50%;\n box-shadow: 0 3px 5px -1px rgba(0,0,0,.2), 0 6px 10px 0 rgba(0,0,0,.14), 0 1px 18px 0 rgba(0,0,0,.12);\n user-select: none;\n border: none;\n right: 10px;\n bottom: 10px;\n color: #999;\n z-index: 1050;\n background-color: #fff;\n cursor: pointer;\n}\n\n.wiki-page-content .wiki-open-file i {\n position: absolute;\n top: 12px;\n left: 12px;\n}\n\n.wiki-page-content .wiki-open-file:hover {\n background-color: #f6f6f6;\n}\n\n.wiki-page-content .sf-slate-viewer-scroll-container {\n padding: 0;\n background-color: #fff;\n border: none;\n overflow: inherit;\n}\n\n.wiki-page-content .sf-slate-viewer-article-container {\n display: block;\n width: 100%;\n}\n\n.dir-content-main .wiki-page-content .article {\n margin: 0;\n padding: 0 10px;\n border: none;\n max-width: fit-content;\n}\n\n.wiki-page-content a {\n cursor: pointer;\n}\n.wiki-page-ops {\n position: fixed;\n top: 10px;\n}\n\n@media (min-width: 768px) {\n .wiki-page-ops:before {\n content:'';\n border-left:1px solid #ddd;\n position:absolute;\n top:3px;\n left:-16px;\n bottom:3px;\n }\n}\n\n.wiki-page-list-item {\n word-break:break-all;\n line-height:1.6;\n margin:3px 0;\n}\n\n.wiki-page-link,\n.wiki-page-link:hover {\n font-size:1.15em;\n font-weight:normal;\n color:#444;\n margin-left:5px;\n}\n\n#wiki-page-last-modified {\n padding: 40px 10px;\n font-size:12px;\n color: #666;\n}\n\n.dir-content-resize {\n flex: 0 0 .5%;\n cursor: ew-resize;\n}\n\n.readonly-tip-message {\n display: flex;\n padding: 0.25rem 0;\n background-color: #FEFBDC;\n justify-content: center;\n align-items: center;\n}\n",".transfer-group-name {\n line-height: 2rem;\n margin-left: 10px;\n}\n\n.group-transfer-select .true__dropdown-indicator,\n.reviewer-select .true__indicator-separator {\n display: none;\n}\n",".manage-members {\n min-height: 200px;\n max-height: 300px;\n overflow-y: auto;\n padding: 0.5rem 0;\n}\n\n.manage-members-table th,\n.manage-members-table td {\n vertical-align: middle;\n text-align: left;\n}\n\n.add-members-select .true__indicator-separator {\n display: none;\n}\n\n.add-members {\n display: flex;\n justify-content: space-between;\n}\n\n.add-members .add-members-select {\n width: 385px;\n}\n\n.add-members .btn {\n width: 75px;\n}\n\n.group-error {\n margin-top: 10px;\n}\n\n.group-manage-members-dialog .search-group-members {\n color: #999;\n font-size: 14px;\n font-weight: normal;\n background: #f1f1f1;\n border: 1px solid transparent;\n margin: 12px 0 0;\n}\n\n.group-manage-members-dialog .search-group-members.active {\n background: #fff;\n border-color: #ccc;\n}\n\n.group-manage-members-dialog .search-group-members .input-group-text,\n.group-manage-members-dialog .search-group-members .input-group-input {\n background: transparent;\n color: inherit;\n border: none;\n}\n\n.group-manage-members-dialog .search-group-members.active .input-group-input {\n color: #495057;\n}\n\n.group-manage-members-dialog .search-group-members .input-group-input:focus {\n box-shadow: none;\n}\n","#group-setting-popover,\n#group-members-popover {\n top: 42px;\n right: 0;\n}\n.group-member-list-header {\n border-bottom: 1px solid #e3e3e5;\n padding-bottom: 10px;\n margin-bottom: 0px;\n}\n.group-member-list {\n max-height: 400px;\n border-top: 0;\n margin-top: 0;\n padding-top: 0;\n}\n.group-member-list .user-item {\n line-height: 2rem;\n}\n.group-member-list .user-item:hover {\n background-color: #f8f8f8;\n}\n.group-member-list .user-item .group-member-name {\n margin: 0 5px;\n max-width: 70%;\n}\n.group-member-list .user-item .group-member-admin {\n color: #888;\n font-size: 12px;\n}\n",".department-group-icon {\n margin-left: 0.25rem;\n color:#888;\n}\n\n.group-top-op-icon { /* for cur-view-path*/\n display: inline-block;\n font-size: 22px;\n margin: 3px 0 0 10px;\n}\n\n.cur-view-content-groups .group-list-panel {\n padding-bottom: 1rem;\n}\n\n.group-list-panel .group-item-heading {\n font-size: 1rem;\n font-weight: normal;\n padding: 0.25rem; \n border-bottom: 1px solid #e6e6e6;\n margin: 0.75rem 0 0; \n}\n\n.group-list-panel .group-item-empty-tip {\n color: #a4a4a4;\n text-align: center;\n padding: 4px 0;\n border-bottom: 1px solid #e5e5e5;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/commons.44d6cf61.css b/media/assets/frontend/static/css/commons.44d6cf61.css new file mode 100644 index 00000000000..fe8fd6561ac --- /dev/null +++ b/media/assets/frontend/static/css/commons.44d6cf61.css @@ -0,0 +1,15 @@ +@charset "UTF-8";.paginator .btn{min-width:2.375rem}body{overflow:hidden}.file-view-header{background:#fff;border-bottom:1px solid #c9c9c9;flex-shrink:0;padding:4px 10px}.file-title{font-size:1.2rem;font-weight:700;line-height:1.5;margin-bottom:0}.file-star{color:#999;font-size:.875rem;margin-left:.5rem}.file-star:focus,.file-star:hover{color:#999;text-decoration:none}.file-locked-icon{margin-left:.5rem}.meta-info{font-size:.8125rem}.file-view-content{background:#f4f4f4;border-right:4px solid transparent;padding:30px 0}.file-details-container{-webkit-animation:move .5s ease-in-out 1;animation:move .5s ease-in-out 1;background-color:#fff;box-shadow:-1px 0 3px 0 #ccc;height:100%;position:absolute;right:0;width:300px;z-index:50}.file-view-body .seafile-comment{width:100%}@media (min-width:768px){.file-view-body .seafile-comment{border-left:1px solid #e6e6dd;width:300px}}.image-file-view{position:relative;text-align:center}.image-file-view:before{content:" ";display:inline-block;font-size:0;height:100%;line-height:0;vertical-align:middle}#image-view{background:#fff;border:1px solid #eee;font-size:0;height:auto;line-height:0;max-height:calc(100% - 4px);max-width:calc(100% - 4px);padding:1px;width:auto}#img-next,#img-prev{background:#fff;border-radius:100%;color:#888;height:50px;line-height:50px;position:absolute;text-decoration:none;top:48%;width:50px}#img-prev{left:15px}#img-next{right:15px}#img-next:hover,#img-prev:hover{color:#333}.svg-file-view{position:relative;text-align:center}.svg-file-view:before{content:" ";display:inline-block;font-size:0;height:100%;line-height:0;vertical-align:middle}#svg-view{max-height:100%;max-width:100%}.pdf-file-view{overflow:hidden;position:relative}.pdf-file-view.file-view-content{border:0}.sf-hide{height:0;overflow:hidden}#mainContainer,#outerContainer,#viewerContainer{bottom:0;left:0;position:absolute;right:0;top:0}#viewerContainer{margin-bottom:33px;overflow:auto;padding:10px 0 0}#viewerContainer:focus{outline:none}.pdfViewer .page{background:#fff;border:none;box-shadow:0 0 6px #ccc;margin:0 auto 10px;position:relative}.page .loading-icon{left:50%;position:absolute;top:50%}#toolbarViewerMiddle{left:auto;right:0;-webkit-transform:none;transform:none}select#scaleSelect{background:#fff;font-size:12px;height:24px}#scaleSelectContainer:after{top:4px}#errorWrapper{background:#ff6e6e;color:#0c0c0d;padding:3px 6px}#errorWrapper,.toolbar{left:0;position:absolute;right:0;z-index:998}.toolbar{bottom:0}#toolbarContainer{border-top:1px solid #c9c9c9;box-shadow:none;height:auto}#loadingBar{background:transparent;border:0;height:auto;position:fixed;top:50%;width:auto}input#pageNumber{font-size:12px;height:20px;margin:0 0 0 9px;padding:0 5px}#numPages.toolbarLabel{margin:0;padding:0 7px}#sidebarContainer{background:#fff;border-top:none;bottom:0;position:absolute;top:0}#toolbarSidebar{background:#fff;height:auto}#thumbnailView{padding:0;width:100%}#thumbnails-header .title{font-size:1rem}#thumbnails-header .sf2-icon-x3{font-family:seafile-font2}#thumbnails-header .close-thumbnail-panel{color:#999;font-size:1rem}#thumbnails-header .close-thumbnail-panel:hover{color:#555}#thumbnailView .thumbnail{border:none;border-radius:0;border-radius:initial;float:none;height:auto;margin:0 1px 0 0;max-height:none;max-width:none;padding:10px 0;text-align:center;width:auto}#thumbnailView .thumbnail.selected{background:#f0f0f0}#thumbnailView .thumbnail .thumbnail-page-number{bottom:0;color:#999;font-size:.875rem;position:absolute;right:100%}#thumbnailView .thumbnail .thumbnailImage{border:1px solid #ddd;border-radius:3px}#thumbnailView .thumbnail.selected .thumbnailImage{border:2px solid #ff9800}#sidebarContent{inset-block:51.5px 0}.splitToolbarButton>.toolbarButton{float:none}#overlayContainer{background-color:rgba(0,0,0,.2);display:table;height:100%;position:absolute;width:100%;z-index:999}.dirent-info .img .thumbnail{border:0;border-radius:0;float:none;height:auto;margin:0;padding:0;width:auto}@media print{#wrapper{display:none}}.text-file-view .cm-editor{border:1px solid #ccc;box-shadow:0 0 6px #ccc;height:auto;margin:0 auto;max-width:950px;min-height:300px;width:calc(100% - 40px)}.text-file-view .cm-editor.cm-focused{outline:none}.text-file-view .cm-gutter,.text-file-view .cm-scroll{min-height:300px}.text-file-view{overflow:auto}.sf-code-mirror .cm-editor{font-size:13px;height:100vh}.sf-code-mirror .cm-editor .cm-scroller{overflow-x:visible;overflow-x:initial}@-webkit-keyframes commonLoading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes commonLoading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.common-loading-icon{-webkit-animation:commonLoading .9s linear infinite;animation:commonLoading .9s linear infinite;border:2px solid #eee;border-left-color:#aaa;border-radius:50%;display:inline-block;height:20px;width:20px}.common-loading-tip{display:block;margin:0 auto}.sdoc-dropdown-item-with-left-icon .sdoc-dropdown-item-content .sdoc-dropdown-item-content-icon{color:#444}.link-op-menu{background-color:#fff;border:1px solid #e5e5e5;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08);display:flex;height:36px;padding:7px 8px;position:absolute;z-index:1000}.link-op-menu .link-op-menu-triangle{background:#fff;border-bottom:1px solid rgba(0,40,100,.12);border-right:1px solid rgba(0,40,100,.12);height:8px;position:absolute;right:50%;top:31px;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:8px;z-index:1001}.link-op-menu-link{border-radius:2px;color:#212529;cursor:pointer;font-size:12px;line-height:20px;padding:0 5px}.link-op-menu-link:hover{background:#f1f1f1;color:#212529;text-decoration:none}.link-op-icons{border-left:1px solid #e5e5e5;margin-left:8px}.link-op-icon{align-items:center;border-radius:2px;color:#999;display:flex;margin-left:8px;padding:4px}.link-op-icon .sdocfont{color:#444;font-size:12px}.link-op-icon:hover{background:#f2f2f2}.seafile-ed-hovermenu-mouseclick{background-color:#e5e5e5}.sdoc-tooltip{pointer-events:none}.sdoc-tooltip .tooltip-inner{background-color:#303133;font-weight:lighter;text-align:start}.sdoc-tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow:before{border-bottom-color:#303133}.sdoc-tooltip.bs-tooltip-auto[x-placement^=top]{margin-bottom:-2px}.sdoc-tooltip.bs-tooltip-auto[x-placement^=top] .arrow:before{border-top-color:#303133}.sdoc-tooltip.bs-tooltip-auto[x-placement^=right] .arrow:before{border-right-color:#303133}.sdoc-tooltip.bs-tooltip-auto[x-placement^=left] .arrow:before{border-left-color:#303133}.menu-group .sdoc-color-menu.menu-show{background:#e5e5e5;border-radius:2px}.menu-group .sdoc-color-menu .last-used-color-container{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center}.menu-group .sdoc-color-menu .last-used-color-container.disabled{padding-right:0}.menu-group .sdoc-color-menu .sdoc-color-toggle{align-items:center;display:flex;height:100%;justify-content:center}.menu-group .sdoc-color-menu .last-used-color-container:not(.disabled):hover,.menu-group .sdoc-color-menu .sdoc-color-toggle:hover{background-color:#e5e5e5}.menu-group .sdoc-color-menu.disabled .sdoc-color-toggle{display:none}.sdoc-color-menu .sdoc-color-icon{height:12px;line-height:12px;-webkit-transform:scale(.85);transform:scale(.85);width:12px}.sdoc-color-menu .last-used-color{border:1px solid rgba(0,0,0,.08);border-radius:1px;height:3px;margin-top:1px;width:14px}.sdoc-color-menu-popover .popover{left:-24px!important}.sdoc-color-menu-popover .sdoc-color-dropdown-menu{padding:0 0 12px;width:251px}.sdoc-color-menu-popover .sdoc-color-no-color-container{height:24px;margin-bottom:5px;width:100%}.sdoc-color-menu-popover .sdoc-color-no-color-content{border:1px solid rgba(0,0,0,.12);border-radius:2px;cursor:pointer;font-size:12px;height:100%;line-height:22px;text-align:center;width:100%}.sdoc-color-menu-popover .sdoc-color-default-colors-container{display:flex;flex-wrap:wrap}.sdoc-color-menu-popover .sdoc-color-item{border:.5px solid rgba(0,0,0,.08);height:20px;margin-bottom:3px;margin-right:3px;position:relative;width:20px}.sdoc-color-menu-popover .sdoc-color-item:not(.selected):hover:before{border:1px solid rgba(0,0,0,.24);content:"";height:calc(100% + 5px);left:-2.5px;pointer-events:none;position:absolute;top:-2.5px;width:calc(100% + 5px)}.sdoc-color-menu-popover .sdoc-color-item.selected:after{border:1px solid rgba(0,0,0,.88);content:"";height:calc(100% + 5px);left:-2.5px;pointer-events:none;position:absolute;top:-2.5px;width:calc(100% + 5px)}.sdoc-color-menu-popover .sdoc-color-item:hover{cursor:pointer}.sdoc-color-menu-popover .sdoc-color-item:nth-child(10n){margin-right:0}.sdoc-color-menu-popover .sdoc-color-sub-title{color:rgba(0,0,0,.4);font-size:11px;line-height:16px;margin:7px 0}.sdoc-color-menu-popover .sdoc-colors-divider{border-bottom:1px solid rgba(0,0,0,.08);height:1px;margin:0 0 8px;width:100%}.sdoc-color-menu-popover .sdoc-more-colors{align-items:center;display:flex;font-size:12px;height:30px;justify-content:space-between;padding:0 12px}.sdoc-color-menu-popover .sdoc-more-colors .sdocfont{color:#888;font-size:12px;-webkit-transform:scale(.6);transform:scale(.6)}.sdoc-color-menu-popover .sdoc-more-colors.show-pick{background-color:rgba(51,77,102,.06);cursor:pointer}.sdoc-more-colors-popover .popover{left:10px!important}.menu-group #button-sdoc-highlight-color .sdoc-color-icon{left:1px;position:relative}.menu-group .menu-group-item{background-color:#fff}.menu-group .menu-group-item .sdocfont,.sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-icon .sdocfont{font-size:12px}.menu-group .menu-group-item.sdoc-menu-with-dropdown{align-items:center;border:0!important;display:flex;height:24px;justify-content:center;margin-right:10px;overflow:hidden;padding:0!important;width:36px}.menu-group .menu-group-item.sdoc-menu-with-dropdown.disabled{color:#999;width:24px!important}.sdoc-menu-with-dropdown:not(.disabled):hover{background:#f2f2f2;border-radius:2px}.sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-triangle{align-items:center;display:flex;height:24px;justify-content:center;width:12px}.sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-triangle .sdoc-menu-with-dropdown-triangle-icon{color:#999;font-size:12px}.sdoc-code-block-hover-menu-container{height:42px;max-width:250px;position:absolute;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;z-index:101}.sdoc-code-block-hover-menu-container .hover-menu-container{align-items:center;background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08);display:flex;height:36px;justify-content:space-around;padding:7px 8px;width:100%}.sdoc-code-block-hover-menu-container .hover-menu-container .active{background:#f2f2f2;color:#212529;text-decoration:none}.sdoc-code-block-hover-menu-container .hover-menu-container .op-item{border-radius:2px;color:#212529;font-size:12px;height:100%;line-height:20px;position:relative;text-align:center;width:100%}.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-item.sdoc-code-block-hover-operation-lang .op-item{padding:0 5px}.sdoc-code-block-hover-menu-container .hover-menu-container .sdoc-code-block-hover-operation-lang .icon-font{align-items:center;display:inline-flex;justify-content:center;margin-left:8px}.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-item{height:20px;justify-content:center;text-align:center;width:20px}.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-item.sdoc-code-block-hover-operation-lang{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-lang .icon-font{color:#999}.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-divider{background-color:#e5e5e5;height:20px;margin:0 8px;width:1px}.sdoc-code-block-hover-menu-container .hover-menu-container .op-item:hover{background:#f2f2f2;color:#212529;text-decoration:none}.sdoc-code-block-hover-menu-container .icon-font{color:#444;font-size:12px}.sdoc-langs-list-container{background-color:#fff;border:1px solid #dedede;border-radius:4px;box-shadow:0 0 5px #ccc;left:0;overflow-y:hidden;position:absolute;top:38px;width:200px}.sdoc-langs-list-container .sdoc-search-langs{padding:10px 10px 0}.sdoc-langs-list-container .sdoc-search-langs input{font-size:14px;max-height:30px}.sdoc-langs-list-container .langs-list-ul{list-style:none;max-height:280px;min-height:100px;overflow-y:auto;padding:10px}.sdoc-langs-list-container .langs-list-ul .langs-list-li{cursor:pointer;display:flex;font-size:13px;height:30px;justify-content:space-between;line-height:30px;padding-left:12px;position:relative;white-space:nowrap}.sdoc-langs-list-container .langs-list-ul .langs-list-li .active,.sdoc-langs-list-container .langs-list-ul .langs-list-li:hover{background-color:#f5f5f5}.sdoc-langs-list-container .langs-list-ul .langs-list-li .li-check-mark{opacity:0;padding:0 10px}.sdoc-langs-list-container .langs-list-ul .langs-list-li .li-checked{opacity:1}.sdoc-code-block-container{position:relative}.sdoc-code-block-pre{background:#fafafa;border:1px solid #f0f0f0}.sdoc-code-block-pre .sdoc-code-no-wrap{white-space:nowrap}.sdoc-code-block-pre .sdoc-code-no-wrap .sdoc-code-line>span{white-space:pre}.sdoc-code-block-code .sdoc-code-line{counter-increment:number;margin-left:32px;position:relative}.sdoc-code-block-code .sdoc-code-line:before{color:#ccc;content:counter(number);left:-50px;position:absolute;text-align:end;width:40px}.sdoc-code-line +.token.comment,.token.cdata,.token.doctype,.token.prolog{color:#708090}.sdoc-code-line +.token.punctuation{color:#999}.sdoc-code-line +.token.namespace{opacity:.7}.sdoc-code-line +.token.property,.token.boolean,.token.constant,.token.deleted,.token.number,.token.symbol,.token.tag{color:#905;padding:0}.sdoc-code-line +.token.selector,.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.string{color:#690}.language-css .token.string,.sdoc-code-line +.token.operator,.style .token.string,.token.entity,.token.url{color:#9a6e3a}.sdoc-code-line +.token.atrule,.token.attr-value,.token.keyword{color:#07a}.sdoc-code-line +.token.function,.token.class-name{color:#dd4a68}.sdoc-code-line +.token.regex,.token.important,.token.variable{color:#e90}.sdoc-code-line +.sdoc-code-line +.token.important,.token.bold{font-weight:700}.sdoc-code-line +.token.italic{font-style:italic}.sdoc-code-line +.token.entity{cursor:help}.mobile-image-footer-choice .ril__builtinButton{opacity:1}.ril-toolbar .ril__builtinButton{width:30px}.ril__deleteButton{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSJweCIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBzdHlsZT0ic3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDojZmZmO2ZpbGwtb3BhY2l0eToxIiBkPSJNMTAuMi41Yy40MDIgMCAuOC4zNTIuODUuNzVsLjIgMS4zNTJoMy42MDJjLjM0NyAwIC42NDguMjk2LjY0OC41OTdzLS4zLjYwMi0uNjQ4LjYwMmgtMS4yNXYxMGMwIC4zOTgtLjIwNC44NDctLjUgMS4xOTktLjM1Mi4zNTItLjc1LjQ1LTEuMjA0LjQ1aC03Ljc1Yy0uNDQ5IDAtLjg5OC0uMi0xLjE5OS0uNDUtLjM0Ny0uMzUyLS41LS43NS0uNS0xLjJ2LTEwaC0xLjNBLjU4MS41ODEgMCAwIDEgLjUgMy4yNWMwLS4zLjMtLjYwMi42NDgtLjYwMkg0Ljd2LS4wOTdsLjItMS4zNTJDNC45NDguODUyIDUuMy41IDUuNzUuNVptLS41NTIgNS42MDJjLS4zOTggMC0uNjk5LjI5Ni0uNjk5LjY5OVYxMmMwIC4zOTguMzAxLjcuNy43LjQwMiAwIC43MDMtLjMwMi43MDMtLjdWNi44NTJjMC0uNDAzLS4zMDEtLjc1LS43MDQtLjc1Wm0tMy4yOTYgMGEuNjgzLjY4MyAwIDAgMC0uNzA0LjY5OVYxMmMwIC4zOTguMzAxLjcuNzA0LjcuMzk4IDAgLjY5OS0uMzAyLjY5OS0uN1Y2Ljg1MmMwLS40MDMtLjMwMS0uNzUtLjctLjc1Wm0wIDAiLz48L3N2Zz4=) no-repeat 50%}.ril__downloadButton{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSJweCIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBzdHlsZT0ic3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDojZmZmO2ZpbGwtb3BhY2l0eToxIiBkPSJNOS4xMDIgOC44OThWMS42MDJDOS4xMDIuOTQ5IDguNjAyLjUgOCAuNWMtLjYwMiAwLTEuMTAyLjQ1LTEuMTAyIDEuMTAydjcuMjk2TDQuMiA2LjJhMS4wNDUgMS4wNDUgMCAwIDAtMS41LjA1MWMtLjM5OC4zOTgtLjM5OCAxLjEwMiAwIDEuNUw3LjI1IDEyLjNjLjM5OC40IDEuMTAyLjQgMS41IDBsNC41NS00LjU1Yy40LS4zOTguNC0xLjEwMi4wNTItMS41LS40MDMtLjM5OC0xLjEwMi0uMzk4LTEuNS0uMDVsLS4wNTEuMDVabS03LjUgNC40NTRoMTIuODQ3Yy42MDIgMCAxLjEwMi40NDkgMS4xMDIgMS4wOTcgMCAuNjUzLS41IDEuMDUxLTEuMTUzIDEuMDUxSDEuNjAyQy45NDkgMTUuNS41IDE1LjA1LjUgMTQuMzk4YzAtLjU0Ni40NS0xLjA0NiAxLjEwMi0xLjA0NlptMCAwIi8+PC9zdmc+) no-repeat 50%}.ril__downMoveButton{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSJweCIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBzdHlsZT0ic3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDojZmZmO2ZpbGwtb3BhY2l0eToxIiBkPSJNOCAxNS41QTcuNDkyIDcuNDkyIDAgMCAxIC41IDhDLjUgMy44NTIgMy44NTIuNSA4IC41czcuNSAzLjM1MiA3LjUgNy41LTMuMzUyIDcuNS03LjUgNy41Wk04IDIuMTQ4QzQuOCAyLjE0OCAyLjE0OCA0LjgwMSAyLjE0OCA4YzAgMy4yIDIuNjUzIDUuODUyIDUuODUyIDUuODUyIDMuMiAwIDUuODUyLTIuNjUzIDUuODUyLTUuODUyIDAtMy4yLTIuNjUzLTUuODUyLTUuODUyLTUuODUyWm0wIDAiLz48cGF0aCBzdHlsZT0ic3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDojZmZmO2ZpbGwtb3BhY2l0eToxIiBkPSJNOC41NSAxMGEuOTEuOTEgMCAwIDEtMS4xOTggMEw0LjQ0OSA3LjEwMkM0LjIgNi43NSA0LjIgNi4yNSA0LjUgNS45NDljLjMtLjMuOC0uMzQ3IDEuMTQ4LS4wNWwyLjMwMSAyLjMgMi4zMDEtMi4zYy4yLS4yNS41NS0uMzQ4Ljg1Mi0uMjk3LjI5Ni4wNDYuNTQ2LjI5Ni42NDguNjQ4LjA1LjMtLjA1LjY0OC0uMy44NTJabTAgMCIvPjwvc3ZnPg==) no-repeat 50%}.ril__upMoveButton{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSJweCIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBzdHlsZT0ic3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDojZmZmO2ZpbGwtb3BhY2l0eToxIiBkPSJNOCAuNUE3LjQ5MiA3LjQ5MiAwIDAgMCAuNSA4YzAgNC4xNDggMy4zNTIgNy41IDcuNSA3LjVzNy41LTMuMzUyIDcuNS03LjVTMTIuMTQ4LjUgOCAuNVptMCAxMy4zNTJjLTMuMiAwLTUuODUyLTIuNjUzLTUuODUyLTUuODUyIDAtMy4yIDIuNjUzLTUuODUyIDUuODUyLTUuODUyIDMuMiAwIDUuODUyIDIuNjUzIDUuODUyIDUuODUyIDAgMy4yLTIuNjUzIDUuODUyLTUuODUyIDUuODUyWm0wIDAiLz48cGF0aCBzdHlsZT0ic3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDojZmZmO2ZpbGwtb3BhY2l0eToxIiBkPSJNOC41NSA2YS45MS45MSAwIDAgMC0xLjE5OCAwTDQuNDQ5IDguODk4Yy0uMjUuMzUyLS4yNS44NTIuMDUxIDEuMTUzLjMuMy44LjM0NyAxLjE0OC4wNWwyLjMwMS0yLjMgMi4zMDEgMi4zYy4yLjI1LjU1LjM0OC44NTIuMjk3LjI5Ni0uMDQ2LjU0Ni0uMjk2LjY0OC0uNjQ4LjA1LS4zLS4wNS0uNjQ4LS4zLS44NTJabTAgMCIvPjwvc3ZnPg==) no-repeat 50%}.mobile-image-previewer .ril-toolbar .ril__toolbarRightSide{padding-right:14px}.image-footer-choice.mobile-image-footer-choice{background-color:#000;height:100px;padding:0;z-index:1052}.mobile-image-footer-choice{-ms-flex-pack:justify;-ms-flex-align:center;align-items:center;background:rgba(0,0,0,.6);border-radius:2px;border-top-left-radius:0;border-top-right-radius:0;bottom:0;color:#fff;display:-ms-flexbox;display:flex;height:30px;justify-content:space-between;padding:0 3px;position:absolute;width:100%}.mobile-image-footer-choice .image-footer-icon,.mobile-image-footer-choice .image-footer-icon span{-ms-flex-pack:center;-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;justify-content:center}.mobile-image-footer-choice .image-footer-icon span{color:#dbdbdb;cursor:pointer;height:24px;width:24px}.image-footer-choice.mobile-image-footer-choice .image-footer-icon{-ms-flex-pack:justify;-ms-flex-direction:row-reverse;flex-direction:row-reverse;justify-content:space-between;margin:0 20px;width:100%}.mobile-image-footer-choice .image-footer-icon .image-footer-choice-item{background-color:#333;border-radius:5px;height:40px;width:40px}.ril__outer .ril-toolbar .ril-close{height:53px;width:30px}.ril__outer .ril__toolbarItem{height:50px}.ril__outer .ril__toolbarItem button{opacity:.7}.ril__outer .ril__toolbarItem button:hover{opacity:1}.sdoc-image-hover-menu-container{height:42px;position:absolute;width:auto;z-index:101}.sdoc-image-hover-menu-container .hover-menu-container{align-items:center;background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08);display:flex;height:36px;justify-content:flex-start;padding:7px 8px}.sdoc-image-hover-menu-container .hover-menu-container>span:not(:last-of-type){border-right:1px solid #e5e5e5;padding:0 8px}.sdoc-image-hover-menu-container .hover-menu-container .op-item{align-items:center;border-radius:2px;color:#212529;display:inline-flex;font-size:12px;height:24px;justify-content:center;min-width:24px;padding:0 5px;position:relative}.sdoc-image-hover-menu-container .hover-menu-container .op-item:hover{background:#f1f1f1;color:#212529;text-decoration:none}.sdoc-image-hover-menu-container .op-group-item:last-child .op-item{margin-left:8px}.sdoc-image-hover-menu-container .hover-menu-container .active{background:#f1f1f1}.sdoc-image-hover-menu-container .hover-menu-container .icon-font{color:#999;font-size:12px}.sdoc-image-hover-menu-container .sdoc-image-popover{align-items:flex-start;background-color:#fff;border:1px solid #e5e6e8;border-radius:2px;box-shadow:0 0 10px #ccc;display:flex;flex-direction:column;position:absolute;top:37px;white-space:nowrap;z-index:101}.sdoc-image-hover-menu-container .align-popover{left:80px;min-width:6rem}.sdoc-image-hover-menu-container .border-popover{align-items:center;flex-direction:row;height:80px;left:115px;padding:0 8px}.sdoc-image-hover-menu-container .border-popover .sdoc-dropdown-menu-item .sdoc-dropdown-item-content .sdoc-check-mark{-webkit-transform:translateX(-24px);transform:translateX(-24px)}.sdoc-image-hover-menu-container .border-popover .sdoc-dropdown-menu-item:hover{background-color:transparent}.sdoc-table-template-inner-popover{background-color:#fff;display:flex;flex-wrap:wrap;height:100%;padding:10px;width:310px}.sdoc-table-template-view-table{border:1px solid #e2e3e6;cursor:pointer;margin:10px 5px;padding:10px}.sdoc-table-template-view-table:hover{box-shadow:0 0 3px 2px #e2e3e6}.sdoc-table-template-view-table .sdoc-table-template-row .sdoc-table-template-cell{border-left:1px solid #e2e3e6;border-right:1px solid #e2e3e6;height:15px;width:28px}.sdoc-table-template-view-table .sdoc-table-template-row{display:flex}.sdoc-table-template-view-table .sdoc-table-template-row:first-child .sdoc-table-template-cell{border:none;border-top:1px solid #e2e3e6}.sdoc-table-template-view-table .sdoc-table-template-row:last-child .sdoc-table-template-cell{border-bottom:1px solid #e2e3e6}.sdoc-table-body-3f495d{background-color:#f1f3f6}.sdoc-table-header-3f495d{background-color:#3f495d;color:#fff}.sdoc-table-body-2367f2{background-color:#e1edff}.sdoc-table-header-2367f2{background-color:#2367f2;color:#fff}.sdoc-table-body-f77d21{background-color:#fff1e8}.sdoc-table-header-f77d21{background-color:#f77d21}.sdoc-table-body-0099f4{background-color:#e1f5ff}.sdoc-table-header-0099f4{background-color:#0099f4}.sdoc-selected-table-size-popover .popover{background-color:#fff;border-radius:2px;max-width:222px;min-height:100px;min-width:100px}.sdoc-selected-table-size-popover .sdoc-selected-table-size-tip{font-size:14px;height:35px;padding:5px 10px 10px;text-align:center}.sdoc-selected-table-size-popover .sdoc-table-size-select{padding:0 10px}.sdoc-selected-table-size-popover .sdoc-table-size-row{border-bottom:1px solid #ccc;flex-direction:row;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.sdoc-selected-table-size-popover .sdoc-table-size-row:first-child{border-top:1px solid #ccc}.sdoc-selected-table-size-popover .sdoc-table-size-cell{border-right:1px solid #ccc;height:15px;width:20px}.sdoc-selected-table-size-popover .sdoc-table-size-row .sdoc-table-size-cell:first-child{border-left:1px solid #ccc}.sdoc-selected-table-size-popover .sdoc-table-size-cell.active{background-color:#ffa94d}.sdoc-selected-table-size-popover .sdoc-table-size-select{margin-top:5px}.sdoc-selected-table-size-container .sdoc-selected-table-tools-container{border-bottom:1px solid #dedede;margin-bottom:10px;padding:10px 0}.sdoc-selected-table-size-popover .sdoc-selected-table-size-custom{align-items:center;display:flex;justify-content:space-between;min-height:32px;padding:0 10px}.sdoc-selected-table-size-popover .sdoc-selected-table-size-custom:hover{background:#f5f5f5;cursor:pointer}.sdoc-table-menu-group .sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-icon{width:24px}.sdoc-table-menu-group .sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-triangle{width:12px}.sdoc-table-menu-group .sdoc-color-menu .last-used-color-container{height:100%}.sdoc-table-menu-popover .sdoc-dropdown-menu-item{font-size:14px}.sdoc-context-menu .sdoc-table-context-menu{display:block;font-size:.875rem}.sdoc-table-context-menu .insert-number{margin-left:50px}.sdoc-table-context-menu .insert-number-input{height:20px;margin-right:.25rem;padding-left:4px;padding-right:4px;text-align:center;transition:none;width:36px}.sdoc-table-context-menu .dropdown-item:hover .insert-number-input{background-color:transparent;border:1px solid #fff;color:#fff}.sdoc-table-context-menu .dropdown-item:disabled .insert-number-input{color:#adb5bd}.sdoc-table-wrapper .sdoc-table-columns-header{height:12px;overflow:hidden;top:-12px;width:100%}.sdoc-table-wrapper .sdoc-table-columns-header .sdoc-table-column-header{background-color:#f3f5f7;border-right:1px solid rgba(0,0,0,.08);flex-shrink:0}.sdoc-table-wrapper .sdoc-table-rows-header{height:100%;left:-12px;position:absolute;top:1px;width:12px}.sdoc-table-wrapper .sdoc-table-row-header{background-color:#f3f5f7;border-bottom:1px solid rgba(0,0,0,.08);width:100%}.sdoc-table-wrapper .sdoc-table-rows-columns-header{background-color:#f3f5f7;border-bottom:1px solid rgba(0,0,0,.08);border-right:1px solid rgba(0,0,0,.08);border-top-left-radius:3px;height:13px;left:-12px;position:absolute;top:-12px;width:13px}.sdoc-table-wrapper .sdoc-table-column-header.range-selected,.sdoc-table-wrapper .sdoc-table-row-header.range-selected,.sdoc-table-wrapper .sdoc-table-rows-columns-header.range-selected{background-color:#81868f!important}.sdoc-table-wrapper .sdoc-table-column-header.range-selected-tip,.sdoc-table-wrapper .sdoc-table-row-header.range-selected-tip,.sdoc-table-wrapper .sdoc-table-rows-columns-header.range-selected-tip{background-color:#e9ebed}.sdoc-table-wrapper .sdoc-table-add-element-icon-content{background-color:#ccc;border-radius:50%;color:#fff;cursor:default;height:12px;line-height:10px;text-align:center;width:12px;z-index:1}.sdoc-table-wrapper .sdoc-table-add-element-icon-content:hover{cursor:pointer}.sdoc-table-wrapper{margin:16px 0;width:100%}.sdoc-table-wrapper+.sdoc-table-wrapper{margin-top:32px}.sdoc-table-wrapper .sdoc-table-scroll-wrapper{cursor:default;max-width:100%;overflow-x:auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.sdoc-table-wrapper.scroll .sdoc-table-scroll-wrapper.scroll-at-center:before,.sdoc-table-wrapper.scroll .sdoc-table-scroll-wrapper.scroll-at-right:before{background:linear-gradient(270deg,transparent,rgba(0,0,0,.1));content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:8px}.sdoc-table-wrapper.scroll .sdoc-table-scroll-wrapper.scroll-at-center:after,.sdoc-table-wrapper.scroll .sdoc-table-scroll-wrapper.scroll-at-left:after{background:linear-gradient(90deg,transparent,rgba(0,0,0,.1));content:"";height:100%;pointer-events:none;position:absolute;right:0;top:0;width:8px}.sdoc-table-wrapper .sdoc-table-container{cursor:text;display:grid;overflow:hidden;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.sdoc-table-wrapper .table-row{height:auto}.sdoc-table-wrapper .table-cell{border-bottom:1px solid #ccc;border-right:1px solid #ccc;line-height:1.5;padding:10px;vertical-align:top}.sdoc-table-wrapper .cell-selected{caret-color:transparent;position:relative}.sdoc-table-wrapper .table-row-height-just{bottom:-2.5px;height:5px;left:0;width:100%;z-index:1}.sdoc-table-wrapper .table-row-height-just:hover{cursor:row-resize;z-index:2}.sdoc-table-wrapper .table-row-height-just.resizing .table-row-height-just-color-tip{background-color:#2d7ff9;border-radius:1px;height:2px;margin-top:1.5;width:100%}.sdoc-table-wrapper .table-cell-width-just{height:100%;top:0;width:5px;z-index:1}.sdoc-table-wrapper .table-cell-width-just:hover{cursor:col-resize;z-index:2}.sdoc-table-wrapper .table-cell-width-just.resizing .table-cell-width-just-color-tip{background-color:#2d7ff9;border-radius:1px;height:100%;margin-left:1.5px;width:2px}.sdoc-table-wrapper .background-color-tip-blue{background-color:#2d7ff9!important}.sdoc-table-wrapper .sdoc-table-selected-range .table-cell ::selection{background-color:transparent;background-color:initial}.sdoc-link-hover-menu-container{height:42px;position:absolute;width:auto;z-index:101}.sdoc-link-hover-menu-container .hover-menu-container{align-items:center;background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08);display:flex;height:36px;justify-content:flex-start;padding:7px 8px}.sdoc-link-hover-menu-container .hover-menu-container>span:not(:last-of-type){border-right:1px solid #e5e5e5;padding-right:8px}.sdoc-link-hover-menu-container .hover-menu-container .op-item{align-items:center;border-radius:2px;color:#212529;display:inline-flex;font-size:12px;height:24px;justify-content:center;min-width:24px;padding:0 5px;position:relative}.sdoc-link-hover-menu-container .hover-menu-container .op-item:hover{background:#f1f1f1;color:#212529;text-decoration:none}.sdoc-link-hover-menu-container .op-group-item:last-child .op-item{margin-left:8px}.sdoc-link-hover-menu-container .hover-menu-container .link-style-icon-active{background:#f1f1f1}.sdoc-link-hover-menu-container .hover-menu-container .op-tooltip:hover:after{align-items:center;background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:0 0 5px #ccc;color:#212529;content:attr(op-item-tooltip);display:flex;font-size:12px;height:30px;justify-content:center;left:-20px;position:absolute;top:-40px;width:70px}.sdoc-link-hover-menu-container .hover-menu-container .icon-font{color:#999;font-size:12px}.sdoc-link-hover-menu-container .sdoc-file-display-style-popover{align-items:flex-start;background-color:#fff;border:1px solid #e5e6e8;border-radius:2px;box-shadow:0 0 10px #ccc;display:flex;flex-direction:column;padding:8px 0;position:absolute;right:-80px;top:37px;white-space:nowrap;z-index:101}.sdoc-file-render:hover{background-color:#e5e5e5}.sdoc-file-render .sdoc-file-link-icon{color:#ff9800;padding-right:5px}.sdoc-file-link-hover-menu-container{height:42px;position:absolute;width:auto;z-index:101}.sdoc-file-link-hover-menu-container .hover-menu-container{align-items:center;background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08);display:flex;height:36px;justify-content:flex-start;padding:7px 8px}.sdoc-file-link-hover-menu-container .hover-menu-container>span:not(:last-of-type){border-right:1px solid #e5e5e5;padding-right:8px}.sdoc-file-link-hover-menu-container .hover-menu-container .op-item{align-items:center;border-radius:2px;color:#212529;display:inline-flex;font-size:12px;height:24px;justify-content:center;min-width:24px;padding:0 5px;position:relative}.sdoc-file-link-hover-menu-container .hover-menu-container .op-item:hover{background:#f1f1f1;color:#212529;text-decoration:none}.sdoc-file-link-hover-menu-container .op-group-item:last-child .op-item{margin-left:8px}.sdoc-file-link-hover-menu-container .hover-menu-container .link-style-icon-active{background:#f1f1f1}.sdoc-file-link-hover-menu-container .hover-menu-container .op-tooltip:hover:after{align-items:center;background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:0 0 5px #ccc;color:#212529;content:attr(op-item-tooltip);display:flex;font-size:12px;height:30px;justify-content:center;left:-20px;position:absolute;top:-40px;width:70px}.sdoc-file-link-hover-menu-container .hover-menu-container .icon-font{color:#999;font-size:12px}.sdoc-file-link-hover-menu-container .sdoc-file-display-style-popover{align-items:flex-start;background-color:#fff;border:1px solid #e5e6e8;border-radius:2px;box-shadow:0 0 10px #ccc;display:flex;flex-direction:column;padding:8px 0;position:absolute;right:-80px;top:37px;white-space:nowrap;z-index:101}.sdoc-file-link-render:hover{background-color:#e5e5e5}.sdoc-file-card-link{background-color:#f3f3f3;border:1px solid transparent;border-radius:4px;cursor:pointer;display:inline-block;height:50px;margin-bottom:-3px;position:relative;width:420px}.sdoc-file-link-render .sdoc-file-link-icon{color:#ff9800;padding-right:5px}.sdoc-file-card-link .sdoc-file-link-icon :first-child{font-size:24px}.sdoc-file-card-link .sdoc-file-link-icon{left:12px;position:absolute;top:6px}.sdoc-file-card-link .sdoc-file-text-link{left:42px;overflow:hidden;position:absolute;text-overflow:ellipsis;top:16px;white-space:nowrap;width:330px}.sdoc-file-card-link .sdoc-file-text-link a{color:#333;text-decoration:none}.sdoc-callout-white-wrapper{padding:5px 0}.sdoc-callout-container{border-radius:5px;border-style:solid;border-width:1px;padding:10px;position:relative}.sdoc-callout-container .sdoc-callout-placeholder{color:#b8b6b6;left:10px;pointer-events:none;position:absolute;top:15px}.sdoc-callout-color-selector-container{background-color:#fff;border:1px solid #eee;border-radius:3px;padding:10px;position:absolute;z-index:100}.sdoc-callout-color-selector-container .sdoc-color-selector-list{display:flex;margin:0;padding:0}.sdoc-callout-color-selector-container .sdoc-color-selector-list .sdoc-callout-color-item{border-radius:3px;border-style:solid;border-width:1px;cursor:pointer;height:16px;list-style:none;margin-right:10px;position:relative;width:16px}.sdoc-callout-color-selector-container .sdoc-color-selector-list .sdoc-callout-color-item:last-child{margin-right:0}.sdoc-callout-color-selector-container .sdoc-color-selector-list .sdoc-callout-color-item .sdoc-callout-color-checked-icon{font-size:12px;left:1px;position:absolute;top:-2px}.sdoc-rebase-btn-group{color:#aaa}.sdoc-rebase-btn-group .sdoc-rebase-btn{cursor:pointer}.sdoc-rebase-current-changes-start{background-color:#cae8fe}.sdoc-rebase-current-changes{background-color:rgba(202,232,254,.8)}.sdoc-rebase-incoming-changes{background-color:#dee8fe}.sdoc-rebase-current-changes>:first-child,.sdoc-rebase-incoming-changes>:first-child{margin:0;padding:.8em 0 .8em .2em}.sdoc-rebase-incoming-changes-end{background-color:#d4d4fe}.header-menu{align-items:center;border-right:1px solid #e5e6e8;display:flex;height:100%;padding:6px 8px;position:relative;width:140px}.header-menu .header-toggle{align-items:center;cursor:pointer;display:flex;flex:1 1;height:24px;justify-content:space-between;padding-left:5px}.header-menu .header-toggle .active{font-size:14px}.header-menu .header-toggle-disabled{color:#bdbdbd;cursor:inherit}.header-menu .header-toggle:not(.header-toggle-disabled):hover{background:#f2f2f2;border-radius:2px}.header-menu .header-toggle .sdocfont{align-items:center;color:#999;cursor:pointer;display:inline-flex;font-size:12px;height:24px;justify-content:center;margin-left:8px;width:12px}.header-menu .header-popover{align-items:flex-start;background-color:#fff;border:1px solid #e5e6e8;border-radius:2px;box-shadow:0 0 10px #ccc;display:flex;flex-direction:column;left:8px;padding:8px 0;position:absolute;top:42px;width:180px;z-index:101}.header-menu .header-popover .sdoc-dropdown-menu-item{font-size:14px;height:auto;line-height:1;padding:9px 16px 9px 28px}.header-menu .header-popover .sdoc-dropdown-menu-item .sdoc-check-mark{color:#798d99;left:8px;position:absolute;-webkit-transform:scale(.8);transform:scale(.8)}.menu-group .menu-group-item.sdoc-menu-with-dropdown.sdoc-font-family-menu{max-width:76px;width:76px}.menu-group .menu-group-item.sdoc-menu-with-dropdown.sdoc-font-family-menu.disabled{width:70px!important}.sdoc-font-family-menu .sdoc-menu-with-dropdown-icon,.sdoc-font-family-menu .sdoc-menu-with-dropdown-icon div{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:64px}.sdoc-font-family-menu .sdoc-menu-with-dropdown-icon div{color:#212529;padding-left:5px}.menu-group .menu-group-item.sdoc-menu-with-dropdown.sdoc-font-family-menu.disabled .sdoc-menu-with-dropdown-icon{width:70px!important}.menu-group .menu-group-item.sdoc-menu-with-dropdown.sdoc-font-family-menu.disabled .sdoc-menu-with-dropdown-icon div{color:#bdbdbd;padding-right:5px;width:70px}.sdoc-font-family-menu-popover .sdoc-dropdown-menu-title-name{color:gray;cursor:default;font-size:14px;padding:8px 10px}.menu-group .sdoc-menu-with-dropdown.sdoc-font-size-menu{width:46px}.menu-group .sdoc-menu-with-dropdown.sdoc-font-size-menu.disabled{width:34px!important}.menu-group .sdoc-font-size-menu .sdoc-menu-with-dropdown-icon,.menu-group .sdoc-font-size-menu .sdoc-menu-with-dropdown-icon div{font-size:14px;width:34px}.menu-group .sdoc-font-size-menu .sdoc-menu-with-dropdown-icon div{color:#212529;padding-left:5px}.menu-group .sdoc-menu-with-dropdown.sdoc-font-size-menu.disabled .sdoc-menu-with-dropdown-icon div{color:#bdbdbd;padding-right:5px}.sdoc-font-size-menu-popover .sdoc-dropdown-menu-item .sdoc-check-mark{color:#798d99;left:8px;position:absolute;-webkit-transform:scale(.8);transform:scale(.8)}.sdoc-font-size-menu-popover .sdoc-font-size-menu-container{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;overflow-x:hidden;overflow-y:scroll;padding:8px 0}.sdoc-font-size-menu-popover .sdoc-dropdown-menu-item{font-size:14px}.menu-group .menu-group-item.sdoc-insert-toolbar-btn{align-items:center;display:flex;justify-content:space-between;width:76px}.menu-group .menu-group-item.sdoc-insert-toolbar-btn.disabled{color:#bdbdbd;width:64px!important}.menu-group .sdoc-insert-toolbar-btn .sdoc-menu-with-dropdown-icon{flex:1 1;font-size:14px;justify-content:flex-start;padding-left:6px;padding-right:2px}.sdoc-insert-menu-popover .popover{min-width:200px}.sdoc-context-toolbar{background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:0 0 0 0 hsla(0,0%,6%,.05),0 3px 6px hsla(0,0%,6%,.1),0 9px 24px hsla(0,0%,6%,.2);display:none;height:42px;position:absolute;width:auto;z-index:101}.sdoc-side-menu,.sdoc-side-menu-popover{position:absolute}.sdoc-side-menu{background-color:#fff;border:1px solid rgba(0,0,0,.12);border-radius:4px;box-shadow:0 2px 12px 2px rgba(68,73,77,.16);padding:8px 0;-webkit-transform:translateX(-200px);transform:translateX(-200px);width:200px;z-index:999}.sdoc-side-menu-insert-below-popover .popover{background-color:#fff;border-radius:2px;cursor:pointer;left:-6px!important;min-height:120px;min-width:150px}.sdoc-side-toolbar-container{left:0;position:absolute;top:0}.sdoc-side-toolbar-container .sdoc-side-op-icon{border-radius:3px;color:#bdbdbd;cursor:pointer;height:24px;margin-right:1px;padding:0 3px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.sdoc-side-toolbar-container .sdoc-side-op-icon :first-child{font-size:14px}.sdoc-side-toolbar-container .side-op-icon-active{background-color:#f2f2f2;border-radius:2px}.sdoc-custom-table-size-dialog .sdoc-custom-table-size-container{width:100%}.sdoc-custom-table-size-dialog .sdoc-custom-table-size-item{width:calc(50% - 16px)}.sdoc-files-tree{display:flex;flex:1 1;flex-direction:column;overflow:auto;padding:16px;width:100%}.sdoc-files-tree .sdoc-file-info{border-radius:2px;height:1.5rem;line-height:1.625;overflow:hidden;padding-left:2.8rem;position:relative;text-overflow:ellipsis;white-space:nowrap}.sdoc-files-tree .sdoc-file-info:hover{background:#fdefb9;box-shadow:inset 0 0 1px #999;cursor:pointer}.sdoc-files-tree .sdoc-file-info .sdoc-file-icon-container{height:100%;left:0;padding-left:1.5rem;position:absolute;width:2.8rem}.sdoc-files-tree .sdoc-file-info .sdoc-file-icon{color:#9aa0ac}.sdoc-files-tree .sdoc-file-info.active{background:#ff8000;box-shadow:inset 0 0 1px #999;color:#fff}.sdoc-files-tree .sdoc-file-info.active .sdoc-file-icon{color:#fff}.sdoc-files-tree .sdoc-file-icon-toggle{font-size:12px!important;height:1.5rem;left:0;line-height:1.5rem!important;position:absolute;text-align:center;-webkit-transform:scale(.8);transform:scale(.8);width:1.5rem}.sdoc-files-tree .sdoc-file-info.expanded .sdoc-file-icon-toggle{-webkit-transform:rotate(90deg) scale(.8);transform:rotate(90deg) scale(.8)}.sdoc-files-tree .sdoc-file-info .sdoc-file-name{font-size:14px}.sdoc-files-tree .sdoc-folder-children{padding-left:20px}.sdoc-files-tree .sdoc-folder-children-empty{color:#999;padding:4px 20px}.sdoc-file-select-dialog{max-width:620px}.sdoc-file-select-dialog .sdoc-file-select-modal{width:620px}.sdoc-file-select-dialog .sdoc-file-select-container{display:flex}.sdoc-file-select-dialog .sdoc-file-select-left{border-right:1px solid #e9ecef;padding:12px 8px;width:150px}.sdoc-file-select-dialog .sdoc-file-select-left .sdoc-file-select-nav-item{border-radius:3px;cursor:pointer;display:inline-block;padding:5px 0 5px 8px;width:100%}.sdoc-file-select-dialog .sdoc-file-select-left .sdoc-file-select-nav-item:hover{background-color:#f5f5f5}.sdoc-file-select-dialog .sdoc-file-select-container .sdoc-file-select-left .selected-sdoc-file-select-nav-item{background-color:#ff8000;color:#fff}.sdoc-file-select-dialog .sdoc-file-select-right{display:flex;flex-direction:column;height:440px;padding:0;width:468px}.sdoc-file-select-dialog .sdoc-file-select-footer{align-items:center;border-top:1px solid #e9ecef;display:flex;justify-content:flex-end;padding:1rem}.sdoc-file-select-dialog .highlight-bg-color{background-color:#ff8000;border-color:#ff8000}.sdoc-outline-wrapper{bottom:0;display:flex;margin:20px 30px 20px 16px;min-height:0;position:absolute;top:0;z-index:101}.sdoc-outline{display:flex;flex:1 1;flex-direction:column;font-size:14px;min-height:0;position:relative;width:220px}.sdoc-outline-header{align-items:center;border-bottom:1px solid #dbdbdb;color:#999;display:flex;justify-content:space-between;padding:.25rem 0}.sdoc-outline-header__title{font-size:14px;line-height:1.1;margin:0!important}.sdoc-outline-header__close{cursor:pointer;font-size:14px}.sdoc-outline-header__close:hover{color:#555}.sdoc-outline-list-container{display:flex;flex:1 1;flex-direction:column;list-style:none;overflow-x:hidden;overflow-y:hidden;padding:.5rem 0}.sdoc-outline-list-container:hover{overflow-y:auto}.sdoc-outline-item{cursor:pointer;padding:4px 0}.sdoc-outline-item.active{color:#ff8000}.sdoc-outline-menu{align-items:center;background:#fff;border-radius:0 50% 50% 0;box-shadow:0 0 6px rgba(0,0,0,.12);color:#888;cursor:pointer;display:flex;font-size:14px;height:28px;justify-content:center;left:-16px;line-height:1;position:absolute;top:20px;width:28px}.sdoc-outline-menu.disabled{opacity:.65}.sdoc-outline-menu:not(.disabled):hover{color:#333}.sdoc-editor-container .article{font-size:11pt}.sdoc-editor-container .sdoc-code-block-pre{font-size:10pt}.sdoc-editor-container .article p{margin:0;padding:5px 0}.element-icon{color:#444!important}.sdoc-icon-btn{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.sdoc-icon-btn:hover{cursor:pointer}.sdoc-icon-btn .sdocfont{color:#999;font-size:16px}.sdoc-icon-btn:hover .sdocfont{color:#5a5a5a}.sdoc-editor-container{display:flex;flex:1 1;flex-direction:column;min-height:0}.sdoc-editor-container .sdoc-editor-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #e5e6e8;display:flex;height:44px;justify-content:center;padding:0 10px;position:relative;-webkit-user-select:none;user-select:none;z-index:102}.sdoc-editor-container .sdoc-editor-content{background:#f5f5f5;display:flex;height:calc(100% - 44px);position:relative;width:100%}.sdoc-editor-container .sdoc-absolute-wrapper{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.sdoc-editor-container .sdoc-scroll-container{bottom:0;left:0;overflow:auto;position:absolute;right:0;top:0;z-index:100}.sdoc-editor-container .sdoc-article-container{margin:0 auto;padding-bottom:20px;padding-top:20px;position:relative;top:0;width:794px}.sdoc-editor-container .sdoc-editor-content .article{background-color:#fff;border:1px solid #e5e6e8;box-shadow:0 0 15px rgba(0,0,0,.06);min-height:800px;padding:40px 60px;width:794px}.sdoc-editor-container .sdoc-editor-content .article>div{caret-color:blue}.sdoc-editor-container .sdoc-editor-content .article .sdoc-drag-cover:before{content:" ";display:inline-block;left:-60px;position:absolute;width:59px}.sdoc-editor-container .sdoc-editor-content .article .sdoc-draging{border-bottom:2px solid #2383e2}.sdoc-editor-container .seafile-block-container{position:relative}.sdoc-editor-container .seafile-block-container .comment-count{align-items:center;background:rgba(0,0,0,.3);border-radius:4px;color:#fff;display:flex;height:15px;justify-content:center;line-height:18px;pointer-events:none;position:absolute;right:-55px;top:0;width:15px}.sdoc-editor-container .seafile-block-container .comment-count__btn{font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.sdoc-editor-container .article .sdoc-header-1,.sdoc-editor-container .article .sdoc-header-2,.sdoc-editor-container .article .sdoc-header-3,.sdoc-editor-container .article .sdoc-header-4,.sdoc-editor-container .article .sdoc-header-5,.sdoc-editor-container .article .sdoc-header-6,.sdoc-editor-container .article .sdoc-header-subtitle,.sdoc-editor-container .article .sdoc-header-title{font-weight:700;line-height:1.1;margin:1.2em 0 .4em}.sdoc-editor-container .article .sdoc-header-2,.sdoc-editor-container .article .sdoc-header-3{line-height:1.5}.sdoc-editor-container .article .sdoc-header-4{line-height:1.125}.sdoc-editor-container .article .list-container{margin:0;padding-left:1.2em!important}.sdoc-editor-container .article .list-container .sdoc-li-blod::marker{font-weight:700}.sdoc-editor-container .article .sdoc-checkbox-container{padding:0 2px}.sdoc-editor-container .article .sdoc-checkbox-container .sdoc-checkbox-input-wrapper{align-items:baseline;display:flex}.sdoc-editor-container .article .sdoc-checkbox-container .sdoc-checkbox-input-wrapper .sdoc-checkbox-input{margin-right:5px;vertical-align:middle}.sdoc-editor-container .article .sdoc-checkbox-container .sdoc-checkbox-input-wrapper .sdoc-checkbox-content-container{width:calc(100% - 1em);word-break:normal}.sdoc-editor-container .article .sdoc-image-wrapper{display:inline-block;padding:6px 6px 6px 0;position:relative}.sdoc-editor-container .article .sdoc-image-inner{display:inline-block;position:relative}.sdoc-editor-container .article .sdoc-image-content{align-items:flex-start;display:flex;flex-direction:column}.sdoc-editor-container .article .sdoc-image-content :first-child{position:relative}.sdoc-editor-container .article .sdoc-image-content .sdoc-image-caption-input-wrapper{background-color:transparent;border:0;color:#8a8f8d;margin-top:8px;outline:none;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.sdoc-editor-container .article .sdoc-image-content .sdoc-image-caption-input-wrapper::-webkit-input-placeholder{color:#bec0bf}.sdoc-editor-container .article .sdoc-image-content .sdoc-image-caption-input-wrapper::placeholder{color:#bec0bf}.sdoc-editor-container .article .image-selected{box-shadow:0 0 0 2px #007bff}.sdoc-editor-container .article .image-resizer{background-color:#007bff;border:1px solid #fff;bottom:-5px;cursor:se-resize;height:10px;position:absolute;right:-5px;width:10px}.sdoc-editor-container .article .image-full-screen{background-color:#fff;border:1px solid rgba(0,40,100,.12);border-radius:3px;box-shadow:0 2px 5px 0 rgba(0,0,0,.2);display:inline-block;height:26px;line-height:20px;padding:2px;position:absolute;right:-32px;text-align:center;top:0;-webkit-user-select:none!important;user-select:none!important;width:26px;z-index:1000}.sdoc-editor-container .article .image-full-screen:hover{background-color:#efefef;display:block}.sdoc-editor-container .article .image-size{background-color:#4c4c4c;border-radius:3px;bottom:-25px;color:#fff;display:inline-block;font-size:12px;height:22px;left:100%;line-height:12px;padding:5px;position:absolute;-webkit-transform:translateX(5px);transform:translateX(5px);white-space:nowrap;z-index:1}.sdoc-editor-container .article .caret-item .caret-name:before{content:attr(name)}.sdoc-editor-container .article .caret-item .caret-name{display:none}.sdoc-editor-container .article .caret-item:hover .caret-name{display:block}.sdoc-editor-container .article .virtual-link{color:#eb8205}.sdoc-editor-container .article .virtual-link:hover{text-decoration:underline;text-underline-position:under}.sdoc-dropdown-menu,.sdoc-dropdown-menu .sdoc-dropdown-menu-container{min-width:12rem;padding:8px 0}.sdoc-dropdown-menu .sdoc-dropdown-menu-divider{border-top:1px solid #e9ecef;height:0;margin:.5rem 0;overflow:hidden;width:100%}.sdoc-dropdown-menu .sdoc-dropdown-menu-item{align-items:center;display:flex;height:28px;padding:4px 24px;-webkit-user-select:none;user-select:none;width:100%}.sdoc-dropdown-menu .sdoc-dropdown-menu-item.disabled,.sdoc-dropdown-menu .sdoc-dropdown-menu-item.disabled .sdoc-dropdown-item-content-icon{color:#c2c2c2!important}.sdoc-dropdown-menu .sdoc-dropdown-menu-item:hover{background-color:#f5f5f5;cursor:pointer}.sdoc-dropdown-menu .sdoc-dropdown-menu-item.disabled:hover{background-color:transparent;background-color:initial;color:#c2c2c2;cursor:default}.sdoc-dropdown-menu .sdoc-dropdown-menu-item .sdocfont{font-size:12px;line-height:12px}.sdoc-dropdown-menu .sdoc-dropdown-menu-item .sdoc-dropdown-item-content{align-items:center;display:flex;flex:1 1;font-size:14px;justify-content:flex-start}.sdoc-dropdown-menu .sdoc-dropdown-item-content .sdoc-dropdown-item-content-icon{margin-right:10px}.sdoc-dropdown-menu .sdoc-dropdown-item-right-icon{color:#999;-webkit-transform:scale(.6);transform:scale(.6)}.sdoc-dropdown-menu .sdoc-dropdown-item-with-left-icon{min-height:32px;padding:3px 12px}.sdoc-dropdown-menu .sdoc-check-mark{color:#798d99;-webkit-transform:scale(.8);transform:scale(.8)}.sdoc-sub-dropdown-menu .popover{left:-8px!important}.sdoc-sub-dropdown-menu .bs-popover-auto[x-placement^=left]{left:8px!important}.sdoc-comment-caret-list{background:#fff;border:1px solid #ededed;border-radius:5px;max-height:200px;max-width:200px;min-width:150px;overflow:auto;padding:10px 0;position:absolute;z-index:1049}.sdoc-comment-caret-list .comment-participant-item{padding:5px 0}.sdoc-comment-caret-list .comment-participant-item.active,.sdoc-comment-caret-list .comment-participant-item:hover{background:#f5f5f5;cursor:pointer}.sdoc-comment-caret-list .comment-participant-item .comment-participant-container{align-items:center;display:flex;padding:0 8px}.sdoc-comment-caret-list .comment-participant-item .comment-participant-avatar{border-radius:50%;height:16px;vertical-align:middle;width:16px}.sdoc-comment-caret-list .comment-participant-item .comment-participant-name{flex:1 1;font-size:14px;margin-left:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sdoc-comment-list-container{position:absolute}.sdoc-comment-list-container .comment-ui-container{background-color:#edf2fa;border-radius:8px;box-shadow:0 0 2px rgba(0,0,0,.04);cursor:pointer;margin-bottom:10px;padding:16px 0}.sdoc-comment-list-container .comment-ui-container.active{background:hsla(0,0%,100%,.92);box-shadow:0 1px 3px rgba(0,0,0,.3),0 4px 8px 3px rgba(0,0,0,.15);left:-24px;position:relative}.sdoc-comment-list-container .comment-item-selected-text-container{align-items:center;border-radius:8px 8px 0 0;display:flex;height:32px;overflow:hidden;padding:6px 16px;width:100%}.sdoc-comment-list-container .comment-item-selected-text-container .sdoc-comment-quote{flex-shrink:0;font-size:12px}.sdoc-comment-list-container .comment-item-selected-text-container .comment-item-selected-text{flex:1 1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sdoc-comment-list-container .comment-item-list{margin:0;max-height:350px;min-width:280px;overflow-x:hidden;overflow-y:auto}.sdoc-comment-list-container .comment-item{cursor:pointer;padding:16px 16px 0;position:relative}.sdoc-comment-list-container .comment-delete-shadow{align-items:center;background-color:rgba(0,0,0,.7);color:#fff;display:flex;flex-direction:column;inset:0;padding-top:10px;position:absolute;z-index:1}.sdoc-comment-list-container .comment-delete-shadow .delete-tip{margin-bottom:10px}.sdoc-comment-list-container .comment-ui-container.active .comment-item:hover{background:#fafafa}.sdoc-comment-list-container .comment-item .comment-author,.sdoc-comment-list-container .comment-item .comment-header{align-items:center;display:flex;justify-content:space-between}.sdoc-comment-list-container .comment-item .comment-content{margin-left:30px;margin-top:10px;padding-bottom:10px;width:222px;word-break:break-all}.sdoc-comment-list-container .comment-header .comment-author__avatar{align-items:center;display:flex}.sdoc-comment-list-container .comment-header .comment-author__avatar img{border-radius:50%;height:32px;width:32px}.sdoc-comment-list-container .comment-header .comment-author__info{align-items:flex-start;cursor:pointer;display:flex;flex-direction:column;justify-content:center;overflow:hidden;padding-left:10px;text-overflow:ellipsis;white-space:nowrap}.sdoc-comment-list-container .comment-header .comment-author__info .name{color:#1f1f1f;font-size:14px;font-weight:500;line-height:20px}.sdoc-comment-list-container .comment-header .comment-author__info .time{align-items:center;color:#444746;display:inline-flex;font-size:12px;line-height:16px}.sdoc-comment-list-container .comment-header .sdoc-unread-message-tip{background-color:#fc6440;border-radius:50%;display:inline-block;height:6px;margin-left:6px;width:6px}.sdoc-comment-list-container .comment-header .sdoc-unread-message-text-tip{background-color:#fc6440;border-radius:8px;color:#fff;display:none;height:16px;margin-left:6px;padding:0 5px}.sdoc-comment-list-container .comment-ui-container:hover .comment-header .sdoc-unread-message-tip{display:none}.sdoc-comment-list-container .comment-ui-container:hover .comment-header .sdoc-unread-message-text-tip{display:inline-block}.sdoc-comment-list-container .comment-ui-container .comment-operation{align-items:center;background-color:#fff;border-radius:50%;color:#464d5a;display:flex;height:32px;justify-content:center;overflow:hidden;padding:0!important;width:32px}.sdoc-comment-list-container .comment-ui-container.active .comment-operation:hover{background-color:#f0f0f0;cursor:pointer}.sdoc-comment-list-container .comment-ui-container .comment-operation .sdoc-confirm{color:#20a0ff;font-weight:800}.sdoc-comment-menu{border-radius:2px;padding:0}.sdoc-popover-menu{background:#fff;height:auto;padding:8px 0;width:140px}.sdoc-popover-menu__item{background-color:transparent;background-color:#fff;color:#202428;cursor:default;font-size:14px;height:28px;padding:4px 24px;vertical-align:middle}.sdoc-popover-menu__item:hover{background-color:#20a0ff;color:#fff}.sdoc-comment-list-container .comment-editor-wrapper{cursor:text;display:flex;flex-direction:column;justify-content:center;padding:0 16px}.sdoc-comment-list-container .comment-editor-wrapper .comment-editor{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:4px;margin-bottom:10px;max-height:120px;min-height:40px;min-width:240px;overflow:auto;padding:8px;word-break:break-all}.sdoc-comment-list-container .comment-editor-wrapper .comment-editor:empty:before{content:attr(placeholder);opacity:.6}.sdoc-comment-list-container .comment-editor-wrapper .comment-editor:focus-visible{outline:none}.sdoc-comment-list-container .comment-editor-wrapper .comment-editor:focus{border:1px solid rgba(0,0,0,.12)}.sdoc-comment-list-container .comment-editor-wrapper .comment-editor-user-info{align-items:center;display:flex;margin-bottom:10px}.sdoc-comment-list-container .comment-editor-wrapper .comment-editor-user-info .comment-editor-user-img{border-radius:50%;height:30px;margin-right:8px;overflow:hidden;width:30px}.sdoc-comment-list-container .comment-editor-wrapper .comment-editor-user-info .comment-editor-user-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap}.sdoc-comment-list-container .comment-editor-wrapper .comment-operations{display:flex;justify-content:flex-end}.sdoc-comment-container .comment-container-right .element-comments-count{align-items:center;color:#999;display:flex;height:16px;justify-content:center;left:-22px;position:absolute;width:16px}.sdoc-comment-container .comment-container-right .element-comments-count:hover{color:#333;cursor:pointer}.sdoc-comment-container .comment-container-right .element-comments-count-value{color:#fff;cursor:pointer;font-size:12px;height:14px;left:0;line-height:13px;pointer-events:none;position:absolute;text-align:center;top:0;width:16px}.sdoc-comments-participants-popover .popover{margin-top:0;max-width:282px}.sdoc-comments-participants-popover .sdoc-comments-participants-editor-container{min-height:160px;width:280px}.sdoc-comments-participants-popover .sdoc-selected-participants{background-color:#f6f6f6;border-bottom:1px solid #dde2ea;border-radius:3px 3px 0 0;min-height:34px;padding:5px}.sdoc-comments-participants-popover .sdoc-selected-participant{align-items:center;background:#eaeaea;border-radius:10px;display:inline-flex;font-size:13px;height:20px;margin-right:10px;padding:0 8px 0 2px}.sdoc-comments-participants-popover .sdoc-selected-participant img{border-radius:50%;height:16px;vertical-align:middle;width:16px}.sdoc-comments-participants-popover .sdoc-selected-participant .sdoc-selected-participant-name{color:#16181b;flex:1 1;margin-left:4px}.sdoc-comments-participants-popover .sdoc-selected-participant .sdoc-selected-participant-delete{align-items:center;cursor:pointer;display:flex;height:20px;justify-content:flex-end;padding-top:1px;width:20px}.sdoc-comments-participants-popover .sdoc-selected-participant .sdoc-selected-participant-delete .sdocfont{color:#909090;display:inline-block;font-size:12px}.sdoc-comments-participants-popover .sdoc-selected-participant .sdoc-selected-participant-delete:hover .sdocfont{color:#5a5a5a}.sdoc-comments-participants-popover .sdoc-search-collaborators{padding:10px}.sdoc-comments-participants-popover .sdoc-search-collaborators input{height:28px}.sdoc-comments-participants-popover .sdoc-searched-collaborators{align-items:center;display:flex;flex-direction:column;max-height:200px;overflow:auto;padding:10px}.sdoc-comments-participants-popover .sdoc-searched-collaborators.sdoc-searched-collaborators-empty-tip{align-items:flex-start;font-size:14px;opacity:.5}.sdoc-comments-participants-popover .sdoc-searched-collaborator{align-items:center;border-radius:2px;clear:both;color:#212529;display:flex;font-size:14px;font-weight:400;height:30px;padding:.25rem 0;width:100%}.sdoc-comments-participants-popover .sdoc-searched-collaborator:hover{background-color:#f8f9fa;cursor:pointer}.sdoc-comments-participants-popover .sdoc-searched-collaborator img{border-radius:50%;height:16px;margin-left:10px;vertical-align:middle;width:16px}.sdoc-comments-participants-popover .sdoc-searched-collaborator .sdoc-selected-participant-name{color:#16181b;flex:1 1;margin-left:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sdoc-comments-participants-popover .sdoc-searched-collaborator .sdoc-searched-collaborator-operation{align-items:center;display:flex;height:20px;justify-content:center;width:20px}.sdoc-comments-participants-popover .sdoc-searched-collaborator .sdoc-searched-collaborator-operation .sdocfont{color:#798d99;font-size:12px}.global-comments-popover .comments-panel-body__header .comments-participants-container{align-items:center;display:flex;height:42px;max-width:100%;padding-top:6px;position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.global-comments-popover .comments-panel-body__header .comments-participants-editor-target{background-color:transparent;height:100%;left:-1px;position:absolute;top:0;width:1px;z-index:-1}.global-comments-popover .comments-panel-body__header .comment-participant-avatar{border-radius:50%;margin-right:-.5rem;vertical-align:middle}.global-comments-popover .comments-panel-body__header .comment-participant-avatar img{background:#ced4da no-repeat 50%/cover;border:2px solid #fff;border-radius:50%;color:#868e96;display:inline-block;font-size:.875rem;font-weight:600;height:28px;line-height:2rem;position:relative;text-align:center;-webkit-user-select:none;user-select:none;vertical-align:bottom;width:28px}.global-comments-popover .comments-panel-body__header .add-comments-participants{align-items:center;background-color:#fff;border:1px solid #fff;border-radius:50%;bottom:-3px;cursor:pointer;display:flex;height:20px;justify-content:center;margin-right:-.5rem;position:relative;width:20px}.global-comments-popover .add-comments-participants .sdocfont{border-radius:50%;color:#ff8000;font-size:16px}.global-comments-popover .comment-participants-more{align-items:center;background-color:rgba(0,0,0,.6);border:2px solid #fff;border-radius:50%;display:flex;height:28px;justify-content:center;left:0;overflow:hidden;position:absolute;top:0;width:28px}.global-comments-popover .comment-participants-more .sdocfont{color:#fff;font-size:12px}.global-comments-popover{height:540px;position:absolute;right:10px;top:50px;width:340px;z-index:103}.global-comments-popover .comments-panel-wrapper{background:#fff;border:1px solid #eaecef;border-radius:4px;box-shadow:0 2px 10px rgba(0,0,0,.12);display:flex;flex-direction:column;height:100%}.global-comments-popover .comments-panel-header{align-items:center;border-bottom:1px solid #eaecef;display:flex;height:46px;justify-content:space-between;padding:0 16px}.global-comments-popover .comments-panel-header .title{color:#212529;font-size:16px;font-weight:500}.global-comments-popover .comments-panel-header .comments-panel-header-right{display:flex}.global-comments-popover .comments-panel-header-right .sdoc-icon-btn:not(:last-child){margin-right:4px}.global-comments-popover .comments-panel-header .sdoc-icon-btn .sdocfont{font-weight:700}.global-comments-popover .comments-panel-body{background-color:#f5f5f5;display:flex;flex:1 1;flex-direction:column;min-height:0;position:relative}.global-comments-popover .comments-panel-body__header{display:flex;flex-direction:column;height:80px;padding:0 16px}.global-comments-popover .comments-panel-body__header .comments-types-count{align-items:center;display:flex;height:38px;justify-content:space-between;padding:16px 0}.global-comments-popover .comments-panel-body__header .comment-type{color:#212529;font-size:12px}.global-comments-popover .comments-panel-body__header .comment-count-tip{color:#999;font-size:12px}.global-comments-popover .comments-panel-body__content{display:flex;flex:1 1;flex-direction:column;overflow:auto;padding:16px}.global-comments-popover .comments-panel-body__content .sdoc-comment-list-container{position:relative}.global-comments-popover .comments-panel-body__content .comment-item-list{max-width:308px}.global-comments-popover .comments-panel-body__content .comment-ui-container.active{left:0}.global-comments-popover .comments-panel-body__content .comment-ui-container.active.sdoc-resolved,.global-comments-popover .comments-panel-body__content .comment-ui-container.sdoc-resolved{background:#f5f5f5}.sdoc-dropdown-menu .dropdown-item{color:#212529;font-size:14px}.global-comments-popover .comments-panel-body .sdoc-doc-comment-editor-container{background-color:#fff;left:16px;position:absolute;top:78px;width:calc(100% - 32px)}.global-comments-popover .sdoc-doc-comment-editor-container .comment-ui-container.active{left:0;margin-bottom:0}.global-comments-popover .sdoc-comment-list-container .comment-ui-container{background-color:#fff;border:1px solid #c7c7c7}.global-comments-popover .sdoc-comment-list-container .comment-item-selected-text-container{background-color:#f5f5f5;border-bottom:1px solid #c7c7c7}.sdoc-comment-container{left:0}.sdoc-comment-container,.sdoc-comment-container .comment-container-main{position:absolute;top:0;width:794px}.sdoc-comment-container .comment-container-right{left:100%;position:absolute}.sdoc-comment-container .comment-container-right .comment-add-wrapper{left:-22px;position:absolute;width:20px}.sdoc-comment-container .comment-container-right .comment-add-wrapper .sdocfont{background-color:#fff;color:#999}.sdoc-comment-container .comment-container-right .comment-add-wrapper .sdocfont:hover{color:#333;cursor:pointer}.sdoc-comment-container .comment-container-right .comment-list-wrapper{left:14px;position:absolute;width:280px}.seahub-switch.small .custom-switch-indicator{border-radius:6px;cursor:pointer;height:12px;width:22px}.seahub-switch.small .custom-switch-indicator.disabled{cursor:default}.seahub-switch.small .custom-switch-indicator:before{height:8px;width:8px}.seahub-switch.small .custom-switch-input:checked~.custom-switch-indicator:before{left:12px}.sf-plain-editor{display:flex;flex:1 1;min-height:0;min-width:0;position:relative}.sf-plain-editor-main{inset:0;position:absolute}.sf-plain-editor-left-panel{background-color:#fff;border-right:1px solid #e6e6dd}.sf-plain-editor-left-panel,.sf-plain-editor-right-panel{height:100%;overflow-x:hidden;overflow-y:scroll;width:50%}.sf-plain-editor-right-panel{background-color:#fafaf9}.rendered-markdown.article{padding:0 20px 20px}.rendered-markdown tbody tr:first-child{font-weight:400}.sdoc-editor-container .sdoc-editor-content.readonly{height:100%}.sdoc-editor-container .sdoc-editor-content.no-outline .sdoc-absolute-wrapper{display:flex;min-height:0;position:relative}.sdoc-editor-container .sdoc-editor-content.no-outline .sdoc-article-container{margin-left:0!important}.sdoc-editor-container.mobile .sdoc-editor-content.readonly .sdoc-article-container{padding:0;width:auto}.sdoc-editor-container.mobile .sdoc-editor-content.readonly .article{padding:1rem;width:100%!important}.sdoc-diff{margin:0 -5px;overflow:hidden;padding:0 5px}.sdoc-editor-page-wrapper .tip-message{color:#999;display:inline-flex;font-size:12px;height:27px;line-height:27px;margin-left:12px;opacity:.75;width:-webkit-max-content;width:max-content}.sdoc-editor-page-wrapper .tip-message .sdocfont{font-size:14px;padding-top:1px}.sdoc-draft-menu{margin-left:.5rem;position:relative}.sdoc-draft-identifier{background:#eee;border-radius:10px;color:#888;cursor:pointer;display:inline-block;font-size:14px;height:20px;line-height:20px;padding:0 8px}.sdoc-draft-identifier:hover{background:#dbdbdb}.sdoc-draft-menu .draft-popover{background-color:#fff;border:1px solid #e5e6e8;border-radius:2px;box-shadow:0 0 10px #e5e6e8;left:0;padding:8px 0;position:absolute;top:25px;width:178px;z-index:10}.sdoc-draft-menu .draft-popover .draft-menu-item{cursor:pointer;padding:4px 12px;width:100%}.sdoc-draft-menu .draft-popover .draft-menu-item:hover{background-color:#f5f5f5}.sdoc-file-tag-quick-review-container{display:flex;margin-left:.5rem}.sdoc-file-tag-quick-review-container .sdoc-review-circle{border:.125rem solid #fff;border-radius:50%;cursor:pointer;display:inline-block;height:1rem;margin-right:-.5rem;width:1rem}.sdoc-editor-page-header .doc-info{align-items:center;display:flex}.sdoc-editor-page-header .doc-info .doc-name{color:#212529;font-size:18px;font-weight:700}.sdoc-editor-page-header .doc-info .doc-icon{color:#999;cursor:pointer;font-size:14px;line-height:1;margin-left:.5rem}.sdoc-editor-page-header .doc-info .doc-icon:hover{color:#333;margin-left:.5rem}.sdoc-editor-page-header .doc-info .sdoc-link{font-size:14px}.sdoc-editor-page-header .doc-info .sdoc-freezed{color:red}.sdoc-editor-page-header .doc-state{font-size:.8125rem}.sdoc-editor-page-header .doc-info .sdoc-revision-avatar{margin-right:6px;width:44px}.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-avatar{height:44px;margin-right:6px;overflow:hidden;width:44px}.sdoc-editor-page-header .sdoc-revision-avatar img{height:100%;width:100%}.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-detail{display:flex;flex-direction:column}.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-order{background:#eee;border-radius:10px;color:#888;cursor:default;display:inline-block;font-size:14px;height:20px;line-height:20px;margin-left:.5rem;padding:0 8px}.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-published-tip{background:#5eba00;border-radius:10px;color:#fff;cursor:default;display:inline-block;font-size:14px;height:20px;line-height:20px;margin-left:.5rem;padding:0 8px}.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-source-doc{align-items:center;cursor:pointer;display:inline-flex;height:20px;justify-content:center;margin-left:.5rem;width:20px}.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-source-doc .sdoc-jump-to{color:#999;font-size:14px}.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-source-doc:hover .sdoc-jump-to{color:#333}.sdoc-tip-dialog .highlight-bg-color{background-color:#ff8000;border-color:#ff8000}.sdoc-tip-dialog .sdoc-tip-dialog-custom-container{align-items:center;display:flex;flex-direction:column;padding-bottom:40px;padding-top:46px}.sdoc-tip-dialog .sdoc-tip-dialog-custom-container .sdoc-tip-img-container{align-items:center;display:flex;height:140px;justify-content:center;overflow:hidden;width:140px}.sdoc-tip-dialog .sdoc-tip-dialog-custom-container .sdoc-tip-content{padding:10px 16px 64px;text-align:center;width:100%}.sdoc-tip-dialog .sdoc-tip-dialog-custom-container .sdoc-tip-operation-btn{min-width:140px}.sdoc-tip-dialog .sdoc-tip-dialog-custom-container.publishing{height:180px;justify-content:center;padding:2rem}.sdoc-tip-dialog .sdoc-tip-dialog-custom-container.publishing .common-loading-tip{border-width:4px;height:30px;width:30px}.sdoc-tip-dialog .sdoc-tip-dialog-custom-container.publishing .sdoc-tip-content{margin-top:8px;padding:0}.seadoc-switch.small .custom-switch-indicator{border-radius:6px;height:12px;width:22px}.seadoc-switch.small .custom-switch-indicator:before{height:8px;width:8px}.seadoc-switch.small .custom-switch-input:checked~.custom-switch-indicator:before{left:12px}.sdoc-toggle-revision-changes .custom-switch{padding-left:0}.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operations-toggle{align-items:center;background-color:#f0f0f0;border-radius:15px;color:#666;display:flex;height:30px;justify-content:center;width:66px}.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operations-toggle:hover{color:#333;cursor:pointer}.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operations-toggle .sdoc-revise{margin-right:10px}.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operations-toggle .sdocfont{font-size:14px}.sdoc-more-revision-operations-dropdown .dropdown-item{height:64px;padding:12px}.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operation{align-items:flex-start;display:flex;flex-direction:column;width:373px}.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operation-title .sdocfont{font-size:14px;margin-right:6px}.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operation-title-name{color:#212529;font-size:14px}.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operation-describe{color:#999;font-size:13px;padding-left:20px;white-space:break-spaces;width:100%}.sdoc-revision-operation-toggle{color:#999;display:none;font-size:16px}.revisions-body .sdoc-revision:hover .sdoc-revision-operation-toggle,.revisions-dialog .revisions-body .sdoc-revision.operating .sdoc-revision-operation-toggle{display:inline-block}.sdoc-revision-operation-toggle:hover{color:#333;cursor:pointer}.sdoc-revision-menu-popover .popover{margin-top:0}.revisions-dialog{height:calc(100% - 56px);max-width:700px;width:700px}.revisions-dialog .modal-content{height:100%;overflow:hidden}.revisions-dialog .revisions-body{height:calc(100% - 50px);overflow:hidden;padding:0}.revisions-dialog .sdoc-revisions-container{display:flex;flex-direction:column;height:100%;width:100%}.revisions-dialog .sdoc-revisions-container .sdoc-revisions-header{align-items:center;border-bottom:1px solid rgba(0,40,100,.12);display:flex;height:41px;justify-content:center;margin:0 16px;width:calc(100% - 32px)}.revisions-dialog .sdoc-revisions-container .sdoc-revisions-content{flex:1 1;overflow-x:hidden;overflow-y:scroll;padding:0 16px 16px}.revisions-dialog .sdoc-revisions-container .sdoc-revisions-list{align-items:center;display:flex;flex-direction:column;justify-content:center}.revisions-dialog .sdoc-revisions-container.loading{align-items:center;justify-content:center}.revisions-dialog .revisions-body .sdoc-revision{align-items:flex-start;border-bottom:1px solid rgba(0,40,100,.12);display:flex;height:41px;justify-content:center;width:100%}.revisions-dialog .revisions-body .sdoc-revision.operating{background-color:#f5f5f5}.revisions-dialog .revisions-body .sdoc-revision:hover{background-color:#f5f5f5;cursor:pointer}.revisions-dialog .sdoc-revision-name-header,.revisions-dialog .sdoc-revision-time-header,.revisions-dialog .sdoc-revision-user-header{color:#999;padding-left:9px}.revisions-dialog .sdoc-revision .sdoc-revision-name,.revisions-dialog .sdoc-revision .sdoc-revision-user{align-items:center;display:flex;height:100%;overflow:hidden;padding-left:9px}.revisions-dialog .sdoc-revision .sdoc-revision-name-content{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.revisions-dialog .sdoc-revision .sdoc-revision-time{align-items:center;display:flex;height:100%;overflow:hidden;padding-left:9px}.revisions-dialog .revisions-body .sdoc-revision.loading{align-items:center;border-bottom:none;height:40px}.revisions-dialog .sdoc-revision.loading:hover{background-color:transparent;background-color:initial}.revisions-dialog .sdoc-revision-operations{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.sdoc-revisions-count{border:1px solid #e5e5e5;border-radius:3px;color:#666;height:30px;line-height:28px;margin-left:1rem;padding:0 16px;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.sdoc-revisions-count:hover{color:#333;cursor:pointer}.sdoc-revision-changes-container{border:1px solid #e5e5e5;border-radius:3px;height:32px}.sdoc-revision-changes-container .sdoc-revision-changes-divider{border-right:1px solid #e5e5e5;height:100%;width:1px}.sdoc-revision-changes-container .sdoc-revision-changes-last,.sdoc-revision-changes-container .sdoc-revision-changes-next{height:100%;padding:0 8px}.sdoc-revision-changes-container .sdoc-revision-changes-last .sdocfont,.sdoc-revision-changes-container .sdoc-revision-changes-next .sdocfont{color:#000;opacity:.5}.sdoc-revision-changes-container .sdoc-revision-changes-last:hover,.sdoc-revision-changes-container .sdoc-revision-changes-next:hover{background-color:#f5f5f5;cursor:pointer}.sdoc-revision-changes-container .sdoc-revision-changes-last:hover .sdocfont,.sdoc-revision-changes-container .sdoc-revision-changes-next:hover .sdocfont{opacity:.75}.collaborators-popover.popover{max-width:300px;width:300px}.collaborators-popover .popover-container{display:flex;flex-direction:column;justify-content:center;margin:0;max-height:360px;padding:0}.collaborators-popover .popover-header{align-items:center;background:#fff;border-bottom:1px solid #ededed;color:#212529;display:flex;font-size:16px;font-weight:600;height:50px;justify-content:center;min-height:50px}.collaborators-popover .popover-container .content-list{display:flex;flex:1 1;flex-direction:column;min-height:0;overflow:auto;padding:5px 0}.content-list .collaborator-details{align-items:center;display:flex;height:32px;line-height:32px;padding:3px 12px;width:100%}.content-list .collaborator-details:hover{background-color:#f8f8f8}.content-list .collaborator-details .collaborator-tag{background-color:#08db6b;border-radius:50%;height:5px;margin-right:8px;overflow:hidden;width:5px}.content-list .collaborator-details .collaborator-avatar{border-radius:50%;height:20px;margin-right:8px;overflow:hidden;width:20px}.content-list .collaborator-details .collaborator-name{color:#212529;max-width:calc(100% - 20px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sdoc-notification-container .sdoc-notification-count{background:#fc6440;border-radius:50%;color:#fff;font-size:12px;min-height:20px;min-width:20px;padding:2px;position:absolute;right:-10px;text-align:center;top:-7px;-webkit-transform:scale(.7);transform:scale(.7)}.sdoc-tag-popover{padding-bottom:0;width:230px}.sdoc-popover-container .sdoc-tag-search-input{margin-bottom:10px}.sdoc-popover-container .sdoc-tag-list-container{max-height:180px;overflow-y:auto}.sdoc-tag-item{align-items:center;cursor:pointer;display:flex;height:30px;justify-content:space-between;padding:3px 10px;width:100%}.sdoc-tag-item:hover{background-color:#eee}.sdoc-tag-item .sdoc-tag-badge-container{align-items:center;display:flex;height:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.sdoc-tag-item .sdoc-tag-badge{font-size:13px;font-weight:400;margin-right:10px;overflow:hidden;text-overflow:ellipsis}.sdoc-tag-item .sdoc-tag-added-mark{width:18px}.sdoc-create-tag{background-color:#fff;border-bottom:none;border-top:1px solid #eee;cursor:pointer;font-size:14px;font-weight:400;overflow:hidden;padding:8px 10px;text-overflow:ellipsis;white-space:nowrap}.sdoc-create-tag:hover{background-color:#f5f5f5}.sdoc-create-tag .add-icon{font-size:13px;font-weight:600;margin-right:6px}.doc-ops,.doc-ops .op-item{align-items:center;display:flex}.doc-ops .op-item{cursor:pointer;margin-left:1rem;position:relative}.doc-ops .op-item .sdocfont{color:#666;cursor:pointer;font-size:18px}.doc-ops .op-item .sdocfont:hover{color:#333;cursor:pointer}.doc-ops .popover-wrapper{width:300px}#root,#wrapper,body,html{height:100%;width:100%}#root,#wrapper{display:flex}.sdoc-editor-page-wrapper{display:flex;flex:1 1;flex-direction:column;min-height:0}.sdoc-editor-page-wrapper .sdoc-editor-page-header{background-color:#fff;border-bottom:1px solid #e5e6e8;flex-shrink:0;height:56px;position:relative;z-index:103}.sdoc-editor-page-wrapper .sdoc-editor-page-content{display:flex;flex:1 1;min-height:0}.error-page{align-items:center;display:flex;flex:1 1;flex-direction:column;justify-content:center;overflow:hidden}.error-page .error-tip{color:red}.error-page .error-button{margin-top:20px}.sdoc-context-menu .dropdown-item:not(:disabled),.sdoc-editor-page-wrapper .dropdown-item{color:#212529}.sdoc-context-menu .dropdown-item:hover{color:#fff}.sdoc-share-permission{border:1px solid rgba(0,0,0,.12);border-radius:4px;font-size:12px;padding:2px 6px}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:1.5;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#b3d4fc;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{background:hsla(0,0%,100%,.5);color:#9a6e3a}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.sf-tooltip .tooltip-inner{background-color:#303133;font-weight:lighter;text-align:start}.sf-tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow:before{border-bottom-color:#303133}.sf-tooltip.bs-tooltip-auto[x-placement^=top] .arrow:before{border-top-color:#303133}.sf-tooltip.bs-tooltip-auto[x-placement^=right] .arrow:before{border-right-color:#303133}.sf-tooltip.bs-tooltip-auto[x-placement^=left] .arrow:before{border-left-color:#303133}.sf-header-menu{align-items:center;display:flex;height:100%;padding:6px 8px;position:relative;width:140px}.sf-header-menu.header-toggle-disabled:after{border-top:6px solid #e5e6e8;content:"";position:absolute;right:12px;top:12px}.sf-header-menu.sf-header-popover-showed:after{border-bottom-color:#222428;border-top-color:transparent;content:"";position:absolute;right:12px;top:7px}.sf-header-menu .sf-header-toggle{align-items:center;cursor:pointer;display:flex;flex:1 1;height:24px;justify-content:space-between;padding-left:5px}.sf-header-menu .sf-header-toggle .active{font-size:14px}.sf-header-menu .header-toggle-disabled{color:#bdbdbd;cursor:inherit}.sf-header-menu .sf-header-toggle.sf-header-popover-showed,.sf-header-menu .sf-header-toggle:not(.header-toggle-disabled):hover{background-color:#f2f2f2;border-radius:2px}.sf-header-menu .sf-header-toggle .iconfont{align-items:center;color:#444;cursor:pointer;display:inline-flex;font-size:12px;height:24px;justify-content:center;margin-left:8px;width:12px}.sf-header-menu .sf-header-popover{align-items:flex-start;background-color:#fff;border:1px solid #e5e6e8;border-radius:2px;box-shadow:0 0 10px #ccc;display:flex;flex-direction:column;left:8px;padding:8px 0;position:absolute;top:32px;width:100%;z-index:101}.sf-header-menu .sf-header-popover .sf-dropdown-menu-item{font-size:14px;height:auto;line-height:1;padding:9px 16px 9px 28px;width:100%}.sf-header-menu .sf-header-popover .sf-dropdown-menu-item:hover{background-color:#f2f2f2}.sf-header-menu .sf-header-popover .sf-dropdown-menu-item .sf-check-mark{color:#798d99;left:8px;position:absolute;-webkit-transform:scale(.8);transform:scale(.8)}.menu-group{align-items:center;border-right:1px solid #e5e6e8;color:#444;display:flex;font-size:.75rem;height:100%;justify-content:center;padding:6px 0 6px 8px}.menu-group .menu-group-item{background-color:#fcfcfc;border:none!important;color:#444;height:24px;line-height:24px;margin-right:8px;width:24px}.menu-group .menu-group-item:disabled{color:#bdbdbd}.menu-group .menu-group-item:hover{background-color:#f2f2f2;border-radius:2px}.menu-group .menu-group-item[data-active=true]{color:#eb8205}.menu-group .menu-group-item .iconfont{font-size:13px}.menu-group .menu-group-item.sf-menu-with-dropdown{align-items:center;border:0!important;display:flex;height:24px;justify-content:center;margin-right:10px;overflow:hidden;padding:0!important;width:36px}.menu-group .menu-group-item.sf-menu-with-dropdown.disabled{color:#999;width:24px!important}.sf-menu-with-dropdown:not(.disabled):hover{background:#f2f2f2;border-radius:2px}.sf-menu-with-dropdown .sf-menu-with-dropdown-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.sf-menu-with-dropdown .sf-menu-with-dropdown-triangle{align-items:center;display:flex;height:24px;justify-content:center;padding-right:5px;width:12px}.sf-menu-with-dropdown .sf-menu-with-dropdown-triangle .sf-menu-with-dropdown-triangle-icon{color:#999;font-size:12px}.sf-dropdown-list{align-items:flex-start;align-items:center;background-color:#fff;border:1px solid #e5e6e8;border-radius:2px;box-shadow:0 0 10px #ccc;display:flex;flex-direction:column;left:5px;padding:8px 0;position:absolute;top:30px;z-index:1000}.sf-dropdown-list .sf-dropdown-menu-item-icon{margin-right:8px}.sf-dropdown-list .sf-dropdown-menu-item-text{white-space:nowrap}.sf-dropdown-list .sf-dropdown-list-item{display:flex;font-size:14px;height:auto;line-height:1;padding:9px 16px 9px 28px;width:100%}.sf-dropdown-list .sf-dropdown-list-item:hover{background-color:#f2f2f2}.image-toggle-disabled{color:#bdbdbd;cursor:inherit}.image-popover{align-items:flex-start;background-color:#fff;border:1px solid #e5e6e8;border-radius:2px;box-shadow:0 0 10px #ccc;display:flex;flex-direction:column;left:8px;padding:8px 0;position:absolute;top:42px;z-index:101}.image-popover .image-popover-item{cursor:pointer;font-size:14px;height:auto;line-height:1;margin:0;padding:9px 16px;white-space:nowrap;width:100%}.image-popover .image-popover-item:hover{background-color:#4d9ef8;color:#fff}.image-popover .image-uploader{display:none}@-webkit-keyframes closeWindow{0%{opacity:1}to{opacity:0}}@keyframes closeWindow{0%{opacity:1}to{opacity:0}}.ril__outer{-ms-content-zooming:none;-ms-touch-select:none;background-color:rgba(0,0,0,.85);bottom:0;height:100%;left:0;outline:none;right:0;top:0;-ms-touch-action:none;touch-action:none;-ms-user-select:none;width:100%;z-index:1000}.ril__outerClosing{opacity:0}.ril__image,.ril__imageNext,.ril__imagePrev,.ril__inner{bottom:0;left:0;position:absolute;right:0;top:0}.ril__image,.ril__imageNext,.ril__imagePrev{-ms-content-zooming:none;-ms-touch-select:none;margin:auto;max-width:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none}.ril__imageDiscourager{background-position:50%;background-repeat:no-repeat;background-size:contain}.ril__navButtons{border:none;bottom:0;cursor:pointer;height:34px;margin:auto;opacity:.7;padding:40px 30px;position:absolute;top:0;width:20px}.ril__navButtons:hover{opacity:1}.ril__navButtons:active{opacity:.7}.ril__outer .ril__navButtonPrev{background:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwYXRoIGQ9Im00MTIgNTE1LjIgMzYxLjYtMzYxLjZjMjIuNC0xOS4yIDIyLjQtNTQuNCAwLTc2LjhzLTU3LjYtMjIuNC03Ni44IDBsLTQwNi40IDQwMGMtMjIuNCAyMi40LTIyLjQgNTcuNiAwIDc2LjhsNDA2LjQgNDAzLjJjMjIuNCAyMi40IDU3LjYgMjIuNCA3Ni44IDBzMjIuNC01Ny42IDAtNzYuOEw0MTIgNTE1LjJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+) no-repeat 50%;left:0}.ril__outer .ril__navButtonNext{background:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwYXRoIGQ9Ik02NDAgNTE1LjIgMjc4LjQgMTUzLjZjLTIyLjQtMTkuMi0yMi40LTU0LjQgMC03Ni44czU3LjYtMjIuNCA3Ni44IDBsNDA2LjQgNDAwYzIyLjQgMjIuNCAyMi40IDU3LjYgMCA3Ni44TDM1NS4yIDk1Ni44Yy0yMi40IDIyLjQtNTcuNiAyMi40LTc2LjggMHMtMjIuNC01Ny42IDAtNzYuOEw2NDAgNTE1LjJ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+) no-repeat 50%;right:0}.ril__downloadBlocker{background-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);background-size:cover;bottom:0;left:0;position:absolute;right:0;top:0}.ril__caption,.ril__toolbar{-ms-flex-pack:justify;background-color:rgba(0,0,0,.5);display:-ms-flexbox;display:flex;justify-content:space-between;left:0;position:absolute;right:0}.ril__caption{-ms-flex-pack:center;bottom:0;justify-content:center;max-height:150px;overflow:auto}.ril__captionContent{color:#fff;margin:0 auto;padding:10px 20px}.ril__toolbar{height:50px;top:0}.ril__toolbarSide{height:50px;margin:0}.ril__toolbarLeftSide{-ms-flex:0 1 auto;flex:0 1 auto;overflow:hidden;padding-left:20px;padding-right:0;text-overflow:ellipsis}.ril__toolbarRightSide{-ms-flex:0 0 auto;flex:0 0 auto;padding-left:0;padding-right:20px}.ril__toolbarItem{color:#fff;display:inline-block;font-size:120%;line-height:50px;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.ril__toolbarItemChild{vertical-align:middle}.ril__builtinButton{border:none;cursor:pointer;height:35px;opacity:.7;width:40px}.ril__builtinButton:hover{opacity:1}.ril__builtinButton:active{outline:none}.ril__builtinButtonDisabled{cursor:default;opacity:.5}.ril__builtinButtonDisabled:hover{opacity:.5}.ril__closeButton{background:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik02MTEuMiA1MTIgOTEyIDIxMS4yYzI4LjgtMjguOCAyOC44LTczLjYgMC05OS4ycy03My42LTI4LjgtOTkuMiAwTDUxMiA0MTIuOCAyMTEuMiAxMTJjLTI4LjgtMjguOC03My42LTI4LjgtOTkuMiAwcy0yOC44IDczLjYgMCA5OS4yTDQxMi44IDUxMiAxMTIgODEyLjhjLTI4LjggMjguOC0yOC44IDczLjYgMCA5OS4yIDI4LjggMjUuNiA3My42IDI4LjggOTkuMiAwTDUxMiA2MTEuMiA4MTIuOCA5MTJjMjguOCAyOC44IDczLjYgMjguOCA5OS4yIDAgMjguOC0yOC44IDI4LjgtNzMuNiAwLTk5LjJMNjExLjIgNTEyeiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==) no-repeat 50%}.ril__zoomInButton{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PGcgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PHBhdGggZD0ibTEgMTkgNi02TTkgOGg2TTEyIDV2NiIvPjwvZz48Y2lyY2xlIGN4PSIxMiIgY3k9IjgiIHI9IjciIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIyIi8+PC9zdmc+) no-repeat 50%}.ril__zoomOutButton{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PGcgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PHBhdGggZD0ibTEgMTkgNi02TTkgOGg2Ii8+PC9nPjxjaXJjbGUgY3g9IjEyIiBjeT0iOCIgcj0iNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4=) no-repeat 50%}.ril__rotateButton{background:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPjxwYXRoIGQ9Im0xMjQuOCAxNjAgNTQuNCA1MS4yQzM0NS42IDI4LjggNjMwLjQgMTYgODEyLjggMTgyLjRTMTAwOCA2MzMuNiA4NDEuNiA4MTYgMzkwLjQgMTAxMS4yIDIwOCA4NDQuOGMtMzguNC0zNS4yLTczLjYtNzYuOC05Ni0xMjQuOC02LjQtOS42LTkuNi0xNi05LjYtMjguOCAwLTMyIDI1LjYtNTQuNCA1NC40LTU0LjQgMTkuMiAwIDM4LjQgOS42IDU0LjQgMzIgODMuMiAxNjYuNCAyODggMjMwLjQgNDU0LjQgMTQ0czIzMC40LTI5MS4yIDE0NC00NTcuNi0yODgtMjMwLjQtNDU0LjQtMTQ0Yy0zNS4yIDE5LjItNjcuMiA0MS42LTk2IDczLjZsNTEuMiA0NC44YzEyLjggMTIuOCAxNiAzOC40IDMuMiA1MS4yLTYuNCA2LjQtMTYgOS42LTI1LjYgOS42TDEwNS42IDQwMGMtMTkuMiAwLTM1LjItMTIuOC0zOC40LTMyTDY0IDE4OC44Yy0zLjItMTkuMiAxMi44LTM1LjIgMzItMzguNCAxMi44LTMuMiAyMi40IDMuMiAyOC44IDkuNnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=) no-repeat 50%}.ril__outerAnimating{-webkit-animation-name:closeWindow;animation-name:closeWindow}@-webkit-keyframes pointFade{0%,19.999%,to{opacity:0}20%{opacity:1}}@keyframes pointFade{0%,19.999%,to{opacity:0}20%{opacity:1}}.ril__loadingCircle{height:60px;position:relative;width:60px}.ril__loadingCirclePoint{height:100%;left:0;position:absolute;top:0;width:100%}.ril__loadingCirclePoint:before{-webkit-animation:pointFade .8s ease-in-out infinite both;animation:pointFade .8s ease-in-out infinite both;background-color:#fff;border-radius:30%;content:"";display:block;height:30%;margin:0 auto;width:11%}.ril__loadingCirclePoint:first-of-type{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.ril__loadingCirclePoint:first-of-type:before,.ril__loadingCirclePoint:nth-of-type(7):before{-webkit-animation-delay:-.8s;animation-delay:-.8s}.ril__loadingCirclePoint:nth-of-type(2){-webkit-transform:rotate(30deg);transform:rotate(30deg)}.ril__loadingCirclePoint:nth-of-type(8){-webkit-transform:rotate(210deg);transform:rotate(210deg)}.ril__loadingCirclePoint:nth-of-type(2):before,.ril__loadingCirclePoint:nth-of-type(8):before{-webkit-animation-delay:-666ms;animation-delay:-666ms}.ril__loadingCirclePoint:nth-of-type(3){-webkit-transform:rotate(60deg);transform:rotate(60deg)}.ril__loadingCirclePoint:nth-of-type(9){-webkit-transform:rotate(240deg);transform:rotate(240deg)}.ril__loadingCirclePoint:nth-of-type(3):before,.ril__loadingCirclePoint:nth-of-type(9):before{-webkit-animation-delay:-533ms;animation-delay:-533ms}.ril__loadingCirclePoint:nth-of-type(4){-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ril__loadingCirclePoint:nth-of-type(10){-webkit-transform:rotate(270deg);transform:rotate(270deg)}.ril__loadingCirclePoint:nth-of-type(10):before,.ril__loadingCirclePoint:nth-of-type(4):before{-webkit-animation-delay:-.4s;animation-delay:-.4s}.ril__loadingCirclePoint:nth-of-type(5){-webkit-transform:rotate(120deg);transform:rotate(120deg)}.ril__loadingCirclePoint:nth-of-type(11){-webkit-transform:rotate(300deg);transform:rotate(300deg)}.ril__loadingCirclePoint:nth-of-type(11):before,.ril__loadingCirclePoint:nth-of-type(5):before{-webkit-animation-delay:-266ms;animation-delay:-266ms}.ril__loadingCirclePoint:nth-of-type(6){-webkit-transform:rotate(150deg);transform:rotate(150deg)}.ril__loadingCirclePoint:nth-of-type(12){-webkit-transform:rotate(330deg);transform:rotate(330deg)}.ril__loadingCirclePoint:nth-of-type(12):before,.ril__loadingCirclePoint:nth-of-type(6):before{-webkit-animation-delay:-133ms;animation-delay:-133ms}.ril__loadingCirclePoint:nth-of-type(7){-webkit-transform:rotate(180deg);transform:rotate(180deg)}.ril__loadingCirclePoint:nth-of-type(13){-webkit-transform:rotate(1turn);transform:rotate(1turn)}.ril__loadingCirclePoint:nth-of-type(13):before,.ril__loadingCirclePoint:nth-of-type(7):before{-webkit-animation-delay:0ms;animation-delay:0ms}.ril__loadingContainer{bottom:0;left:0;position:absolute;right:0;top:0}.ril__imageNext .ril__loadingContainer,.ril__imagePrev .ril__loadingContainer{display:none}.ril__errorContainer{-ms-flex-align:center;-ms-flex-pack:center;align-items:center;bottom:0;color:#fff;display:-ms-flexbox;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.ril__imageNext .ril__errorContainer,.ril__imagePrev .ril__errorContainer{display:none}.ril__loadingContainer__icon{color:#fff;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.sf-image-wrapper{display:inline-block;max-width:100%;padding:1px;position:relative}.sf-image-wrapper .sf-image.selected{box-shadow:0 0 0 2px #007bff}.sf-image-wrapper .resizer{background-color:#007bff;border:1px solid #fff;bottom:-5px;cursor:se-resize;height:10px;position:absolute;right:-5px;width:10px}.sf-image-wrapper .full-screen{background-color:#fff;border:1px solid #0028641f;border-radius:3px;box-shadow:0 2px 5px 0 #0003;display:inline-block;height:26px;line-height:20px;padding:2px;position:absolute;right:-32px;text-align:center;top:0;-webkit-user-select:none!important;user-select:none!important;width:26px;z-index:1000}.sf-image-wrapper .full-screen:hover{background-color:#efefef;display:block}.sf-image-wrapper .image-size-info-tooltip{background-color:#4c4c4c;border-radius:3px;bottom:-25px;color:#fff;display:inline-block;font-size:12px;height:22px;left:100%;line-height:12px;padding:5px;position:absolute;-webkit-transform:translateX(5px);transform:translateX(5px);white-space:nowrap;z-index:1}.permission-editor-explanation{word-wrap:break-word;color:#9c9c9c;font-size:12px;padding-left:10px;-webkit-user-select:none;-ms-user-select:none;user-select:none;white-space:pre-wrap;word-break:keep-all}.permission-editor .permission-editor__option{padding-bottom:2px;padding-top:2px}.permission-editor .permission-editor__control .permission-editor-explanation{display:none}.cur-view-content .permission-editor-select .permission-editor__control,.cur-view-content .permission-editor-select .permission-editor__control .permission-editor__input,.cur-view-content .permission-editor-select .permission-editor__control div,.cur-view-content .permission-editor-select .permission-editor__indicators{height:1.5rem;min-height:1.5rem}.cur-view-content .permission-editor-select .permission-editor__value-container div:nth-child(2){margin:0;padding:0}.cur-view-content .permission-editor-select .permission-editor__indicators .permission-editor__indicator{padding:0 .5rem}.permission-editor__menu .permission-editor__option--is-disabled{border-top:1px solid #dedede;color:#9c9c9c}.permission-editor__menu .permission-editor__option--is-disabled:hover{background-color:#f0f0f0!important;color:#9c9c9c!important}.permission-editor-btn-add-custom-permission{align-items:center;display:flex;font-size:12px;line-height:13px;padding:.5rem 0}.permission-editor-btn-add-custom-permission .fa{font-size:12px;line-height:13px;margin-right:.25rem}.permission-editor .btn-add-custom-permission span,.share-dialog-main .permission-editor .permission-editor__placeholder,.share-dialog-main .true__menu,.share-dialog-main .true__placeholder{word-break:keep-all}.sf-virtual-link{color:#eb8205}.sf-virtual-link:hover{text-decoration:underline;text-underline-position:under}.sf-virtual-link.selected{background-color:#e5e5e5}.sf-link-op-menu{background-color:#fff;border:1px solid #e5e5e5;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08);display:flex;height:36px;padding:7px 8px;position:absolute;z-index:1000}.sf-link-op-menu-link{border-right:1p solid #f1f1f1;color:#212529;font-size:12px;line-height:20px;padding:0 5px}.sf-link-op-menu-link:hover{background:#f1f1f1;color:#212529;cursor:pointer;text-decoration:none}.sf-link-op-icons{border-left:1px solid #e5e5e5;margin-left:8px}.sf-link-op-icon{align-items:center;border-radius:2px;color:#444;display:flex;margin-left:8px;padding:4px}.sf-link-op-icon .iconfont{font-size:12px}.sf-link-op-icon:hover{background:#f2f2f2}.sf-code-block-container{background:#f5f7fa;border-radius:4px;margin:0 0 20px;overflow:hidden;padding:0;position:relative}.sf-lang-selector{align-items:center;-webkit-appearance:none;appearance:none;background:#eee;border:none;border-radius:3px;cursor:pointer;display:flex;font-size:12px;line-height:1;outline:none;padding:2px 5px;position:absolute;right:0;top:0;transition:all .3s;width:-webkit-max-content;width:max-content}.sf-list-line{-webkit-padding-start:24px;display:flex;flex-direction:column;margin:0!important;padding-inline-start:24px}.sf-table-menu-item{position:relative}.sf-table-size-selector-card{background-color:#fff;padding:12px;position:absolute;top:30px;z-index:1}.sf-table-size-selector-card .sf-table-grid-info{margin-bottom:5px;text-align:center;width:100%}.sf-table-size-selector-card .sf-table-selector-cell{border:1px solid #ccc;height:15px;width:20px}.sf-table-size-selector-card .sf-table-row{display:flex}.sf-table-size-selector-card .sf-table-selector-cell.selected{background-color:#ffa94d}.sf-table-container td{position:relative}.sf-table-container .selected-cell{background-color:#fff4e6;caret-color:transparent}.sf-table-container .selected-cell-top:before{border-top:1px double #ffa94d;bottom:0;content:"";left:0;margin:-1px;position:absolute;right:0;top:0;z-index:2}.sf-table-container .selected-cell-bottom:before{border-bottom:1px double #ffa94d;bottom:0;content:"";left:0;margin:-1px;position:absolute;right:0;top:0;z-index:2}.sf-table-container .selected-cell-left:before{border-left:1px double #ffa94d;bottom:0;content:"";left:0;margin:-1px;position:absolute;right:0;top:0;z-index:2}.sf-table-container .selected-cell-right:before{border-right:1px double #ffa94d;bottom:0;content:"";left:0;margin:-1px;position:absolute;right:0;top:0;z-index:2}.sf-context-menu{background-color:#fff;border:1px solid rgba(0,40,100,.12);border-radius:3px;display:flex;flex-direction:column;left:0;position:absolute;top:0;z-index:1000}.sf-context-menu .sf-context-menu-item{background-color:#fff;border:none;clear:both;color:#212529;display:flex;padding:.25rem 1.5rem;white-space:nowrap}.sf-context-menu .sf-context-menu-item:focus,.sf-context-menu .sf-context-menu-item:hover{background-color:#f8f9fa;color:#16181b;text-decoration:none}.sf-context-menu .sf-divider{color:#eee;cursor:default;height:1px;margin:5px 0;width:100%}.seafile-multicolor-icon{fill:currentColor;height:1em;overflow:hidden;width:1em}.seafile-multicolor-icon-monitor{fill:#444;color:#bdbdbd;font-size:14px}.ai-search-refrences{margin-top:10px}.ai-search-refrences .ai-search-refrences-title{margin-bottom:6px}.ai-search-refrences .ai-search-refrences-container{display:flex}.ai-search-refrences .ai-search-refrences-container .ai-search-refrences-detail{border:1px solid #ccc;border-radius:3px;margin-right:8px;max-width:200px;padding:4px 8px}.ai-search-refrences .ai-search-refrences-detail:hover{background-color:#f5f5f5;cursor:pointer}.ai-search-help{border-bottom:1px solid rgba(0,40,100,.12);padding:20px 0}.ai-search-help .ai-search-help-title{margin-bottom:10px}.ai-search-help .ai-search-help-container{display:flex}.ai-search-help .ai-search-help-container .ai-search-help-detail{border:1px solid #ccc;border-radius:3px;margin-right:8px;max-width:200px;padding:4px 8px}.ai-search-help .ai-search-help-detail:hover{background-color:#f5f5f5;cursor:pointer}.search-container.show.ai-search-ask{width:800px}.ai-search-ask .ai-search-ask-header{align-items:center;border-bottom:1px solid rgba(0,40,100,.12);display:flex;padding:1rem}.ai-search-ask .ai-search-ask-header .ai-search-ask-return{cursor:pointer;line-height:10px;padding:0 4px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.ai-search-ask .ai-search-ask-header .ai-search-ask-return .seafile-multicolor-icon-arrow{opacity:.6}.ai-search-ask .ai-search-ask-header .ai-search-ask-return:hover .seafile-multicolor-icon-arrow{opacity:.8}.ai-search-ask .ai-search-ask-body{display:flex;max-height:400px;overflow-y:auto}.ai-search-ask .ai-search-ask-body .ai-search-ask-body-left{flex-shrink:0;margin-right:1rem}.ai-search-ask .ai-search-ask-body .ai-search-ask-body-right{font-size:14px;line-height:1.8;width:100%}.ai-search-ask .ai-search-ask-footer{border-top:1px solid rgba(0,40,100,.12);margin:0 1rem;padding:1rem 0}.ai-search-ask .ai-search-ask-footer .ai-search-ask-footer-btn{background-color:#fff;cursor:pointer;height:16px;position:absolute;right:8px;top:8px;width:16px}.ai-search-ask .ai-search-ask-footer .ai-search-ask-footer-btn .seafile-multicolor-icon-send{color:#ff8000}.ai-search-ask .ai-search-ask-footer .ai-search-ask-footer-btn:hover .seafile-multicolor-icon-send{color:#d96d00}@media (max-width:768px){.search-container.show.ai-search-ask{width:100%}.ai-search-ask .search-input{box-shadow:none;width:100%!important}}.top-search-file-icon{align-self:center;color:#999;cursor:pointer;font-size:20px;font-weight:800}.notification-wrapper .popover{max-width:300px}.notification-container{background:#fff;border-radius:3px;box-shadow:0 0 5px #ccc;position:absolute;right:-10px;top:-1px;width:320px}.notification-container .notification-header{align-items:center;border-bottom:1px solid #ededed;display:flex;font-size:16px;font-weight:600;height:50px;justify-content:center;position:relative}.notification-container .notification-header .notification-close-icon{color:#000;cursor:pointer;font-weight:700;height:24px;opacity:.5;position:absolute;right:14px;text-align:center;width:24px}.notification-container .notification-header .notification-close-icon:hover{opacity:.75}.notification-container .notification-body{padding:0}.notification-container .notification-body .show-weixin-qrcode{align-items:center;border-bottom:1px solid #ededed;cursor:pointer;display:flex;height:40px;justify-content:flex-start;padding-left:10px}.show-weixin-qrcode .weixin-icon{color:#999;font-size:20px;margin-left:20px}.notification-container .notification-body .mark-notifications{align-items:center;border-bottom:1px solid #ededed;color:#b4b4b4;cursor:pointer;display:flex;height:36px;justify-content:flex-end;padding-right:1rem}.notification-container .notification-body .mark-notifications:hover{text-decoration:underline}.notification-body .notification-list-container{max-height:260px;overflow:auto}.notification-list-container .notification-item{border-bottom:1px solid #ededed;cursor:pointer;padding:14px 16px 14px 10px;position:relative}.notification-list-container .notification-item:last-child{border-bottom:none}.notification-list-container .notification-item:hover{background:#f5f5f5}.notification-list-container .notification-item .notification-item-header{align-items:center;display:flex}.notification-list-container .notification-item .notification-point{background:red;border-radius:50%;display:inline-block;height:8px;margin-right:12px;position:absolute;width:8px}.notification-list-container .notification-item .notification-header-info{display:flex;flex:1 1;justify-content:space-between;margin-left:20px;width:calc(100% - 20px)}.notification-user-detail{display:flex;width:65%}.notification-user-detail img{margin-top:3px}.notification-user-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-item .notification-header-info .notification-time{color:#b4b4b4;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-list-container .notification-item .notification-content-wrapper{font-size:13px}.notification-item .notification-content-quotes{width:8px}.notification-list-container .notification-item .notification-comment-content{max-width:calc(100% - 16px)}.notification-list-container .notification-item .notification-comment-content p{display:inline-block;letter-spacing:1px;margin-bottom:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-list-container .notification-item .notification-comment-content p img{height:auto;max-height:60px;max-width:70%}.notification-body .notification-footer{align-items:center;background:#f9f9f9;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #ededed;cursor:pointer;display:flex;height:40px;justify-content:center}.notification-body .notification-footer:hover{text-decoration:underline}.sf-selected-formula{cursor:pointer;display:block;outline:2px solid #007bff;-webkit-user-select:none;user-select:none}.sf-selected-formula .MathJax{margin:0}.formula-dialog-wrapper .form-check-label{margin-bottom:4px}.formula-dialog-wrapper .formula-preview{border:2px dashed #ebebeb;min-height:40px;overflow-x:auto;padding:10px}.cur-view-toolbar{align-items:center;display:flex;flex:1 1;height:32px;position:relative}.border-left-show:before{background-color:#ddd;content:"";height:30px;left:-1px;position:absolute;top:10px;width:1px}.operation-item{background-color:#fff;border:1px solid #ccc;border-radius:2px;font-weight:400;height:30px;line-height:29px;min-width:55px;padding:0 .5rem}.group-operations,.operation-item{margin-right:.25rem}.group-operations .group-op-item{font-size:1.125rem;font-weight:400;min-width:46px;padding:0 .5rem}.detail-btn button,.group-operations .group-op-item,.sf-view-mode-btn{background-color:#fff;border:1px solid #ccc;border-radius:2px;height:30px;line-height:29px}.detail-btn button,.sf-view-mode-btn{color:#aaa;font-size:18px;min-width:2rem;padding:0}.detail-btn button{font-size:15px;padding-top:1px}.sf-view-mode-btn.current-mode{background-color:#ccc!important;color:#fff!important}.common-toolbar{align-items:center;display:flex;margin-left:auto}.common-toolbar>div{margin-left:.5rem}.common-toolbar .logout-icon{align-items:center;color:#ccc;display:flex;height:32px;justify-content:center;margin-left:8px;text-decoration:none;width:32px}.path-toolbar{list-style:none}.path-toolbar .toolbar-item{display:inline-block;margin-left:.75rem;text-align:center}.path-toolbar .toolbar-item a{color:#8a8a8a;font-size:22px}.path-toolbar .toolbar-item a:hover{color:#eb8205;text-decoration:none}@media (max-width:767px){.border-left-show:before{width:0}}.search-mask{background-color:rgba(0,0,0,.2);height:100%;left:0;position:fixed;top:0;width:100%;z-index:1}.search-container{position:relative;z-index:2}.search-container.show{background-color:#fff;border-radius:3px;box-shadow:0 3px 8px 0 rgba(116,129,141,.1);cursor:default;display:flex;flex-direction:column;min-height:200px;overflow:hidden;padding:1rem 0 0 1rem;position:absolute;right:110px;top:10px;width:600px}.search-icon-left{display:flex}.search-icon-right{color:#999;cursor:pointer;display:flex;font-style:normal;min-width:25px;pointer-events:all}.search-icon-right:hover{color:#333;text-decoration:none}.search-icon-arrow{left:auto;right:40px}.search-input{font-size:.875rem;height:1.875rem;width:15rem}.search-container.show .search-input{height:38px}.search-result-container{background-color:#fff;border-radius:0 0 3px 3px;box-shadow:0 3px 8px 0 rgba(116,129,141,.1);left:0;position:absolute;top:2rem;top:60px;width:100%}.dropdown-search-result-container{box-shadow:none;display:flex;flex-direction:column;max-height:300px;overflow:auto;position:relative;top:0}.dropdown-search-result-container .seahub-switch .custom-switch{padding-left:0}.search-result-container .search-result-none{line-height:4rem;text-align:center}.search-result-container .search-result-list{list-style:none;margin:4px 0;padding:0}.search-result-container .search-result-list-container{flex:1 1;overflow:auto}.search-result-container .search-result-item{border-radius:4px;cursor:pointer;display:flex;font-size:.8125rem;margin-right:1rem;padding:10px 0 10px 8px}.search-result-container .search-result-item.search-result-item-highlight,.search-result-container .search-result-item:hover{background-color:#f0f0f0}.search-result-item .item-img{height:36px;width:36px}.search-result-item .lib-item-img{height:36px;padding:4px;width:36px}.search-result-item .item-content{flex:1 1;margin-left:.25rem;overflow-x:hidden}.item-content .item-name a{color:#ea8102!important}.item-content .item-link{color:#7d7d7d;margin:0}.item-content .item-text{margin:0}.item-content .item-text b{font-weight:700}.search-result-container .item-content .item-text{font-size:.8125rem;line-height:1.5;padding:0}.main-panel-south{flex:auto;height:calc(100% - 50px);overflow:auto}.search-page{margin:30px auto;width:65%}.search-page .search-result-container{border-radius:0;box-shadow:none;padding:1.25rem 1rem}.search-page .search-page-container{background:#f7f7f8;padding:1.25rem 1rem}.search-page .search-page-container .search-input{padding-left:.5rem;width:30rem}.search-page .search-page-container .fa-angle-double-down,.search-page .search-page-container .fa-angle-double-up{font-size:1rem}.search-page .advanced-search .search-file-types .search-input{max-width:100%;padding-left:.5rem;width:30rem}.search-page .search-page-container .search-icon-right{left:28rem}.search-page .paginator{margin:1rem 0;text-align:center}.search-page .advanced-search,.search-page .search-filters{color:#747474}.search-page .search-filters{padding-top:10px}.search-page .advanced-search .search-file-types,.search-page .advanced-search .search-repo{padding:5px 0}.search-file-types .search-file-types-form{top:10px}.search-page .advanced-search .search-catalog{border-top:1px dashed #e2e2e2;padding:10px 0}.search-page .advanced-search .search-catalog:first-child{border:none}.search-page .custom-checkbox .custom-control-input:checked~.custom-control-label:before{background-color:#3b88fd}.search-date .ant-input{border:1px solid rgba(0,40,100,.12);border-radius:3px;height:2.375rem;line-height:1.6;padding:.375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.search-date .select-data-icon{color:#b2b2b2;position:absolute;right:1.5rem;top:.5rem}.search-page .search-result-container .search-result-item{margin-bottom:1rem;padding:0}.search-page .search-result-container .search-result-item:hover{background-color:inherit}.search-page .search-result-item .item-content{margin-left:.8rem}.search-page .search-result-item .item-content .item-link a{color:#8b8b8b!important}.search-page .search-result-container .search-result-item{cursor:default}.rc-calendar tbody tr{height:1.75rem}@media (max-width:767px){.common-toolbar .search{margin:0}.search-icon-container{align-items:center;display:flex;justify-content:center;width:2rem}.search-icon{color:#999;font-size:1.25rem;line-height:1}.search-container{display:flex;justify-content:center;left:0;position:fixed;right:0;top:5rem;z-index:2}.search-input{box-shadow:5px 5px 5px #888;height:2.5rem;width:20rem!important}.search-result-container{left:auto;position:absolute;top:2.5rem;width:20rem}.search-page{height:100%;margin:0;width:100%}.search-page .search-page-container .search-input{box-shadow:none;width:95%!important}.search-page .search-page-container .search-icon-right{left:85%}.search-page .search-result-container{left:0;top:0;width:100%}}.search-result-container .search-mode-container{align-items:center;border-bottom:1px solid #ddd;display:flex;height:40px;margin-right:16px;padding:0 12px}.search-result-container .search-mode-item{align-items:center;border-bottom:2px solid transparent;cursor:pointer;display:flex;font-size:14px;height:40px;line-height:40px;margin-right:30px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.search-result-container .search-mode-item.search-mode-active{border-bottom-color:#ff8001;color:#ff8001}.search-result-container .search-mode-similarity-index-status{align-items:center;display:flex;flex-direction:column;height:64px;justify-content:center}.search-result-container .search-mode-similarity-index-status.index-status-uncreated{cursor:pointer}.visited-search-results-title{color:#999;font-size:.875rem;font-weight:400;margin:7px 0 10px}.notification-list-dialog{height:calc(100% - 56px);max-width:720px;width:720px}.notification-list-dialog .notification-list-content{height:100%}.notification-header-close{display:flex}.notification-header-close .notification-dropdown-toggle{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.notification-header-close .item-dropdown-icon,.notification-header-close .notification-close-icon{color:#000;cursor:pointer;height:24px;opacity:.5;width:24px}.notification-header-close .item-dropdown-icon:hover,.notification-header-close .notification-close-icon:hover{color:#000;opacity:.75}.notification-header-close .item-dropdown-icon{font-weight:400}.notification-header-close .notification-close-icon{font-weight:700}.notification-header-close .dropdown-menu{box-shadow:0 1px 2px 0 rgba(0,0,0,.05);min-width:8rem}.notification-header-close .dtable-dropdown-menu.large.dropdown-menu .dropdown-item{min-height:0;min-height:auto;padding:.25rem 1.5rem}.notification-list-content .notification-modal-body{height:100%;overflow:hidden;padding:0}.notification-modal-body .notification-dialog-body{height:100%;overflow:auto;padding:2rem 1rem}.notification-dialog-body table{overflow-y:auto;table-layout:fixed;width:100%}.notification-modal-body .notification-dialog-body .paginator{height:38px}.notification-dialog-body table thead tr{height:2.1875rem}.notification-dialog-body table th{border-bottom:1px solid #eee;color:#9c9c9c;font-weight:400;line-height:1.6;padding:.3125rem .1875rem;text-align:left}.notification-dialog-body table tbody tr:hover{background:#f5f5f5;cursor:pointer}.notification-dialog-body table td{border-bottom:1px solid #eee;color:#333;font-size:14px;padding:.5rem .1875rem;word-break:break-all}.wechat-dialog-body{padding:3rem}.wechat-dialog-body,.wechat-dialog-message{align-items:center;display:flex;flex-direction:column;justify-content:center}.wechat-dialog-message{color:#666;font-size:14px;margin-top:1rem;width:100%}.notification-dialog-body .empty-tip{background-color:#fff;border-radius:3px;margin:5.5em 1em;padding:30px;text-align:center}.notification-dialog-body .empty-tip .no-items-img-tip{height:100px;width:100px}@media (min-width:768px){.notification-dialog-body .empty-tip{padding:30px 80px}}#notifications{position:relative;width:32px}#notice-icon{display:block;position:relative}@media (max-width:390px){#notifications{margin-left:8px}}#notifications .title{color:#322;font-size:1rem;font-weight:400;line-height:1.5}#notifications .sf2-icon-bell{color:#999;font-size:24px;line-height:1;vertical-align:middle}#notifications .num{background:#fc6440;border-radius:100%;color:#fff;font-size:9px;height:16px;left:12px;line-height:16px;min-width:16px;padding:0 2px;position:absolute;text-align:center;top:-3px}#notice-popover{right:-12px;top:38px}#notice-popover .outer-caret{right:18px}#notice-popover a{font-weight:400}#notice-popover li{border-bottom:1px solid #dfdfe1;padding:9px 0 3px}#notice-popover li.unread{border-left:2px solid #feac74;padding-left:10px;padding-right:10px}#notice-popover li.read{border-left:2px solid transparent;padding-left:10px;padding-right:10px}#notice-popover li:hover{background:#f5f5f7}#notice-popover li.read:hover{background:#f5f5f7;border-left:2px solid #dfdfe1}#notice-popover .avatar{border-radius:1000px;float:left}#notice-popover .brief{font-size:.8125rem;line-height:1.5rem;margin-bottom:1rem;margin-left:40px}#notice-popover .time{clear:both;color:#999;font-size:.8125rem;line-height:1.5rem;margin:0;text-align:right}#notice-popover .view-all{color:#a4a4a4;display:block;padding:7px 0;text-align:center}#notice-popover .sf-popover-close{position:absolute;right:10px;top:17px}#notice-popover .sf-popover-hd{border-bottom:1px solid #dfdfe1;margin:0 10px}#notice-popover .sf-popover-con{max-height:25rem}.keyboard-shortcut-dialog{max-width:500px}.keyboard-shortcut-dialog .modal-body{max-height:390px;overflow:auto}.keyboard-shortcut-container{align-items:center;background-color:#f8f8f8;border-radius:3px;box-sizing:border-box;display:flex;line-height:1.5;margin-top:3px;padding-bottom:.5rem;padding-top:.5rem}.keyboard-shortcut-title{font-size:.9rem}.keyboard-shortcut-container>div:first-child{text-align:right}.keyboard-shortcut-container>div:last-child{padding-left:1rem;padding-right:1rem}.keyboard-shortcut{display:inline-block}.keyboard-shortcut kbd{background-color:hsla(0,0%,100%,.25);border:solid rgba(0,0,0,.1);border-radius:3px;border-width:1px 1px 2px;box-sizing:border-box;color:#333;display:inline-block;font:inherit;font-size:12px;margin-bottom:0;margin-left:1px;margin-right:1px;min-width:12px;padding:1px 3px;text-align:center;text-transform:uppercase}.sf-slate-editor-toolbar{background-color:#fcfcfc!important}.sf-slate-editor-toolbar .sf-slate-article-info-control{color:#555;cursor:pointer;display:flex;height:30px;justify-content:center;line-height:30px;position:absolute;right:20px;width:30px}.sf-slate-editor-toolbar .sf-slate-article-info-control:hover{background-color:#e5e5e5}.sf-slate-editor-toolbar .sf-slate-help-info-control{color:#555;cursor:pointer;display:flex;height:30px;justify-content:center;line-height:30px;position:absolute;right:20px;width:30px}.sf-slate-editor-toolbar .sf-slate-help-info-control>span:hover{color:#333;cursor:pointer}.sf-slate-editor-toolbar .sf-slate-article-info-control .iconfont{font-size:13px}.sf-single-selector .cur-option{cursor:pointer}.sf-single-selector .cur-option .toggle-icon{color:#999}.sf-single-selector .options-container{background:#fff;border:1px solid #e8e8e8;min-width:165px;z-index:2}.sf-single-selector .option-list{max-height:200px;min-height:4rem}.sf-single-selector .option-item{cursor:pointer}.sf-single-selector .option-item:hover{background:#f5f5f5}.sf-single-selector .option-item-text{font-size:14px}.btn-qr-code-icon{font-size:1.5rem;font-weight:400;line-height:1;padding:.375rem}.rc-calendar,.rc-calendar *{box-sizing:border-box}.rc-calendar-hidden{display:none}.rc-calendar-input-wrap{border-bottom:1px solid #e9e9e9;padding:6px;position:relative}.rc-calendar-input-wrap:after{clear:both;content:""}.rc-calendar-date-input-wrap{overflow:hidden}.rc-calendar-time-picker{background-color:#fff;height:217px;position:absolute;top:34px;width:100%}.rc-calendar-time-picker-panel{position:relative;width:100%}.rc-calendar-time-picker-panel .rc-time-picker-panel-input-wrap{display:none}.rc-calendar-time-picker-panel .rc-time-picker-panel-inner{border:none;box-shadow:none}.rc-calendar-time-picker-panel .rc-time-picker-panel-select{max-height:217px;width:84px}.rc-calendar-time-picker-panel .rc-time-picker-panel-select li{padding:0;text-align:center}.rc-calendar-time-picker-wrap{float:left;width:100%}.rc-calendar-time-picker-wrap .rc-time-picker{width:100%}.rc-calendar-time-picker-wrap .rc-time-picker-input{border:1px solid transparent;height:22px;outline:0;padding:0}.rc-calendar-time-picker-wrap .rc-time-picker-icon{display:none}.rc-calendar-input{border:1px solid transparent;color:#666;cursor:text;height:22px;line-height:1.5;outline:0;width:100%}.rc-calendar-input-invalid{border-color:red}.rc-calendar-clear-btn{cursor:pointer;height:20px;line-height:20px;margin:0;overflow:hidden;position:absolute;right:6px;text-align:center;top:6px;width:20px;z-index:9999}.rc-calendar-clear-btn:after{color:#aaa;content:"x";display:inline-block;font-size:12px;line-height:1;transition:color .3s ease;width:20px}.rc-calendar-clear-btn:hover:after{color:#666}.rc-calendar-picker{left:-9999px;position:absolute;top:-9999px;z-index:1000}.rc-calendar-picker-hidden{display:none}.rc-calendar-picker-slide-up-appear,.rc-calendar-picker-slide-up-enter{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1);display:block!important;opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0}.rc-calendar-picker-slide-up-leave{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused;-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34);display:block!important;opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0}.rc-calendar-picker-slide-up-appear.rc-calendar-picker-slide-up-appear-active.rc-calendar-picker-placement-bottomLeft,.rc-calendar-picker-slide-up-appear.rc-calendar-picker-slide-up-appear-active.rc-calendar-picker-placement-bottomRight,.rc-calendar-picker-slide-up-enter.rc-calendar-picker-slide-up-enter-active.rc-calendar-picker-placement-bottomLeft,.rc-calendar-picker-slide-up-enter.rc-calendar-picker-slide-up-enter-active.rc-calendar-picker-placement-bottomRight{-webkit-animation-name:rcDropdownSlideUpIn;animation-name:rcDropdownSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.rc-calendar-picker-slide-up-appear.rc-calendar-picker-slide-up-appear-active.rc-calendar-picker-placement-topLeft,.rc-calendar-picker-slide-up-appear.rc-calendar-picker-slide-up-appear-active.rc-calendar-picker-placement-topRight,.rc-calendar-picker-slide-up-enter.rc-calendar-picker-slide-up-enter-active.rc-calendar-picker-placement-topLeft,.rc-calendar-picker-slide-up-enter.rc-calendar-picker-slide-up-enter-active.rc-calendar-picker-placement-topRight{-webkit-animation-name:rcDropdownSlideDownIn;animation-name:rcDropdownSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.rc-calendar-picker-slide-up-leave.rc-calendar-picker-slide-up-leave-active.rc-calendar-picker-placement-bottomLeft,.rc-calendar-picker-slide-up-leave.rc-calendar-picker-slide-up-leave-active.rc-calendar-picker-placement-bottomRight{-webkit-animation-name:rcDropdownSlideUpOut;animation-name:rcDropdownSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running}.rc-calendar-picker-slide-up-leave.rc-calendar-picker-slide-up-leave-active.rc-calendar-picker-placement-topLeft,.rc-calendar-picker-slide-up-leave.rc-calendar-picker-slide-up-leave-active.rc-calendar-picker-placement-topRight{-webkit-animation-name:rcDropdownSlideDownOut;animation-name:rcDropdownSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes rcDropdownSlideUpIn{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:0 0;transform-origin:0 0}to{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0}}@keyframes rcDropdownSlideUpIn{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:0 0;transform-origin:0 0}to{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0}}@-webkit-keyframes rcDropdownSlideUpOut{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0}to{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:0 0;transform-origin:0 0}}@keyframes rcDropdownSlideUpOut{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0}to{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:0 0;transform-origin:0 0}}@-webkit-keyframes rcDropdownSlideDownIn{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}to{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}}@keyframes rcDropdownSlideDownIn{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}to{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}}@-webkit-keyframes rcDropdownSlideDownOut{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}to{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}}@keyframes rcDropdownSlideDownOut{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}to{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}}.rc-calendar{background-clip:padding-box;background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 5px #ccc;font-family:Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",WenQuanYi Micro Hei,sans-serif;font-size:12px;line-height:1.5;list-style:none;outline:none;position:relative;text-align:left;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.rc-calendar-date-panel,.rc-calendar-date-panel-container{display:flex}.rc-calendar-date-panel,.rc-calendar-panel{display:block;outline:none;position:relative}.rc-calendar-week-number{width:286px}.rc-calendar-week-number-cell{text-align:center}.rc-calendar-header{border-bottom:1px solid #ccc;height:34px;line-height:30px;padding:0 10px;text-align:center;-ms-user-select:none;user-select:none;-webkit-user-select:none}.rc-calendar-header>a{display:inline-block;font-weight:700;line-height:34px;padding:0 5px;text-align:center;width:30px}.rc-calendar-header>a:hover{color:#f09f4g;cursor:pointer}.rc-calendar-header .rc-calendar-prev-month-btn{left:25px;position:absolute}.rc-calendar-header .rc-calendar-prev-month-btn:after{content:"‹"}.rc-calendar-header .rc-calendar-next-month-btn{position:absolute;right:25px}.rc-calendar-header .rc-calendar-next-month-btn:after{content:"›"}.rc-calendar-day-select,.rc-calendar-month-select,.rc-calendar-year-select{color:#666;display:inline-block;font-size:12px;font-weight:700;line-height:34px;padding:0 8px}.rc-calendar-day-select:hover,.rc-calendar-month-select:hover,.rc-calendar-year-select:hover{color:#f09f4g;cursor:pointer}.rc-calendar-day-select.rc-calendar-time-status:hover,.rc-calendar-month-select.rc-calendar-time-status:hover,.rc-calendar-year-select.rc-calendar-time-status:hover{color:#666;cursor:pointer}.rc-calendar-next-month-btn,.rc-calendar-next-year-btn,.rc-calendar-prev-month-btn,.rc-calendar-prev-year-btn{color:#999;cursor:pointer;display:inline-block;font-family:Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",sans-serif;font-size:16px;line-height:34px;padding:0 5px;position:absolute;top:0}.rc-calendar-next-month-btn:hover,.rc-calendar-next-year-btn:hover,.rc-calendar-prev-month-btn:hover,.rc-calendar-prev-year-btn:hover{color:#f09f4g}.rc-calendar-next-year-btn{right:0}.rc-calendar-next-year-btn:after{content:"»"}.rc-calendar-prev-year-btn{left:0}.rc-calendar-prev-year-btn:after{content:"«"}.rc-calendar-body{height:217px;padding:9px 10px 10px}.rc-calendar-right-panel{height:inherit;width:68px}.rc-calendar-right-panel-header{height:34px;line-height:34px}.rc-calendar-right-panel-header span{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.rc-calendar-right-panel-body{border-left:1px solid #ccc;height:217px;overflow-y:scroll}.rc-calendar-right-panel-body ul{box-sizing:border-box;list-style:none;margin:0;padding:0;width:100%}.rc-calendar-right-panel-body ul li{cursor:pointer;padding:8px 0;text-align:center}.rc-calendar-right-panel-body ul li:hover{color:#e8bf6a}.rc-calendar-right-panel-body .rc-calendar-selected-time{color:#f09f3f}.rc-calendar-right-panel-body::-webkit-scrollbar{width:0}.rc-calendar-right-panel-footer{border-left:1px solid #ccc;height:39px;line-height:34px}.rc-calendar-right-panel-footer span{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rc-calendar-right-panel-footer,.rc-calendar-right-panel-header{color:#999;cursor:pointer;display:flex;font-size:16px;justify-content:center}.rc-calendar-right-panel-footer span:after,.rc-calendar-right-panel-header span:after{content:"›"}.rc-calendar table{background-color:transparent;border-collapse:collapse;max-width:100%;width:100%}.rc-calendar table,.rc-calendar td,.rc-calendar th{border:none}.rc-calendar-table{border-spacing:0;margin-bottom:0}.rc-calendar-column-header{line-height:18px;padding:6px 0;text-align:center;width:33px}.rc-calendar-column-header .rc-calendar-column-header-inner{display:block;font-weight:400}.rc-calendar-week-number-header .rc-calendar-column-header-inner{display:none}.rc-calendar-cell{padding:1px 0}.rc-calendar-date{background:transparent;border-radius:4px 4px;color:#666;display:block;height:26px;line-height:26px;margin:0 auto;padding:0;text-align:center;width:26px}.rc-calendar-date:hover{background:#fcecd9;cursor:pointer}.rc-calendar-selected-day .rc-calendar-date{background:#fcecd9}.rc-calendar-selected-date .rc-calendar-date{background:#f09f3f;color:#fff}.rc-calendar-selected-date .rc-calendar-date:hover{background:#f09f3f}.rc-calendar-today .rc-calendar-date{border:1px solid #f09f3f}.rc-calendar-disabled-cell .rc-calendar-date{background:#f3f3f3;border-radius:0;color:#bcbcbc;cursor:not-allowed;width:auto}.rc-calendar-disabled-cell .rc-calendar-date:hover{background:#f3f3f3}.rc-calendar-disabled-cell-first-of-row .rc-calendar-date{border-bottom-left-radius:4px;border-top-left-radius:4px}.rc-calendar-disabled-cell-last-of-row .rc-calendar-date{border-bottom-right-radius:4px;border-top-right-radius:4px}.rc-calendar-last-month-cell .rc-calendar-date,.rc-calendar-next-month-btn-day .rc-calendar-date{color:#bbb}.rc-calendar-footer{border-top:1px solid #ccc;padding:10px 0;position:relative;text-align:center}.rc-calendar-footer .rc-time-picker{width:90px}.rc-calendar-footer .rc-time-picker-input{height:24px}.rc-calendar-footer-show-ok{text-align:right}.rc-calendar-footer-show-ok .rc-calendar-footer-btn{padding-right:12px}.rc-calendar-footer-show-ok .rc-calendar-time-picker-btn{margin-left:0;padding:0 12px}.rc-calendar-footer-show-ok .rc-calendar-today-btn{float:left;padding-left:12px}.rc-calendar-footer-btn{margin-top:2px}.rc-calendar-footer-btn:after{clear:both;content:"x";font-size:0;height:0;overflow:hidden}.rc-calendar-time-picker-btn{margin-left:10px}.rc-calendar-ok-btn,.rc-calendar-time-picker-btn,.rc-calendar-today-btn{color:#f46830;display:inline-block;text-align:center}.rc-calendar-ok-btn:hover,.rc-calendar-time-picker-btn:hover,.rc-calendar-today-btn:hover{color:#f09f4g;cursor:pointer}.rc-calendar-ok-btn-disabled,.rc-calendar-ok-btn-disabled:hover,.rc-calendar-time-picker-btn-disabled,.rc-calendar-time-picker-btn-disabled:hover,.rc-calendar-today-btn-disabled,.rc-calendar-today-btn-disabled:hover{color:#bbb}.rc-calendar-today-btn{padding-left:10px}.rc-calendar-time-input{background-color:#fff;border:1px solid #d9d9d9;border-radius:6px 6px;color:#666;display:inline-block;height:25px;line-height:1.5;margin:0;padding:4px 10px;position:relative;-webkit-transform:border .3s cubic-bezier(.35,0,.25,1),background .3s cubic-bezier(.35,0,.25,1),box-shadow .3s cubic-bezier(.35,0,.25,1);transform:border .3s cubic-bezier(.35,0,.25,1),background .3s cubic-bezier(.35,0,.25,1),box-shadow .3s cubic-bezier(.35,0,.25,1);width:40px}.rc-calendar-time-input:hover{border-color:#f09f4g}.rc-calendar-time-input:focus{border-color:#f09f4g;box-shadow:0 0 3px #f09f4g}.rc-calendar-time-panel{background:#fff;bottom:0;left:0;outline:none;position:absolute;right:0;top:0;z-index:10}.rc-calendar-time-panel-header{border-bottom:1px solid #ccc;height:34px;line-height:34px;padding:0 10px;position:relative;text-align:center;-ms-user-select:none;user-select:none;-webkit-user-select:none}.rc-calendar-time-panel-body{padding:9px 10px 10px}.rc-calendar-time-panel-title{border-radius:4px;display:inline-block;font-weight:700;height:30px;line-height:22px;padding:4px 5px;text-align:center;width:180px}.rc-calendar-time-panel-table{border-collapse:separate;height:255px;table-layout:fixed;width:100%}.rc-calendar-time-panel-cell{height:42px;text-align:center;vertical-align:middle}.rc-calendar-time-panel-time{border-radius:4px;display:block;line-height:26px;margin:0 auto;width:26px}.rc-calendar-time-panel-time:hover{background:#fcecd9;cursor:pointer}.rc-calendar-time-panel-selected-cell .rc-calendar-time-panel-time,.rc-calendar-time-panel-selected-cell .rc-calendar-time-panel-time:hover{background:#f09f3f;color:#fff}.rc-calendar-month-panel{background:#fff;bottom:0;left:0;outline:none;position:absolute;right:0;top:0;z-index:10}.rc-calendar-month-panel>div{display:flex;flex-direction:column;height:100%}.rc-calendar-month-panel-hidden{display:none}.rc-calendar-month-panel-header{border-bottom:1px solid #ccc;height:34px;line-height:30px;padding:0 10px;position:relative;text-align:center;-ms-user-select:none;user-select:none;-webkit-user-select:none}.rc-calendar-month-panel-header>a{display:inline-block;font-weight:700;padding:4px 5px;text-align:center;width:30px}.rc-calendar-month-panel-header>a:hover{color:#f09f4g;cursor:pointer}.rc-calendar-month-panel-next-year-btn,.rc-calendar-month-panel-prev-year-btn{position:absolute;top:0}.rc-calendar-month-panel-next-year-btn:after{content:"»"}.rc-calendar-month-panel-prev-year-btn{left:0;-webkit-user-select:none;-ms-user-select:none;user-select:none}.rc-calendar-month-panel-prev-year-btn:after{content:"«"}.rc-calendar-month-panel .rc-calendar-month-panel-year-select{width:180px}.rc-calendar-month-panel-year-select-arrow{display:none}.rc-calendar-month-panel-next-year-btn{right:0;-webkit-user-select:none;-ms-user-select:none;user-select:none}.rc-calendar-month-panel-body{flex:1 1;padding:9px 10px 10px}.rc-calendar-month-panel-footer{border-top:1px solid #ccc;line-height:38px}.rc-calendar-month-panel-table{border-collapse:separate;height:100%;table-layout:fixed;width:100%}.rc-calendar-month-panel-cell{text-align:center}.rc-calendar-month-panel-cell .rc-calendar-month-panel-month{background:transparent;border-radius:4px 4px;color:#666;display:block;height:36px;line-height:36px;margin:0 auto;padding:0;text-align:center;width:46px}.rc-calendar-month-panel-cell .rc-calendar-month-panel-month:hover{background:#fcecd9;cursor:pointer}.rc-calendar-month-panel-cell-disabled .rc-calendar-month-panel-month{color:#bfbfbf}.rc-calendar-month-panel-cell-disabled .rc-calendar-month-panel-month:hover{background:#fff;cursor:not-allowed}.rc-calendar-month-panel-selected-cell .rc-calendar-month-panel-month,.rc-calendar-month-panel-selected-cell .rc-calendar-month-panel-month:hover{background:#f09f3f;color:#fff}.rc-calendar-month-header-wrap{height:308px;position:relative}.rc-calendar-year-panel{background:#fff;bottom:0;left:0;outline:none;position:absolute;right:0;top:0;z-index:10}.rc-calendar-year-panel>div{display:flex;flex-direction:column;height:100%}.rc-calendar-year-panel-hidden{display:none}.rc-calendar-year-panel-header{border-bottom:1px solid #ccc;height:34px;line-height:30px;padding:0 10px;position:relative;text-align:center;-ms-user-select:none;user-select:none;-webkit-user-select:none}.rc-calendar-year-panel-header>a{display:inline-block;font-weight:700;padding:4px 5px;text-align:center;width:30px}.rc-calendar-year-panel-header>a:hover{color:#f09f4g;cursor:pointer}.rc-calendar-year-panel-next-decade-btn,.rc-calendar-year-panel-prev-decade-btn{position:absolute;top:0}.rc-calendar-year-panel-next-decade-btn:after{content:"»"}.rc-calendar-year-panel-prev-decade-btn{left:0;-webkit-user-select:none;-ms-user-select:none;user-select:none}.rc-calendar-year-panel-prev-decade-btn:after{content:"«"}.rc-calendar-year-panel .rc-calendar-year-panel-decade-select{width:180px}.rc-calendar-year-panel-decade-select-arrow{display:none}.rc-calendar-year-panel-next-decade-btn{right:0;-webkit-user-select:none;-ms-user-select:none;user-select:none}.rc-calendar-year-panel-body{flex:1 1;padding:9px 10px 10px}.rc-calendar-year-panel-footer{border-top:1px solid #ccc;line-height:38px}.rc-calendar-year-panel-table{border-collapse:separate;height:100%;table-layout:fixed;width:100%}.rc-calendar-year-panel-cell{text-align:center}.rc-calendar-year-panel-year{background:transparent;border-radius:4px 4px;color:#666;display:block;height:36px;line-height:36px;margin:0 auto;padding:0;text-align:center;width:46px}.rc-calendar-year-panel-year:hover{background:#fcecd9;cursor:pointer}.rc-calendar-year-panel-selected-cell .rc-calendar-year-panel-year,.rc-calendar-year-panel-selected-cell .rc-calendar-year-panel-year:hover{background:#f09f3f;color:#fff}.rc-calendar-year-panel-last-decade-cell .rc-calendar-year-panel-year,.rc-calendar-year-panel-next-decade-cell .rc-calendar-year-panel-year{color:rgba(0,0,0,.25);-ms-user-select:none;user-select:none;-webkit-user-select:none}.rc-calendar-decade-panel{background:#fff;bottom:0;display:flex;flex-direction:column;left:0;outline:none;position:absolute;right:0;top:0;z-index:10}.rc-calendar-decade-panel-hidden{display:none}.rc-calendar-decade-panel-header{border-bottom:1px solid #ccc;height:34px;line-height:34px;padding:0 10px;position:relative;text-align:center;-ms-user-select:none;user-select:none;-webkit-user-select:none}.rc-calendar-decade-panel-header>a{display:inline-block;font-weight:700;padding:1px 5px;text-align:center;width:30px}.rc-calendar-decade-panel-header>a:hover{color:#f09f4g;cursor:pointer}.rc-calendar-decade-panel-next-century-btn,.rc-calendar-decade-panel-prev-century-btn{position:absolute;top:0}.rc-calendar-decade-panel-next-century-btn:after{content:"»"}.rc-calendar-decade-panel-prev-century-btn{left:0;-webkit-user-select:none;-ms-user-select:none;user-select:none}.rc-calendar-decade-panel-prev-century-btn:after{content:"«"}.rc-calendar-decade-panel-next-century-btn{right:0;-webkit-user-select:none;-ms-user-select:none;user-select:none}.rc-calendar-decade-panel-body{flex:1 1;padding:9px 10px 10px}.rc-calendar-decade-panel-footer{border-top:1px solid #ccc;line-height:38px}.rc-calendar-decade-panel-table{border-collapse:separate;height:100%;table-layout:fixed;width:100%}.rc-calendar-decade-panel-cell{text-align:center}.rc-calendar-decade-panel-decade{background:transparent;border-radius:4px 4px;color:#666;display:block;height:36px;line-height:36px;margin:0 auto;padding:0;text-align:center}.rc-calendar-decade-panel-decade:hover{background:#fcecd9;cursor:pointer}.rc-calendar-decade-panel-selected-cell .rc-calendar-decade-panel-decade,.rc-calendar-decade-panel-selected-cell .rc-calendar-decade-panel-decade:hover{background:#f09f3f;color:#fff}.rc-calendar-decade-panel-last-century-cell .rc-calendar-decade-panel-decade,.rc-calendar-decade-panel-next-century-cell .rc-calendar-decade-panel-decade{color:rgba(0,0,0,.25);-ms-user-select:none;user-select:none;-webkit-user-select:none}.rc-calendar-range{overflow:hidden;width:502px}.rc-calendar-range-part{position:relative;width:250px}.rc-calendar-range-part .rc-calendar-time-picker{top:69px}.rc-calendar-range-part .rc-calendar-time-picker-panel-select{width:77px}.rc-calendar-range-left{float:left}.rc-calendar-range-left .rc-calendar-time-picker-panel-select:last-child{border-right:1px solid #e9e9e9}.rc-calendar-range-right{float:right}.rc-calendar-range-right .rc-calendar-time-picker-panel{left:21px}.rc-calendar-range-right .rc-calendar-time-picker-panel-select:first-child{border-left:1px solid #e9e9e9}.rc-calendar-range-middle{height:35px;line-height:35px;margin-left:-10px;position:absolute;text-align:center}.rc-calendar-range .rc-calendar-date-panel:after{clear:both;content:".";display:block;height:0;visibility:hidden}.rc-calendar-range .rc-calendar-input-wrap{height:35px}.rc-calendar-range .rc-calendar-input,.rc-calendar-range .rc-time-picker-input{height:22px;padding:1px 7px}.rc-calendar-range .rc-calendar-body,.rc-calendar-range .rc-calendar-decade-panel-body,.rc-calendar-range .rc-calendar-month-panel-body,.rc-calendar-range .rc-calendar-year-panel-body{border-bottom:1px solid #e9e9e9}.rc-calendar-range.rc-calendar-week-number{width:574px}.rc-calendar-range.rc-calendar-week-number .rc-calendar-range-part{width:286px}.rc-calendar-range.rc-calendar-week-number .rc-calendar-range-part .rc-calendar-time-picker{top:69px}.rc-calendar-range.rc-calendar-week-number .rc-calendar-range-part .rc-calendar-time-picker-panel-select{width:89px}.rc-calendar-range.rc-calendar-week-number .rc-calendar-range-right .rc-calendar-time-picker-panel{left:36px}.rc-calendar-range .rc-calendar-decade-panel,.rc-calendar-range .rc-calendar-month-panel,.rc-calendar-range .rc-calendar-year-panel{top:35px}.rc-calendar-range .rc-calendar-month-panel .rc-calendar-year-panel{top:0}.rc-calendar-range .rc-calendar-decade-panel-table,.rc-calendar-range .rc-calendar-month-panel-table,.rc-calendar-range .rc-calendar-year-panel-table{height:198px}.rc-calendar-range .rc-calendar-in-range-cell{background:#ebf4f8;border-radius:0}.rc-calendar-range-bottom{text-align:right}.rc-calendar-range .rc-calendar-footer{border-top:none;padding:0}.rc-calendar-range .rc-calendar-footer-btn{padding:10px 12px 10px 0}.rc-calendar-range .rc-calendar-ok-btn{position:static}.rc-calendar-range .rc-calendar-today-btn{float:left}.rc-calendar-full{width:275px}.rc-calendar-full-header{border-bottom:1px solid #ccc;overflow:hidden;padding:5px 10px;text-align:center;-ms-user-select:none;user-select:none;-webkit-user-select:none}.rc-calendar-full-header-month-select,.rc-calendar-full-header-year-select{float:right;margin-right:5px;width:70px}.rc-calendar-full-header-switcher{display:inline-block;float:right}.rc-calendar-full-header-switcher-normal:hover{border-color:#f09f4g;box-shadow:0 0 2px rgba(45,183,245,.8);cursor:pointer}.rc-calendar-full-header-switcher-focus{background-color:#f09f3f;border-color:#f09f3f;color:#fff}.rc-calendar-full-header-switcher>span{border:1px solid #d9d9d9;color:#666;float:left;height:28px;line-height:24px;padding:0 10px}.rc-calendar-full-header-switcher>span:first-child{border-bottom-left-radius:4px;border-right:none;border-top-left-radius:4px}.rc-calendar-full-header-switcher>span:last-child{border-bottom-right-radius:4px;border-left:none;border-top-right-radius:4px}.rc-calendar-fullscreen{width:auto}.rc-calendar-fullscreen .rc-calendar-full-header{border-bottom:none}.rc-calendar-fullscreen .rc-calendar-column-header{padding-right:12px;text-align:right}.rc-calendar-fullscreen .rc-calendar-cell{padding:0}.rc-calendar-fullscreen .rc-calendar-cell .rc-calendar-date,.rc-calendar-fullscreen .rc-calendar-month-panel-cell .rc-calendar-month-panel-month{border:none;border-radius:0;border-top:2px solid #eee;display:block;height:116px;margin:0 4px;padding-right:8px;text-align:right;width:auto}.rc-calendar-fullscreen .rc-calendar-month-panel-selected-cell .rc-calendar-month-panel-month,.rc-calendar-fullscreen .rc-calendar-selected-day .rc-calendar-date{background-color:#fcecd9;color:#666}.rc-calendar-fullscreen .rc-calendar-month-panel-selected-cell .rc-calendar-month-panel-month,.rc-calendar-fullscreen .rc-calendar-today .rc-calendar-date{border-top-color:#f09f3f;color:#f09f3f}.sf-editor-helper{background-color:#fff;border-left:1px solid #eee;flex:1 0 350px;height:100%;overflow-x:hidden;overflow-y:auto}.sf-editor-helper__header{background-color:#fafaf9;border-bottom:1px solid #eee;box-sizing:border-box;display:flex;font-size:1rem;height:50px;justify-content:space-between;line-height:50px;padding:0 10px}.sf-editor-helper__header .title{font-weight:bolder;margin-bottom:0}.sf-editor-helper__header .help-close{cursor:pointer}.sf-editor-helper__content{box-sizing:border-box;font-size:.8rem;height:calc(100% - 50px);overflow-y:auto;padding:0 15px}.sf-editor-helper .sf-editor-classify-hotkeys{color:#2c2d30;display:flex;flex-direction:column;justify-content:space-between}.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-type{border-bottom:1px solid #eee;font-weight:bolder;line-height:2;margin:10px 0 0}.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-list{list-style:none;padding:0}.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-shortcuts{border-bottom:1px solid #eee;color:#2c2d30;display:flex;justify-content:space-between;padding:10px 0}.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-shortcuts-left{line-height:30px;word-break:break-all}.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-shortcuts-right{min-width:-webkit-max-content;min-width:max-content}.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-shortcuts-right .key{background-color:#e8e8e8;border:1px solid #919191;border-radius:3px;box-shadow:0 1px 0 #919193;display:inline-block;height:30px;line-height:20px;margin-left:5px;padding:3px 5px}.rc-calendar-table{table-layout:auto}.rc-calendar-table tbody tr{height:auto}.rc-calendar-input:focus{border-color:transparent}.sf-editor-outline{border-left:1px solid #ddd;padding:.5rem 1rem .5rem 0}.sf-editor-outline .outline-h2,.sf-editor-outline .outline-h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sf-editor-outline .outline-h2{color:#364149;cursor:pointer;line-height:2.5;margin-left:20px;white-space:nowrap}.sf-editor-outline .outline-h2:hover{color:#eb8205}.sf-editor-outline .outline-h3{color:#364149;cursor:pointer;line-height:2.5;margin-left:40px;white-space:nowrap}.sf-editor-outline .outline-h3:hover{color:#eb8205}.sf-editor-outline .empty-container{margin-top:10px;text-align:center}.sf-editor-outline .outline-h2.active,.sf-editor-outline .outline-h3.active{color:#eb8205}.user-option-name{font-size:14px;font-weight:500}.user-option-email{font-size:12px}.sf-article-info-container{background-color:#f5f5f5;display:flex;flex:1 1;flex-direction:column;min-height:0;-webkit-user-select:none;user-select:none}.sf-article-info-container .nav{background-color:#fff;border-bottom:1px solid #eee;flex-shrink:0;flex-wrap:nowrap;height:36px;justify-content:space-around;min-width:125px;padding:10px 0}.sf-article-info-container .nav .nav-item{padding:0 .75rem}.sf-article-info-container .nav .nav-link{margin-right:0;padding:0 .75rem;transition:color .3s}.sf-article-info-container .nav-link{color:#888}.sf-article-info-container .nav .nav-link.active{border-bottom:0;color:#ff9800}.sf-article-info-container .nav .iconfont{font-size:.875rem;font-weight:700}.sf-article-info-container .sf-article-info-content{flex:1 1;font-size:.937rem;min-height:0;overflow:auto}.sf-article-info-container .sf-article-info-content:hover{overflow:auto}.invite-accept-icon{color:green;font-size:1.25rem;font-style:normal;line-height:1;margin-left:.5rem;vertical-align:middle}.invite-link-in-popup,.invite-link-in-popup:hover{text-decoration:none}.invite-link-icon-in-popup{color:#f89a68;cursor:pointer;font-size:.875rem;font-style:normal;line-height:1;margin-left:.5rem;vertical-align:middle}.submit-btn .loading-icon{height:21px;margin:1px auto;width:21px}.sf-markdown-help-wrapper{background-color:#fff;border-left:1px solid #eee;display:none;flex:0 0 300px;height:100%;overflow-x:hidden;overflow-y:auto;width:300px}.sf-markdown-help-wrapper.active{display:flex;flex-direction:column}.user-details-popover{background:#fff;border:1px solid #eee;border-radius:4px;box-shadow:0 0 14px rgba(0,0,0,.14);left:2px;z-index:1000}.user-details-main{border-bottom:1px solid #eee}.user-details-name{font-size:1rem;font-weight:500}.sf-slate-editor-container{display:flex;flex:1 1;flex-direction:column;min-height:0;min-width:0}.sf-slate-editor-container .sf-slate-editor-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #e5e6e8;display:flex;height:44px;justify-content:center;padding:0 10px;position:relative;-webkit-user-select:none;user-select:none;z-index:102}.sf-slate-editor-container .sf-slate-editor-content{background:#f5f5f5;display:flex;height:calc(100% - 44px);min-height:0;position:relative;width:100%}.sf-slate-editor-container .sf-slate-scroll-container{background-color:#fafaf9;height:100%;overflow:auto;width:100%}.sf-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar{height:8px;width:8px}.sf-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar-button{display:none}.sf-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar-thumb{background-color:#ceced4;border-radius:10px}.sf-slate-editor-container .sf-slate-article-container{flex:1 1;margin:0 auto;max-width:950px;min-width:400px;padding-bottom:20px;padding-top:20px;position:relative}.sf-slate-editor-container .sf-slate-editor-content .article{background-color:#fff;border:1px solid #e5e6e8;box-shadow:0 0 15px rgba(0,0,0,.06);max-width:950px;min-height:1200px;padding:40px 60px}.sf-slate-editor-container .sf-slate-editor-content .article div:first-child{outline:none}@media (max-width:991.8px){.sf-slate-editor-toolbar{justify-content:flex-start!important;overflow-x:auto;padding-right:40px!important}.sf-slate-editor-toolbar::-webkit-scrollbar{display:none}.sf-slate-editor-toolbar .sf-slate-article-info-control,.sf-slate-editor-toolbar .sf-slate-help-info-control{align-items:center;background-color:#fcfcfc;height:43px;padding:0 20px;position:fixed;right:0}.sf-slate-article-container{width:100%}.sf-slate-article-container .article{margin:20px!important;padding:20px 30px}.sf-markdown-help-wrapper{flex:0 0 250px;width:250px!important}}@media (max-width:768px){.sf-slate-editor-container .sf-slate-article-container{flex:1 1;margin:0 auto;max-width:950px;min-width:auto;padding-bottom:0;padding-top:0;position:relative}.sf-slate-article-container .article{border:0!important;margin:0!important;padding:10px 15px!important}}.share-dialog .share-dialog-content{display:flex;flex-direction:column;min-height:27rem;padding:0}@media (min-width:768px){.share-dialog .share-dialog-content{flex-direction:row}}.share-dialog-content .share-dialog-side{border-bottom:1px solid #eee;flex-basis:22%;padding:1rem}.share-dialog .nav .nav-item .nav-link{padding:.3125rem .25rem}@media (min-width:768px){.share-dialog-content .share-dialog-side{border:0;border-right:1px solid #eee;padding:12px 8px}.share-dialog-side .nav{flex-direction:column}.share-dialog-side .nav-pills .nav-item .nav-link{margin:0;padding:.3125rem .5rem;width:100%}}.share-dialog-content .share-dialog-main{display:flex;flex-basis:78%;padding:1rem}.share-dialog-content .share-dialog-main .tab-content{flex:1 1}.share-dialog-content .share-dialog-main .tab-pane{height:100%}.share-list-container{max-height:20rem;min-height:10rem;overflow:auto}#share-link-panel .share-list-container{max-height:23rem;overflow:hidden}#share-link-panel .table-real-container{height:20rem;overflow:auto}.share-dialog-content label{padding:.5rem 0 .25rem}.share-dialog-content label.form-check-label{padding:.25rem 0}.link-operation-content{margin-left:1.25rem}.link-operation-icon{color:#9aa0ac}.tip{color:grey;margin-bottom:1rem}.generate-share-link .passwd,.generate-upload-link .passwd{width:60%}.generate-share-link .permission{margin-left:2.5rem}.generate-link-btn{margin-top:1.125rem}input.expire-input{display:inline-block;height:1.5rem;margin:0 .25rem 0 1.25rem;padding:.25rem;width:4rem}.expire-input-border{border-bottom-right-radius:0;border-top-right-radius:0;height:2.375rem!important;padding:.375rem .75rem!important}.share-dialog-main .permission-editor .permission-editor__menu{width:240px}.expir-span{border:1px solid rgba(0,40,100,.12);border-bottom-right-radius:3px;border-left:none;border-top-right-radius:3px;display:inline-block;font-size:.9375rem;height:2.375rem;line-height:2.25;margin-left:-5px;min-width:2.375rem;padding:0 8px;position:absolute;text-align:center;top:4px}.custom-permission .permission-header{align-items:center;border-bottom:1px solid #efefef;display:flex;justify-content:space-between;padding:.375rem 0}.custom-permission .permission-header .back-icon{color:#999;cursor:pointer;margin-right:10px}.custom-permission .permission-name-desc{margin-top:.375rem}.custom-permission .permission-name-desc label{color:#999;font-size:14px}.custom-permission .permission-name-desc .permission-desc,.custom-permission .permission-name-desc .permission-name{flex:1 1}.custom-permission .permission-name-desc .permission-desc{margin-left:.4rem}.custom-permission .permissions-list-body{max-height:350px;overflow-y:scroll}.empty-loading-page{height:100%;position:fixed;width:100%}.page-centered{left:50%;position:fixed;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.lds-ripple{display:inline-block;height:64px;position:relative;width:64px}.lds-ripple div{-webkit-animation:lds-ripple 1s cubic-bezier(0,.2,.8,1) infinite;animation:lds-ripple 1s cubic-bezier(0,.2,.8,1) infinite;border:4px solid #eb8205;border-radius:50%;opacity:1;position:absolute}.lds-ripple div:nth-child(2){-webkit-animation-delay:-.5s;animation-delay:-.5s}@-webkit-keyframes lds-ripple{0%{height:0;left:28px;opacity:1;top:28px;width:0}to{height:58px;left:-1px;opacity:0;top:-1px;width:58px}}@keyframes lds-ripple{0%{height:0;left:28px;opacity:1;top:28px;width:0}to{height:58px;left:-1px;opacity:0;top:-1px;width:58px}}.sf-slate-viewer-scroll-container{background:#f4f4f4;display:flex;flex:1 1;min-height:0;min-width:0;overflow:auto;padding:30px 0 15px}.sf-slate-viewer-scroll-container.isWin::-webkit-scrollbar{height:8px;width:8px}.sf-slate-viewer-scroll-container.isWin::-webkit-scrollbar-button{display:none}.sf-slate-viewer-scroll-container.isWin::-webkit-scrollbar-thumb{background-color:#ceced4;border-radius:10px}.sf-slate-viewer-scroll-container .sf-slate-viewer-article-container{flex:1 1;margin:0 auto 15px}.sf-slate-viewer-scroll-container.outline .sf-slate-viewer-article-container{margin:0 340px 15px 40px}.sf-slate-viewer-scroll-container .sf-slate-viewer-outline{height:80%;overflow-y:hidden;padding-right:1rem;position:fixed;right:0;top:97px;width:300px}.sf-slate-viewer-scroll-container .sf-slate-viewer-outline:hover{overflow-y:auto}.sf-slate-viewer-scroll-container .article{background:#fff;border:1px solid #e6e6dd;margin:0 auto;max-width:950px;min-height:calc(100% - 15px);padding:40px 60px}@media (max-width:991.98px){.sf-slate-viewer-article-container{margin:0!important;padding:0 10px;width:100%}.sf-slate-viewer-outline{display:none!important}}@media (max-width:768px){.sf-slate-viewer-article-container .article{margin:0!important;padding:20px!important}}.file-chooser-container{border:1px solid rgba(0,40,100,.12);border-radius:3px;font-size:1rem;height:20rem;overflow:auto;padding:.5rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.item-toggle{color:silver;cursor:pointer;height:1.5rem;left:0;line-height:1.5rem!important;position:absolute;text-align:center;top:0;width:1.5rem}.file-chooser-container .list-view{margin-top:.25rem}.list-view-header{padding-left:1.5rem;position:relative}.list-view-header:hover{background-color:#fdefb9}.list-view-header .name{color:#eb8205}.list-view-content{list-style:none;margin:0;padding:0}.file-chooser-item{padding-left:22px;position:relative}.file-chooser-item .item-info{cursor:pointer;height:1.5rem;line-height:1.625;position:relative}.file-chooser-item .item-active{background:#f3af7d!important;border-radius:2px;box-shadow:inset 0 0 1px #999;color:#fff}.file-chooser-item .item-info:hover{background:#fdefb9;border-radius:2px;box-shadow:inset 0 0 1px #999}.file-chooser-item .item-info .name{flex:1 1}.file-chooser-item .item-active .icon{color:#fff!important}.file-chooser-search-input{position:relative}.file-chooser-search-input .search-control{position:absolute;right:.7rem;top:.5rem}.file-chooser-search-input .search-input{width:100%}.file-chooser-search-container{border:1px solid #eee;height:20rem;overflow:auto;padding:10px;position:relative}.file-chooser-search-close{position:absolute;right:-.5rem;top:-.5rem}.searched-active{background:#f3af7d!important;border-radius:2px;box-shadow:inset 0 0 1px #999}.searched-active td{color:#fff}.searched-active .icon{color:#fff!important}.select-open-repo{background:#fdefb9}.file-chooser-table td{border-bottom:1px solid transparent}.file-chooser-item .item-info .item-text{font-size:15px;line-height:24px;overflow:hidden;padding-left:2.8rem;text-overflow:ellipsis;white-space:nowrap}.file-chooser-item .item-info .item-left-icon{align-items:center;display:flex;left:0;padding-left:1.5rem;position:absolute;top:0}#wrapper{height:100%}.shared-file-view-md{height:100%;overflow-y:hidden}.shared-file-view-md-header{background:#f4f4f7;border-bottom:1px solid #e8e8e8;height:53px;justify-content:space-between;padding:8px 16px 4px}.shared-file-view-md-main{height:calc(100% - 53px)}.shared-file-view-head{align-items:center;background:#fff;display:flex;height:60px;justify-content:space-between;margin:0 auto;width:950px}.shared-file-view-head h2{color:#222;font-size:1.4em;font-weight:400;margin-bottom:0}.shared-file-view-head .share-by{margin:0}.shared-file-view-body{background:#f4f4f4;border:1px solid #ededed;height:calc(100% - 60px);overflow:auto;padding:30px 0 15px}.shared-file-view-body.md-view{display:flex;min-height:0;padding:0}.shared-file-view-body .sf-slate-viewer-outline{top:145px!important}@media (max-width:991.98px){.shared-file-view-head{padding:10px 20px;width:100%}}.dialog-operation{align-items:center;display:flex}.dialog-operation .file-internal-link{color:#999;cursor:pointer;font-size:12px;font-weight:700;margin-left:.5rem;margin-top:2px}.dialog-operation .file-internal-link:hover{color:#333}.sf-simple-slate-editor-container{display:flex;flex:1 1;flex-direction:column;min-height:0;min-width:0}.sf-simple-slate-editor-container .sf-slate-editor-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #e5e6e8;display:flex;height:44px;justify-content:flex-start;padding:0 10px;position:relative;-webkit-user-select:none;user-select:none;z-index:102}.sf-simple-slate-editor-container .sf-slate-editor-content{background:#f5f5f5;display:flex;height:calc(100% - 44px);min-height:0;position:relative;width:100%}.sf-simple-slate-editor-container .sf-slate-scroll-container{height:100%;overflow:auto;width:100%}.sf-simple-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar{height:8px;width:8px}.sf-simple-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar-button{display:none}.sf-simple-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar-thumb{background-color:#ceced4;border-radius:10px}.sf-simple-slate-editor-container .sf-slate-article-container{height:100%;overflow:auto;width:100%}.sf-simple-slate-editor-container .sf-slate-editor-content .article{background-color:#fff;border:none;margin:0;padding:10px}.sf-simple-slate-editor-container .sf-slate-editor-content .article div:first-child{outline:none}.file-tag-list .file-tag-item{align-items:center;border-radius:10px;display:flex;margin:.25rem 0;max-width:180px;padding:0 .5rem;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.file-tag-list .file-tag-item .tag-name{color:#fff;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-container{border-left:1px solid #e8e8e8;display:flex;flex:1 1;flex-direction:column}.detail-header{align-items:center;background-color:#f9f9f9;border-bottom:1px solid #e8e8e8;display:flex;height:40px;justify-content:center;line-height:2.5rem;position:relative}.detail-header .detail-control{color:#b9b9b9;font-size:16px;padding-left:.5rem}.detail-header .detail-control:hover{color:#888}.detail-header .detail-title{align-items:center;display:flex;flex:1 1;justify-content:center;margin-left:.25rem;width:0}.detail-header .detail-title .name{color:#322;font-size:1rem;line-height:1.5rem;margin:0 .5rem 0 .25rem;vertical-align:middle}.detail-body{display:flex;flex:1 1;flex-direction:column;overflow-x:hidden;overflow-y:auto}.dirent-info .img{align-items:center;display:flex;height:10rem;justify-content:center;padding:.5rem 0}.dirent-info .img .thumbnail{display:inline-block;max-height:100%;max-width:calc(100% - 4px)}.dirent-table-container{display:flex;padding:10px 20px 20px}.dirent-table-container tr{border:none}.dirent-table-container table{flex:1 1}.dirent-table-container td,.dirent-table-container th{border:none;padding:5px 3px}.dirent-table-container th{color:#9c9c9c;font-size:13px;font-weight:400;text-align:left}.dirent-table-container td{color:#333;font-size:14px;word-break:break-all}.dirent-table-container .file-tag-container th{list-style:none;padding-top:8px;vertical-align:top}.dirent-table-container .file-tag-container .tag-list{list-style:none}.dirent-table-container .seafile-multicolor-icon.seafile-multicolor-icon-tag{cursor:pointer;height:20px;width:20px}.file-related-files th{vertical-align:top}.file-related-files td i{padding:0}.file-related-files td ul{list-style:none;max-height:100px;overflow-y:scroll;white-space:nowrap}.file-related-files td ul li{margin-bottom:5px;overflow-x:hidden;text-overflow:ellipsis}.file-related-files ul li a,.list-related-file-table tr td a{color:#333}.list-related-file-body{max-height:500px;min-height:200px;overflow-y:scroll}.no-related-file{text-align:center}.sf-add-related-file .alert{margin:.5rem}.sf-add-related-file .related-file-subtitle{display:inline-block;margin-bottom:.5rem}.detail-container .nav-item .nav-link,.detail-container .nav-item .nav-link i{margin:0 auto}.detail-container .edit-file-extra-attributes-btn{background-color:#f0f0f0;border-radius:3px;color:#929292;cursor:pointer;font-size:14px;height:28px;line-height:28px;max-width:100%;min-width:80px;padding:0 10px;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.detail-container .edit-file-extra-attributes-btn:hover{background-color:#dbdbdb;color:#666;cursor:pointer}.file-uploader-container{display:flex}.file-uploader{bottom:99999px;position:fixed}.uploader-list-view{background-color:#fff;border:1px solid #ddd;border-radius:3px;bottom:1px;box-shadow:0 0 6px #ddd;display:flex;flex-direction:column;height:20rem;position:fixed;right:1px;width:35rem;z-index:1050}.uploader-list-header{background-color:#f0f0f0;color:#322;display:flex;font-size:1rem;justify-content:space-between;line-height:1.5;min-height:2.25rem;padding:.375rem .625rem}.uploader-list-header .uploader-options span{color:#b8b8b8;cursor:pointer;display:inline-block;font-size:18px;margin-left:.25rem}.uploader-list-content{background-color:#fff;overflow:auto;padding:0 1rem 1.25rem}.file-upload-item{height:44px}.upload-progress .progress-container{height:24px;padding:4px 0}.upload-progress .progress{height:5px;width:80%}.upload-progress .progress .progress-bar{color:#e83}.upload-progress .progress-text{color:#666;font-size:12px;line-height:12px;margin-top:2px}.upload-operation .saving{word-wrap:break-word;color:#ee8204}.disabled-link{color:#999}#wrapper,.wrapper{display:flex;flex-direction:column;height:100%;width:100%}#header{display:flex}#main{flex:1 1;min-height:0}#main,.side-panel{display:flex;overflow:hidden}.side-panel{flex:0 0 22%;flex-direction:column}.main-panel{display:flex;flex:1 0 78%;flex-direction:column}@media (max-width:767px){.side-panel{background:#f8f8f8;height:100%;left:-300px;max-width:calc(100% - 40px);position:fixed;transition:all .3s ease;width:300px;z-index:1031}}.main-panel-north,.side-panel-north{background:#f4f4f7;border-bottom:1px solid #e8e8e8;display:flex;flex-shrink:0;padding:.5rem 1rem;position:relative;z-index:100}@media (max-width:767px){.side-panel-north{border-right:1px solid #eee}.main-panel-north{padding-bottom:.25rem}}.main-panel-center,.side-panel-center{display:flex;flex:1 1;flex-direction:column;min-height:0;position:relative}.side-panel-center,.side-panel-footer{border-right:1px solid #eee;min-height:0}.cur-view-container{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:hidden}.cur-view-path{align-items:center;background:#f9f9f9;display:flex;flex-shrink:0;justify-content:space-between;max-height:40px;padding:8px 16px;position:relative}.cur-view-path:after{border-bottom:1px solid #e8e8e8;bottom:0;content:"";left:16px;position:absolute;right:16px}.cur-view-content{display:flex;flex:1 1;flex-direction:column;min-height:0;overflow:auto;padding:0 1rem}.table-container{flex:1 1;padding:0 1rem 10rem;position:relative}.table-drop-active:before{border:1px solid #45aaf2;content:"";display:block;height:100%;left:0;position:absolute;width:100%;z-index:-1}.cur-view-content .article{padding:40px}.cur-view-content .hd{background:#f2f2f2;border-radius:2px;height:48px;margin-bottom:.5em;padding:9px 10px}.cur-view-content .tip{font-size:14px}.cur-view-detail{-webkit-animation:move .5s ease-in-out 1;animation:move .5s ease-in-out 1;background-color:#fff;box-shadow:-1px 0 3px 0 #ccc;display:block;height:100%;position:absolute;right:0;width:300px;z-index:50}@-webkit-keyframes move{0%{opacity:.5;right:-500px}to{opacity:1;right:0}}@keyframes move{0%{opacity:.5;right:-500px}to{opacity:1;right:0}}.cur-view-detail .detail-container{height:100%}.reach-router,div[tabindex="-1"][role=group]{display:flex;flex:1 1;flex-direction:column;min-height:0}.header{align-items:center;background-color:#fff;border-bottom:1px solid #e5e5e5;box-shadow:0 3px 2px -2px hsla(0,0%,78%,.15);display:flex;flex-shrink:0;justify-content:space-between;padding:.625rem}.header .cur-file-info{display:flex;margin-left:.5rem}.header .info-item{align-items:center;display:flex;font-size:1.2rem;font-weight:700;justify-content:center;margin-right:.5rem}.header .file-copywriting{color:#999;font-size:1rem;font-weight:400;margin-left:.5rem}.header .file-feature{background-color:#fbcb09;color:#fff;font-size:1.8rem;height:2.9375rem;width:2.9375rem}.header .file-operation-btn{margin-right:.25rem}.review{padding:0}.review .cur-file-info{margin:0}.review .file-feature{font-size:3rem;height:4.1875rem;width:4.1875rem}.review-state{border:1px solid transparent;border-radius:3px;margin:auto .5rem;position:relative}.review-state-finished{background-color:#dff1cc;border-color:#d2ecb8;color:#316100}.review-state-closed{background-color:#f5d2d2;border-color:#f1c1c0;color:#6b1110}.review-state-closed:focus,.review-state-finished:focus{box-shadow:0 0 0 0}img:not([src]),img[src=""]{opacity:0}.cur-view-path.draft-review-nav,.cur-view-path.share-upload-nav{padding:0 1rem}.cur-view-container .fa-star.fas{color:#999}.path-container{align-items:center;display:flex;max-width:80%;word-break:keep-all}.path-container a,.path-container span{flex-shrink:1;max-height:50px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.path-container span:first-child,.path-container span:last-child{flex-shrink:0}.path-container span.path-file-name,.path-container span.path-repo-name{flex-shrink:1}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.vjs-modal-dialog .vjs-modal-dialog-content{height:100%;left:0;position:absolute;top:0;width:100%}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.vjs-button>.vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;font-style:normal;font-weight:400;src:url(data:application/font-woff;charset=utf-8;base64,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) format("woff")}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder,.vjs-icon-play{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder:before,.vjs-icon-play:before{content:"\f101"}.vjs-icon-play-circle{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-play-circle:before{content:"\f102"}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder,.vjs-icon-pause{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before,.vjs-icon-pause:before{content:"\f103"}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder,.vjs-icon-volume-mute{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before,.vjs-icon-volume-mute:before{content:"\f104"}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder,.vjs-icon-volume-low{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before,.vjs-icon-volume-low:before{content:"\f105"}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder,.vjs-icon-volume-mid{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before,.vjs-icon-volume-mid:before{content:"\f106"}.video-js .vjs-mute-control .vjs-icon-placeholder,.vjs-icon-volume-high{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-mute-control .vjs-icon-placeholder:before,.vjs-icon-volume-high:before{content:"\f107"}.video-js .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-enter{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-enter:before{content:"\f108"}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-exit{font-family:VideoJS;font-style:normal;font-weight:400}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-exit:before{content:"\f109"}.vjs-icon-square{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-square:before{content:"\f10a"}.vjs-icon-spinner{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-spinner:before{content:"\f10b"}.video-js .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subtitles-button .vjs-icon-placeholder,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-subtitles{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subtitles-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-subtitles:before{content:"\f10c"}.video-js .vjs-captions-button .vjs-icon-placeholder,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-captions{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-captions-button .vjs-icon-placeholder:before,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-captions:before{content:"\f10d"}.video-js .vjs-chapters-button .vjs-icon-placeholder,.vjs-icon-chapters{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-chapters-button .vjs-icon-placeholder:before,.vjs-icon-chapters:before{content:"\f10e"}.vjs-icon-share{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-share:before{content:"\f10f"}.vjs-icon-cog{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-cog:before{content:"\f110"}.video-js .vjs-play-progress,.video-js .vjs-volume-level,.vjs-icon-circle,.vjs-seek-to-live-control .vjs-icon-placeholder{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-play-progress:before,.video-js .vjs-volume-level:before,.vjs-icon-circle:before,.vjs-seek-to-live-control .vjs-icon-placeholder:before{content:"\f111"}.vjs-icon-circle-outline{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-circle-outline:before{content:"\f112"}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-circle-inner-circle:before{content:"\f113"}.vjs-icon-hd{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-hd:before{content:"\f114"}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder,.vjs-icon-cancel{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before,.vjs-icon-cancel:before{content:"\f115"}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder,.vjs-icon-replay{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before,.vjs-icon-replay:before{content:"\f116"}.vjs-icon-facebook{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-facebook:before{content:"\f117"}.vjs-icon-gplus{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-gplus:before{content:"\f118"}.vjs-icon-linkedin{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-linkedin:before{content:"\f119"}.vjs-icon-twitter{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-twitter:before{content:"\f11a"}.vjs-icon-tumblr{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-tumblr:before{content:"\f11b"}.vjs-icon-pinterest{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-pinterest:before{content:"\f11c"}.video-js .vjs-descriptions-button .vjs-icon-placeholder,.vjs-icon-audio-description{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-descriptions-button .vjs-icon-placeholder:before,.vjs-icon-audio-description:before{content:"\f11d"}.video-js .vjs-audio-button .vjs-icon-placeholder,.vjs-icon-audio{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-audio-button .vjs-icon-placeholder:before,.vjs-icon-audio:before{content:"\f11e"}.vjs-icon-next-item{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-next-item:before{content:"\f11f"}.vjs-icon-previous-item{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-previous-item:before{content:"\f120"}.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder,.vjs-icon-picture-in-picture-enter{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before,.vjs-icon-picture-in-picture-enter:before{content:"\f121"}.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder,.vjs-icon-picture-in-picture-exit{font-family:VideoJS;font-style:normal;font-weight:400}.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before,.vjs-icon-picture-in-picture-exit:before{content:"\f122"}.video-js{background-color:#000;box-sizing:border-box;color:#fff;display:block;font-family:Arial,Helvetica,sans-serif;font-size:10px;font-style:normal;font-weight:400;line-height:1;padding:0;position:relative;vertical-align:top;word-break:normal}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{height:100%!important;width:100%!important}.video-js[tabindex="-1"]{outline:none}.video-js *,.video-js :after,.video-js :before{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin:0}.video-js.vjs-1-1,.video-js.vjs-16-9,.video-js.vjs-4-3,.video-js.vjs-9-16,.video-js.vjs-fluid{max-width:100%;width:100%}.video-js.vjs-1-1:not(.vjs-audio-only-mode),.video-js.vjs-16-9:not(.vjs-audio-only-mode),.video-js.vjs-4-3:not(.vjs-audio-only-mode),.video-js.vjs-9-16:not(.vjs-audio-only-mode),.video-js.vjs-fluid:not(.vjs-audio-only-mode){height:0}.video-js.vjs-16-9:not(.vjs-audio-only-mode){padding-top:56.25%}.video-js.vjs-4-3:not(.vjs-audio-only-mode){padding-top:75%}.video-js.vjs-9-16:not(.vjs-audio-only-mode){padding-top:177.7777777778%}.video-js.vjs-1-1:not(.vjs-audio-only-mode){padding-top:100%}.video-js .vjs-tech,.video-js.vjs-fill:not(.vjs-audio-only-mode){height:100%;width:100%}.video-js .vjs-tech{left:0;position:absolute;top:0}.video-js.vjs-audio-only-mode .vjs-tech{display:none}body.vjs-full-window{height:100%;margin:0;padding:0}.vjs-full-window .video-js.vjs-fullscreen{bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;z-index:1000}.video-js.vjs-fullscreen:not(.vjs-ios-native-fs){height:100%!important;padding-top:0!important;width:100%!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-hidden{display:none!important}.vjs-disabled{cursor:default;opacity:.5}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1!important;visibility:visible!important}.vjs-no-js{background-color:#000;color:#fff;font-family:Arial,Helvetica,sans-serif;font-size:18px;height:150px;margin:0 auto;padding:20px;text-align:center;width:300px}.vjs-no-js a,.vjs-no-js a:visited{color:#66a8cc}.video-js .vjs-big-play-button{background-color:#2b333f;background-color:rgba(43,51,63,.7);border:.06666em solid #fff;border-radius:.3em;cursor:pointer;display:block;font-size:3em;height:1.63332em;left:10px;line-height:1.5em;opacity:1;padding:0;position:absolute;top:10px;transition:all .4s;width:3em}.vjs-big-play-centered .vjs-big-play-button{left:50%;margin-left:-1.5em;margin-top:-.81666em;top:50%}.video-js .vjs-big-play-button:focus,.video-js:hover .vjs-big-play-button{background-color:#73859f;background-color:rgba(115,133,159,.5);border-color:#fff;transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-error .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button{display:none}.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button{display:block}.video-js button{-webkit-appearance:none;appearance:none;background:none;border:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;text-decoration:none;text-transform:none;transition:none}.vjs-control .vjs-button{height:100%;width:100%}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:linear-gradient(180deg,rgba(0,0,0,.8),hsla(0,0%,100%,0));overflow:auto}.video-js .vjs-modal-dialog>*{box-sizing:border-box}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1}.vjs-menu-button{cursor:pointer}.vjs-menu-button.vjs-disabled{cursor:default}.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu{display:none}.vjs-menu .vjs-menu-content{display:block;font-family:Arial,Helvetica,sans-serif;margin:0;overflow:auto;padding:0}.vjs-menu .vjs-menu-content>*{box-sizing:border-box}.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{font-size:1.2em;line-height:1.4em;list-style:none;margin:0;padding:.2em 0;text-align:center;text-transform:lowercase}.js-focus-visible .vjs-menu li.vjs-menu-item:hover,.vjs-menu li.vjs-menu-item:focus,.vjs-menu li.vjs-menu-item:hover{background-color:#73859f;background-color:rgba(115,133,159,.5)}.js-focus-visible .vjs-menu li.vjs-selected:hover,.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2b333f}.js-focus-visible .vjs-menu :not(.vjs-selected):focus:not(.focus-visible),.video-js .vjs-menu :not(.vjs-selected):focus:not(:focus-visible){background:none}.vjs-menu li.vjs-menu-title{cursor:default;font-size:1em;font-weight:700;line-height:2em;margin:0 0 .3em;padding:0;text-align:center;text-transform:uppercase}.vjs-menu-button-popup .vjs-menu{border-top-color:rgba(43,51,63,.7);bottom:0;display:none;height:0;left:-3em;margin-bottom:1.5em;position:absolute;width:10em}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2b333f;background-color:rgba(43,51,63,.7);bottom:1.5em;max-height:15em;position:absolute;width:100%}.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:5em}.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:10em}.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:14em}.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:25em}.vjs-menu-button-popup .vjs-menu.vjs-lock-showing,.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu{display:block}.video-js .vjs-menu-button-inline{overflow:hidden;transition:all .4s}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline:hover,.video-js.vjs-no-flex .vjs-menu-button-inline{width:12em}.vjs-menu-button-inline .vjs-menu{height:100%;left:4em;margin:0;opacity:0;padding:0;position:absolute;top:0;transition:all .4s;width:auto}.vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline:hover .vjs-menu{display:block;opacity:1}.vjs-no-flex .vjs-menu-button-inline .vjs-menu{display:block;opacity:1;position:relative;width:auto}.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu{width:auto}.vjs-menu-button-inline .vjs-menu-content{height:100%;margin:0;overflow:hidden;width:auto}.video-js .vjs-control-bar{background-color:#2b333f;background-color:rgba(43,51,63,.7);bottom:0;display:none;height:3em;left:0;position:absolute;right:0;width:100%}.vjs-audio-only-mode .vjs-control-bar,.vjs-has-started .vjs-control-bar{display:flex;opacity:1;transition:visibility .1s,opacity .1s;visibility:visible}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:0;pointer-events:none;transition:visibility 1s,opacity 1s;visibility:visible}.vjs-controls-disabled .vjs-control-bar,.vjs-error .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar{display:none!important}.vjs-audio-only-mode.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar,.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;pointer-events:auto;visibility:visible}.vjs-has-started.vjs-no-flex .vjs-control-bar{display:table}.video-js .vjs-control{flex:none;height:100%;margin:0;padding:0;position:relative;text-align:center;width:4em}.video-js .vjs-control.vjs-visible-text{padding-left:1em;padding-right:1em;width:auto}.vjs-button>.vjs-icon-placeholder:before{font-size:1.8em;line-height:1.67}.vjs-button>.vjs-icon-placeholder{display:block}.video-js .vjs-control:focus,.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before{text-shadow:0 0 1em #fff}.video-js :not(.vjs-visible-text)>.vjs-control-text{clip:rect(0 0 0 0);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-no-flex .vjs-control{display:table-cell;vertical-align:middle}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{align-items:center;cursor:pointer;display:flex;flex:auto;min-width:4em;touch-action:none}.video-js .vjs-progress-control.disabled{cursor:default}.vjs-live .vjs-progress-control{display:none}.vjs-liveui .vjs-progress-control{align-items:center;display:flex}.vjs-no-flex .vjs-progress-control{width:auto}.video-js .vjs-progress-holder{flex:auto;height:.3em;transition:all .2s}.video-js .vjs-progress-control .vjs-progress-holder{margin:0 10px}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.6666666667em}.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled{font-size:1em}.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div,.video-js .vjs-progress-holder .vjs-play-progress{display:block;height:100%;margin:0;padding:0;position:absolute;width:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{font-size:.9em;position:absolute;right:-.5em;top:-.3333333333em;z-index:1}.video-js .vjs-load-progress{background:rgba(115,133,159,.5)}.video-js .vjs-load-progress div{background:rgba(115,133,159,.75)}.video-js .vjs-time-tooltip{background-color:#fff;background-color:hsla(0,0%,100%,.8);border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-progress-holder:focus .vjs-time-tooltip{display:none}.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,.video-js .vjs-progress-control:hover .vjs-time-tooltip{display:block;font-size:.6em;visibility:visible}.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip{font-size:1em}.video-js .vjs-progress-control .vjs-mouse-display{background-color:#000;display:none;height:100%;position:absolute;width:1px;z-index:1}.vjs-no-flex .vjs-progress-control .vjs-mouse-display{z-index:0}.video-js .vjs-progress-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display{opacity:0;transition:visibility 1s,opacity 1s;visibility:hidden}.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-time-tooltip{background-color:#000;background-color:rgba(0,0,0,.8);color:#fff}.video-js .vjs-slider{-webkit-touch-callout:none;background-color:#73859f;background-color:rgba(115,133,159,.5);cursor:pointer;margin:0 .45em;padding:0;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.video-js .vjs-slider.disabled{cursor:default}.video-js .vjs-slider:focus{box-shadow:0 0 1em #fff;text-shadow:0 0 1em #fff}.video-js .vjs-mute-control{cursor:pointer;flex:none}.video-js .vjs-volume-control{cursor:pointer;display:flex;margin-right:1em}.video-js .vjs-volume-control.vjs-volume-horizontal{width:5em}.video-js .vjs-volume-panel .vjs-volume-control{height:1px;margin-left:-1px;opacity:0;visibility:visible;width:1px}.video-js .vjs-volume-panel{transition:width 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active,.video-js .vjs-volume-panel .vjs-volume-control:active,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control,.video-js .vjs-volume-panel:active .vjs-volume-control,.video-js .vjs-volume-panel:focus .vjs-volume-control{opacity:1;position:relative;transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;visibility:visible}.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal{height:3em;margin-right:0;width:5em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical{left:-3.5em;transition:left 0s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active{transition:width .1s;width:10em}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only{width:4em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{height:8em;left:-3000em;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;width:3em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s}.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{height:3em;opacity:1;position:relative;transition:none;visibility:visible;width:5em}.video-js.vjs-no-flex .vjs-volume-control.vjs-volume-vertical,.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{bottom:3em;left:.5em;position:absolute}.video-js .vjs-volume-panel{display:flex}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{height:.3em;width:5em}.vjs-volume-bar.vjs-slider-vertical{height:5em;margin:1.35em auto;width:.3em}.video-js .vjs-volume-level{background-color:#fff;bottom:0;left:0;position:absolute}.video-js .vjs-volume-level:before{font-size:.9em;position:absolute;z-index:1}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{left:-.3em;top:-.5em;z-index:1}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{right:-.5em;top:-.3em}.video-js .vjs-volume-panel.vjs-volume-panel-vertical{width:4em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-volume-vertical{background-color:#2b333f;background-color:rgba(43,51,63,.7);bottom:8em;height:8em;width:3em}.video-js .vjs-volume-horizontal .vjs-menu{left:-2em}.video-js .vjs-volume-tooltip{background-color:#fff;background-color:hsla(0,0%,100%,.8);border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip,.video-js .vjs-volume-control:hover .vjs-volume-tooltip{display:block;font-size:1em;visibility:visible}.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip,.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip{left:1em;top:-12px}.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip{font-size:1em}.video-js .vjs-volume-control .vjs-mouse-display{background-color:#000;display:none;height:1px;position:absolute;width:100%;z-index:1}.video-js .vjs-volume-horizontal .vjs-mouse-display{height:100%;width:1px}.vjs-no-flex .vjs-volume-control .vjs-mouse-display{z-index:0}.video-js .vjs-volume-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display{opacity:0;transition:visibility 1s,opacity 1s;visibility:hidden}.video-js.vjs-user-inactive.vjs-no-flex .vjs-volume-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-volume-tooltip{background-color:#000;background-color:rgba(0,0,0,.8);color:#fff}.vjs-poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;bottom:0;cursor:pointer;display:inline-block;height:100%;left:0;margin:0;padding:0;position:absolute;right:0;top:0;vertical-align:middle}.vjs-has-started .vjs-poster,.vjs-using-native-controls .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster,.vjs-has-started.vjs-audio-poster-mode .vjs-poster{display:block}.video-js .vjs-live-control{align-items:flex-start;display:flex;flex:auto;font-size:1em;line-height:3em}.vjs-no-flex .vjs-live-control{display:table-cell;text-align:left;width:auto}.video-js.vjs-liveui .vjs-live-control,.video-js:not(.vjs-live) .vjs-live-control{display:none}.video-js .vjs-seek-to-live-control{align-items:center;cursor:pointer;display:inline-flex;flex:none;font-size:1em;height:100%;line-height:3em;min-width:4em;padding-left:.5em;padding-right:.5em;width:auto}.vjs-no-flex .vjs-seek-to-live-control{display:table-cell;text-align:left;width:auto}.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,.video-js:not(.vjs-live) .vjs-seek-to-live-control{display:none}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge{cursor:auto}.vjs-seek-to-live-control .vjs-icon-placeholder{color:#888;margin-right:.5em}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder{color:red}.video-js .vjs-time-control{flex:none;font-size:1em;line-height:3em;min-width:2em;padding-left:1em;padding-right:1em;width:auto}.video-js .vjs-current-time,.video-js .vjs-duration,.vjs-live .vjs-time-control,.vjs-no-flex .vjs-current-time,.vjs-no-flex .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-live .vjs-time-divider{display:none}.video-js .vjs-play-control{cursor:pointer}.video-js .vjs-play-control .vjs-icon-placeholder{flex:none}.vjs-text-track-display{bottom:3em;left:0;pointer-events:none;position:absolute;right:0;top:0}.video-js.vjs-controls-disabled .vjs-text-track-display,.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;margin-bottom:.1em;text-align:center}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{-webkit-transform:translateY(-3em);transform:translateY(-3em)}.video-js.vjs-controls-disabled video::-webkit-media-text-track-display,.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{-webkit-transform:translateY(-1.5em);transform:translateY(-1.5em)}.video-js .vjs-picture-in-picture-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-picture-in-picture-control{display:none}.video-js .vjs-fullscreen-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-fullscreen-control{display:none}.vjs-playback-rate .vjs-playback-rate-value,.vjs-playback-rate>.vjs-menu-button{height:100%;left:0;position:absolute;top:0;width:100%}.vjs-playback-rate .vjs-playback-rate-value{font-size:1.5em;line-height:2;pointer-events:none;text-align:center}.vjs-playback-rate .vjs-menu{left:0;width:4em}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-error .vjs-error-display:before{color:#fff;content:"X";font-family:Arial,Helvetica,sans-serif;font-size:4em;left:0;line-height:1;margin-top:-.5em;position:absolute;text-align:center;text-shadow:.05em .05em .1em #000;top:50%;vertical-align:middle;width:100%}.vjs-loading-spinner{background-clip:padding-box;border:6px solid rgba(43,51,63,.7);border-radius:25px;box-sizing:border-box;display:none;height:50px;left:50%;margin:-25px 0 0 -25px;opacity:.85;position:absolute;text-align:left;top:50%;visibility:hidden;width:50px}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{-webkit-animation:vjs-spinner-show 0s linear .3s forwards;animation:vjs-spinner-show 0s linear .3s forwards;display:block}.vjs-loading-spinner:after,.vjs-loading-spinner:before{border:inherit;border-color:#fff transparent transparent;border-radius:inherit;box-sizing:inherit;content:"";height:inherit;margin:-6px;opacity:1;position:absolute;width:inherit}.vjs-seeking .vjs-loading-spinner:after,.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before{-webkit-animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite;animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{-webkit-animation-delay:.44s;animation-delay:.44s;border-top-color:#fff}@keyframes vjs-spinner-show{to{visibility:visible}}@-webkit-keyframes vjs-spinner-show{to{visibility:visible}}@keyframes vjs-spinner-spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes vjs-spinner-spin{to{-webkit-transform:rotate(1turn)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}@-webkit-keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}.video-js.vjs-audio-only-mode .vjs-captions-button{display:none}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js.vjs-audio-only-mode .vjs-descriptions-button{display:none}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder{display:inline-block;margin-bottom:-.1em;vertical-align:middle}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{content:"";font-family:VideoJS;font-size:1.5em;line-height:inherit}.video-js.vjs-audio-only-mode .vjs-subs-caps-button{display:none}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder{display:inline-block;margin-bottom:-.1em;vertical-align:middle}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{content:" ";font-family:VideoJS;font-size:1.5em;line-height:inherit}.video-js.vjs-layout-small .vjs-current-time,.video-js.vjs-layout-small .vjs-duration,.video-js.vjs-layout-small .vjs-playback-rate,.video-js.vjs-layout-small .vjs-remaining-time,.video-js.vjs-layout-small .vjs-time-divider,.video-js.vjs-layout-small .vjs-volume-control,.video-js.vjs-layout-tiny .vjs-current-time,.video-js.vjs-layout-tiny .vjs-duration,.video-js.vjs-layout-tiny .vjs-playback-rate,.video-js.vjs-layout-tiny .vjs-remaining-time,.video-js.vjs-layout-tiny .vjs-time-divider,.video-js.vjs-layout-tiny .vjs-volume-control,.video-js.vjs-layout-x-small .vjs-current-time,.video-js.vjs-layout-x-small .vjs-duration,.video-js.vjs-layout-x-small .vjs-playback-rate,.video-js.vjs-layout-x-small .vjs-remaining-time,.video-js.vjs-layout-x-small .vjs-time-divider,.video-js.vjs-layout-x-small .vjs-volume-control{display:none}.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover{width:auto}.video-js.vjs-layout-tiny .vjs-progress-control,.video-js.vjs-layout-x-small .vjs-progress-control{display:none}.video-js.vjs-layout-x-small .vjs-custom-control-spacer{display:block;flex:auto}.video-js.vjs-layout-x-small.vjs-no-flex .vjs-custom-control-spacer{width:auto}.vjs-modal-dialog.vjs-text-track-settings{background-color:#2b333f;background-color:rgba(43,51,63,.75);color:#fff;height:70%}.vjs-text-track-settings .vjs-modal-dialog-content{display:table}.vjs-text-track-settings .vjs-track-settings-colors,.vjs-text-track-settings .vjs-track-settings-controls,.vjs-text-track-settings .vjs-track-settings-font{display:table-cell}.vjs-text-track-settings .vjs-track-settings-controls{text-align:right;vertical-align:bottom}@supports (display:grid){.vjs-text-track-settings .vjs-modal-dialog-content{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;padding:20px 24px 0}.vjs-track-settings-controls .vjs-default-button{margin-bottom:20px}.vjs-text-track-settings .vjs-track-settings-controls{grid-column:1/-1}.vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content{grid-template-columns:1fr}}.vjs-track-setting>select{margin-bottom:.5em;margin-right:1em}.vjs-text-track-settings fieldset{border:none;margin:5px;padding:3px}.vjs-text-track-settings fieldset span{display:inline-block}.vjs-text-track-settings fieldset span>select{max-width:7.3em}.vjs-text-track-settings legend{color:#fff;margin:0 0 5px}.vjs-text-track-settings .vjs-label{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);border:0;display:block;height:1px;margin:0 0 5px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-track-settings-controls button:active,.vjs-track-settings-controls button:focus{background-image:linear-gradient(0deg,#fff 88%,#73859f);outline-style:solid;outline-width:medium}.vjs-track-settings-controls button:hover{color:rgba(43,51,63,.75)}.vjs-track-settings-controls button{background-color:#fff;background-image:linear-gradient(-180deg,#fff 88%,#73859f);border-radius:2px;color:#2b333f;cursor:pointer}.vjs-track-settings-controls .vjs-default-button{margin-right:1em}@media print{.video-js>:not(.vjs-tech):not(.vjs-poster){visibility:hidden}}.vjs-resize-manager{border:none;height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1000}.js-focus-visible .video-js :focus:not(.focus-visible){outline:none}.video-js :focus:not(:focus-visible){outline:none}.video-js{max-height:100%;max-width:800px}.audio-file-view .video-js,.video-js{margin:0 auto;width:calc(100% - 40px)}.audio-file-view .video-js{height:3em;max-width:500px}.audio-file-view .video-js .vjs-fullscreen-control{display:none} +/*# sourceMappingURL=commons.44d6cf61.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/commons.44d6cf61.css.map b/media/assets/frontend/static/css/commons.44d6cf61.css.map new file mode 100644 index 00000000000..1d2e05d001d --- /dev/null +++ b/media/assets/frontend/static/css/commons.44d6cf61.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/commons.44d6cf61.css","mappings":"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aAAc,CAId,WAAY,CAGZ,gBAAiB,CANjB,aAAc,CAId,SAAU,CAGV,iBACF,CACA,uCACE,kBAAmB,CACnB,cACF,CAKA,wJACE,kBAAmB,CACnB,UACF,CACA,0JAME,qBAA0B,CAHzB,oBAAqB,CACjB,gBAAiB,CACtB,wBAEF,CACA,mBAEE,eAAgB,CADhB,WAEF,CACA,wBAEE,iBAAkB,CADlB,WAEF,CACA,iDACE,QACF,CACA,8DACE,UACF,CACA,wBACE,UACF,CACA,yEACE,8BACF,CACA,yBACE,WACF,CACA,wDACE,SACF,CACA,2EACE,6BACF,CACA,0BAIE,WAAY,CACZ,gBAAiB,CAHjB,iBAAkB,CADlB,iBAAkB,CAElB,iBAGF,CACA,iDAIE,UAAW,CAHX,WAAY,CACZ,aAAc,CACd,QAAS,CAET,iBACF,CACA,2CACE,WACF,CACA,+EAGE,WAAY,CADZ,eAEF,CACA,wLAIE,+BACF,CACA,2CACE,WACF,CACA,mEACE,WACF,CACA,4FACE,QACF,CACA,yGACE,UACF,CACA,mGACE,SACF,CACA,oIAGE,QACF,CACA,oEACE,KACF,CACA,sJAGE,YACF,CACA,8CACE,kBAAmB,CACnB,eACF,CACA,0BACE,gBACF,CACA,uCACE,eAAgB,CAChB,SACF,CACA,2CACE,wBACF,CACA,uCACE,eACF,CACA,0CACE,UACF,CACA,kBACE,WACF,CACA,yBAOE,4BAA6B,CAC7B,eAAgB,CAPhB,gBAAiB,CACjB,iBAAkB,CAEjB,oBAAqB,CACjB,gBAAiB,CACtB,wBAGF,CACA,2EAGE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,kCAEE,oBAAqB,CADrB,WAEF,CACA,+CACE,oBAAqB,CACrB,sCAA2C,CAC3C,cACF,CACA,wCAEE,wBAAyB,CADzB,oBAAqB,CAErB,UACF,CACA,uCAIE,wBAAyB,CAEzB,UAAW,CALX,UAAW,CACX,WAAY,CACZ,gBAAiB,CAEjB,cAEF,CACA,mDAEE,6BAA8B,CAC9B,iBAAkB,CAFlB,0BAGF,CACA,kDAEE,8BAA+B,CAC/B,gBAAiB,CAFjB,2BAGF,CAC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","sources":["../node_modules/@seafile/seafile-calendar/assets/index.css","css/pagination.css","css/file-view.css","css/image-file-view.css","css/svg-file-view.css","css/pdf-file-view.css","components/seafile-codemirror/style.css","css/text-file-view.css","../node_modules/@seafile/seafile-editor/dist/editors/plain-markdown-editor/code-mirror.css","../node_modules/@seafile/sdoc-editor/dist/components/common-loading/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/commons/dropdown-menu-item/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/assets/css/textlink-hovermenu.css","../node_modules/@seafile/sdoc-editor/dist/components/tooltip/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/commons/color-menu/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/commons/menu/menu.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/code-block/hover-menu/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/assets/css/code-block.css","../node_modules/@seafile/sdoc-editor/node_modules/@seafile/react-image-lightbox/style.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/image/hover-menu/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/table/popover/table-template/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/table/render/alternate-color.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/table/menu/table-context-menu/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/table/render/table-header/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/table/render/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/sdoc-link/hover-menu/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/sdoc-link/render-elem.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/file-link/hover-menu/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/file-link/render-elem.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/callout/render-elem/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/render/element-decorate/rebase-decorate/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/header/menu/style.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/font/menu/font-family/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/font/menu/font-size/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/toolbar/context-toolbar/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/toolbar/side-toolbar/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/plugins/table/dialogs/custom-table-size-dialog/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/commons/select-file-dialog/local-files/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/extension/commons/select-file-dialog/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/outline/style.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/assets/css/default.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/assets/css/layout.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/assets/css/sdoc-editor-plugins.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/assets/css/dropdown-menu.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/comment/components/comment-input/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/comment/components/comment-list.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/comment/components/elements-comment-count/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/comment/components/comment-participants-editor/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/comment/components/comment-all-participants/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/comment/components/global-comment/index.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/comment/components/style.css","css/switch.css","../node_modules/@seafile/seafile-editor/dist/editors/plain-markdown-editor/style.css","../node_modules/@seafile/sdoc-editor/dist/basic-sdk/assets/css/simple-viewer.css","../node_modules/@seafile/sdoc-editor/dist/assets/css/diff-viewer.css","../node_modules/@seafile/sdoc-editor/dist/components/tip-message/style.css","../node_modules/@seafile/sdoc-editor/dist/components/draft-dropdown/style.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/tag-operation/file-tag-quick-view/index.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-info/index.css","../node_modules/@seafile/sdoc-editor/dist/components/tip-dialog/index.css","../node_modules/@seafile/sdoc-editor/dist/components/switch/index.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/revision-operations/view-changes/index.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/revision-operations/more-revision-operations/index.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/revision-operation/index.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/revision-operations/revisions/index.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/revision-operations/changes-count/index.css","../node_modules/@seafile/sdoc-editor/dist/assets/css/collaborator-popover.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/comments-operation/index.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/tag-operation/tag-popover/index.css","../node_modules/@seafile/sdoc-editor/dist/components/doc-operations/style.css","../node_modules/@seafile/sdoc-editor/dist/layout/layout.css","../node_modules/@seafile/sdoc-editor/dist/assets/css/error-page.css","../node_modules/@seafile/sdoc-editor/dist/assets/css/simple-editor.css","../node_modules/@seafile/sdoc-editor/dist/assets/css/simple-viewer.css","../node_modules/@seafile/seafile-editor/node_modules/prismjs/themes/prism.css","../node_modules/@seafile/seafile-editor/dist/extension/commons/tooltip/index.css","../node_modules/@seafile/seafile-editor/dist/extension/plugins/header/menu/style.css","../node_modules/@seafile/seafile-editor/dist/extension/commons/menu/menu.css","../node_modules/@seafile/seafile-editor/dist/extension/plugins/image/menu/style.css","../node_modules/@seafile/react-image-lightbox/style.css","../node_modules/@seafile/seafile-editor/dist/extension/plugins/image/render-element/style.css","css/select-editor.css","../node_modules/@seafile/seafile-editor/dist/extension/plugins/link/render-elem/style.css","../node_modules/@seafile/seafile-editor/dist/extension/plugins/code-block/render-elem/style.css","../node_modules/@seafile/seafile-editor/dist/extension/plugins/list/render-elem/style.css","../node_modules/@seafile/seafile-editor/dist/extension/plugins/table/menu/style.css","../node_modules/@seafile/seafile-editor/dist/extension/plugins/table/render-elem/style.css","css/icon.css","components/search/ai-search-widgets/ai-search-refrences.css","components/search/ai-search-widgets/ai-search-help.css","components/search/ai-search-ask.css","css/top-search-by-name.css","components/common/notification-popover/index.css","../node_modules/@seafile/seafile-editor/dist/extension/plugins/formula/formula.css","css/toolbar.css","css/search.css","css/user-notifications.css","css/notification.css","../node_modules/@seafile/seafile-editor/dist/extension/toolbar/user-help/style.css","../node_modules/@seafile/seafile-editor/dist/extension/toolbar/header-toolbar/style.css","css/single-selector.css","css/btn-qr-code.css","../node_modules/@seafile/seafile-editor/dist/containers/hotkeys-helper/style.css","css/date-and-time-picker.css","../node_modules/@seafile/seafile-editor/dist/containers/outline/style.css","css/user-select.css","../node_modules/@seafile/seafile-editor/dist/containers/article-info/style.css","css/invitations.css","../node_modules/@seafile/seafile-editor/dist/editors/slate-editor/editor-help/style.css","css/share-to-user.css","../node_modules/@seafile/seafile-editor/dist/editors/slate-editor/style.css","css/share-link-dialog.css","../node_modules/@seafile/seafile-editor/dist/containers/loading/style.css","../node_modules/@seafile/seafile-editor/dist/editors/slate-viewer/style.css","css/file-chooser.css","css/shared-file-view.css","components/operations/style.css","../node_modules/@seafile/seafile-editor/dist/editors/simple-slate-editor /style.css","css/file-tag-list.css","css/dirent-detail.css","css/file-uploader.css","css/layout.css","../node_modules/video.js/dist/video-js.css","css/video-file-view.css","css/audio-file-view.css"],"sourcesContent":[".rc-calendar {\n box-sizing: border-box;\n}\n.rc-calendar * {\n box-sizing: border-box;\n}\n.rc-calendar-hidden {\n display: none;\n}\n.rc-calendar-input-wrap {\n position: relative;\n padding: 6px;\n border-bottom: 1px solid #e9e9e9;\n}\n.rc-calendar-input-wrap:after {\n content: '';\n clear: both;\n}\n.rc-calendar-date-input-wrap {\n overflow: hidden;\n}\n.rc-calendar-time-picker {\n position: absolute;\n width: 100%;\n top: 34px;\n background-color: white;\n height: 217px;\n}\n.rc-calendar-time-picker-panel {\n width: 100%;\n position: relative;\n}\n.rc-calendar-time-picker-panel .rc-time-picker-panel-input-wrap {\n display: none;\n}\n.rc-calendar-time-picker-panel .rc-time-picker-panel-inner {\n border: none;\n box-shadow: none;\n}\n.rc-calendar-time-picker-panel .rc-time-picker-panel-select {\n width: 84px;\n max-height: 217px;\n}\n.rc-calendar-time-picker-panel .rc-time-picker-panel-select li {\n text-align: center;\n padding: 0;\n}\n.rc-calendar-time-picker-wrap {\n float: left;\n width: 100%;\n}\n.rc-calendar-time-picker-wrap .rc-time-picker {\n width: 100%;\n}\n.rc-calendar-time-picker-wrap .rc-time-picker-input {\n padding: 0;\n border: 1px solid transparent;\n outline: 0;\n height: 22px;\n}\n.rc-calendar-time-picker-wrap .rc-time-picker-icon {\n display: none;\n}\n.rc-calendar-input {\n border: 1px solid transparent;\n width: 100%;\n color: #666;\n cursor: text;\n line-height: 1.5;\n outline: 0;\n height: 22px;\n}\n.rc-calendar-input-invalid {\n border-color: red;\n}\n.rc-calendar-clear-btn {\n z-index: 9999;\n position: absolute;\n right: 6px;\n cursor: pointer;\n overflow: hidden;\n width: 20px;\n height: 20px;\n text-align: center;\n line-height: 20px;\n top: 6px;\n margin: 0;\n}\n.rc-calendar-clear-btn:after {\n content: \"x\";\n font-size: 12px;\n color: #aaa;\n display: inline-block;\n line-height: 1;\n width: 20px;\n transition: color 0.3s ease;\n}\n.rc-calendar-clear-btn:hover:after {\n color: #666;\n}\n.rc-calendar-picker {\n position: absolute;\n left: -9999px;\n top: -9999px;\n z-index: 1000;\n}\n.rc-calendar-picker-hidden {\n display: none;\n}\n.rc-calendar-picker-slide-up-enter {\n animation-duration: .3s;\n animation-fill-mode: both;\n transform-origin: 0 0;\n display: block !important;\n opacity: 0;\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\n animation-play-state: paused;\n}\n.rc-calendar-picker-slide-up-appear {\n animation-duration: .3s;\n animation-fill-mode: both;\n transform-origin: 0 0;\n display: block !important;\n opacity: 0;\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\n animation-play-state: paused;\n}\n.rc-calendar-picker-slide-up-leave {\n animation-duration: .3s;\n animation-fill-mode: both;\n transform-origin: 0 0;\n display: block !important;\n opacity: 1;\n animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);\n animation-play-state: paused;\n}\n.rc-calendar-picker-slide-up-enter.rc-calendar-picker-slide-up-enter-active.rc-calendar-picker-placement-bottomLeft,\n.rc-calendar-picker-slide-up-enter.rc-calendar-picker-slide-up-enter-active.rc-calendar-picker-placement-bottomRight,\n.rc-calendar-picker-slide-up-appear.rc-calendar-picker-slide-up-appear-active.rc-calendar-picker-placement-bottomLeft,\n.rc-calendar-picker-slide-up-appear.rc-calendar-picker-slide-up-appear-active.rc-calendar-picker-placement-bottomRight {\n animation-name: rcDropdownSlideUpIn;\n animation-play-state: running;\n}\n.rc-calendar-picker-slide-up-enter.rc-calendar-picker-slide-up-enter-active.rc-calendar-picker-placement-topLeft,\n.rc-calendar-picker-slide-up-enter.rc-calendar-picker-slide-up-enter-active.rc-calendar-picker-placement-topRight,\n.rc-calendar-picker-slide-up-appear.rc-calendar-picker-slide-up-appear-active.rc-calendar-picker-placement-topLeft,\n.rc-calendar-picker-slide-up-appear.rc-calendar-picker-slide-up-appear-active.rc-calendar-picker-placement-topRight {\n animation-name: rcDropdownSlideDownIn;\n animation-play-state: running;\n}\n.rc-calendar-picker-slide-up-leave.rc-calendar-picker-slide-up-leave-active.rc-calendar-picker-placement-bottomLeft,\n.rc-calendar-picker-slide-up-leave.rc-calendar-picker-slide-up-leave-active.rc-calendar-picker-placement-bottomRight {\n animation-name: rcDropdownSlideUpOut;\n animation-play-state: running;\n}\n.rc-calendar-picker-slide-up-leave.rc-calendar-picker-slide-up-leave-active.rc-calendar-picker-placement-topLeft,\n.rc-calendar-picker-slide-up-leave.rc-calendar-picker-slide-up-leave-active.rc-calendar-picker-placement-topRight {\n animation-name: rcDropdownSlideDownOut;\n animation-play-state: running;\n}\n@keyframes rcDropdownSlideUpIn {\n 0% {\n opacity: 0;\n transform-origin: 0% 0%;\n transform: scaleY(0);\n }\n 100% {\n opacity: 1;\n transform-origin: 0% 0%;\n transform: scaleY(1);\n }\n}\n@keyframes rcDropdownSlideUpOut {\n 0% {\n opacity: 1;\n transform-origin: 0% 0%;\n transform: scaleY(1);\n }\n 100% {\n opacity: 0;\n transform-origin: 0% 0%;\n transform: scaleY(0);\n }\n}\n@keyframes rcDropdownSlideDownIn {\n 0% {\n opacity: 0;\n transform-origin: 100% 100%;\n transform: scaleY(0);\n }\n 100% {\n opacity: 1;\n transform-origin: 100% 100%;\n transform: scaleY(1);\n }\n}\n@keyframes rcDropdownSlideDownOut {\n 0% {\n opacity: 1;\n transform-origin: 100% 100%;\n transform: scaleY(1);\n }\n 100% {\n opacity: 0;\n transform-origin: 100% 100%;\n transform: scaleY(0);\n }\n}\n.rc-calendar {\n position: relative;\n outline: none;\n font-family: Arial, \"Hiragino Sans GB\", \"Microsoft Yahei\", \"Microsoft Sans Serif\", \"WenQuanYi Micro Hei\", sans-serif;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n list-style: none;\n font-size: 12px;\n text-align: left;\n background-color: #fff;\n border-radius: 3px;\n box-shadow: 0 1px 5px #ccc;\n background-clip: padding-box;\n border: 1px solid #ccc;\n line-height: 1.5;\n}\n.rc-calendar-date-panel,\n.rc-calendar-date-panel-container {\n display: -ms-flexbox;\n display: flex;\n}\n.rc-calendar-date-panel,\n.rc-calendar-panel {\n position: relative;\n outline: none;\n display: block;\n}\n.rc-calendar-week-number {\n width: 286px;\n}\n.rc-calendar-week-number-cell {\n text-align: center;\n}\n.rc-calendar-header {\n padding: 0 10px;\n height: 34px;\n line-height: 30px;\n text-align: center;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-user-select: none;\n border-bottom: 1px solid #ccc;\n}\n.rc-calendar-header > a {\n font-weight: bold;\n display: inline-block;\n padding: 0px 5px;\n line-height: 34px;\n text-align: center;\n width: 30px;\n}\n.rc-calendar-header > a:hover {\n cursor: pointer;\n color: #f09f4g;\n}\n.rc-calendar-header .rc-calendar-prev-month-btn {\n position: absolute;\n left: 25px;\n}\n.rc-calendar-header .rc-calendar-prev-month-btn:after {\n content: '‹';\n}\n.rc-calendar-header .rc-calendar-next-month-btn {\n position: absolute;\n right: 25px;\n}\n.rc-calendar-header .rc-calendar-next-month-btn:after {\n content: '›';\n}\n.rc-calendar-year-select,\n.rc-calendar-month-select,\n.rc-calendar-day-select {\n display: inline-block;\n font-size: 12px;\n font-weight: bold;\n color: #666;\n padding: 0 8px;\n line-height: 34px;\n}\n.rc-calendar-year-select:hover,\n.rc-calendar-month-select:hover,\n.rc-calendar-day-select:hover {\n cursor: pointer;\n color: #f09f4g;\n}\n.rc-calendar-year-select.rc-calendar-time-status:hover,\n.rc-calendar-month-select.rc-calendar-time-status:hover,\n.rc-calendar-day-select.rc-calendar-time-status:hover {\n cursor: pointer;\n color: #666;\n}\n.rc-calendar-prev-month-btn,\n.rc-calendar-next-month-btn,\n.rc-calendar-prev-year-btn,\n.rc-calendar-next-year-btn {\n position: absolute;\n top: 0;\n cursor: pointer;\n color: #999;\n font-family: Arial, \"Hiragino Sans GB\", \"Microsoft Yahei\", \"Microsoft Sans Serif\", sans-serif;\n padding: 0 5px;\n font-size: 16px;\n display: inline-block;\n line-height: 34px;\n}\n.rc-calendar-prev-month-btn:hover,\n.rc-calendar-next-month-btn:hover,\n.rc-calendar-prev-year-btn:hover,\n.rc-calendar-next-year-btn:hover {\n color: #f09f4g;\n}\n.rc-calendar-next-year-btn {\n right: 0;\n}\n.rc-calendar-next-year-btn:after {\n content: '»';\n}\n.rc-calendar-prev-year-btn {\n left: 0;\n}\n.rc-calendar-prev-year-btn:after {\n content: '«';\n}\n.rc-calendar-body {\n padding: 9px 10px 10px;\n height: 217px;\n}\n.rc-calendar-right-panel {\n width: 68px;\n height: inherit;\n}\n.rc-calendar-right-panel-header {\n height: 34px;\n line-height: 34px;\n}\n.rc-calendar-right-panel-header span {\n transform: rotate(-90deg);\n}\n.rc-calendar-right-panel-body {\n height: 217px;\n border-left: 1px solid #ccc;\n overflow-y: scroll;\n}\n.rc-calendar-right-panel-body ul {\n list-style: none;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n width: 100%;\n}\n.rc-calendar-right-panel-body ul li {\n text-align: center;\n padding: 8px 0;\n cursor: pointer;\n}\n.rc-calendar-right-panel-body ul li:hover {\n color: #e8bf6a;\n}\n.rc-calendar-right-panel-body .rc-calendar-selected-time {\n color: #f09f3f;\n}\n.rc-calendar-right-panel-body::-webkit-scrollbar {\n width: 0;\n}\n.rc-calendar-right-panel-footer {\n height: 39px;\n line-height: 34px;\n border-left: 1px solid #ccc;\n}\n.rc-calendar-right-panel-footer span {\n transform: rotate(90deg);\n}\n.rc-calendar-right-panel-header,\n.rc-calendar-right-panel-footer {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n cursor: pointer;\n color: #999;\n font-size: 16px;\n}\n.rc-calendar-right-panel-header span:after,\n.rc-calendar-right-panel-footer span:after {\n content: '›';\n}\n.rc-calendar table {\n border-collapse: collapse;\n max-width: 100%;\n background-color: transparent;\n width: 100%;\n}\n.rc-calendar table,\n.rc-calendar td,\n.rc-calendar th,\n.rc-calendar td {\n border: none;\n}\n.rc-calendar-table {\n border-spacing: 0;\n margin-bottom: 0;\n}\n.rc-calendar-column-header {\n line-height: 18px;\n padding: 6px 0;\n width: 33px;\n text-align: center;\n}\n.rc-calendar-column-header .rc-calendar-column-header-inner {\n display: block;\n font-weight: normal;\n}\n.rc-calendar-week-number-header .rc-calendar-column-header-inner {\n display: none;\n}\n.rc-calendar-cell {\n padding: 1px 0;\n}\n.rc-calendar-date {\n display: block;\n margin: 0 auto;\n color: #666;\n border-radius: 4px 4px;\n width: 26px;\n height: 26px;\n padding: 0;\n background: transparent;\n line-height: 26px;\n text-align: center;\n}\n.rc-calendar-date:hover {\n background: #fcecd9;\n cursor: pointer;\n}\n.rc-calendar-selected-day .rc-calendar-date {\n background: #fcecd9;\n}\n.rc-calendar-selected-date .rc-calendar-date {\n background: #f09f3f;\n color: #fff;\n}\n.rc-calendar-selected-date .rc-calendar-date:hover {\n background: #f09f3f;\n}\n.rc-calendar-today .rc-calendar-date {\n border: 1px solid #f09f3f;\n}\n.rc-calendar-disabled-cell .rc-calendar-date {\n cursor: not-allowed;\n color: #bcbcbc;\n background: #f3f3f3;\n border-radius: 0;\n width: auto;\n}\n.rc-calendar-disabled-cell .rc-calendar-date:hover {\n background: #f3f3f3;\n}\n.rc-calendar-disabled-cell-first-of-row .rc-calendar-date {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.rc-calendar-disabled-cell-last-of-row .rc-calendar-date {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.rc-calendar-last-month-cell .rc-calendar-date,\n.rc-calendar-next-month-btn-day .rc-calendar-date {\n color: #bbb;\n}\n.rc-calendar-footer {\n border-top: 1px solid #ccc;\n padding: 10px 0;\n text-align: center;\n position: relative;\n}\n.rc-calendar-footer .rc-time-picker {\n width: 90px;\n}\n.rc-calendar-footer .rc-time-picker-input {\n height: 24px;\n}\n.rc-calendar-footer-show-ok {\n text-align: right;\n}\n.rc-calendar-footer-show-ok .rc-calendar-footer-btn {\n padding-right: 12px;\n}\n.rc-calendar-footer-show-ok .rc-calendar-time-picker-btn {\n margin-left: 0;\n padding: 0 12px;\n}\n.rc-calendar-footer-show-ok .rc-calendar-today-btn {\n float: left;\n padding-left: 12px;\n}\n.rc-calendar-footer-btn {\n margin-top: 2px;\n}\n.rc-calendar-footer-btn:after {\n content: 'x';\n height: 0;\n font-size: 0;\n overflow: hidden;\n clear: both;\n}\n.rc-calendar-time-picker-btn {\n margin-left: 10px;\n}\n.rc-calendar-today-btn,\n.rc-calendar-ok-btn,\n.rc-calendar-time-picker-btn {\n display: inline-block;\n text-align: center;\n color: #f46830;\n}\n.rc-calendar-today-btn:hover,\n.rc-calendar-ok-btn:hover,\n.rc-calendar-time-picker-btn:hover {\n cursor: pointer;\n color: #f09f4g;\n}\n.rc-calendar-today-btn-disabled,\n.rc-calendar-ok-btn-disabled,\n.rc-calendar-time-picker-btn-disabled {\n color: #bbb;\n}\n.rc-calendar-today-btn-disabled:hover,\n.rc-calendar-ok-btn-disabled:hover,\n.rc-calendar-time-picker-btn-disabled:hover {\n color: #bbb;\n}\n.rc-calendar-today-btn {\n padding-left: 10px;\n}\n.rc-calendar-time-input {\n height: 25px;\n position: relative;\n display: inline-block;\n margin: 0 0;\n padding: 4px 10px;\n border-radius: 6px 6px;\n border: 1px solid #d9d9d9;\n background-color: #ffffff;\n color: #666;\n line-height: 1.5;\n transform: border 0.3s cubic-bezier(0.35, 0, 0.25, 1), background 0.3s cubic-bezier(0.35, 0, 0.25, 1), box-shadow 0.3s cubic-bezier(0.35, 0, 0.25, 1);\n width: 40px;\n}\n.rc-calendar-time-input:hover {\n border-color: #f09f4g;\n}\n.rc-calendar-time-input:focus {\n border-color: #f09f4g;\n box-shadow: 0 0 3px #f09f4g;\n}\n.rc-calendar-time-panel {\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n background: #ffffff;\n z-index: 10;\n position: absolute;\n outline: none;\n}\n.rc-calendar-time-panel-header {\n padding: 0 10px;\n height: 34px;\n line-height: 34px;\n position: relative;\n text-align: center;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-user-select: none;\n border-bottom: 1px solid #ccc;\n}\n.rc-calendar-time-panel-body {\n padding: 9px 10px 10px;\n}\n.rc-calendar-time-panel-title {\n width: 180px;\n font-weight: bold;\n display: inline-block;\n padding: 4px 5px;\n text-align: center;\n height: 30px;\n line-height: 22px;\n border-radius: 4px;\n}\n.rc-calendar-time-panel-table {\n table-layout: fixed;\n width: 100%;\n height: 255px;\n border-collapse: separate;\n}\n.rc-calendar-time-panel-cell {\n text-align: center;\n height: 42px;\n vertical-align: middle;\n}\n.rc-calendar-time-panel-time {\n line-height: 26px;\n display: block;\n border-radius: 4px;\n width: 26px;\n margin: 0 auto;\n}\n.rc-calendar-time-panel-time:hover {\n background: #fcecd9;\n cursor: pointer;\n}\n.rc-calendar-time-panel-selected-cell .rc-calendar-time-panel-time {\n background: #f09f3f;\n color: #fff;\n}\n.rc-calendar-time-panel-selected-cell .rc-calendar-time-panel-time:hover {\n background: #f09f3f;\n color: #fff;\n}\n.rc-calendar-month-panel {\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n background: #ffffff;\n z-index: 10;\n position: absolute;\n outline: none;\n}\n.rc-calendar-month-panel > div {\n height: 100%;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.rc-calendar-month-panel-hidden {\n display: none;\n}\n.rc-calendar-month-panel-header {\n padding: 0 10px;\n height: 34px;\n line-height: 30px;\n position: relative;\n text-align: center;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-user-select: none;\n border-bottom: 1px solid #ccc;\n}\n.rc-calendar-month-panel-header > a {\n font-weight: bold;\n display: inline-block;\n padding: 4px 5px;\n text-align: center;\n width: 30px;\n}\n.rc-calendar-month-panel-header > a:hover {\n cursor: pointer;\n color: #f09f4g;\n}\n.rc-calendar-month-panel-prev-year-btn,\n.rc-calendar-month-panel-next-year-btn {\n position: absolute;\n top: 0;\n}\n.rc-calendar-month-panel-next-year-btn:after {\n content: '»';\n}\n.rc-calendar-month-panel-prev-year-btn {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n left: 0;\n}\n.rc-calendar-month-panel-prev-year-btn:after {\n content: '«';\n}\n.rc-calendar-month-panel .rc-calendar-month-panel-year-select {\n width: 180px;\n}\n.rc-calendar-month-panel-year-select-arrow {\n display: none;\n}\n.rc-calendar-month-panel-next-year-btn {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n right: 0;\n}\n.rc-calendar-month-panel-body {\n -ms-flex: 1;\n flex: 1;\n padding: 9px 10px 10px;\n}\n.rc-calendar-month-panel-footer {\n border-top: 1px solid #ccc;\n line-height: 38px;\n}\n.rc-calendar-month-panel-table {\n table-layout: fixed;\n width: 100%;\n height: 100%;\n border-collapse: separate;\n}\n.rc-calendar-month-panel-cell {\n text-align: center;\n}\n.rc-calendar-month-panel-cell .rc-calendar-month-panel-month {\n display: block;\n width: 46px;\n margin: 0 auto;\n color: #666;\n border-radius: 4px 4px;\n height: 36px;\n padding: 0;\n background: transparent;\n line-height: 36px;\n text-align: center;\n}\n.rc-calendar-month-panel-cell .rc-calendar-month-panel-month:hover {\n background: #fcecd9;\n cursor: pointer;\n}\n.rc-calendar-month-panel-cell-disabled .rc-calendar-month-panel-month {\n color: #bfbfbf;\n}\n.rc-calendar-month-panel-cell-disabled .rc-calendar-month-panel-month:hover {\n background: white;\n cursor: not-allowed;\n}\n.rc-calendar-month-panel-selected-cell .rc-calendar-month-panel-month {\n background: #f09f3f;\n color: #fff;\n}\n.rc-calendar-month-panel-selected-cell .rc-calendar-month-panel-month:hover {\n background: #f09f3f;\n color: #fff;\n}\n.rc-calendar-month-header-wrap {\n position: relative;\n height: 308px;\n}\n.rc-calendar-year-panel {\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n background: #ffffff;\n z-index: 10;\n position: absolute;\n outline: none;\n}\n.rc-calendar-year-panel > div {\n height: 100%;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.rc-calendar-year-panel-hidden {\n display: none;\n}\n.rc-calendar-year-panel-header {\n padding: 0 10px;\n height: 34px;\n line-height: 30px;\n position: relative;\n text-align: center;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-user-select: none;\n border-bottom: 1px solid #ccc;\n}\n.rc-calendar-year-panel-header > a {\n font-weight: bold;\n display: inline-block;\n padding: 4px 5px;\n text-align: center;\n width: 30px;\n}\n.rc-calendar-year-panel-header > a:hover {\n cursor: pointer;\n color: #f09f4g;\n}\n.rc-calendar-year-panel-prev-decade-btn,\n.rc-calendar-year-panel-next-decade-btn {\n position: absolute;\n top: 0;\n}\n.rc-calendar-year-panel-next-decade-btn:after {\n content: '»';\n}\n.rc-calendar-year-panel-prev-decade-btn {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n left: 0;\n}\n.rc-calendar-year-panel-prev-decade-btn:after {\n content: '«';\n}\n.rc-calendar-year-panel .rc-calendar-year-panel-decade-select {\n width: 180px;\n}\n.rc-calendar-year-panel-decade-select-arrow {\n display: none;\n}\n.rc-calendar-year-panel-next-decade-btn {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n right: 0;\n}\n.rc-calendar-year-panel-body {\n -ms-flex: 1;\n flex: 1;\n padding: 9px 10px 10px;\n}\n.rc-calendar-year-panel-footer {\n border-top: 1px solid #ccc;\n line-height: 38px;\n}\n.rc-calendar-year-panel-table {\n table-layout: fixed;\n width: 100%;\n height: 100%;\n border-collapse: separate;\n}\n.rc-calendar-year-panel-cell {\n text-align: center;\n}\n.rc-calendar-year-panel-year {\n display: block;\n width: 46px;\n margin: 0 auto;\n color: #666;\n border-radius: 4px 4px;\n height: 36px;\n padding: 0;\n background: transparent;\n line-height: 36px;\n text-align: center;\n}\n.rc-calendar-year-panel-year:hover {\n background: #fcecd9;\n cursor: pointer;\n}\n.rc-calendar-year-panel-selected-cell .rc-calendar-year-panel-year {\n background: #f09f3f;\n color: #fff;\n}\n.rc-calendar-year-panel-selected-cell .rc-calendar-year-panel-year:hover {\n background: #f09f3f;\n color: #fff;\n}\n.rc-calendar-year-panel-last-decade-cell .rc-calendar-year-panel-year,\n.rc-calendar-year-panel-next-decade-cell .rc-calendar-year-panel-year {\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-user-select: none;\n color: rgba(0, 0, 0, 0.25);\n}\n.rc-calendar-decade-panel {\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n background: #ffffff;\n z-index: 10;\n position: absolute;\n outline: none;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.rc-calendar-decade-panel-hidden {\n display: none;\n}\n.rc-calendar-decade-panel-header {\n padding: 0 10px;\n height: 34px;\n line-height: 34px;\n position: relative;\n text-align: center;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-user-select: none;\n border-bottom: 1px solid #ccc;\n}\n.rc-calendar-decade-panel-header > a {\n font-weight: bold;\n display: inline-block;\n padding: 1px 5px;\n text-align: center;\n width: 30px;\n}\n.rc-calendar-decade-panel-header > a:hover {\n cursor: pointer;\n color: #f09f4g;\n}\n.rc-calendar-decade-panel-prev-century-btn,\n.rc-calendar-decade-panel-next-century-btn {\n position: absolute;\n top: 0;\n}\n.rc-calendar-decade-panel-next-century-btn:after {\n content: '»';\n}\n.rc-calendar-decade-panel-prev-century-btn {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n left: 0;\n}\n.rc-calendar-decade-panel-prev-century-btn:after {\n content: '«';\n}\n.rc-calendar-decade-panel-next-century-btn {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n right: 0;\n}\n.rc-calendar-decade-panel-body {\n -ms-flex: 1;\n flex: 1;\n padding: 9px 10px 10px;\n}\n.rc-calendar-decade-panel-footer {\n border-top: 1px solid #ccc;\n line-height: 38px;\n}\n.rc-calendar-decade-panel-table {\n table-layout: fixed;\n width: 100%;\n height: 100%;\n border-collapse: separate;\n}\n.rc-calendar-decade-panel-cell {\n text-align: center;\n}\n.rc-calendar-decade-panel-decade {\n display: block;\n margin: 0 auto;\n color: #666;\n border-radius: 4px 4px;\n height: 36px;\n padding: 0;\n background: transparent;\n line-height: 36px;\n text-align: center;\n}\n.rc-calendar-decade-panel-decade:hover {\n background: #fcecd9;\n cursor: pointer;\n}\n.rc-calendar-decade-panel-selected-cell .rc-calendar-decade-panel-decade {\n background: #f09f3f;\n color: #fff;\n}\n.rc-calendar-decade-panel-selected-cell .rc-calendar-decade-panel-decade:hover {\n background: #f09f3f;\n color: #fff;\n}\n.rc-calendar-decade-panel-last-century-cell .rc-calendar-decade-panel-decade,\n.rc-calendar-decade-panel-next-century-cell .rc-calendar-decade-panel-decade {\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-user-select: none;\n color: rgba(0, 0, 0, 0.25);\n}\n.rc-calendar-range {\n width: 502px;\n overflow: hidden;\n}\n.rc-calendar-range-part {\n width: 250px;\n position: relative;\n}\n.rc-calendar-range-part .rc-calendar-time-picker {\n top: 69px;\n}\n.rc-calendar-range-part .rc-calendar-time-picker-panel-select {\n width: 77px;\n}\n.rc-calendar-range-left {\n float: left;\n}\n.rc-calendar-range-left .rc-calendar-time-picker-panel-select:last-child {\n border-right: 1px solid #e9e9e9;\n}\n.rc-calendar-range-right {\n float: right;\n}\n.rc-calendar-range-right .rc-calendar-time-picker-panel {\n left: 21px;\n}\n.rc-calendar-range-right .rc-calendar-time-picker-panel-select:first-child {\n border-left: 1px solid #e9e9e9;\n}\n.rc-calendar-range-middle {\n position: absolute;\n margin-left: -10px;\n text-align: center;\n height: 35px;\n line-height: 35px;\n}\n.rc-calendar-range .rc-calendar-date-panel::after {\n content: \".\";\n display: block;\n height: 0;\n clear: both;\n visibility: hidden;\n}\n.rc-calendar-range .rc-calendar-input-wrap {\n height: 35px;\n}\n.rc-calendar-range .rc-calendar-input,\n.rc-calendar-range .rc-time-picker-input {\n padding: 1px 7px;\n height: 22px;\n}\n.rc-calendar-range .rc-calendar-body,\n.rc-calendar-range .rc-calendar-decade-panel-body,\n.rc-calendar-range .rc-calendar-year-panel-body,\n.rc-calendar-range .rc-calendar-month-panel-body {\n border-bottom: 1px solid #e9e9e9;\n}\n.rc-calendar-range.rc-calendar-week-number {\n width: 574px;\n}\n.rc-calendar-range.rc-calendar-week-number .rc-calendar-range-part {\n width: 286px;\n}\n.rc-calendar-range.rc-calendar-week-number .rc-calendar-range-part .rc-calendar-time-picker {\n top: 69px;\n}\n.rc-calendar-range.rc-calendar-week-number .rc-calendar-range-part .rc-calendar-time-picker-panel-select {\n width: 89px;\n}\n.rc-calendar-range.rc-calendar-week-number .rc-calendar-range-right .rc-calendar-time-picker-panel {\n left: 36px;\n}\n.rc-calendar-range .rc-calendar-year-panel,\n.rc-calendar-range .rc-calendar-month-panel,\n.rc-calendar-range .rc-calendar-decade-panel {\n top: 35px;\n}\n.rc-calendar-range .rc-calendar-month-panel .rc-calendar-year-panel {\n top: 0;\n}\n.rc-calendar-range .rc-calendar-decade-panel-table,\n.rc-calendar-range .rc-calendar-year-panel-table,\n.rc-calendar-range .rc-calendar-month-panel-table {\n height: 198px;\n}\n.rc-calendar-range .rc-calendar-in-range-cell {\n background: #ebf4f8;\n border-radius: 0;\n}\n.rc-calendar-range-bottom {\n text-align: right;\n}\n.rc-calendar-range .rc-calendar-footer {\n border-top: none;\n padding: 0;\n}\n.rc-calendar-range .rc-calendar-footer-btn {\n padding: 10px 12px 10px 0;\n}\n.rc-calendar-range .rc-calendar-ok-btn {\n position: static;\n}\n.rc-calendar-range .rc-calendar-today-btn {\n float: left;\n}\n.rc-calendar-full {\n width: 275px;\n}\n.rc-calendar-full-header {\n padding: 5px 10px;\n text-align: center;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-user-select: none;\n border-bottom: 1px solid #ccc;\n overflow: hidden;\n}\n.rc-calendar-full-header-month-select,\n.rc-calendar-full-header-year-select {\n width: 70px;\n float: right;\n margin-right: 5px;\n}\n.rc-calendar-full-header-switcher {\n float: right;\n display: inline-block;\n}\n.rc-calendar-full-header-switcher-normal:hover {\n border-color: #f09f4g;\n box-shadow: 0 0 2px rgba(45, 183, 245, 0.8);\n cursor: pointer;\n}\n.rc-calendar-full-header-switcher-focus {\n border-color: #f09f3f;\n background-color: #f09f3f;\n color: #fff;\n}\n.rc-calendar-full-header-switcher > span {\n float: left;\n height: 28px;\n line-height: 24px;\n border: 1px solid #d9d9d9;\n padding: 0 10px;\n color: #666;\n}\n.rc-calendar-full-header-switcher > span:first-child {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n border-right: none;\n}\n.rc-calendar-full-header-switcher > span:last-child {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-left: none;\n}\n.rc-calendar-fullscreen {\n width: auto;\n}\n.rc-calendar-fullscreen .rc-calendar-full-header {\n border-bottom: none;\n}\n.rc-calendar-fullscreen .rc-calendar-column-header {\n text-align: right;\n padding-right: 12px;\n}\n.rc-calendar-fullscreen .rc-calendar-cell {\n padding: 0;\n}\n.rc-calendar-fullscreen .rc-calendar-cell .rc-calendar-date,\n.rc-calendar-fullscreen .rc-calendar-month-panel-cell .rc-calendar-month-panel-month {\n display: block;\n height: 116px;\n width: auto;\n border-radius: 0;\n margin: 0 4px;\n border: none;\n border-top: 2px solid #eee;\n text-align: right;\n padding-right: 8px;\n}\n.rc-calendar-fullscreen .rc-calendar-selected-day .rc-calendar-date,\n.rc-calendar-fullscreen .rc-calendar-month-panel-selected-cell .rc-calendar-month-panel-month {\n background-color: #fcecd9;\n color: #666;\n}\n.rc-calendar-fullscreen .rc-calendar-today .rc-calendar-date,\n.rc-calendar-fullscreen .rc-calendar-month-panel-selected-cell .rc-calendar-month-panel-month {\n border-top-color: #f09f3f;\n color: #f09f3f;\n}\n",".paginator .btn {\n min-width: 2.375rem;\n}\n","body {\n overflow: hidden;\n}\n#wrapper {\n height: 100%;\n}\n.file-view-header {\n padding: 4px 10px;\n background: #fff;\n border-bottom: 1px solid #c9c9c9;\n flex-shrink: 0;\n}\n.file-title {\n font-size: 1.2rem;\n font-weight: bold;\n line-height: 1.5;\n margin-bottom: 0;\n}\n.file-star {\n font-size: .875rem;\n color: #999; \n margin-left: .5rem;\n}\n.file-star:hover,\n.file-star:focus {\n text-decoration: none;\n color: #999;\n}\n.file-locked-icon {\n margin-left: .5rem;\n}\n.meta-info {\n font-size: .8125rem;\n}\n.file-view-content {\n padding: 30px 0;\n background: #f4f4f4;\n border-right: 4px solid transparent;\n}\n.tip {\n color: #808080;\n}\n\n.file-details-container {\n position: absolute;\n right: 0;\n background-color: #fff;\n width: 300px;\n height: 100%;\n box-shadow: -1px 0 3px 0 #ccc;\n animation: move .5s ease-in-out 1;\n z-index: 50;\n}\n@keyframes move {\n from {\n right: -500px;\n opacity: 0.5;\n }\n to {\n right: 0px;\n opacity: 1;\n }\n}\n /* for mobile */\n.file-view-body .seafile-comment {\n width: 100%;\n}\n@media (min-width: 768px) {\n .file-view-body .seafile-comment {\n width: 300px;\n border-left: 1px solid #e6e6dd;\n }\n}\n",".image-file-view {\n position: relative;\n text-align: center;\n}\n.image-file-view:before {\n content: ' '; \n display: inline-block;\n vertical-align: middle;\n height: 100%;\n font-size: 0;\n line-height: 0;\n}\n#image-view {\n padding: 1px; \n background: #fff;\n border: 1px solid #eee;\n width: auto;\n height: auto;\n max-width: calc(100% - 4px);\n max-height: calc(100% - 4px);\n font-size: 0;\n line-height: 0;\n}\n#img-prev,\n#img-next {\n position:absolute;\n top:48%;\n text-decoration:none;\n color:#888;\n width:50px;\n height:50px;\n background:#fff;\n border-radius:100%;\n line-height:50px;\n}\n#img-prev {\n left:15px;\n}\n#img-next {\n right:15px;\n}\n#img-prev:hover,\n#img-next:hover {\n color:#333;\n}\n",".svg-file-view {\n position: relative;\n text-align: center;\n}\n.svg-file-view:before {\n content: ' '; \n display: inline-block;\n vertical-align: middle;\n height: 100%;\n font-size: 0;\n line-height: 0;\n}\n#svg-view {\n max-width: 100%;\n max-height: 100%;\n}\n",".pdf-file-view {\n overflow: hidden;\n position: relative;\n}\n\n/* for pdf online file view */\n.pdf-file-view.file-view-content {\n border: 0;\n}\n\n.sf-hide {\n height: 0;\n overflow: hidden;\n}\n\n#outerContainer,\n#mainContainer,\n#viewerContainer {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n#viewerContainer {\n padding: 10px 0 0;\n overflow: auto;\n margin-bottom: 33px;\n}\n\n#viewerContainer:focus {\n outline: none;\n}\n\n.pdfViewer .page {\n position: relative;\n background: #fff;\n border: none;\n box-shadow: 0 0 6px #ccc;\n margin: 0 auto 10px;\n}\n\n.page .loading-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n}\n\n/* the following lines overwrite lines from web/viewer.css */\n#toolbarViewerMiddle {\n left: auto;\n right: 0;\n transform: none;\n}\n\nselect#scaleSelect {\n background: #fff;\n height: 24px;\n font-size: 12px;\n}\n\n#scaleSelectContainer::after {\n top: 4px;\n}\n\n/* errorWrapper starts */\n#errorWrapper {\n background: #ff6e6e;\n color: #0c0c0d;\n left: 0;\n position: absolute;\n right: 0;\n /*z-index: 1000;*/\n z-index: 998; /* for seahub */\n padding: 3px 6px;\n}\n/* errorWrapper ends */\n\n/* toolbar */\n.toolbar {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n /*z-index: 9999;*/\n z-index: 998; /* 1048: for seahub 'file view' */\n}\n\n#toolbarContainer {\n box-shadow: none;\n border-top: 1px solid #c9c9c9;\n height: auto;\n}\n\n#loadingBar {\n position: fixed;\n top: 50%;\n width: auto;\n height: auto;\n border: 0;\n background: transparent;\n}\n\ninput#pageNumber {\n font-size: 12px;\n height: 20px;\n padding: 0 5px;\n margin: 0 0 0 9px;\n}\n\n#numPages.toolbarLabel {\n margin: 0;\n padding: 0 7px;\n}\n\n/* toolbar ends */\n\n/* sidebar starts */\n#sidebarContainer {\n position: absolute;\n top: 0;\n bottom: 0;\n border-top: none;\n background: #fff;\n}\n\n#toolbarSidebar {\n height: auto;\n background: #fff;\n}\n\n#thumbnailView {\n width: 100%;\n padding: 0;\n}\n\n#thumbnails-header {\n}\n\n#thumbnails-header .title {\n font-size: 1rem;\n}\n\n#thumbnails-header .sf2-icon-x3 {\n font-family: 'seafile-font2';\n}\n\n#thumbnails-header .close-thumbnail-panel {\n font-size: 1rem;\n color: #999;\n}\n\n#thumbnails-header .close-thumbnail-panel:hover {\n color: #555;\n}\n\n#thumbnailView .thumbnail {\n float: none;\n max-width: unset;\n max-height: unset;\n width: auto;\n height: auto;\n padding: 10px 0;\n border: none;\n border-radius: unset;\n margin: 0 1px 0 0;\n text-align: center;\n}\n\n#thumbnailView .thumbnail.selected {\n background: #f0f0f0; \n}\n\n#thumbnailView .thumbnail .thumbnail-page-number {\n font-size: .875rem;\n color: #999;\n position: absolute;\n right: 100%;\n bottom: 0;\n}\n\n#thumbnailView .thumbnail .thumbnailImage {\n border: 1px solid #ddd;\n border-radius: 3px;\n}\n\n#thumbnailView .thumbnail.selected .thumbnailImage {\n border: 2px solid #ff9800;\n}\n\n#sidebarContent {\n inset-block: 51.5px 0;\n}\n\n.splitToolbarButton > .toolbarButton {\n float: none;\n}\n/* sidebar ends */\n\n/* overlay, passwordOverlay */\n#overlayContainer {\n display: table;\n position: absolute;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.2);\n /*z-index: 40000;*/\n z-index: 999; /* 1049: for seahub 'share' dialog */\n}\n\n.dirent-info .img .thumbnail {\n float: none;\n width: auto;\n height: auto;\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n}\n\n@media print {\n #wrapper {\n display: none;\n }\n}\n",".text-file-view .cm-editor {\n margin: 0 auto;\n border: 1px solid #ccc;\n box-shadow: 0 0 6px #ccc;\n}\n\n.text-file-view .cm-editor {\n height: auto;\n min-height: 300px;\n width: calc(100% - 40px);\n max-width: 950px;\n}\n\n.text-file-view .cm-editor.cm-focused {\n outline: none;\n}\n\n.text-file-view .cm-scroll {\n min-height: 300px;\n}\n\n.text-file-view .cm-gutter {\n min-height: 300px;\n}\n",".text-file-view {\n overflow: auto;\n}\n",".sf-code-mirror .cm-editor {\n height: 100vh;\n font-size: 13px;\n}\n\n.sf-code-mirror .cm-editor .cm-scroller {\n overflow-x: initial;\n}\n","/** common loading **/\n@-moz-keyframes commonLoading {\n 0% {\n -moz-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -moz-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-webkit-keyframes commonLoading {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes commonLoading {\n 0% {\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -moz-transform: rotate(360deg);\n -ms-transform: rotate(360deg);\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n.common-loading-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n border: 2px solid #eee;\n border-left-color: #aaa;\n border-radius: 50%;\n -moz-animation: commonLoading 0.9s infinite linear;\n -webkit-animation: commonLoading 0.9s infinite linear;\n animation: commonLoading 0.9s infinite linear;\n}\n\n.common-loading-tip {\n display: block;\n margin: 0 auto;\n}\n","/* insert element dropdown item */\n.sdoc-dropdown-item-with-left-icon .sdoc-dropdown-item-content .sdoc-dropdown-item-content-icon {\n color: #444;\n}\n",".link-op-menu {\n height: 36px;\n padding: 7px 8px;\n display: flex;\n position: absolute;\n background-color: #fff;\n border: 1px solid #e5e5e5;\n border-radius: 3px;\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);\n z-index: 1000;\n}\n\n.link-op-menu .link-op-menu-triangle {\n width: 8px;\n height: 8px;\n transform: rotate(45deg);\n background: #fff;\n border-right: 1px solid rgba(0, 40, 100, 0.12);\n border-bottom: 1px solid rgba(0, 40, 100, 0.12);\n position: absolute;\n top: 31px;\n right: 50%;\n z-index: 1001;\n}\n\n.link-op-menu-link {\n font-size: 12px;\n color: #212529;\n padding: 0 5px;\n border-radius: 2px;\n line-height: 20px;\n cursor: pointer;\n}\n\n.link-op-menu-link:hover {\n color: #212529;\n text-decoration: none;\n background: #f1f1f1;\n}\n\n.link-op-icons {\n margin-left: 8px;\n border-left: 1px solid #e5e5e5;\n}\n\n.link-op-icon {\n color: #999999;\n padding: 4px;\n border-radius: 2px;\n margin-left: 8px;\n display: flex;\n align-items: center;\n}\n\n.link-op-icon .sdocfont {\n font-size: 12px;\n color: #444;\n}\n\n.link-op-icon:hover {\n background: #f2f2f2;\n}\n\n.seafile-ed-hovermenu-mouseclick {\n background-color: #e5e5e5;\n}\n",".sdoc-tooltip {\n pointer-events: none;\n}\n\n.sdoc-tooltip .tooltip-inner {\n font-weight: lighter;\n text-align: start;\n background-color: #303133;\n}\n\n.sdoc-tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n border-bottom-color: #303133;\n}\n\n.sdoc-tooltip.bs-tooltip-auto[x-placement^=\"top\"] {\n margin-bottom: -2px;\n}\n\n.sdoc-tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n border-top-color: #303133;\n}\n\n.sdoc-tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n border-right-color: #303133;\n}\n\n.sdoc-tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n border-left-color: #303133;\n}\n",".menu-group .sdoc-color-menu.menu-show {\n background: #e5e5e5;\n border-radius: 2px;\n}\n\n.menu-group .sdoc-color-menu .last-used-color-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.menu-group .sdoc-color-menu .last-used-color-container.disabled {\n padding-right: 0;\n}\n\n.menu-group .sdoc-color-menu .sdoc-color-toggle {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.menu-group .sdoc-color-menu .sdoc-color-toggle:hover,\n.menu-group .sdoc-color-menu .last-used-color-container:not(.disabled):hover {\n background-color: #E5E5E5;\n}\n\n.menu-group .sdoc-color-menu.disabled .sdoc-color-toggle {\n display: none;\n}\n\n.sdoc-color-menu .sdoc-color-icon {\n height: 12px;\n width: 12px;\n transform: scale(.85);\n line-height: 12px;\n}\n\n.sdoc-color-menu .last-used-color {\n width: 14px;\n height: 3px;\n border-radius: 1px;\n margin-top: 1px;\n border: 1px solid rgba(0, 0, 0, .08);\n}\n\n.sdoc-color-menu-popover .popover {\n left: -24px !important;\n}\n\n.sdoc-color-menu-popover .sdoc-color-dropdown-menu {\n width: 251px;\n padding: 0 0 12px 0;\n}\n\n.sdoc-color-menu-popover .sdoc-color-no-color-container {\n width: 100%;\n height: 24px;\n margin-bottom: 5px;\n}\n\n.sdoc-color-menu-popover .sdoc-color-no-color-content {\n height: 100%;\n width: 100%;\n text-align: center;\n border: 1px solid rgba(0, 0, 0, .12);\n border-radius: 2px;\n font-size: 12px;\n line-height: 22px;\n cursor: pointer;\n}\n\n.sdoc-color-menu-popover .sdoc-color-default-colors-container {\n display: flex;\n flex-wrap: wrap;\n}\n\n.sdoc-color-menu-popover .sdoc-color-item {\n position: relative;\n height: 20px;\n width: 20px;\n margin-right: 3px;\n margin-bottom: 3px;\n border: 0.5px solid rgba(0, 0, 0, .08);\n}\n\n.sdoc-color-menu-popover .sdoc-color-item:not(.selected):hover::before {\n content: '';\n position: absolute;\n width: calc(100% + 5px);\n height: calc((100% + 5px));\n top: -2.5px;\n left: -2.5px;\n pointer-events: none;\n border: 1px solid rgba(0, 0, 0, .24);\n}\n\n.sdoc-color-menu-popover .sdoc-color-item.selected::after {\n content: '';\n position: absolute;\n width: calc(100% + 5px);\n height: calc((100% + 5px));\n top: -2.5px;\n left: -2.5px;\n pointer-events: none;\n border: 1px solid rgba(0, 0, 0, .88);\n}\n\n.sdoc-color-menu-popover .sdoc-color-item:hover {\n cursor: pointer;\n}\n\n.sdoc-color-menu-popover .sdoc-color-item:nth-child(10n) {\n margin-right: 0px;\n}\n\n.sdoc-color-menu-popover .sdoc-color-sub-title {\n font-size: 11px;\n line-height: 16px;\n margin: 7px 0;\n color: rgba(0, 0, 0, 0.4);\n}\n\n.sdoc-color-menu-popover .sdoc-colors-divider {\n width: 100%;\n height: 1px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n margin: 0px 0 8px 0;\n}\n\n.sdoc-color-menu-popover .sdoc-more-colors {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 30px;\n font-size: 12px;\n padding: 0 12px;\n}\n\n.sdoc-color-menu-popover .sdoc-more-colors .sdocfont {\n font-size: 12px;\n transform: scale(.6);\n color: #888;\n}\n\n.sdoc-color-menu-popover .sdoc-more-colors.show-pick {\n cursor: pointer;\n background-color: rgba(51, 77, 102, .06);\n}\n\n.sdoc-more-colors-popover .popover {\n left: 10px !important;\n}\n\n/* commission */\n.menu-group #button-sdoc-highlight-color .sdoc-color-icon {\n position: relative;\n left: 1px;\n}\n",".menu-group {\n height: 100%;\n padding: 6px 0 6px 8px;\n font-size: 0.75rem;\n border-right: 1px solid #e5e6e8;\n color: #444;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.menu-group .menu-group-item {\n width: 24px;\n height: 24px;\n line-height: 24px;\n margin-right: 8px;\n border: none !important;\n color: #444;\n background-color: #fff;\n}\n\n.menu-group .menu-group-item:disabled {\n color: #BDBDBD;\n}\n\n.menu-group .menu-group-item:hover {\n background-color: #F2F2F2;\n border-radius: 2px;\n}\n\n.menu-group .menu-group-item[data-active='true'] {\n color: #eb8205;\n}\n\n.menu-group .menu-group-item .sdocfont,\n.sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-icon .sdocfont {\n font-size: 12px;\n}\n\n/* sdoc-menu-with-dropdown */\n.menu-group .menu-group-item.sdoc-menu-with-dropdown {\n width: 36px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 0 !important;\n padding: 0 !important;\n margin-right: 10px;\n overflow: hidden;\n}\n\n.menu-group .menu-group-item.sdoc-menu-with-dropdown.disabled {\n color: #999;\n width: 24px !important;\n}\n\n.sdoc-menu-with-dropdown:not(.disabled):hover {\n background: #F2F2F2;\n border-radius: 2px;\n}\n\n.sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-icon {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-triangle {\n width: 12px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-triangle .sdoc-menu-with-dropdown-triangle-icon {\n font-size: 12px;\n color: #999;\n}\n",".sdoc-code-block-hover-menu-container {\n position: absolute;\n height: 42px;\n z-index: 101;\n width: fit-content;\n max-width: 250px;\n}\n\n.sdoc-code-block-hover-menu-container .hover-menu-container {\n height: 36px;\n width: 100%;\n padding: 7px 8px;\n background-color: #fff;\n display: flex;\n justify-content: space-around;\n align-items: center;\n border-radius: 3px;\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);\n border: 1px solid #e8e8e8;\n}\n\n.sdoc-code-block-hover-menu-container .hover-menu-container .active {\n color: #212529;\n text-decoration: none;\n background: #f2f2f2;\n}\n\n.sdoc-code-block-hover-menu-container .hover-menu-container .op-item {\n position: relative;\n height: 100%;\n width: 100%;\n font-size: 12px;\n color: #212529;\n border-radius: 2px;\n text-align: center;\n line-height: 20px;\n}\n\n.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-item.sdoc-code-block-hover-operation-lang .op-item {\n padding: 0 5px;\n}\n\n.sdoc-code-block-hover-menu-container .hover-menu-container .sdoc-code-block-hover-operation-lang .icon-font {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-left: 8px;\n}\n\n.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-item {\n height: 20px;\n width: 20px;\n text-align: center;\n justify-content: center;\n}\n\n.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-item.sdoc-code-block-hover-operation-lang {\n width: fit-content;\n}\n\n.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-lang .icon-font {\n color: #999;\n}\n\n.sdoc-code-block-hover-menu-container .sdoc-code-block-hover-operation-divider {\n height: 20px;\n width: 1px;\n background-color: #e5e5e5;\n margin: 0 8px;\n}\n\n.sdoc-code-block-hover-menu-container .hover-menu-container .op-item:hover {\n color: #212529;\n text-decoration: none;\n background: #f2f2f2;\n}\n\n.sdoc-code-block-hover-menu-container .icon-font {\n font-size: 12px;\n color: #444;\n}\n\n.sdoc-langs-list-container {\n position: absolute;\n top: 38px;\n left: 0px;\n width: 200px;\n overflow-y: hidden;\n background-color: #fff;\n border-radius: 4px;\n box-shadow: 0 0 5px #ccc;\n border: 1px solid #dedede;\n}\n\n.sdoc-langs-list-container .sdoc-search-langs {\n padding: 10px 10px 0;\n}\n\n.sdoc-langs-list-container .sdoc-search-langs input {\n max-height: 30px;\n font-size: 14px;\n}\n\n.sdoc-langs-list-container .langs-list-ul {\n list-style: none;\n overflow-y: auto;\n max-height: 280px;\n min-height: 100px;\n padding: 10px;\n}\n\n.sdoc-langs-list-container .langs-list-ul .langs-list-li {\n position: relative;\n white-space: nowrap;\n cursor: pointer;\n line-height: 30px;\n height: 30px;\n font-size: 13px;\n padding-left: 12px;\n display: flex;\n justify-content: space-between;\n}\n\n.sdoc-langs-list-container .langs-list-ul .langs-list-li:hover {\n background-color: #f5f5f5;;\n}\n\n.sdoc-langs-list-container .langs-list-ul .langs-list-li .active {\n background-color: #f5f5f5;;\n}\n\n.sdoc-langs-list-container .langs-list-ul .langs-list-li .li-check-mark {\n opacity: 0;\n padding: 0 10px;\n}\n\n.sdoc-langs-list-container .langs-list-ul .langs-list-li .li-checked {\n opacity: 1;\n}\n",".sdoc-code-block-container {\n position: relative;\n}\n\n.sdoc-code-block-pre {\n background: #FAFAFA;\n border: 1px solid #f0f0f0;\n}\n\n.sdoc-code-block-pre .sdoc-code-no-wrap {\n white-space: nowrap;\n}\n\n.sdoc-code-block-pre .sdoc-code-no-wrap .sdoc-code-line > span {\n white-space: pre;\n}\n\n.sdoc-code-block-code .sdoc-code-line {\n position: relative;\n counter-increment: number;\n margin-left: 32px;\n}\n\n.sdoc-code-block-code .sdoc-code-line::before {\n content: counter(number);\n color: #ccc;\n width: 40px;\n text-align: end;\n position: absolute;\n left: -50px;\n}\n\n.sdoc-code-line\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: slategray;\n}\n\n.sdoc-code-line\n.token.punctuation {\n color: #999;\n}\n\n.sdoc-code-line\n.token.namespace {\n opacity: .7;\n}\n\n.sdoc-code-line\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n color: #905;\n padding: 0rem;\n}\n\n.sdoc-code-line\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n color: #690;\n}\n\n.sdoc-code-line\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n color: #9a6e3a;\n}\n\n.sdoc-code-line\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n color: #07a;\n}\n\n.sdoc-code-line\n.token.function,\n.token.class-name {\n color: #DD4A68;\n}\n\n.sdoc-code-line\n.token.regex,\n.token.important,\n.token.variable {\n color: #e90;\n}\n\n.sdoc-code-line\n.sdoc-code-line\n.token.important,\n.token.bold {\n font-weight: bold;\n}\n\n.sdoc-code-line\n.token.italic {\n font-style: italic;\n}\n\n.sdoc-code-line\n.token.entity {\n cursor: help;\n}\n","@keyframes closeWindow {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n\n.ril__outer {\n background-color: rgba(0, 0, 0, 0.85);\n outline: none;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n width: 100%;\n height: 100%;\n -ms-content-zooming: none;\n -ms-user-select: none;\n -ms-touch-select: none;\n touch-action: none;\n}\n\n.ril__outerClosing {\n opacity: 0;\n}\n\n.ril__inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.ril__image,\n.ril__imagePrev,\n.ril__imageNext {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n max-width: none;\n -ms-content-zooming: none;\n -ms-user-select: none;\n -ms-touch-select: none;\n touch-action: none;\n}\n\n.ril__imageDiscourager {\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n}\n\n.ril__navButtons {\n border: none;\n position: absolute;\n top: 0;\n bottom: 0;\n width: 20px;\n height: 34px;\n padding: 40px 30px;\n margin: auto;\n cursor: pointer;\n opacity: 0.7;\n}\n.ril__navButtons:hover {\n opacity: 1;\n}\n.ril__navButtons:active {\n opacity: 0.7;\n}\n\n.ril__outer .ril__navButtonPrev {\n left: 0;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMzkyNjY0MTMzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEyNDkwIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBkPSJNNDEyIDUxNS4ybDM2MS42LTM2MS42YzIyLjQtMTkuMiAyMi40LTU0LjQgMC03Ni44cy01Ny42LTIyLjQtNzYuOCAwbC00MDYuNCA0MDBjLTIyLjQgMjIuNC0yMi40IDU3LjYgMCA3Ni44bDQwNi40IDQwMy4yYzIyLjQgMjIuNCA1Ny42IDIyLjQgNzYuOCAwczIyLjQtNTcuNiAwLTc2LjhsLTM2MS42LTM2NC44eiIgZmlsbD0iI2ZmZmZmZiIgcC1pZD0iMTI0OTEiPjwvcGF0aD48L3N2Zz4=)\n no-repeat center;\n}\n\n.ril__outer .ril__navButtonNext {\n right: 0;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMzkxOTM4MzIwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjExOTg2IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBkPSJNNjQwIDUxNS4yTDI3OC40IDE1My42Yy0yMi40LTE5LjItMjIuNC01NC40IDAtNzYuOHM1Ny42LTIyLjQgNzYuOCAwbDQwNi40IDQwMGMyMi40IDIyLjQgMjIuNCA1Ny42IDAgNzYuOEwzNTUuMiA5NTYuOGMtMjIuNCAyMi40LTU3LjYgMjIuNC03Ni44IDBzLTIyLjQtNTcuNiAwLTc2LjhMNjQwIDUxNS4yeiIgZmlsbD0iI2ZmZmZmZiIgcC1pZD0iMTE5ODciPjwvcGF0aD48L3N2Zz4=)\n no-repeat center;\n}\n\n.ril__downloadBlocker {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-image: url('data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7');\n background-size: cover;\n}\n\n.ril__caption,\n.ril__toolbar {\n background-color: rgba(0, 0, 0, 0.5);\n position: absolute;\n left: 0;\n right: 0;\n display: flex;\n justify-content: space-between;\n}\n\n.ril__caption {\n bottom: 0;\n max-height: 150px;\n overflow: auto;\n justify-content: center;\n}\n\n.ril__captionContent {\n padding: 10px 20px;\n color: #fff;\n margin: 0 auto;\n}\n\n.ril__toolbar {\n top: 0;\n height: 50px;\n}\n\n.ril__toolbarSide {\n height: 50px;\n margin: 0;\n}\n\n.ril__toolbarLeftSide {\n padding-left: 20px;\n padding-right: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ril__toolbarRightSide {\n padding-left: 0;\n padding-right: 20px;\n flex: 0 0 auto;\n}\n\n.ril__toolbarItem {\n display: inline-block;\n line-height: 50px;\n padding: 0;\n color: #fff;\n font-size: 120%;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ril__toolbarItemChild {\n vertical-align: middle;\n}\n\n.ril__builtinButton {\n width: 40px;\n height: 35px;\n cursor: pointer;\n border: none;\n opacity: 0.7;\n}\n\n.mobile-image-footer-choice .ril__builtinButton {\n opacity: 1;\n}\n\n.ril__builtinButton:hover {\n opacity: 1;\n}\n\n.ril__builtinButton:active {\n outline: none;\n}\n\n.ril-toolbar .ril__builtinButton {\n width: 30px;\n}\n\n.ril__builtinButtonDisabled {\n cursor: default;\n opacity: 0.5;\n}\n\n.ril__builtinButtonDisabled:hover {\n opacity: 0.5;\n}\n\n/* ril-toolbar icons: size: 16px * 16px, color: #FFF */\n.ril__deleteButton {\n background: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSJweCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgo8ZyBpZD0ic3VyZmFjZTEiPgo8cGF0aCBzdHlsZT0iIHN0cm9rZTpub25lO2ZpbGwtcnVsZTpub256ZXJvO2ZpbGw6cmdiKDEwMCUsMTAwJSwxMDAlKTtmaWxsLW9wYWNpdHk6MTsiIGQ9Ik0gMTAuMTk5MjE5IDAuNSBDIDEwLjYwMTU2MiAwLjUgMTEgMC44NTE1NjIgMTEuMDUwNzgxIDEuMjUgTCAxMS4yNSAyLjYwMTU2MiBMIDE0Ljg1MTU2MiAyLjYwMTU2MiBDIDE1LjE5OTIxOSAyLjYwMTU2MiAxNS41IDIuODk4NDM4IDE1LjUgMy4xOTkyMTkgQyAxNS41IDMuNSAxNS4xOTkyMTkgMy44MDA3ODEgMTQuODUxNTYyIDMuODAwNzgxIEwgMTMuNjAxNTYyIDMuODAwNzgxIEwgMTMuNjAxNTYyIDEzLjgwMDc4MSBDIDEzLjYwMTU2MiAxNC4xOTkyMTkgMTMuMzk4NDM4IDE0LjY0ODQzOCAxMy4xMDE1NjIgMTUgQyAxMi43NSAxNS4zNTE1NjIgMTIuMzUxNTYyIDE1LjQ0OTIxOSAxMS44OTg0MzggMTUuNDQ5MjE5IEwgNC4xNDg0MzggMTUuNDQ5MjE5IEMgMy42OTkyMTkgMTUuNDQ5MjE5IDMuMjUgMTUuMjUgMi45NDkyMTkgMTUgQyAyLjYwMTU2MiAxNC42NDg0MzggMi40NDkyMTkgMTQuMjUgMi40NDkyMTkgMTMuODAwNzgxIEwgMi40NDkyMTkgMy44MDA3ODEgTCAxLjE0ODQzOCAzLjgwMDc4MSBDIDAuODAwNzgxIDMuODUxNTYyIDAuNSAzLjU1MDc4MSAwLjUgMy4yNSBDIDAuNSAyLjk0OTIxOSAwLjgwMDc4MSAyLjY0ODQzOCAxLjE0ODQzOCAyLjY0ODQzOCBMIDQuNjk5MjE5IDIuNjQ4NDM4IEwgNC42OTkyMTkgMi41NTA3ODEgTCA0Ljg5ODQzOCAxLjE5OTIxOSBDIDQuOTQ5MjE5IDAuODUxNTYyIDUuMzAwNzgxIDAuNSA1Ljc1IDAuNSBaIE0gOS42NDg0MzggNi4xMDE1NjIgQyA5LjI1IDYuMTAxNTYyIDguOTQ5MjE5IDYuMzk4NDM4IDguOTQ5MjE5IDYuODAwNzgxIEwgOC45NDkyMTkgMTIgQyA4Ljk0OTIxOSAxMi4zOTg0MzggOS4yNSAxMi42OTkyMTkgOS42NDg0MzggMTIuNjk5MjE5IEMgMTAuMDUwNzgxIDEyLjY5OTIxOSAxMC4zNTE1NjIgMTIuMzk4NDM4IDEwLjM1MTU2MiAxMiBMIDEwLjM1MTU2MiA2Ljg1MTU2MiBDIDEwLjM1MTU2MiA2LjQ0OTIxOSAxMC4wNTA3ODEgNi4xMDE1NjIgOS42NDg0MzggNi4xMDE1NjIgWiBNIDYuMzUxNTYyIDYuMTAxNTYyIEMgNS45NDkyMTkgNi4xMDE1NjIgNS42NDg0MzggNi4zOTg0MzggNS42NDg0MzggNi44MDA3ODEgTCA1LjY0ODQzOCAxMiBDIDUuNjQ4NDM4IDEyLjM5ODQzOCA1Ljk0OTIxOSAxMi42OTkyMTkgNi4zNTE1NjIgMTIuNjk5MjE5IEMgNi43NSAxMi42OTkyMTkgNy4wNTA3ODEgMTIuMzk4NDM4IDcuMDUwNzgxIDEyIEwgNy4wNTA3ODEgNi44NTE1NjIgQyA3LjA1MDc4MSA2LjQ0OTIxOSA2Ljc1IDYuMTAxNTYyIDYuMzUxNTYyIDYuMTAxNTYyIFogTSA2LjM1MTU2MiA2LjEwMTU2MiAiLz4KPC9nPgo8L3N2Zz4K\")\n no-repeat center;\n}\n\n.ril__downloadButton {\n background: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSJweCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgo8ZyBpZD0ic3VyZmFjZTEiPgo8cGF0aCBzdHlsZT0iIHN0cm9rZTpub25lO2ZpbGwtcnVsZTpub256ZXJvO2ZpbGw6cmdiKDEwMCUsMTAwJSwxMDAlKTtmaWxsLW9wYWNpdHk6MTsiIGQ9Ik0gOS4xMDE1NjIgOC44OTg0MzggTCA5LjEwMTU2MiAxLjYwMTU2MiBDIDkuMTAxNTYyIDAuOTQ5MjE5IDguNjAxNTYyIDAuNSA4IDAuNSBDIDcuMzk4NDM4IDAuNSA2Ljg5ODQzOCAwLjk0OTIxOSA2Ljg5ODQzOCAxLjYwMTU2MiBMIDYuODk4NDM4IDguODk4NDM4IEwgNC4xOTkyMTkgNi4xOTkyMTkgQyAzLjgwMDc4MSA1LjgwMDc4MSAzLjEwMTU2MiA1LjgwMDc4MSAyLjY5OTIxOSA2LjI1IEMgMi4zMDA3ODEgNi42NDg0MzggMi4zMDA3ODEgNy4zNTE1NjIgMi42OTkyMTkgNy43NSBMIDcuMjUgMTIuMzAwNzgxIEMgNy42NDg0MzggMTIuNjk5MjE5IDguMzUxNTYyIDEyLjY5OTIxOSA4Ljc1IDEyLjMwMDc4MSBMIDEzLjMwMDc4MSA3Ljc1IEMgMTMuNjk5MjE5IDcuMzUxNTYyIDEzLjY5OTIxOSA2LjY0ODQzOCAxMy4zNTE1NjIgNi4yNSBDIDEyLjk0OTIxOSA1Ljg1MTU2MiAxMi4yNSA1Ljg1MTU2MiAxMS44NTE1NjIgNi4xOTkyMTkgQyAxMS44NTE1NjIgNi4xOTkyMTkgMTEuODUxNTYyIDYuMTk5MjE5IDExLjgwMDc4MSA2LjI1IFogTSAxLjYwMTU2MiAxMy4zNTE1NjIgTCAxNC40NDkyMTkgMTMuMzUxNTYyIEMgMTUuMDUwNzgxIDEzLjM1MTU2MiAxNS41NTA3ODEgMTMuODAwNzgxIDE1LjU1MDc4MSAxNC40NDkyMTkgQyAxNS41NTA3ODEgMTUuMTAxNTYyIDE1LjA1MDc4MSAxNS41IDE0LjM5ODQzOCAxNS41IEwgMS42MDE1NjIgMTUuNSBDIDAuOTQ5MjE5IDE1LjUgMC41IDE1LjA1MDc4MSAwLjUgMTQuMzk4NDM4IEMgMC41IDEzLjg1MTU2MiAwLjk0OTIxOSAxMy4zNTE1NjIgMS42MDE1NjIgMTMuMzUxNTYyIFogTSAxLjYwMTU2MiAxMy4zNTE1NjIgIi8+CjwvZz4KPC9zdmc+Cg==\")\n no-repeat center;\n}\n\n.ril__downMoveButton {\n background: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSJweCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgo8ZyBpZD0ic3VyZmFjZTEiPgo8cGF0aCBzdHlsZT0iIHN0cm9rZTpub25lO2ZpbGwtcnVsZTpub256ZXJvO2ZpbGw6cmdiKDEwMCUsMTAwJSwxMDAlKTtmaWxsLW9wYWNpdHk6MTsiIGQ9Ik0gOCAxNS41IEMgMy44NTE1NjIgMTUuNSAwLjUgMTIuMTQ4NDM4IDAuNSA4IEMgMC41IDMuODUxNTYyIDMuODUxNTYyIDAuNSA4IDAuNSBDIDEyLjE0ODQzOCAwLjUgMTUuNSAzLjg1MTU2MiAxNS41IDggQyAxNS41IDEyLjE0ODQzOCAxMi4xNDg0MzggMTUuNSA4IDE1LjUgWiBNIDggMi4xNDg0MzggQyA0LjgwMDc4MSAyLjE0ODQzOCAyLjE0ODQzOCA0LjgwMDc4MSAyLjE0ODQzOCA4IEMgMi4xNDg0MzggMTEuMTk5MjE5IDQuODAwNzgxIDEzLjg1MTU2MiA4IDEzLjg1MTU2MiBDIDExLjE5OTIxOSAxMy44NTE1NjIgMTMuODUxNTYyIDExLjE5OTIxOSAxMy44NTE1NjIgOCBDIDEzLjg1MTU2MiA0LjgwMDc4MSAxMS4xOTkyMTkgMi4xNDg0MzggOCAyLjE0ODQzOCBaIE0gOCAyLjE0ODQzOCAiLz4KPHBhdGggc3R5bGU9IiBzdHJva2U6bm9uZTtmaWxsLXJ1bGU6bm9uemVybztmaWxsOnJnYigxMDAlLDEwMCUsMTAwJSk7ZmlsbC1vcGFjaXR5OjE7IiBkPSJNIDguNTUwNzgxIDEwIEMgOC4xOTkyMTkgMTAuMzAwNzgxIDcuNjk5MjE5IDEwLjMwMDc4MSA3LjM1MTU2MiAxMCBMIDQuNDQ5MjE5IDcuMTAxNTYyIEMgNC4xOTkyMTkgNi43NSA0LjE5OTIxOSA2LjI1IDQuNSA1Ljk0OTIxOSBDIDQuODAwNzgxIDUuNjQ4NDM4IDUuMzAwNzgxIDUuNjAxNTYyIDUuNjQ4NDM4IDUuODk4NDM4IEwgNy45NDkyMTkgOC4xOTkyMTkgTCAxMC4yNSA1Ljg5ODQzOCBDIDEwLjQ0OTIxOSA1LjY0ODQzOCAxMC44MDA3ODEgNS41NTA3ODEgMTEuMTAxNTYyIDUuNjAxNTYyIEMgMTEuMzk4NDM4IDUuNjQ4NDM4IDExLjY0ODQzOCA1Ljg5ODQzOCAxMS43NSA2LjI1IEMgMTEuODAwNzgxIDYuNTUwNzgxIDExLjY5OTIxOSA2Ljg5ODQzOCAxMS40NDkyMTkgNy4xMDE1NjIgWiBNIDguNTUwNzgxIDEwICIvPgo8L2c+Cjwvc3ZnPgo=\")\n no-repeat center;\n}\n\n.ril__upMoveButton {\n background: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSJweCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgo8ZyBpZD0ic3VyZmFjZTEiPgo8cGF0aCBzdHlsZT0iIHN0cm9rZTpub25lO2ZpbGwtcnVsZTpub256ZXJvO2ZpbGw6cmdiKDEwMCUsMTAwJSwxMDAlKTtmaWxsLW9wYWNpdHk6MTsiIGQ9Ik0gOCAwLjUgQyAzLjg1MTU2MiAwLjUgMC41IDMuODUxNTYyIDAuNSA4IEMgMC41IDEyLjE0ODQzOCAzLjg1MTU2MiAxNS41IDggMTUuNSBDIDEyLjE0ODQzOCAxNS41IDE1LjUgMTIuMTQ4NDM4IDE1LjUgOCBDIDE1LjUgMy44NTE1NjIgMTIuMTQ4NDM4IDAuNSA4IDAuNSBaIE0gOCAxMy44NTE1NjIgQyA0LjgwMDc4MSAxMy44NTE1NjIgMi4xNDg0MzggMTEuMTk5MjE5IDIuMTQ4NDM4IDggQyAyLjE0ODQzOCA0LjgwMDc4MSA0LjgwMDc4MSAyLjE0ODQzOCA4IDIuMTQ4NDM4IEMgMTEuMTk5MjE5IDIuMTQ4NDM4IDEzLjg1MTU2MiA0LjgwMDc4MSAxMy44NTE1NjIgOCBDIDEzLjg1MTU2MiAxMS4xOTkyMTkgMTEuMTk5MjE5IDEzLjg1MTU2MiA4IDEzLjg1MTU2MiBaIE0gOCAxMy44NTE1NjIgIi8+CjxwYXRoIHN0eWxlPSIgc3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDpyZ2IoMTAwJSwxMDAlLDEwMCUpO2ZpbGwtb3BhY2l0eToxOyIgZD0iTSA4LjU1MDc4MSA2IEMgOC4xOTkyMTkgNS42OTkyMTkgNy42OTkyMTkgNS42OTkyMTkgNy4zNTE1NjIgNiBMIDQuNDQ5MjE5IDguODk4NDM4IEMgNC4xOTkyMTkgOS4yNSA0LjE5OTIxOSA5Ljc1IDQuNSAxMC4wNTA3ODEgQyA0LjgwMDc4MSAxMC4zNTE1NjIgNS4zMDA3ODEgMTAuMzk4NDM4IDUuNjQ4NDM4IDEwLjEwMTU2MiBMIDcuOTQ5MjE5IDcuODAwNzgxIEwgMTAuMjUgMTAuMTAxNTYyIEMgMTAuNDQ5MjE5IDEwLjM1MTU2MiAxMC44MDA3ODEgMTAuNDQ5MjE5IDExLjEwMTU2MiAxMC4zOTg0MzggQyAxMS4zOTg0MzggMTAuMzUxNTYyIDExLjY0ODQzOCAxMC4xMDE1NjIgMTEuNzUgOS43NSBDIDExLjgwMDc4MSA5LjQ0OTIxOSAxMS42OTkyMTkgOS4xMDE1NjIgMTEuNDQ5MjE5IDguODk4NDM4IFogTSA4LjU1MDc4MSA2ICIvPgo8L2c+Cjwvc3ZnPgo=\")\n no-repeat center;\n}\n\n.ril__closeButton {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMzk1NTkwMTc0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEzNjUyIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48cGF0aCBkPSJNNjExLjIgNTEybDMwMC44LTMwMC44YzI4LjgtMjguOCAyOC44LTczLjYgMC05OS4ycy03My42LTI4LjgtOTkuMiAwTDUxMiA0MTIuOCAyMTEuMiAxMTJjLTI4LjgtMjguOC03My42LTI4LjgtOTkuMiAwcy0yOC44IDczLjYgMCA5OS4ybDMwMC44IDMwMC44LTMwMC44IDMwMC44Yy0yOC44IDI4LjgtMjguOCA3My42IDAgOTkuMiAyOC44IDI1LjYgNzMuNiAyOC44IDk5LjIgMGwzMDAuOC0zMDAuOCAzMDAuOCAzMDAuOGMyOC44IDI4LjggNzMuNiAyOC44IDk5LjIgMCAyOC44LTI4LjggMjguOC03My42IDAtOTkuMkw2MTEuMiA1MTJ6IiBmaWxsPSIjZmZmZmZmIiBwLWlkPSIxMzY1MyI+PC9wYXRoPjwvc3ZnPg==)\n no-repeat center;\n}\n\n/* ril-caption icons: size: 20px * 20px, color: #FFF */\n.ril__zoomInButton {\n background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PGcgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PHBhdGggZD0iTTEgMTlsNi02Ii8+PHBhdGggZD0iTTkgOGg2Ii8+PHBhdGggZD0iTTEyIDV2NiIvPjwvZz48Y2lyY2xlIGN4PSIxMiIgY3k9IjgiIHI9IjciIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIyIi8+PC9zdmc+')\n no-repeat center;\n}\n\n.ril__zoomOutButton {\n background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PGcgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PHBhdGggZD0iTTEgMTlsNi02Ii8+PHBhdGggZD0iTTkgOGg2Ii8+PC9nPjxjaXJjbGUgY3g9IjEyIiBjeT0iOCIgcj0iNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4=')\n no-repeat center;\n}\n\n.ril__rotateButton {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMzkyNzI4MTMyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEyODc1IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48cGF0aCBkPSJNMTI0LjggMTYwbDU0LjQgNTEuMkMzNDUuNiAyOC44IDYzMC40IDE2IDgxMi44IDE4Mi40czE5NS4yIDQ1MS4yIDI4LjggNjMzLjYtNDUxLjIgMTk1LjItNjMzLjYgMjguOGMtMzguNC0zNS4yLTczLjYtNzYuOC05Ni0xMjQuOC02LjQtOS42LTkuNi0xNi05LjYtMjguOCAwLTMyIDI1LjYtNTQuNCA1NC40LTU0LjQgMTkuMiAwIDM4LjQgOS42IDU0LjQgMzIgODMuMiAxNjYuNCAyODggMjMwLjQgNDU0LjQgMTQ0czIzMC40LTI5MS4yIDE0NC00NTcuNi0yODgtMjMwLjQtNDU0LjQtMTQ0Yy0zNS4yIDE5LjItNjcuMiA0MS42LTk2IDczLjZsNTEuMiA0NC44YzEyLjggMTIuOCAxNiAzOC40IDMuMiA1MS4yLTYuNCA2LjQtMTYgOS42LTI1LjYgOS42bC0xODIuNCA5LjZjLTE5LjIgMC0zNS4yLTEyLjgtMzguNC0zMkw2NCAxODguOGMtMy4yLTE5LjIgMTIuOC0zNS4yIDMyLTM4LjQgMTIuOC0zLjIgMjIuNCAzLjIgMjguOCA5LjZ6IiBmaWxsPSIjZmZmZmZmIiBwLWlkPSIxMjg3NiI+PC9wYXRoPjwvc3ZnPg==)\n no-repeat center;\n}\n\n.ril__outerAnimating {\n animation-name: closeWindow;\n}\n\n/* .ril_rotateImageButton {\n transform: rotateY(180deg);\n} */\n\n@keyframes pointFade {\n 0%,\n 19.999%,\n 100% {\n opacity: 0;\n }\n 20% {\n opacity: 1;\n }\n}\n\n.ril__loadingCircle {\n width: 60px;\n height: 60px;\n position: relative;\n}\n\n.ril__loadingCirclePoint {\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.ril__loadingCirclePoint::before {\n content: '';\n display: block;\n margin: 0 auto;\n width: 11%;\n height: 30%;\n background-color: #fff;\n border-radius: 30%;\n animation: pointFade 800ms infinite ease-in-out both;\n}\n.ril__loadingCirclePoint:nth-of-type(1) {\n transform: rotate(0deg);\n}\n.ril__loadingCirclePoint:nth-of-type(7) {\n transform: rotate(180deg);\n}\n.ril__loadingCirclePoint:nth-of-type(1)::before,\n.ril__loadingCirclePoint:nth-of-type(7)::before {\n animation-delay: -800ms;\n}\n.ril__loadingCirclePoint:nth-of-type(2) {\n transform: rotate(30deg);\n}\n.ril__loadingCirclePoint:nth-of-type(8) {\n transform: rotate(210deg);\n}\n.ril__loadingCirclePoint:nth-of-type(2)::before,\n.ril__loadingCirclePoint:nth-of-type(8)::before {\n animation-delay: -666ms;\n}\n.ril__loadingCirclePoint:nth-of-type(3) {\n transform: rotate(60deg);\n}\n.ril__loadingCirclePoint:nth-of-type(9) {\n transform: rotate(240deg);\n}\n.ril__loadingCirclePoint:nth-of-type(3)::before,\n.ril__loadingCirclePoint:nth-of-type(9)::before {\n animation-delay: -533ms;\n}\n.ril__loadingCirclePoint:nth-of-type(4) {\n transform: rotate(90deg);\n}\n.ril__loadingCirclePoint:nth-of-type(10) {\n transform: rotate(270deg);\n}\n.ril__loadingCirclePoint:nth-of-type(4)::before,\n.ril__loadingCirclePoint:nth-of-type(10)::before {\n animation-delay: -400ms;\n}\n.ril__loadingCirclePoint:nth-of-type(5) {\n transform: rotate(120deg);\n}\n.ril__loadingCirclePoint:nth-of-type(11) {\n transform: rotate(300deg);\n}\n.ril__loadingCirclePoint:nth-of-type(5)::before,\n.ril__loadingCirclePoint:nth-of-type(11)::before {\n animation-delay: -266ms;\n}\n.ril__loadingCirclePoint:nth-of-type(6) {\n transform: rotate(150deg);\n}\n.ril__loadingCirclePoint:nth-of-type(12) {\n transform: rotate(330deg);\n}\n.ril__loadingCirclePoint:nth-of-type(6)::before,\n.ril__loadingCirclePoint:nth-of-type(12)::before {\n animation-delay: -133ms;\n}\n.ril__loadingCirclePoint:nth-of-type(7) {\n transform: rotate(180deg);\n}\n.ril__loadingCirclePoint:nth-of-type(13) {\n transform: rotate(360deg);\n}\n.ril__loadingCirclePoint:nth-of-type(7)::before,\n.ril__loadingCirclePoint:nth-of-type(13)::before {\n animation-delay: 0ms;\n}\n\n.ril__loadingContainer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.ril__imagePrev .ril__loadingContainer,\n.ril__imageNext .ril__loadingContainer {\n display: none;\n}\n\n.ril__errorContainer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n}\n.ril__imagePrev .ril__errorContainer,\n.ril__imageNext .ril__errorContainer {\n display: none;\n}\n\n.ril__loadingContainer__icon {\n color: #fff;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n\n/* mobile */\n.mobile-image-previewer .ril-toolbar .ril__toolbarRightSide {\n padding-right: 14px;\n}\n\n.image-footer-choice.mobile-image-footer-choice {\n height: 100px;\n background-color: #000;\n z-index: 1052;\n padding: 0;\n}\n\n.mobile-image-footer-choice {\n height: 30px;\n width: 100%;\n border-radius: 2px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n bottom: 0;\n position: absolute;\n color: #fff;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n padding:0 3px;\n justify-content: space-between;\n align-items: center;\n}\n\n.mobile-image-footer-choice .image-footer-icon {\n display: flex;\n justify-content: center;\n align-items: center\n}\n\n.mobile-image-footer-choice .image-footer-icon span {\n cursor: pointer;\n display: flex;\n width: 24px;\n height: 24px;\n justify-content: center;\n align-items: center;\n color: #dbdbdb;\n}\n\n.image-footer-choice.mobile-image-footer-choice .image-footer-icon {\n width: 100%;\n justify-content: space-between;\n flex-direction: row-reverse;\n margin: 0 20px;\n}\n\n.mobile-image-footer-choice .image-footer-icon .image-footer-choice-item {\n height: 40px;\n width: 40px;\n border-radius: 5px;\n background-color: #333;\n}\n\n.ril__outer .ril-toolbar .ril-close {\n width: 30px;\n height: 53px;\n}\n\n.ril__outer .ril__toolbarItem {\n height: 50px;\n}\n\n.ril__outer .ril__toolbarItem button {\n opacity: 0.7;\n}\n\n.ril__outer .ril__toolbarItem button:hover {\n opacity: 1;\n}\n",".sdoc-image-hover-menu-container {\n position: absolute;\n height: 42px;\n z-index: 101;\n width: auto;\n}\n \n.sdoc-image-hover-menu-container .hover-menu-container {\n height: 36px;\n padding: 7px 8px;\n background-color: #fff;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n border-radius: 3px;\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);\n border: 1px solid #e8e8e8;\n}\n\n.sdoc-image-hover-menu-container .hover-menu-container > span:not(:last-of-type) {\n padding: 0 8px;\n border-right: 1px solid #e5e5e5;\n}\n\n.sdoc-image-hover-menu-container .hover-menu-container .op-item {\n position: relative;\n font-size: 12px;\n color: #212529;\n padding: 0 5px;\n border-radius: 2px;\n min-width: 24px;\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.sdoc-image-hover-menu-container .hover-menu-container .op-item:hover {\n color: #212529;\n text-decoration: none;\n background: #f1f1f1;\n}\n\n.sdoc-image-hover-menu-container .op-group-item:last-child .op-item {\n margin-left: 8px;\n}\n\n.sdoc-image-hover-menu-container .hover-menu-container .active {\n background: #f1f1f1;\n}\n\n.sdoc-image-hover-menu-container .hover-menu-container .icon-font {\n font-size: 12px;\n color: #999999;\n}\n\n.sdoc-image-hover-menu-container .sdoc-image-popover {\n position: absolute;\n top: 37px;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 2px;\n box-shadow: 0 0 10px #ccc;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n z-index: 101;\n white-space: nowrap;\n}\n\n.sdoc-image-hover-menu-container .align-popover {\n left: 80px;\n min-width: 6rem;\n}\n\n.sdoc-image-hover-menu-container .border-popover {\n left: 115px;\n flex-direction: row;\n height: 80px;\n align-items: center;\n padding: 0 8px;\n}\n\n.sdoc-image-hover-menu-container .border-popover .sdoc-dropdown-menu-item .sdoc-dropdown-item-content .sdoc-check-mark {\n transform: translateX(-24px);\n}\n\n.sdoc-image-hover-menu-container .border-popover .sdoc-dropdown-menu-item:hover {\n background-color: transparent;\n}\n",".sdoc-table-template-inner-popover {\n display: flex;\n flex-wrap: wrap;\n padding: 10px;\n width: 310px;\n height: 100%;\n background-color: #fff;\n}\n\n.sdoc-table-template-view-table {\n padding: 10px;\n margin: 10px 5px;\n border: 1px solid #e2e3e6;\n cursor: pointer;\n}\n\n.sdoc-table-template-view-table:hover {\n box-shadow: 0 0 3px 2px #e2e3e6;\n}\n\n.sdoc-table-template-view-table .sdoc-table-template-row .sdoc-table-template-cell {\n width: 28px;\n height: 15px;\n border-left: 1px solid #e2e3e6;\n border-right: 1px solid #e2e3e6;\n}\n\n.sdoc-table-template-view-table .sdoc-table-template-row {\n display: flex;\n}\n\n.sdoc-table-template-view-table .sdoc-table-template-row:first-child .sdoc-table-template-cell {\n border: none;\n border-top: 1px solid #e2e3e6;\n}\n\n.sdoc-table-template-view-table .sdoc-table-template-row:last-child .sdoc-table-template-cell {\n border-bottom: 1px solid #e2e3e6;\n}\n","/* type1 */\n.sdoc-table-body-3f495d {\n background-color: #f1f3f6;\n}\n\n.sdoc-table-header-3f495d {\n background-color: #3f495d;\n color: white;\n}\n\n/* type2 */\n.sdoc-table-body-2367f2 {\n background-color: #e1edff;\n}\n\n.sdoc-table-header-2367f2 {\n background-color: #2367f2;\n color: white;\n}\n\n/* type3 */\n.sdoc-table-body-f77d21 {\n background-color: #fff1e8;\n}\n\n.sdoc-table-header-f77d21 {\n background-color: #f77d21;\n}\n\n/* type4 */\n.sdoc-table-body-0099f4 {\n background-color: #e1f5ff;\n}\n\n.sdoc-table-header-0099f4 {\n background-color: #0099f4;\n}\n",".sdoc-selected-table-size-popover .popover {\n background-color: #fff;\n min-width: 100px;\n min-height: 100px;\n max-width: 222px;\n border-radius: 2px;\n}\n\n.sdoc-selected-table-size-popover .sdoc-selected-table-size-tip {\n text-align: center;\n height: 35px;\n font-size: 14px;\n padding: 5px 10px 10px;\n}\n\n.sdoc-selected-table-size-popover .sdoc-table-size-select {\n padding: 0 10px;\n}\n\n.sdoc-selected-table-size-popover .sdoc-table-size-row {\n flex-direction: row;\n border-bottom: 1px solid #ccc;\n width: fit-content;\n}\n\n.sdoc-selected-table-size-popover .sdoc-table-size-row:first-child {\n border-top: 1px solid #ccc;\n}\n\n.sdoc-selected-table-size-popover .sdoc-table-size-cell {\n border-right: 1px solid #ccc;\n width: 20px;\n height: 15px;\n}\n\n.sdoc-selected-table-size-popover .sdoc-table-size-row .sdoc-table-size-cell:first-child {\n border-left: 1px solid #ccc;\n}\n\n.sdoc-selected-table-size-popover .sdoc-table-size-cell.active {\n background-color: #ffa94d;\n}\n\n.sdoc-selected-table-size-popover .sdoc-table-size-select {\n margin-top: 5px;\n}\n\n.sdoc-selected-table-size-container .sdoc-selected-table-tools-container {\n padding: 10px 0;\n margin-bottom: 10px;\n border-bottom: 1px solid #dedede;\n}\n\n.sdoc-selected-table-size-popover .sdoc-selected-table-size-custom {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 10px;\n min-height: 32px;\n}\n\n.sdoc-selected-table-size-popover .sdoc-selected-table-size-custom:hover {\n cursor: pointer;\n background: #f5f5f5;\n}\n",".sdoc-table-menu-group .sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-icon {\n width: 24px;\n}\n\n.sdoc-table-menu-group .sdoc-menu-with-dropdown .sdoc-menu-with-dropdown-triangle {\n width: 12px;\n}\n\n.sdoc-table-menu-group .sdoc-color-menu .last-used-color-container {\n height: 100%;\n}\n\n.sdoc-table-menu-popover .sdoc-dropdown-menu-item {\n font-size: 14px;\n}\n",".sdoc-context-menu .sdoc-table-context-menu {\n display: block;\n font-size: 0.875rem;\n}\n\n.sdoc-table-context-menu .insert-number {\n margin-left: 50px;\n}\n\n.sdoc-table-context-menu .insert-number-input {\n width: 36px;\n height: 20px;\n margin-right: .25rem;\n padding-left: 4px;\n padding-right: 4px;\n text-align: center;\n transition: none;\n}\n\n.sdoc-table-context-menu .dropdown-item:hover .insert-number-input {\n background-color: transparent;\n border: 1px solid #fff;\n color: #fff;\n}\n\n.sdoc-table-context-menu .dropdown-item:disabled .insert-number-input {\n color: #adb5bd;\n}\n","/* column-header */\n.sdoc-table-wrapper .sdoc-table-columns-header {\n height: 12px;\n top: -12px;\n width: 100%;\n overflow: hidden;\n}\n\n.sdoc-table-wrapper .sdoc-table-columns-header .sdoc-table-column-header {\n flex-shrink: 0;\n border-right: 1px solid rgba(0, 0, 0, .08);\n background-color: rgb(243, 245, 247);\n}\n\n/* row-header */\n.sdoc-table-wrapper .sdoc-table-rows-header {\n width: 12px;\n height: 100%;\n position: absolute;\n left: -12px;\n top: 1px;\n}\n\n.sdoc-table-wrapper .sdoc-table-row-header {\n width: 100%;\n background-color: rgb(243, 245, 247);\n border-bottom: 1px solid rgba(0, 0, 0, .08);\n}\n\n.sdoc-table-wrapper .sdoc-table-rows-columns-header {\n height: 13px;\n width: 13px;\n position: absolute;\n left: -12px;\n top: -12px;\n background-color: rgb(243, 245, 247);\n border-right: 1px solid rgba(0, 0, 0, .08);\n border-bottom: 1px solid rgba(0, 0, 0, .08);\n border-top-left-radius: 3px;\n}\n\n/* common */\n.sdoc-table-wrapper .sdoc-table-row-header.range-selected,\n.sdoc-table-wrapper .sdoc-table-column-header.range-selected,\n.sdoc-table-wrapper .sdoc-table-rows-columns-header.range-selected {\n background-color: #81868F !important;\n}\n\n.sdoc-table-wrapper .sdoc-table-row-header.range-selected-tip,\n.sdoc-table-wrapper .sdoc-table-column-header.range-selected-tip,\n.sdoc-table-wrapper .sdoc-table-rows-columns-header.range-selected-tip {\n background-color: rgb(233, 235, 237);\n}\n\n/* add-icon */\n.sdoc-table-wrapper .sdoc-table-add-element-icon-content {\n height: 12px;\n width: 12px;\n border-radius: 50%;\n background-color: #ccc;\n color: #fff;\n z-index: 1;\n line-height: 10px;\n text-align: center;\n cursor: default;\n}\n\n.sdoc-table-wrapper .sdoc-table-add-element-icon-content:hover {\n cursor: pointer;\n}\n",".sdoc-table-wrapper {\n width: 100%;\n margin: 16px 0;\n}\n\n.sdoc-table-wrapper + .sdoc-table-wrapper {\n margin-top: 32px;\n}\n\n.sdoc-table-wrapper .sdoc-table-scroll-wrapper {\n max-width: 100%;\n width: fit-content;\n overflow-x: auto;\n cursor: default;\n}\n\n.sdoc-table-wrapper.scroll .sdoc-table-scroll-wrapper.scroll-at-right::before,\n.sdoc-table-wrapper.scroll .sdoc-table-scroll-wrapper.scroll-at-center::before {\n content: '';\n position: absolute;\n pointer-events: none;\n top: 0;\n left: 0;\n width: 8px;\n height: 100%;\n background: linear-gradient(to left, transparent, rgba(0, 0, 0, .1));\n}\n\n.sdoc-table-wrapper.scroll .sdoc-table-scroll-wrapper.scroll-at-center::after,\n.sdoc-table-wrapper.scroll .sdoc-table-scroll-wrapper.scroll-at-left::after {\n content: '';\n position: absolute;\n pointer-events: none;\n top: 0;\n right: 0;\n width: 8px;\n height: 100%;\n background: linear-gradient(to right, transparent, rgba(0, 0, 0, .1));\n}\n\n.sdoc-table-wrapper .sdoc-table-container {\n width: fit-content;\n display: grid;\n overflow: hidden;\n cursor: text;\n}\n\n.sdoc-table-wrapper .table-row {\n height: auto;\n}\n\n.sdoc-table-wrapper .table-cell {\n padding: 10px 10px;\n border-right: 1px solid #ccc;\n border-bottom: 1px solid #ccc;\n line-height: 1.5;\n vertical-align: top;\n}\n\n.sdoc-table-wrapper .cell-selected {\n caret-color: transparent;\n position: relative;\n}\n\n.sdoc-table-wrapper .table-row-height-just {\n width: 100%;\n height: 5px;\n bottom: -2.5px;\n left: 0;\n z-index: 1;\n}\n\n.sdoc-table-wrapper .table-row-height-just:hover {\n cursor: row-resize;\n z-index: 2;\n}\n\n.sdoc-table-wrapper .table-row-height-just.resizing .table-row-height-just-color-tip {\n margin-top: 1.5;\n height: 2px;\n width: 100%;\n background-color: #2d7ff9;\n border-radius: 1px;\n}\n\n.sdoc-table-wrapper .table-cell-width-just {\n height: 100%;\n width: 5px;\n top: 0;\n z-index: 1;\n}\n\n.sdoc-table-wrapper .table-cell-width-just:hover {\n cursor: col-resize;\n z-index: 2;\n}\n\n.sdoc-table-wrapper .table-cell-width-just.resizing .table-cell-width-just-color-tip {\n margin-left: 1.5px;\n height: 100%;\n width: 2px;\n background-color: #2d7ff9;\n border-radius: 1px;\n}\n\n.sdoc-table-wrapper .background-color-tip-blue {\n background-color: #2d7ff9 !important;\n}\n\n.sdoc-table-wrapper .sdoc-table-selected-range .table-cell *::selection {\n background-color: unset;\n}\n",".sdoc-link-hover-menu-container {\n position: absolute;\n height: 42px;\n z-index: 101;\n width: auto;\n}\n \n.sdoc-link-hover-menu-container .hover-menu-container {\n height: 36px;\n padding: 7px 8px;\n background-color: #fff;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n border-radius: 3px;\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);\n border: 1px solid #e8e8e8;\n}\n\n.sdoc-link-hover-menu-container .hover-menu-container > span:not(:last-of-type) {\n padding-right: 8px;\n border-right: 1px solid #e5e5e5;\n}\n\n.sdoc-link-hover-menu-container .hover-menu-container .op-item {\n position: relative;\n font-size: 12px;\n color: #212529;\n padding: 0 5px;\n border-radius: 2px;\n min-width: 24px;\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.sdoc-link-hover-menu-container .hover-menu-container .op-item:hover {\n color: #212529;\n text-decoration: none;\n background: #f1f1f1;\n}\n\n.sdoc-link-hover-menu-container .op-group-item:last-child .op-item {\n margin-left: 8px;\n}\n\n.sdoc-link-hover-menu-container .hover-menu-container .link-style-icon-active {\n background: #f1f1f1;\n}\n\n.sdoc-link-hover-menu-container .hover-menu-container .op-tooltip:hover::after {\n position: absolute;\n color: #212529;\n content: attr(op-item-tooltip);\n top: -40px;\n left: -20px;\n width: 70px;\n height: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: #fff;\n border-radius: 3px;\n border: 1px solid #e8e8e8;\n font-size: 12px;\n box-shadow: 0 0 5px #ccc;\n}\n\n.sdoc-link-hover-menu-container .hover-menu-container .icon-font {\n font-size: 12px;\n color: #999999;\n}\n\n.sdoc-link-hover-menu-container .sdoc-file-display-style-popover {\n position: absolute;\n top: 37px;\n right: -80px;\n padding: 8px 0;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 2px;\n box-shadow: 0 0 10px #ccc;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n z-index: 101;\n white-space: nowrap;\n}\n",".sdoc-file-render:hover {\n background-color: #e5e5e5\n}\n\n.sdoc-file-card-link {\n position: relative;\n background-color: #f3f3f3;\n border: 1px solid transparent;\n border-radius: 4px;\n cursor: pointer;\n display: inline-block;\n height: 50px;\n width: 420px;\n margin-bottom: -3px;\n}\n\n.sdoc-file-render .sdoc-file-link-icon {\n padding-right: 5px;\n color: #ff9800;\n}\n\n.sdoc-file-card-link .sdoc-file-link-icon :first-child {\n font-size: 24px;\n}\n\n.sdoc-file-card-link .sdoc-file-link-icon {\n position: absolute;\n top: 6px;\n left: 12px;\n}\n\n.sdoc-file-card-link .sdoc-file-text-link {\n position: absolute;\n top: 16px;\n left: 42px;\n}\n\n.sdoc-file-card-link .sdoc-file-text-link a {\n text-decoration: none;\n color: #333;\n}\n",".sdoc-file-link-hover-menu-container {\n position: absolute;\n height: 42px;\n z-index: 101;\n width: auto;\n}\n \n.sdoc-file-link-hover-menu-container .hover-menu-container {\n height: 36px;\n padding: 7px 8px;\n background-color: #fff;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n border-radius: 3px;\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);\n border: 1px solid #e8e8e8;\n}\n\n.sdoc-file-link-hover-menu-container .hover-menu-container > span:not(:last-of-type) {\n padding-right: 8px;\n border-right: 1px solid #e5e5e5;\n}\n\n.sdoc-file-link-hover-menu-container .hover-menu-container .op-item {\n position: relative;\n font-size: 12px;\n color: #212529;\n padding: 0 5px;\n border-radius: 2px;\n min-width: 24px;\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.sdoc-file-link-hover-menu-container .hover-menu-container .op-item:hover {\n color: #212529;\n text-decoration: none;\n background: #f1f1f1;\n}\n\n.sdoc-file-link-hover-menu-container .op-group-item:last-child .op-item {\n margin-left: 8px;\n}\n\n.sdoc-file-link-hover-menu-container .hover-menu-container .link-style-icon-active {\n background: #f1f1f1;\n}\n\n.sdoc-file-link-hover-menu-container .hover-menu-container .op-tooltip:hover::after {\n position: absolute;\n color: #212529;\n content: attr(op-item-tooltip);\n top: -40px;\n left: -20px;\n width: 70px;\n height: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: #fff;\n border-radius: 3px;\n border: 1px solid #e8e8e8;\n font-size: 12px;\n box-shadow: 0 0 5px #ccc;\n}\n\n.sdoc-file-link-hover-menu-container .hover-menu-container .icon-font {\n font-size: 12px;\n color: #999999;\n}\n\n.sdoc-file-link-hover-menu-container .sdoc-file-display-style-popover {\n position: absolute;\n top: 37px;\n right: -80px;\n padding: 8px 0;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 2px;\n box-shadow: 0 0 10px #ccc;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n z-index: 101;\n white-space: nowrap;\n}\n",".sdoc-file-link-render:hover {\n background-color: #e5e5e5\n}\n\n.sdoc-file-card-link {\n position: relative;\n background-color: #f3f3f3;\n border: 1px solid transparent;\n border-radius: 4px;\n cursor: pointer;\n display: inline-block;\n height: 50px;\n width: 420px;\n margin-bottom: -3px;\n}\n\n.sdoc-file-link-render .sdoc-file-link-icon {\n padding-right: 5px;\n color: #ff9800;\n}\n\n.sdoc-file-card-link .sdoc-file-link-icon :first-child {\n font-size: 24px;\n}\n\n.sdoc-file-card-link .sdoc-file-link-icon {\n position: absolute;\n top: 6px;\n left: 12px;\n}\n\n.sdoc-file-card-link .sdoc-file-text-link {\n position: absolute;\n top: 16px;\n left: 42px;\n width: 330px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sdoc-file-card-link .sdoc-file-text-link a {\n text-decoration: none;\n color: #333;\n}\n",".sdoc-callout-white-wrapper {\n padding: 5px 0;\n}\n\n.sdoc-callout-container {\n position: relative;\n padding: 10px;\n border-width: 1px;\n border-style: solid;\n border-radius: 5px;\n}\n\n.sdoc-callout-container .sdoc-callout-placeholder {\n position: absolute;\n top: 15px;\n left: 10px;\n color: #b8b6b6;\n pointer-events: none;\n}\n\n.sdoc-callout-color-selector-container {\n position: absolute;\n padding: 10px;\n background-color: #fff;\n border: 1px solid #eee;\n border-radius: 3px;\n z-index: 100;\n}\n\n.sdoc-callout-color-selector-container .sdoc-color-selector-list {\n display: flex;\n margin: 0;\n padding: 0;\n}\n\n.sdoc-callout-color-selector-container .sdoc-color-selector-list .sdoc-callout-color-item {\n position: relative;\n margin-right: 10px;\n width: 16px;\n height: 16px;\n list-style: none;\n border-width: 1px;\n border-style: solid;\n border-radius: 3px;\n cursor: pointer;\n}\n\n.sdoc-callout-color-selector-container .sdoc-color-selector-list .sdoc-callout-color-item:last-child {\n margin-right: 0px;\n}\n\n.sdoc-callout-color-selector-container .sdoc-color-selector-list .sdoc-callout-color-item .sdoc-callout-color-checked-icon {\n position: absolute;\n top: -2px;\n font-size: 12px;\n left: 1px;\n}\n",".sdoc-rebase-btn-group {\n color: #aaa;\n}\n\n.sdoc-rebase-btn-group .sdoc-rebase-btn {\n cursor: pointer;\n}\n\n.sdoc-rebase-current-changes-start {\n background-color: rgb(202, 232, 254);\n}\n\n.sdoc-rebase-current-changes {\n background-color: rgba(202, 232, 254, .8);\n}\n\n.sdoc-rebase-incoming-changes {\n background-color: rgb(222, 232, 254);\n}\n\n.sdoc-rebase-incoming-changes > *:first-child,\n.sdoc-rebase-current-changes > *:first-child {\n margin: 0;\n padding: 0.8em 0 0.8em 0.2em;\n}\n\n.sdoc-rebase-incoming-changes-end {\n background-color: rgb(212, 212, 254);\n}\n",".header-menu {\n display: flex;\n height: 100%;\n width: 140px;\n padding: 6px 8px;\n border-right: 1px solid #e5e6e8;\n position: relative;\n align-items: center;\n}\n\n.header-menu .header-toggle {\n flex: 1;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-left: 5px;\n height: 24px;\n cursor: pointer;\n}\n\n.header-menu .header-toggle .active {\n font-size: 14px;\n}\n\n.header-menu .header-toggle-disabled {\n color: #BDBDBD;\n cursor: unset;\n}\n\n.header-menu .header-toggle:not(.header-toggle-disabled):hover {\n background: #F2F2F2;\n border-radius: 2px;\n}\n\n.header-menu .header-toggle .sdocfont {\n color: #999;\n width: 12px;\n height: 24px;\n margin-left: 8px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n cursor: pointer;\n}\n\n.header-menu .header-popover {\n position: absolute;\n top: 42px;\n left: 8px;\n padding: 8px 0;\n width: 180px;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 2px;\n box-shadow: 0 0 10px #ccc;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n z-index: 101;\n}\n\n.header-menu .header-popover .sdoc-dropdown-menu-item {\n font-size: 14px;\n height: auto;\n padding: 9px 16px 9px 28px;\n line-height: 1;\n}\n\n.header-menu .header-popover .sdoc-dropdown-menu-item .sdoc-check-mark {\n position: absolute;\n left: 8px;\n transform: scale(.8);\n color: #798d99;\n}\n",".menu-group .menu-group-item.sdoc-menu-with-dropdown.sdoc-font-family-menu {\n width: 76px;\n max-width: 76px;\n}\n\n.menu-group .menu-group-item.sdoc-menu-with-dropdown.sdoc-font-family-menu.disabled {\n width: 70px !important;\n}\n\n.sdoc-font-family-menu .sdoc-menu-with-dropdown-icon,\n.sdoc-font-family-menu .sdoc-menu-with-dropdown-icon div {\n width: 64px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n}\n\n.sdoc-font-family-menu .sdoc-menu-with-dropdown-icon div {\n padding-left: 5px;\n color: #212529;\n}\n\n.menu-group .menu-group-item.sdoc-menu-with-dropdown.sdoc-font-family-menu.disabled .sdoc-menu-with-dropdown-icon {\n width: 70px !important;\n}\n\n.menu-group .menu-group-item.sdoc-menu-with-dropdown.sdoc-font-family-menu.disabled .sdoc-menu-with-dropdown-icon div {\n padding-right: 5px;\n width: 70px;\n color: #BDBDBD;\n}\n\n/* sdoc-font-family-menu-popover */\n.sdoc-font-family-menu-popover .sdoc-dropdown-menu-title-name {\n padding: 8px 10px;\n color: gray;\n cursor: default;\n font-size: 14px;\n}\n",".menu-group .sdoc-menu-with-dropdown.sdoc-font-size-menu {\n width: 46px;\n}\n\n.menu-group .sdoc-menu-with-dropdown.sdoc-font-size-menu.disabled {\n width: 34px !important;\n}\n\n.menu-group .sdoc-font-size-menu .sdoc-menu-with-dropdown-icon,\n.menu-group .sdoc-font-size-menu .sdoc-menu-with-dropdown-icon div {\n width: 34px;\n font-size: 14px;\n}\n\n.menu-group .sdoc-font-size-menu .sdoc-menu-with-dropdown-icon div {\n padding-left: 5px;\n color: #212529;\n}\n\n.menu-group .sdoc-menu-with-dropdown.sdoc-font-size-menu.disabled .sdoc-menu-with-dropdown-icon div {\n padding-right: 5px;\n color: #BDBDBD;\n}\n\n.sdoc-font-size-menu-popover .sdoc-dropdown-menu-item .sdoc-check-mark {\n position: absolute;\n left: 8px;\n transform: scale(.8);\n color: #798d99;\n}\n\n.sdoc-font-size-menu-popover .sdoc-font-size-menu-container {\n height: fit-content;\n padding: 8px 0;\n overflow-y: scroll;\n overflow-x: hidden;\n}\n\n.sdoc-font-size-menu-popover .sdoc-dropdown-menu-item {\n font-size: 14px;\n}\n",".menu-group .menu-group-item.sdoc-insert-toolbar-btn {\n width: 76px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.menu-group .menu-group-item.sdoc-insert-toolbar-btn.disabled {\n width: 64px !important; /* 64: 76 - 12 */\n color: #BDBDBD;\n}\n\n.menu-group .sdoc-insert-toolbar-btn .sdoc-menu-with-dropdown-icon {\n flex: 1;\n justify-content: flex-start;\n padding-left: 6px;\n padding-right: 2px;\n font-size: 14px;\n}\n\n.sdoc-insert-menu-popover .popover {\n min-width: 200px;\n}\n",".sdoc-context-toolbar {\n position: absolute;\n display: none;\n width: auto;\n height: 42px;\n z-index: 101;\n background-color: #fff;\n border: 1px solid #e8e8e8;\n border-radius: 3px;\n box-shadow: rgba(15, 15, 15, 0.05) 0px 0px 0px 0px, rgba(15, 15, 15, 0.1) 0px 3px 6px, rgba(15, 15, 15, 0.2) 0px 9px 24px;\n}\n",".sdoc-side-menu-popover {\n position: absolute;\n}\n\n.sdoc-side-menu {\n position: absolute;\n width: 200px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, .12);\n border-radius: 4px;\n transform: translateX(-200px);\n padding: 8px 0px;\n box-shadow: 0 2px 12px 2px rgba(68, 73, 77, .16);\n z-index: 999;\n}\n\n.sdoc-side-menu-insert-below-popover .popover {\n background-color: #fff;\n min-width: 150px;\n min-height: 120px;\n border-radius: 2px;\n left: -6px !important;\n cursor: pointer;\n}\n",".sdoc-side-toolbar-container {\n position: absolute;\n left: 0px;\n top: 0px;\n}\n\n.sdoc-side-toolbar-container .sdoc-side-op-icon {\n border-radius: 3px;\n padding: 0px 3px;\n height: 24px;\n color: #BDBDBD;\n margin-right: 1px;\n transform: rotate(180deg);\n cursor: pointer;\n}\n\n.sdoc-side-toolbar-container .sdoc-side-op-icon :first-child {\n font-size: 14px;\n}\n\n.sdoc-side-toolbar-container .side-op-icon-active {\n background-color: #F2F2F2;\n border-radius: 2px;\n}\n",".sdoc-custom-table-size-dialog .sdoc-custom-table-size-container {\n width: 100%;\n}\n\n.sdoc-custom-table-size-dialog .sdoc-custom-table-size-item {\n width: calc(50% - 16px);\n}\n",".sdoc-files-tree {\n flex: 1;\n padding: 16px;\n overflow: auto;\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.sdoc-files-tree .sdoc-file-info {\n border-radius: 2px;\n height: 1.5rem;\n line-height: 1.625;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n padding-left: 2.8rem;\n}\n\n.sdoc-files-tree .sdoc-file-info:hover {\n cursor: pointer;\n background: #fdefb9;\n box-shadow: inset 0 0 1px #999;\n}\n\n.sdoc-files-tree .sdoc-file-info .sdoc-file-icon-container {\n width: 2.8rem;\n height: 100%;\n padding-left: 1.5rem;\n position: absolute;\n left: 0;\n}\n\n.sdoc-files-tree .sdoc-file-info .sdoc-file-icon {\n color: #9aa0ac;\n}\n\n.sdoc-files-tree .sdoc-file-info.active {\n background: #ff8000;\n box-shadow: inset 0 0 1px #999;\n color: #fff;\n}\n\n.sdoc-files-tree .sdoc-file-info.active .sdoc-file-icon {\n color: #fff;\n}\n\n.sdoc-files-tree .sdoc-file-icon-toggle {\n height: 1.5rem;\n width: 1.5rem;\n line-height: 1.5rem !important;\n font-size: 12px !important;\n transform: scale(.8);\n text-align: center;\n position: absolute;\n left: 0;\n}\n\n.sdoc-files-tree .sdoc-file-info.expanded .sdoc-file-icon-toggle {\n transform: rotate(90deg) scale(.8);\n}\n\n.sdoc-files-tree .sdoc-file-info .sdoc-file-name {\n font-size: 14px;\n}\n\n.sdoc-files-tree .sdoc-folder-children {\n padding-left: 20px;\n}\n\n.sdoc-files-tree .sdoc-folder-children-empty {\n color: #999;\n padding: 4px 20px;\n}\n",".sdoc-file-select-dialog {\n max-width: 620px;\n}\n\n.sdoc-file-select-dialog .sdoc-file-select-modal {\n width: 620px;\n}\n\n.sdoc-file-select-dialog .sdoc-file-select-container {\n display: flex;\n}\n\n.sdoc-file-select-dialog .sdoc-file-select-left {\n border-right: 1px solid #e9ecef;\n width: 150px;\n padding: 12px 8px;\n}\n\n.sdoc-file-select-dialog .sdoc-file-select-left .sdoc-file-select-nav-item {\n padding: 5px 0 5px 8px;\n border-radius: 3px;\n display: inline-block;\n cursor: pointer;\n width: 100%;\n}\n\n.sdoc-file-select-dialog .sdoc-file-select-left .sdoc-file-select-nav-item:hover {\n background-color: #f5f5f5;\n}\n\n.sdoc-file-select-dialog .sdoc-file-select-container .sdoc-file-select-left .selected-sdoc-file-select-nav-item {\n background-color: #ff8000;\n color: #fff;\n}\n\n.sdoc-file-select-dialog .sdoc-file-select-right {\n height: 440px;\n width: 468px;\n display: flex;\n padding: 0;\n flex-direction: column;\n}\n\n.sdoc-file-select-dialog .sdoc-file-select-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #e9ecef;\n}\n\n.sdoc-file-select-dialog .highlight-bg-color {\n background-color: #FF8000;\n border-color: #FF8000;\n}\n",".sdoc-outline-wrapper {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n margin: 20px 30px 20px 16px;\n min-height: 0;\n z-index: 101;\n}\n\n.sdoc-outline {\n flex: 1;\n width: 220px; \n display: flex;\n min-height: 0;\n flex-direction: column;\n font-size: 14px;\n position: relative;\n}\n\n.sdoc-outline-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.25rem 0;\n color: #999;\n border-bottom: 1px solid #dbdbdb;\n}\n\n.sdoc-outline-header__title {\n font-size: 14px;\n line-height: 1.1;\n margin: 0 !important;\n}\n\n.sdoc-outline-header__close {\n cursor: pointer;\n font-size: 14px;\n}\n\n.sdoc-outline-header__close:hover {\n color: #555;\n}\n\n.sdoc-outline-list-container {\n list-style: none;\n padding: 0.5rem 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-x: hidden;\n overflow-y: hidden;\n}\n\n.sdoc-outline-list-container:hover {\n overflow-y: auto;\n}\n\n.sdoc-outline-item {\n padding: 4px 0;\n cursor: pointer;\n}\n\n.sdoc-outline-item.active {\n color: #ff8000;\n}\n\n.sdoc-outline-menu {\n line-height: 1;\n font-size: 14px;\n color: #888;\n cursor: pointer;\n width: 28px;\n height: 28px;\n background: #fff;\n border-radius: 0 50% 50% 0;\n box-shadow: 0 0 6px rgba(0,0,0, 0.12);\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 20px;\n left: -16px;\n}\n\n.sdoc-outline-menu.disabled {\n opacity: .65;\n}\n\n.sdoc-outline-menu:not(.disabled):hover {\n color: #333;\n}\n","/* modify default css */\n.sdoc-editor-container .article {\n font-size: 11pt;\n}\n\n.sdoc-editor-container .sdoc-code-block-pre {\n font-size: 10pt;\n}\n\n.sdoc-editor-container .article p {\n padding: 5px 0;\n margin: 0;\n}\n\n.element-icon {\n color: #444 !important;\n}\n\n.sdoc-icon-btn {\n height: 24px;\n width: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sdoc-icon-btn:hover {\n cursor: pointer;\n}\n\n.sdoc-icon-btn .sdocfont {\n color: #999;\n font-size: 16px;\n}\n\n.sdoc-icon-btn:hover .sdocfont {\n color: #5a5a5a;\n}\n",".sdoc-editor-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.sdoc-editor-container .sdoc-editor-toolbar {\n display: flex;\n justify-content: center;\n height: 44px;\n align-items: center;\n padding: 0 10px;\n background-color: #fff;\n user-select: none;\n border-bottom: 1px solid #e5e6e8;\n position: relative;\n z-index: 102;\n}\n\n.sdoc-editor-container .sdoc-editor-content {\n width: 100%;\n height: calc(100% - 44px);\n display: flex;\n background: #f5f5f5;\n position: relative;\n}\n\n.sdoc-editor-container .sdoc-absolute-wrapper {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n}\n\n.sdoc-editor-container .sdoc-scroll-container {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: 100;\n overflow: auto;\n}\n\n.sdoc-editor-container .sdoc-article-container {\n position: relative;\n top: 0;\n width: 794px;\n margin: 0 auto;\n padding-top: 20px;\n padding-bottom: 20px;\n}\n\n.sdoc-editor-container .sdoc-editor-content .article {\n width: 794px;\n min-height: 800px;\n padding: 40px 60px;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n box-shadow: 0 0 15px rgba(0, 0, 0, 0.06);\n}\n\n.sdoc-editor-container .sdoc-editor-content .article > div {\n caret-color: blue;\n}\n\n.sdoc-editor-container .sdoc-editor-content .article .sdoc-drag-cover::before {\n content: ' ';\n width: 59px;\n display: inline-block;\n position: absolute;\n left: -60px;\n}\n\n.sdoc-editor-container .sdoc-editor-content .article .sdoc-draging {\n border-bottom: 2px solid rgba(35,131,226);\n}\n\n.sdoc-editor-container .seafile-block-container {\n position: relative;\n}\n\n.sdoc-editor-container .seafile-block-container .comment-count {\n position: absolute;\n right: -55px;\n top: 0px;\n border-radius: 4px;\n width: 15px;\n height: 15px;\n line-height: 18px;\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n background: rgba(0, 0, 0, .3);\n}\n\n.sdoc-editor-container .seafile-block-container .comment-count__btn {\n font-size: 12px;\n transform: scale(.75);\n}\n","/* header */\n.sdoc-editor-container .article .sdoc-header-title,\n.sdoc-editor-container .article .sdoc-header-subtitle,\n.sdoc-editor-container .article .sdoc-header-1,\n.sdoc-editor-container .article .sdoc-header-2,\n.sdoc-editor-container .article .sdoc-header-3,\n.sdoc-editor-container .article .sdoc-header-4,\n.sdoc-editor-container .article .sdoc-header-5,\n.sdoc-editor-container .article .sdoc-header-6 {\n line-height: 1.1;\n margin: 1.2em 0 0.4em;\n font-weight: bold;\n}\n\n.sdoc-editor-container .article .sdoc-header-2,\n.sdoc-editor-container .article .sdoc-header-3 {\n line-height: 1.5;\n}\n\n.sdoc-editor-container .article .sdoc-header-4 {\n line-height: 1.125;\n}\n\n/* list */\n.sdoc-editor-container .article .list-container {\n margin: 0;\n /* override seafile-ui padding */\n padding-left: 1.2em !important;\n}\n\n.sdoc-editor-container .article .list-container .sdoc-li-blod::marker {\n font-weight: bold;\n}\n\n/* check list */\n.sdoc-editor-container .article .sdoc-checkbox-container {\n padding: 0px 2px;\n}\n\n.sdoc-editor-container .article .sdoc-checkbox-container .sdoc-checkbox-input-wrapper {\n display: flex;\n align-items: baseline;\n}\n\n.sdoc-editor-container .article .sdoc-checkbox-container .sdoc-checkbox-input-wrapper .sdoc-checkbox-input {\n vertical-align: middle;\n margin-right: 5px;\n}\n\n.sdoc-editor-container .article .sdoc-checkbox-container .sdoc-checkbox-input-wrapper .sdoc-checkbox-content-container {\n word-break:normal;\n width: calc(100% - 1em);\n}\n\n/* image */\n.sdoc-editor-container .article .sdoc-image-wrapper {\n position: relative;\n display: inline-block;\n padding: 6px 6px 6px 0;\n}\n\n.sdoc-editor-container .article .sdoc-image-inner {\n position: relative;\n display: inline-block;\n}\n\n.sdoc-editor-container .article .sdoc-image-content {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.sdoc-editor-container .article .sdoc-image-content :first-child {\n position: relative;\n}\n\n.sdoc-editor-container .article .sdoc-image-content .sdoc-image-caption-input-wrapper {\n border: 0;\n outline: none;\n margin-top: 8px;\n color: #8A8F8D;\n background-color: transparent;\n text-align: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sdoc-editor-container .article .sdoc-image-content .sdoc-image-caption-input-wrapper::placeholder {\n color: #bec0bf\n}\n\n.sdoc-editor-container .article .image-selected {\n box-shadow: 0 0 0 2px #007bff;\n}\n\n.sdoc-editor-container .article .image-resizer {\n width: 10px;\n height: 10px;\n position: absolute;\n right: -5px;\n bottom: -5px;\n background-color: #007bff;\n border: 1px solid #fff;\n cursor: se-resize;\n}\n\n.sdoc-editor-container .article .image-full-screen {\n position: absolute;\n height: 26px;\n display: inline-block;\n width: 26px;\n top: 0;\n right: -32px;\n text-align: center;\n line-height: 20px;\n padding: 2px;\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n border: 1px solid rgba(0, 40, 100, 0.12);\n background-color: #fff;\n user-select: none !important;\n z-index: 1000;\n}\n\n.sdoc-editor-container .article .image-full-screen:hover {\n display: block;\n background-color: #efefef;\n}\n\n.sdoc-editor-container .article .image-size {\n display: inline-block;\n padding: 5px;\n white-space: nowrap;\n height: 22px;\n position: absolute;\n bottom: -25px;\n left: 100%;\n z-index: 1;\n transform: translateX(5px);\n border-radius: 3px;\n line-height: 12px;\n color: #fff;\n background-color: #4c4c4c;\n font-size: 12px;\n}\n\n/* caret */\n.sdoc-editor-container .article .caret-item .caret-name::before {\n content: attr(name);\n}\n\n.sdoc-editor-container .article .caret-item .caret-name {\n display: none;\n}\n\n.sdoc-editor-container .article .caret-item:hover .caret-name {\n display: block;\n}\n\n/* link */\n.sdoc-editor-container .article .virtual-link {\n color: #eb8205;\n}\n\n.sdoc-editor-container .article .virtual-link:hover {\n text-decoration: underline;\n text-underline-position: under;\n}\n",".sdoc-dropdown-menu,\n.sdoc-dropdown-menu .sdoc-dropdown-menu-container {\n padding: 8px 0;\n min-width: 12rem;\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-menu-divider {\n width: 100%;\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-menu-item {\n height: 28px;\n width: 100%;\n padding: 4px 24px;\n user-select: none;\n display: flex;\n align-items: center;\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-menu-item.disabled,\n.sdoc-dropdown-menu .sdoc-dropdown-menu-item.disabled .sdoc-dropdown-item-content-icon {\n color: #c2c2c2 !important;\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-menu-item:hover {\n background-color: rgb(245, 245, 245);\n cursor: pointer;\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-menu-item.disabled:hover {\n background-color: unset;\n cursor: default;\n color: #c2c2c2;\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-menu-item .sdocfont {\n font-size: 12px;\n line-height: 12px;\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-menu-item .sdoc-dropdown-item-content {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1;\n font-size: 14px;\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-item-content .sdoc-dropdown-item-content-icon {\n margin-right: 10px;\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-item-right-icon {\n color: #999;\n transform: scale(.6);\n}\n\n.sdoc-dropdown-menu .sdoc-dropdown-item-with-left-icon {\n min-height: 32px;\n padding: 3px 12px;\n}\n\n.sdoc-dropdown-menu .sdoc-check-mark {\n transform: scale(.8);\n color: #798d99;\n}\n\n/* sub menu */\n.sdoc-sub-dropdown-menu .popover {\n left: -8px !important;\n}\n\n.sdoc-sub-dropdown-menu .bs-popover-auto[x-placement^=\"left\"] {\n left: 8px !important;\n}\n",".sdoc-comment-caret-list {\n background: #fff;\n position: absolute;\n padding: 10px 0;\n max-height: 200px;\n overflow: auto;\n min-width: 150px;\n /* higher than row expand */\n z-index: 1049;\n border-radius: 5px;\n border: 1px solid #ededed;\n max-width: 200px;\n}\n\n.sdoc-comment-caret-list .comment-participant-item {\n padding: 5px 0;\n}\n\n.sdoc-comment-caret-list .comment-participant-item.active,\n.sdoc-comment-caret-list .comment-participant-item:hover {\n background: #f5f5f5;\n cursor: pointer;\n}\n\n.sdoc-comment-caret-list .comment-participant-item .comment-participant-container {\n display: flex;\n align-items: center;\n padding: 0 8px;\n}\n\n.sdoc-comment-caret-list .comment-participant-item .comment-participant-avatar {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n vertical-align: middle;\n}\n\n.sdoc-comment-caret-list .comment-participant-item .comment-participant-name {\n margin-left: 4px;\n font-size: 14px;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n",".sdoc-comment-list-container {\n position: absolute;\n}\n\n.sdoc-comment-list-container .comment-ui-container {\n background-color: #edf2fa;\n border-radius: 8px;\n box-shadow: 0 0 2px rgba(0,0,0,.04);\n padding: 16px 0;\n margin-bottom: 10px;\n cursor: pointer;\n}\n\n.sdoc-comment-list-container .comment-ui-container.active {\n position: relative;\n left: -24px;\n background: rgba(255, 255, 255, .92);\n box-shadow: 0 1px 3px rgba(0,0,0,.3), 0 4px 8px 3px rgba(0,0,0,.15);\n}\n\n.sdoc-comment-list-container .comment-item-selected-text-container {\n width: 100%;\n height: 32px;\n display: flex;\n padding: 6px 16px;\n align-items: center;\n overflow: hidden;\n border-radius: 8px 8px 0 0;\n}\n\n.sdoc-comment-list-container .comment-item-selected-text-container .sdoc-comment-quote {\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.sdoc-comment-list-container .comment-item-selected-text-container .comment-item-selected-text {\n flex: 1;\n font-size: 14px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sdoc-comment-list-container .comment-item-list {\n max-height: 350px;\n min-width: 280px;\n overflow-x: hidden;\n overflow-y: auto;\n margin: 0;\n}\n\n.sdoc-comment-list-container .comment-item {\n position: relative;\n padding: 16px 16px 0;\n cursor: pointer;\n}\n\n.sdoc-comment-list-container .comment-delete-shadow {\n position: absolute;\n inset: 0;\n background-color: rgba(0, 0, 0, .7);\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 10px;\n color: #fff;\n z-index: 1;\n}\n\n.sdoc-comment-list-container .comment-delete-shadow .delete-tip {\n margin-bottom: 10px;\n}\n\n.sdoc-comment-list-container .comment-ui-container.active .comment-item:hover {\n background: #fafafa;\n}\n\n.sdoc-comment-list-container .comment-item .comment-header,\n.sdoc-comment-list-container .comment-item .comment-author {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.sdoc-comment-list-container .comment-item .comment-content {\n padding-bottom: 10px;\n margin-top: 10px;\n margin-left: 30px;\n width: 222px;\n word-break: break-all;\n}\n\n.sdoc-comment-list-container .comment-header .comment-author__avatar {\n display: flex;\n align-items: center;\n}\n\n.sdoc-comment-list-container .comment-header .comment-author__avatar img {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n}\n\n.sdoc-comment-list-container .comment-header .comment-author__info {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n padding-left: 10px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n cursor: pointer;\n}\n\n.sdoc-comment-list-container .comment-header .comment-author__info .name {\n color: #1f1f1f;\n font-size: 14px;\n line-height: 20px;\n font-weight: 500;\n}\n\n.sdoc-comment-list-container .comment-header .comment-author__info .time {\n color: #444746;\n font-size: 12px;\n line-height: 16px;\n display: inline-flex;\n align-items: center;\n}\n\n.sdoc-comment-list-container .comment-header .sdoc-unread-message-tip {\n display: inline-block;\n height: 6px;\n width: 6px;\n border-radius: 50%;\n background-color: #fc6440;\n margin-left: 6px;\n}\n\n.sdoc-comment-list-container .comment-header .sdoc-unread-message-text-tip {\n display: none;\n height: 16px;\n padding: 0 5px;\n border-radius: 8px;\n margin-left: 6px;\n background-color: #fc6440;\n color: #fff;\n}\n\n.sdoc-comment-list-container .comment-ui-container:hover .comment-header .sdoc-unread-message-tip {\n display: none;\n}\n\n.sdoc-comment-list-container .comment-ui-container:hover .comment-header .sdoc-unread-message-text-tip {\n display: inline-block;\n}\n\n.sdoc-comment-list-container .comment-ui-container .comment-operation {\n width: 32px;\n height: 32px;\n padding: 0 !important;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background-color: #fff;\n color: rgb(70, 77, 90);\n overflow: hidden;\n}\n\n.sdoc-comment-list-container .comment-ui-container.active .comment-operation:hover {\n cursor: pointer;\n background-color: #f0f0f0;\n}\n\n.sdoc-comment-list-container .comment-ui-container .comment-operation .sdoc-confirm {\n color: #20a0ff;\n font-weight: 800;\n}\n\n.sdoc-comment-menu {\n padding: 0;\n border-radius: 2px;\n}\n\n.sdoc-popover-menu {\n background: rgb(255, 255, 255);\n width: 140px;\n padding: 8px 0;\n height: auto;\n}\n\n.sdoc-popover-menu__item {\n padding: 4px 24px;\n height: 28px;\n vertical-align: middle;\n font-size: 14px;\n background-color: transparent;\n cursor: default;\n color: #202428;\n background-color: #fff;\n}\n\n.sdoc-popover-menu__item:hover {\n background-color: #20a0ff;\n color: #fff;\n}\n\n.sdoc-comment-list-container .comment-editor-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0 16px;\n cursor: text;\n}\n\n.sdoc-comment-list-container .comment-editor-wrapper .comment-editor {\n margin-bottom: 10px;\n min-height: 40px;\n max-height: 120px;\n min-width: 240px;\n overflow: auto;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, .12);\n border-radius: 4px;\n padding: 8px;\n word-break: break-all;\n}\n\n.sdoc-comment-list-container .comment-editor-wrapper .comment-editor:empty:before {\n content: attr(placeholder);\n opacity: .6;\n}\n\n.sdoc-comment-list-container .comment-editor-wrapper .comment-editor:focus-visible {\n outline: none;\n}\n\n.sdoc-comment-list-container .comment-editor-wrapper .comment-editor:focus {\n border: 1px solid rgba(0, 0, 0, .12);\n}\n\n.sdoc-comment-list-container .comment-editor-wrapper .comment-editor-user-info {\n display: flex;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.sdoc-comment-list-container .comment-editor-wrapper .comment-editor-user-info .comment-editor-user-img {\n height: 30px;\n width: 30px;\n border-radius: 50%;\n overflow: hidden;\n margin-right: 8px;\n}\n\n.sdoc-comment-list-container .comment-editor-wrapper .comment-editor-user-info .comment-editor-user-name {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n user-select: none;\n}\n\n.sdoc-comment-list-container .comment-editor-wrapper .comment-operations {\n display: flex;\n justify-content: flex-end;\n}\n",".sdoc-comment-container .comment-container-right .element-comments-count {\n position: absolute;\n left: -22px;\n height: 16px;\n width: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #999;\n}\n\n.sdoc-comment-container .comment-container-right .element-comments-count:hover {\n color: #333;\n cursor: pointer;\n}\n\n.sdoc-comment-container .comment-container-right .element-comments-count-value {\n width: 16px;\n height: 14px;\n position: absolute;\n left: 0;\n top: 0;\n cursor: pointer;\n pointer-events: none;\n font-size: 12px;\n color: #fff;\n line-height: 13px;\n text-align: center;\n}\n",".sdoc-comments-participants-popover .popover {\n max-width: 282px;\n margin-top: 0px;\n}\n\n.sdoc-comments-participants-popover .sdoc-comments-participants-editor-container {\n min-height: 160px;\n width: 280px;\n}\n\n.sdoc-comments-participants-popover .sdoc-selected-participants {\n background-color: #f6f6f6;\n padding: 5px;\n border-bottom: 1px solid #dde2ea;\n border-radius: 3px 3px 0 0;\n min-height: 34px;\n}\n\n.sdoc-comments-participants-popover .sdoc-selected-participant {\n display: inline-flex;\n align-items: center;\n height: 20px;\n margin-right: 10px;\n padding: 0 8px 0 2px;\n font-size: 13px;\n border-radius: 10px;\n background: #eaeaea;\n}\n\n.sdoc-comments-participants-popover .sdoc-selected-participant img {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n vertical-align: middle;\n}\n\n.sdoc-comments-participants-popover .sdoc-selected-participant .sdoc-selected-participant-name {\n margin-left: 4px;\n flex: 1 1;\n color: #16181b;\n}\n\n.sdoc-comments-participants-popover .sdoc-selected-participant .sdoc-selected-participant-delete {\n width: 20px;\n height: 20px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n padding-top: 1px;\n cursor: pointer;\n}\n\n.sdoc-comments-participants-popover .sdoc-selected-participant .sdoc-selected-participant-delete .sdocfont {\n display: inline-block;\n font-size: 12px;\n color: #909090;\n}\n\n.sdoc-comments-participants-popover .sdoc-selected-participant .sdoc-selected-participant-delete:hover .sdocfont {\n color: #5a5a5a;\n}\n\n.sdoc-comments-participants-popover .sdoc-search-collaborators {\n padding: 10px;\n}\n\n.sdoc-comments-participants-popover .sdoc-search-collaborators input {\n height: 28px;\n}\n\n.sdoc-comments-participants-popover .sdoc-searched-collaborators {\n display: flex;\n flex-direction: column;\n align-items: center;\n max-height: 200px;\n padding: 10px;\n overflow: auto;\n}\n\n.sdoc-comments-participants-popover .sdoc-searched-collaborators.sdoc-searched-collaborators-empty-tip {\n opacity: .5;\n font-size: 14px;\n align-items: flex-start;\n}\n\n.sdoc-comments-participants-popover .sdoc-searched-collaborator {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 0.25rem 0;\n clear: both;\n font-weight: 400;\n color: #212529;\n height: 30px;\n border-radius: 2px;\n font-size: 14px;\n}\n\n.sdoc-comments-participants-popover .sdoc-searched-collaborator:hover {\n cursor: pointer;\n background-color: #f8f9fa;\n}\n\n.sdoc-comments-participants-popover .sdoc-searched-collaborator img {\n width: 16px;\n height: 16px;\n margin-left: 10px;\n border-radius: 50%;\n vertical-align: middle;\n}\n\n.sdoc-comments-participants-popover .sdoc-searched-collaborator .sdoc-selected-participant-name {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin-left: 4px;\n color: #16181b;\n}\n\n.sdoc-comments-participants-popover .sdoc-searched-collaborator .sdoc-searched-collaborator-operation {\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sdoc-comments-participants-popover .sdoc-searched-collaborator .sdoc-searched-collaborator-operation .sdocfont {\n font-size: 12px;\n color: #798d99;\n}\n",".global-comments-popover .comments-panel-body__header .comments-participants-container {\n width: fit-content;\n max-width: 100%;\n height: 42px;\n padding-top: 6px;\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.global-comments-popover .comments-panel-body__header .comments-participants-editor-target {\n position: absolute;\n left: -1px;\n top: 0;\n z-index: -1;\n height: 100%;\n width: 1px;\n background-color: transparent;\n}\n\n.global-comments-popover .comments-panel-body__header .comment-participant-avatar {\n border-radius: 50%;\n vertical-align: middle;\n margin-right: -0.5rem;\n}\n\n.global-comments-popover .comments-panel-body__header .comment-participant-avatar img {\n width: 28px;\n height: 28px;\n border: 2px solid #fff;\n line-height: 2rem;\n border-radius: 50%;\n display: inline-block;\n background: #ced4da no-repeat center/cover;\n position: relative;\n text-align: center;\n color: #868e96;\n font-weight: 600;\n vertical-align: bottom;\n font-size: .875rem;\n user-select: none;\n}\n\n.global-comments-popover .comments-panel-body__header .add-comments-participants {\n position: relative;\n bottom: -3px;\n cursor: pointer;\n margin-right: -0.5rem;\n height: 20px;\n width: 20px;\n background-color: #fff;\n border: 1px solid #fff;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.global-comments-popover .add-comments-participants .sdocfont {\n font-size: 16px;\n color: #ff8000;\n border-radius: 50%;\n}\n\n.global-comments-popover .comment-participants-more {\n position: absolute;\n top: 0;\n left: 0;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n background-color: rgba(0, 0, 0, .6);\n border: 2px solid #fff;\n}\n\n.global-comments-popover .comment-participants-more .sdocfont {\n color: #fff;\n font-size: 12px;\n}\n",".global-comments-popover {\n position: absolute;\n right: 10px;\n top: 50px;\n z-index: 103;\n width: 340px;\n height: 540px;\n}\n\n.global-comments-popover .comments-panel-wrapper {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #fff;\n border: 1px solid #EAECEF;\n border-radius: 4px;\n box-shadow: 0 2px 10px rgba(0, 0, 0, .12);\n}\n\n.global-comments-popover .comments-panel-header {\n padding: 0 16px;\n height: 46px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-bottom: 1px solid #EAECEF;\n}\n\n.global-comments-popover .comments-panel-header .title {\n color: #212529;\n font-size: 16px;\n font-weight: 500;\n}\n\n.global-comments-popover .comments-panel-header .comments-panel-header-right {\n display: flex;\n}\n\n.global-comments-popover .comments-panel-header-right .sdoc-icon-btn:not(:last-child) {\n margin-right: 4px;\n}\n\n.global-comments-popover .comments-panel-header .sdoc-icon-btn .sdocfont {\n font-weight: 700;\n}\n\n.global-comments-popover .comments-panel-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n position: relative;\n background-color: #F5F5F5;\n}\n\n.global-comments-popover .comments-panel-body__header {\n height: 80px;\n display: flex;\n flex-direction: column;\n padding: 0 16px;\n}\n\n.global-comments-popover .comments-panel-body__header .comments-types-count {\n height: 38px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 0;\n}\n\n.global-comments-popover .comments-panel-body__header .comment-type {\n color: #212529;\n font-size: 12px;\n}\n\n.global-comments-popover .comments-panel-body__header .comment-type{\n color: #212529;\n font-size: 12px;\n}\n\n.global-comments-popover .comments-panel-body__header .comment-count-tip {\n color: #999;\n font-size: 12px;\n}\n\n.global-comments-popover .comments-panel-body__content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 16px;\n overflow: auto;\n}\n\n.global-comments-popover .comments-panel-body__content .sdoc-comment-list-container {\n position: relative;\n}\n\n.global-comments-popover .comments-panel-body__content .comment-item-list {\n max-width: 308px;\n}\n\n.global-comments-popover .comments-panel-body__content .comment-ui-container.active {\n left: 0;\n}\n\n.global-comments-popover .comments-panel-body__content .comment-ui-container.sdoc-resolved {\n background: #f5f5f5;\n}\n\n.global-comments-popover .comments-panel-body__content .comment-ui-container.active.sdoc-resolved {\n background: #f5f5f5;\n}\n\n.sdoc-dropdown-menu .dropdown-item {\n font-size: 14px;\n color: #212529;\n}\n\n/* doc comment add editor */\n.global-comments-popover .comments-panel-body .sdoc-doc-comment-editor-container {\n position: absolute;\n left: 16px;\n width: calc(100% - 32px);\n background-color: #fff;\n top: 78px;\n}\n\n.global-comments-popover .sdoc-doc-comment-editor-container .comment-ui-container.active {\n left: 0;\n margin-bottom: 0;\n}\n\n/* custom */\n.global-comments-popover .sdoc-comment-list-container .comment-ui-container {\n background-color: #FFF;\n border: 1px solid #c7c7c7;\n}\n\n.global-comments-popover .sdoc-comment-list-container .comment-item-selected-text-container {\n background-color: #F5F5F5;\n border-bottom: 1px solid #c7c7c7;\n}\n","/* editor-comment css */\n.sdoc-comment-container {\n position: absolute;\n left: 0;\n top: 0;\n width: 794px;\n}\n\n.sdoc-comment-container .comment-container-main {\n position: absolute;\n width: 794px;\n top: 0;\n}\n\n.sdoc-comment-container .comment-container-right {\n position: absolute;\n left: 100%;\n}\n\n.sdoc-comment-container .comment-container-right .comment-add-wrapper {\n position: absolute;\n left: -22px;\n width: 20px;\n}\n\n.sdoc-comment-container .comment-container-right .comment-add-wrapper .sdocfont {\n color: #999;\n background-color: #FFF;\n}\n\n.sdoc-comment-container .comment-container-right .comment-add-wrapper .sdocfont:hover {\n color: #333;\n cursor: pointer;\n}\n\n.sdoc-comment-container .comment-container-right .comment-list-wrapper {\n position: absolute;\n left: 14px;\n width: 280px;\n}\n",".seahub-switch.small .custom-switch-indicator {\n width: 22px;\n height: 12px;\n border-radius: 6px;\n cursor: pointer;\n}\n\n.seahub-switch.small .custom-switch-indicator.disabled {\n cursor: default;\n}\n\n.seahub-switch.small .custom-switch-indicator:before {\n height: 8px;\n width: 8px;\n}\n\n.seahub-switch.small .custom-switch-input:checked~.custom-switch-indicator:before {\n left: 12px;\n}\n",".sf-plain-editor {\n flex: 1;\n display: flex;\n min-height: 0;\n min-width: 0;\n position: relative;\n}\n\n/* fix plain editor main height */\n.sf-plain-editor-main {\n position: absolute;\n inset: 0;\n}\n\n.sf-plain-editor-left-panel {\n height: 100%;\n width: 50%;\n background-color: #fff;\n border-right: 1px solid rgb(230,230,221);\n overflow-y: scroll;\n overflow-x: hidden;\n}\n\n.sf-plain-editor-right-panel {\n height: 100%;\n width: 50%;\n background-color: rgb(250,250,249);\n overflow-y: scroll;\n overflow-x: hidden;\n}\n\n.rendered-markdown.article {\n padding:0 20px 20px;\n}\n\n.rendered-markdown tbody tr:first-child {\n font-weight: 400;\n}\n",".sdoc-editor-container .sdoc-editor-content.readonly {\n height: 100%;\n}\n\n.sdoc-editor-container .sdoc-editor-content.no-outline .sdoc-absolute-wrapper {\n display: flex;\n position: relative;\n min-height: 0;\n}\n\n.sdoc-editor-container .sdoc-editor-content.no-outline .sdoc-article-container {\n margin-left: 0 !important;\n}\n\n.sdoc-editor-container.mobile .sdoc-editor-content.readonly .sdoc-article-container {\n padding: 0;\n width: auto;\n}\n\n.sdoc-editor-container.mobile .sdoc-editor-content.readonly .article {\n width: 100% !important;\n padding: 1rem;\n}\n",".sdoc-diff {\n padding: 0 5px;\n margin: 0 -5px;\n overflow: hidden;\n}\n",".sdoc-editor-page-wrapper .tip-message {\n margin-left: 12px;\n font-size: 12px;\n opacity: 0.75;\n color: #999;\n width: max-content;\n height: 27px;\n line-height: 27px;\n display: inline-flex;\n}\n\n.sdoc-editor-page-wrapper .tip-message .sdocfont {\n padding-top: 1px;\n font-size: 14px;\n}\n",".sdoc-draft-menu {\n position: relative;\n margin-left: 0.5rem;\n}\n\n.sdoc-draft-identifier {\n display: inline-block;\n font-size: 14px;\n color: #888;\n background: #eee;\n padding: 0 8px; \n height: 20px;\n line-height: 20px;\n border-radius: 10px;\n cursor: pointer;\n}\n\n.sdoc-draft-identifier:hover {\n background: #dbdbdb;\n}\n\n.sdoc-draft-menu .draft-popover {\n position: absolute;\n top: 25px;\n left: 0;\n width: 178px;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 2px;\n padding: 8px 0;\n box-shadow: 0 0 10px #e5e6e8;\n z-index: 10;\n}\n\n.sdoc-draft-menu .draft-popover .draft-menu-item {\n cursor: pointer;\n width: 100%;\n padding: 4px 12px;\n}\n\n.sdoc-draft-menu .draft-popover .draft-menu-item:hover {\n background-color: rgb(245, 245, 245);\n}\n",".sdoc-file-tag-quick-review-container {\n display: flex;\n margin-left: 0.5rem;\n}\n\n.sdoc-file-tag-quick-review-container .sdoc-review-circle {\n display: inline-block;\n height: 1rem;\n width: 1rem;\n margin-right: -0.5rem;\n border: 0.125rem solid #fff;\n border-radius: 50%;\n cursor: pointer;\n}\n",".sdoc-editor-page-header .doc-info {\n display: flex;\n align-items: center;\n}\n\n.sdoc-editor-page-header .doc-info .doc-name {\n font-size: 18px;\n font-weight: 700;\n color: #212529;\n}\n\n.sdoc-editor-page-header .doc-info .doc-icon {\n margin-left: 0.5rem;\n color: #999;\n cursor: pointer;\n font-size: 14px;\n line-height: 1;\n}\n\n.sdoc-editor-page-header .doc-info .doc-icon:hover {\n margin-left: 0.5rem;\n color: #333;\n}\n\n.sdoc-editor-page-header .doc-info .sdoc-link {\n font-size: 14px;\n}\n\n.sdoc-editor-page-header .doc-info .sdoc-freezed {\n color: red;\n}\n\n.sdoc-editor-page-header .doc-state {\n font-size: 0.8125rem;\n}\n\n.sdoc-editor-page-header .doc-info .sdoc-revision-avatar {\n width: 44px;\n margin-right: 6px;\n}\n\n.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-avatar {\n width: 44px;\n height: 44px;\n margin-right: 6px;\n overflow: hidden;\n}\n\n.sdoc-editor-page-header .sdoc-revision-avatar img {\n height: 100%;\n width: 100%;\n}\n\n.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-detail {\n display: flex;\n flex-direction: column;\n}\n\n.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-order {\n display: inline-block;\n font-size: 14px;\n color: #888;\n background: #eee;\n padding: 0 8px; \n height: 20px;\n line-height: 20px;\n border-radius: 10px;\n margin-left: 0.5rem;\n cursor: default;\n}\n\n.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-published-tip {\n display: inline-block;\n font-size: 14px;\n color: #fff;\n background: #5EBA00;\n padding: 0 8px; \n height: 20px;\n line-height: 20px;\n border-radius: 10px;\n margin-left: 0.5rem;\n cursor: default;\n}\n\n.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-source-doc {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 20px;\n width: 20px;\n margin-left: 0.5rem;\n cursor: pointer;\n}\n\n.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-source-doc .sdoc-jump-to {\n font-size: 14px;\n color: #999;\n}\n\n.sdoc-editor-page-header .sdoc-revision-info .sdoc-revision-source-doc:hover .sdoc-jump-to {\n color: #333;\n}\n",".sdoc-tip-dialog .highlight-bg-color {\n background-color: #FF8000;\n border-color: #FF8000;\n}\n\n.sdoc-tip-dialog .sdoc-tip-dialog-custom-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 46px;\n padding-bottom: 40px;\n}\n\n.sdoc-tip-dialog .sdoc-tip-dialog-custom-container .sdoc-tip-img-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 140px;\n height: 140px;\n overflow: hidden;\n}\n\n.sdoc-tip-dialog .sdoc-tip-dialog-custom-container .sdoc-tip-content {\n width: 100%;\n padding: 10px 16px 64px 16px;\n text-align: center;\n}\n\n.sdoc-tip-dialog .sdoc-tip-dialog-custom-container .sdoc-tip-operation-btn {\n min-width: 140px;\n}\n\n.sdoc-tip-dialog .sdoc-tip-dialog-custom-container.publishing {\n padding: 2rem;\n height: 180px;\n justify-content: center;\n}\n\n.sdoc-tip-dialog .sdoc-tip-dialog-custom-container.publishing .common-loading-tip {\n width: 30px;\n height: 30px;\n border-width: 4px;\n}\n\n.sdoc-tip-dialog .sdoc-tip-dialog-custom-container.publishing .sdoc-tip-content {\n margin-top: 8px;\n padding: 0;\n}\n",".seadoc-switch.small .custom-switch-indicator {\n width: 22px;\n height: 12px;\n border-radius: 6px;\n}\n\n.seadoc-switch.small .custom-switch-indicator:before {\n height: 8px;\n width: 8px;\n}\n\n.seadoc-switch.small .custom-switch-input:checked~.custom-switch-indicator:before {\n left: 12px;\n}\n",".sdoc-toggle-revision-changes .custom-switch {\n padding-left: 0;\n}\n",".sdoc-more-revision-operations-dropdown .sdoc-more-revision-operations-toggle {\n width: 66px;\n height: 30px;\n border-radius: 15px;\n background-color: #F0F0F0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n}\n\n.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operations-toggle:hover {\n cursor: pointer;\n color: #333;\n}\n\n.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operations-toggle .sdoc-revise {\n margin-right: 10px;\n}\n\n.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operations-toggle .sdocfont {\n font-size: 14px;\n}\n\n.sdoc-more-revision-operations-dropdown .dropdown-item {\n padding: 12px;\n height: 64px;\n}\n\n.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operation {\n width: 373px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operation-title .sdocfont {\n font-size: 14px;\n margin-right: 6px;\n}\n\n.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operation-title-name {\n color: #212529;\n font-size: 14px;\n}\n\n.sdoc-more-revision-operations-dropdown .sdoc-more-revision-operation-describe {\n padding-left: 20px;\n color: #999;\n font-size: 13px;\n width: 100%;\n white-space: break-spaces;\n}\n",".sdoc-revision-operation-toggle {\n display: none;\n font-size: 16px;\n color: #999;\n}\n\n.revisions-body .sdoc-revision:hover .sdoc-revision-operation-toggle,\n.revisions-dialog .revisions-body .sdoc-revision.operating .sdoc-revision-operation-toggle {\n display: inline-block;\n}\n\n.sdoc-revision-operation-toggle:hover {\n cursor: pointer;\n color: #333;\n}\n\n.sdoc-revision-menu-popover .popover {\n margin-top: 0;\n}\n\n",".revisions-dialog {\n width: 700px;\n max-width: 700px;\n height: calc(100% - 56px);\n}\n\n.revisions-dialog .modal-content {\n height: 100%;\n overflow: hidden;\n}\n\n.revisions-dialog .revisions-body {\n height: calc(100% - 50px);\n padding: 0;\n overflow: hidden;\n}\n\n.revisions-dialog .sdoc-revisions-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.revisions-dialog .sdoc-revisions-container .sdoc-revisions-header {\n height: 41px;\n width: calc(100% - 32px);\n border-bottom: 1px solid rgba(0, 40, 100, 0.12);\n margin: 0 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.revisions-dialog .sdoc-revisions-container .sdoc-revisions-content {\n flex: 1;\n overflow-x: hidden;\n overflow-y: scroll;\n padding: 0 16px 16px 16px;\n}\n\n.revisions-dialog .sdoc-revisions-container .sdoc-revisions-list {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.revisions-dialog .sdoc-revisions-container.loading {\n align-items: center;\n justify-content: center;\n}\n\n.revisions-dialog .revisions-body .sdoc-revision {\n height: 41px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: flex-start;\n border-bottom: 1px solid rgba(0, 40, 100, 0.12);\n}\n\n.revisions-dialog .revisions-body .sdoc-revision.operating {\n background-color: #f5f5f5;\n}\n\n.revisions-dialog .revisions-body .sdoc-revision:hover {\n cursor: pointer;\n background-color: #f5f5f5;\n}\n\n.revisions-dialog .sdoc-revision-name-header,\n.revisions-dialog .sdoc-revision-user-header,\n.revisions-dialog .sdoc-revision-time-header {\n padding-left: 9px;\n color: #999;\n}\n\n.revisions-dialog .sdoc-revision .sdoc-revision-user {\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n padding-left: 9px;\n}\n\n.revisions-dialog .sdoc-revision .sdoc-revision-name {\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n padding-left: 9px;\n}\n\n.revisions-dialog .sdoc-revision .sdoc-revision-name-content {\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.revisions-dialog .sdoc-revision .sdoc-revision-time {\n height: 100%;\n padding-left: 9px;\n overflow: hidden;\n display: flex;\n align-items: center;\n}\n\n.revisions-dialog .revisions-body .sdoc-revision.loading {\n height: 40px;\n align-items: center;\n border-bottom: none;\n}\n\n.revisions-dialog .sdoc-revision.loading:hover {\n background-color: unset;\n}\n\n.revisions-dialog .sdoc-revision-operations {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n",".sdoc-revisions-count {\n height: 30px;\n width: fit-content;\n border: 1px solid #E5E5E5;\n border-radius: 3px;\n line-height: 28px;\n text-align: center;\n padding: 0 16px;\n margin-left: 1rem;\n color: #666;\n}\n\n.sdoc-revisions-count:hover {\n cursor: pointer;\n color: #333;\n}\n",".sdoc-revision-changes-container {\n height: 32px;\n border: 1px solid #e5e5e5;\n border-radius: 3px;\n}\n\n.sdoc-revision-changes-container .sdoc-revision-changes-divider {\n border-right: 1px solid #e5e5e5;\n height: 100%;\n width: 1px;\n}\n\n.sdoc-revision-changes-container .sdoc-revision-changes-last,\n.sdoc-revision-changes-container .sdoc-revision-changes-next {\n padding: 0 8px;\n height: 100%;\n}\n\n.sdoc-revision-changes-container .sdoc-revision-changes-last .sdocfont,\n.sdoc-revision-changes-container .sdoc-revision-changes-next .sdocfont {\n color: #000;\n opacity: .5;\n}\n\n.sdoc-revision-changes-container .sdoc-revision-changes-last:hover,\n.sdoc-revision-changes-container .sdoc-revision-changes-next:hover {\n cursor: pointer;\n background-color: #f5f5f5;\n}\n\n.sdoc-revision-changes-container .sdoc-revision-changes-last:hover .sdocfont,\n.sdoc-revision-changes-container .sdoc-revision-changes-next:hover .sdocfont {\n opacity: .75;\n}\n",".collaborators-popover.popover {\n width: 300px;\n max-width: 300px;\n}\n\n.collaborators-popover .popover-container {\n padding: 0;\n margin: 0;\n max-height: 360px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.collaborators-popover .popover-header {\n height: 50px;\n min-height: 50px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: 600;\n font-size: 16px;\n border-bottom: 1px solid #ededed;\n color: #212529;\n background: #fff;\n}\n\n.collaborators-popover .popover-container .content-list {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: auto;\n padding: 5px 0;\n}\n\n.content-list .collaborator-details {\n height: 32px;\n line-height: 32px;\n width: 100%;\n display: flex;\n align-items: center;\n padding: 3px 12px;\n \n}\n\n.content-list .collaborator-details:hover {\n background-color: #f8f8f8;\n}\n\n.content-list .collaborator-details .collaborator-tag {\n margin-right: 8px;\n height: 5px;\n width: 5px;\n background-color: #08DB6B;\n border-radius: 50%;\n overflow: hidden;\n}\n\n.content-list .collaborator-details .collaborator-avatar {\n margin-right: 8px;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n overflow: hidden;\n}\n\n.content-list .collaborator-details .collaborator-name {\n max-width: calc(100% - 20px);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #212529;\n}\n",".sdoc-notification-container .sdoc-notification-count {\n position: absolute;\n color: #fff;\n font-size: 12px;\n top: -7px;\n right: -10px;\n padding: 2px;\n background: #fc6440;\n border-radius: 50%;\n min-width: 20px;\n min-height: 20px;\n transform: scale(.7);\n text-align: center;\n}\n",".sdoc-tag-popover {\n padding-bottom: 0;\n width: 230px;\n}\n\n.sdoc-popover-container .sdoc-tag-search-input {\n margin-bottom: 10px;\n}\n\n.sdoc-popover-container .sdoc-tag-list-container {\n max-height: 180px;\n overflow-y: auto;\n}\n\n.sdoc-tag-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 3px 10px;\n width: 100%;\n height: 30px;\n cursor: pointer;\n}\n\n.sdoc-tag-item:hover {\n background-color: #eee;\n}\n\n.sdoc-tag-item .sdoc-tag-badge-container {\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sdoc-tag-item .sdoc-tag-badge {\n margin-right: 10px;\n text-overflow: ellipsis;\n overflow: hidden;\n font-size: 13px;\n font-weight: normal;\n}\n\n.sdoc-tag-item .sdoc-tag-added-mark {\n width: 18px;\n}\n\n.sdoc-create-tag {\n padding: 8px 10px;\n border-top: 1px solid #eee;\n border-bottom: none;\n overflow: hidden;\n font-size: 14px;\n white-space: nowrap;\n font-weight: normal;\n text-overflow: ellipsis;\n background-color: #fff;\n cursor: pointer;\n}\n\n.sdoc-create-tag:hover {\n background-color: #f5f5f5;\n}\n\n.sdoc-create-tag .add-icon {\n margin-right: 6px;\n font-size: 13px;\n font-weight: 600;\n}\n",".doc-ops {\n display: flex;\n align-items: center;\n}\n\n.doc-ops .op-item {\n margin-left: 1rem;\n display: flex;\n align-items: center;\n position: relative;\n cursor: pointer;\n}\n\n.doc-ops .op-item .sdocfont {\n font-size: 18px;\n color: #666;\n cursor: pointer;\n}\n\n.doc-ops .op-item .sdocfont:hover {\n color: #333;\n cursor: pointer;\n}\n\n.doc-ops .popover-wrapper {\n width: 300px;\n}\n","html, body {\n height: 100%;\n width: 100%;\n}\n\n#root, #wrapper {\n height: 100%;\n width: 100%;\n display: flex;\n}\n\n.sdoc-editor-page-wrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.sdoc-editor-page-wrapper .sdoc-editor-page-header {\n border-bottom: 1px solid #e5e6e8;\n flex-shrink: 0;\n height: 56px;\n position: relative;\n z-index: 103;\n background-color: #fff;\n}\n\n.sdoc-editor-page-wrapper .sdoc-editor-page-content {\n flex: 1;\n min-height: 0;\n display: flex;\n}\n",".error-page {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n}\n\n.error-page .error-tip {\n color: red;\n}\n\n.error-page .error-button {\n margin-top: 20px;\n}\n","/* reset common css */\n.sdoc-editor-page-wrapper .dropdown-item,\n.sdoc-context-menu .dropdown-item:not(:disabled) {\n color: #212529;\n}\n\n.sdoc-context-menu .dropdown-item:hover {\n color: #fff;\n}\n",".sdoc-share-permission {\n font-size: 12px;\n padding: 2px 6px;\n border-radius: 4px;\n border: solid 1px rgba(0, 0, 0, 0.12);\n}\n","/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: black;\n\tbackground: none;\n\ttext-shadow: 0 1px white;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\tfont-size: 1em;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\n@media print {\n\tcode[class*=\"language-\"],\n\tpre[class*=\"language-\"] {\n\t\ttext-shadow: none;\n\t}\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\tpadding: 1em;\n\tmargin: .5em 0;\n\toverflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tbackground: #f5f2f0;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\tpadding: .1em;\n\tborder-radius: .3em;\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #999;\n}\n\n.token.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n\tcolor: #9a6e3a;\n\t/* This background color was intended by the author of this theme. */\n\tbackground: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n\tcolor: #07a;\n}\n\n.token.function,\n.token.class-name {\n\tcolor: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n\tcolor: #e90;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n",".sf-tooltip .tooltip-inner {\n font-weight: lighter;\n text-align: start;\n background-color: #303133;\n}\n\n.sf-tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n border-bottom-color: #303133;\n}\n\n.sf-tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n border-top-color: #303133;\n}\n\n.sf-tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n border-right-color: #303133;\n}\n\n.sf-tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n border-left-color: #303133;\n}\n",".sf-header-menu {\n display: flex;\n height: 100%;\n width: 140px;\n padding: 6px 8px;\n position: relative;\n align-items: center;\n}\n\n.sf-header-menu.header-toggle-disabled::after {\n content: '';\n position: absolute;\n top: 12px;\n right: 12px;\n border-top: 6px solid #e5e6e8;\n}\n\n.sf-header-menu.sf-header-popover-showed::after {\n content: '';\n position: absolute;\n top: 7px;\n right: 12px;\n border-top-color: transparent;\n border-bottom-color: #222428;\n}\n\n.sf-header-menu .sf-header-toggle {\n flex: 1;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-left: 5px;\n height: 24px;\n cursor: pointer;\n}\n\n\n.sf-header-menu .sf-header-toggle .active {\n font-size: 14px;\n}\n\n.sf-header-menu .header-toggle-disabled {\n color: #BDBDBD;\n cursor: unset;\n}\n\n\n.sf-header-menu .sf-header-toggle.sf-header-popover-showed {\n background-color: #f2f2f2;\n border-radius: 2px;\n}\n\n.sf-header-menu .sf-header-toggle:not(.header-toggle-disabled):hover {\n background-color: #f2f2f2;\n border-radius: 2px;\n}\n\n.sf-header-menu .sf-header-toggle .iconfont {\n color: #444;\n width: 12px;\n height: 24px;\n margin-left: 8px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n cursor: pointer;\n}\n\n.sf-header-menu .sf-header-popover {\n position: absolute;\n top: 32px;\n left: 8px;\n padding: 8px 0;\n width: 100%;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 2px;\n box-shadow: 0 0 10px #ccc;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n z-index: 101;\n}\n\n.sf-header-menu .sf-header-popover .sf-dropdown-menu-item {\n font-size: 14px;\n height: auto;\n padding: 9px 16px 9px 28px;\n width: 100%;\n line-height: 1;\n}\n\n.sf-header-menu .sf-header-popover .sf-dropdown-menu-item:hover {\n background-color: #F2F2F2;\n}\n\n.sf-header-menu .sf-header-popover .sf-dropdown-menu-item .sf-check-mark {\n position: absolute;\n left: 8px;\n transform: scale(.8);\n color: #798d99;\n}\n",".menu-group {\n height: 100%;\n padding: 6px 0 6px 8px;\n font-size: 0.75rem;\n border-right: 1px solid #e5e6e8;\n color: #444;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.menu-group .menu-group-item {\n width: 24px;\n height: 24px;\n line-height: 24px;\n margin-right: 8px;\n border: none !important;\n color: #444;\n background-color: #fcfcfc;\n}\n\n.menu-group .menu-group-item:disabled {\n color: #BDBDBD;\n}\n\n.menu-group .menu-group-item:hover {\n background-color: #F2F2F2;\n border-radius: 2px;\n}\n\n.menu-group .menu-group-item[data-active='true'] {\n color: #eb8205;\n}\n\n.menu-group .menu-group-item .iconfont {\n font-size: 13px;\n}\n\n/* sf-menu-with-dropdown */\n.menu-group .menu-group-item.sf-menu-with-dropdown {\n width: 36px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 0 !important;\n padding: 0 !important;\n margin-right: 10px;\n overflow: hidden;\n}\n\n.menu-group .menu-group-item.sf-menu-with-dropdown.disabled {\n color: #999;\n width: 24px !important;\n}\n\n.sf-menu-with-dropdown:not(.disabled):hover {\n background: #F2F2F2;\n border-radius: 2px;\n}\n\n.sf-menu-with-dropdown .sf-menu-with-dropdown-icon {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sf-menu-with-dropdown .sf-menu-with-dropdown-triangle {\n width: 12px;\n height: 24px;\n padding-right: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sf-menu-with-dropdown .sf-menu-with-dropdown-triangle .sf-menu-with-dropdown-triangle-icon {\n font-size: 12px;\n color: #999;\n}\n\n.sf-dropdown-list {\n top: 30px;\n left: 5px;\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n z-index: 1000;\n align-items: center;\n padding: 8px 0;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 2px;\n box-shadow: 0 0 10px #ccc;\n}\n\n.sf-dropdown-list .sf-dropdown-menu-item-icon {\n margin-right: 8px;\n}\n\n.sf-dropdown-list .sf-dropdown-menu-item-text {\n white-space: nowrap;\n}\n\n.sf-dropdown-list .sf-dropdown-list-item {\n display: flex;\n padding: 9px 16px 9px 28px;\n height: auto;\n width: 100%;\n font-size: 14px;\n line-height: 1;\n}\n\n.sf-dropdown-list .sf-dropdown-list-item:hover {\n background-color: #F2F2F2;\n}\n",".image-toggle-disabled {\n color: #BDBDBD;\n cursor: unset;\n}\n\n.image-popover {\n position: absolute;\n top: 42px;\n left: 8px;\n padding: 8px 0;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 2px;\n box-shadow: 0 0 10px #ccc;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n z-index: 101;\n}\n\n.image-popover .image-popover-item {\n margin: 0;\n padding: 9px 16px;\n height: auto;\n width: 100%;\n font-size: 14px;\n line-height: 1;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.image-popover .image-popover-item:hover {\n background-color: #4d9ef8;\n color: #fff;\n}\n\n.image-popover .image-uploader {\n display: none;\n}\n","@keyframes closeWindow {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n\n.ril__outer {\n background-color: rgba(0, 0, 0, 0.85);\n outline: none;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n width: 100%;\n height: 100%;\n -ms-content-zooming: none;\n -ms-user-select: none;\n -ms-touch-select: none;\n touch-action: none;\n}\n\n.ril__outerClosing {\n opacity: 0;\n}\n\n.ril__inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.ril__image,\n.ril__imagePrev,\n.ril__imageNext {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n max-width: none;\n -ms-content-zooming: none;\n -ms-user-select: none;\n -ms-touch-select: none;\n touch-action: none;\n}\n\n.ril__imageDiscourager {\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n}\n\n.ril__navButtons {\n border: none;\n position: absolute;\n top: 0;\n bottom: 0;\n width: 20px;\n height: 34px;\n padding: 40px 30px;\n margin: auto;\n cursor: pointer;\n opacity: 0.7;\n}\n.ril__navButtons:hover {\n opacity: 1;\n}\n.ril__navButtons:active {\n opacity: 0.7;\n}\n\n.ril__outer .ril__navButtonPrev {\n left: 0;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMzkyNjY0MTMzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEyNDkwIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBkPSJNNDEyIDUxNS4ybDM2MS42LTM2MS42YzIyLjQtMTkuMiAyMi40LTU0LjQgMC03Ni44cy01Ny42LTIyLjQtNzYuOCAwbC00MDYuNCA0MDBjLTIyLjQgMjIuNC0yMi40IDU3LjYgMCA3Ni44bDQwNi40IDQwMy4yYzIyLjQgMjIuNCA1Ny42IDIyLjQgNzYuOCAwczIyLjQtNTcuNiAwLTc2LjhsLTM2MS42LTM2NC44eiIgZmlsbD0iI2ZmZmZmZiIgcC1pZD0iMTI0OTEiPjwvcGF0aD48L3N2Zz4=)\n no-repeat center;\n}\n\n.ril__outer .ril__navButtonNext {\n right: 0;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMzkxOTM4MzIwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjExOTg2IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBkPSJNNjQwIDUxNS4yTDI3OC40IDE1My42Yy0yMi40LTE5LjItMjIuNC01NC40IDAtNzYuOHM1Ny42LTIyLjQgNzYuOCAwbDQwNi40IDQwMGMyMi40IDIyLjQgMjIuNCA1Ny42IDAgNzYuOEwzNTUuMiA5NTYuOGMtMjIuNCAyMi40LTU3LjYgMjIuNC03Ni44IDBzLTIyLjQtNTcuNiAwLTc2LjhMNjQwIDUxNS4yeiIgZmlsbD0iI2ZmZmZmZiIgcC1pZD0iMTE5ODciPjwvcGF0aD48L3N2Zz4=)\n no-repeat center;\n}\n\n.ril__downloadBlocker {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-image: url('data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7');\n background-size: cover;\n}\n\n.ril__caption,\n.ril__toolbar {\n background-color: rgba(0, 0, 0, 0.5);\n position: absolute;\n left: 0;\n right: 0;\n display: flex;\n justify-content: space-between;\n}\n\n.ril__caption {\n bottom: 0;\n max-height: 150px;\n overflow: auto;\n justify-content: center;\n}\n\n.ril__captionContent {\n padding: 10px 20px;\n color: #fff;\n margin: 0 auto;\n}\n\n.ril__toolbar {\n top: 0;\n height: 50px;\n}\n\n.ril__toolbarSide {\n height: 50px;\n margin: 0;\n}\n\n.ril__toolbarLeftSide {\n padding-left: 20px;\n padding-right: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ril__toolbarRightSide {\n padding-left: 0;\n padding-right: 20px;\n flex: 0 0 auto;\n}\n\n.ril__toolbarItem {\n display: inline-block;\n line-height: 50px;\n padding: 0;\n color: #fff;\n font-size: 120%;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ril__toolbarItemChild {\n vertical-align: middle;\n}\n\n.ril__builtinButton {\n width: 40px;\n height: 35px;\n cursor: pointer;\n border: none;\n opacity: 0.7;\n}\n.ril__builtinButton:hover {\n opacity: 1;\n}\n.ril__builtinButton:active {\n outline: none;\n}\n\n.ril__builtinButtonDisabled {\n cursor: default;\n opacity: 0.5;\n}\n.ril__builtinButtonDisabled:hover {\n opacity: 0.5;\n}\n\n.ril__closeButton {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMzk1NTkwMTc0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEzNjUyIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48cGF0aCBkPSJNNjExLjIgNTEybDMwMC44LTMwMC44YzI4LjgtMjguOCAyOC44LTczLjYgMC05OS4ycy03My42LTI4LjgtOTkuMiAwTDUxMiA0MTIuOCAyMTEuMiAxMTJjLTI4LjgtMjguOC03My42LTI4LjgtOTkuMiAwcy0yOC44IDczLjYgMCA5OS4ybDMwMC44IDMwMC44LTMwMC44IDMwMC44Yy0yOC44IDI4LjgtMjguOCA3My42IDAgOTkuMiAyOC44IDI1LjYgNzMuNiAyOC44IDk5LjIgMGwzMDAuOC0zMDAuOCAzMDAuOCAzMDAuOGMyOC44IDI4LjggNzMuNiAyOC44IDk5LjIgMCAyOC44LTI4LjggMjguOC03My42IDAtOTkuMkw2MTEuMiA1MTJ6IiBmaWxsPSIjZmZmZmZmIiBwLWlkPSIxMzY1MyI+PC9wYXRoPjwvc3ZnPg==)\n no-repeat center;\n}\n\n.ril__zoomInButton {\n background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PGcgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PHBhdGggZD0iTTEgMTlsNi02Ii8+PHBhdGggZD0iTTkgOGg2Ii8+PHBhdGggZD0iTTEyIDV2NiIvPjwvZz48Y2lyY2xlIGN4PSIxMiIgY3k9IjgiIHI9IjciIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIyIi8+PC9zdmc+')\n no-repeat center;\n}\n\n.ril__zoomOutButton {\n background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PGcgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PHBhdGggZD0iTTEgMTlsNi02Ii8+PHBhdGggZD0iTTkgOGg2Ii8+PC9nPjxjaXJjbGUgY3g9IjEyIiBjeT0iOCIgcj0iNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4=')\n no-repeat center;\n}\n\n.ril__rotateButton {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMzkyNzI4MTMyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEyODc1IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48cGF0aCBkPSJNMTI0LjggMTYwbDU0LjQgNTEuMkMzNDUuNiAyOC44IDYzMC40IDE2IDgxMi44IDE4Mi40czE5NS4yIDQ1MS4yIDI4LjggNjMzLjYtNDUxLjIgMTk1LjItNjMzLjYgMjguOGMtMzguNC0zNS4yLTczLjYtNzYuOC05Ni0xMjQuOC02LjQtOS42LTkuNi0xNi05LjYtMjguOCAwLTMyIDI1LjYtNTQuNCA1NC40LTU0LjQgMTkuMiAwIDM4LjQgOS42IDU0LjQgMzIgODMuMiAxNjYuNCAyODggMjMwLjQgNDU0LjQgMTQ0czIzMC40LTI5MS4yIDE0NC00NTcuNi0yODgtMjMwLjQtNDU0LjQtMTQ0Yy0zNS4yIDE5LjItNjcuMiA0MS42LTk2IDczLjZsNTEuMiA0NC44YzEyLjggMTIuOCAxNiAzOC40IDMuMiA1MS4yLTYuNCA2LjQtMTYgOS42LTI1LjYgOS42bC0xODIuNCA5LjZjLTE5LjIgMC0zNS4yLTEyLjgtMzguNC0zMkw2NCAxODguOGMtMy4yLTE5LjIgMTIuOC0zNS4yIDMyLTM4LjQgMTIuOC0zLjIgMjIuNCAzLjIgMjguOCA5LjZ6IiBmaWxsPSIjZmZmZmZmIiBwLWlkPSIxMjg3NiI+PC9wYXRoPjwvc3ZnPg==)\n no-repeat center;\n}\n\n.ril__outerAnimating {\n animation-name: closeWindow;\n}\n\n/* .ril_rotateImageButton {\n transform: rotateY(180deg);\n} */\n\n@keyframes pointFade {\n 0%,\n 19.999%,\n 100% {\n opacity: 0;\n }\n 20% {\n opacity: 1;\n }\n}\n\n.ril__loadingCircle {\n width: 60px;\n height: 60px;\n position: relative;\n}\n\n.ril__loadingCirclePoint {\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.ril__loadingCirclePoint::before {\n content: '';\n display: block;\n margin: 0 auto;\n width: 11%;\n height: 30%;\n background-color: #fff;\n border-radius: 30%;\n animation: pointFade 800ms infinite ease-in-out both;\n}\n.ril__loadingCirclePoint:nth-of-type(1) {\n transform: rotate(0deg);\n}\n.ril__loadingCirclePoint:nth-of-type(7) {\n transform: rotate(180deg);\n}\n.ril__loadingCirclePoint:nth-of-type(1)::before,\n.ril__loadingCirclePoint:nth-of-type(7)::before {\n animation-delay: -800ms;\n}\n.ril__loadingCirclePoint:nth-of-type(2) {\n transform: rotate(30deg);\n}\n.ril__loadingCirclePoint:nth-of-type(8) {\n transform: rotate(210deg);\n}\n.ril__loadingCirclePoint:nth-of-type(2)::before,\n.ril__loadingCirclePoint:nth-of-type(8)::before {\n animation-delay: -666ms;\n}\n.ril__loadingCirclePoint:nth-of-type(3) {\n transform: rotate(60deg);\n}\n.ril__loadingCirclePoint:nth-of-type(9) {\n transform: rotate(240deg);\n}\n.ril__loadingCirclePoint:nth-of-type(3)::before,\n.ril__loadingCirclePoint:nth-of-type(9)::before {\n animation-delay: -533ms;\n}\n.ril__loadingCirclePoint:nth-of-type(4) {\n transform: rotate(90deg);\n}\n.ril__loadingCirclePoint:nth-of-type(10) {\n transform: rotate(270deg);\n}\n.ril__loadingCirclePoint:nth-of-type(4)::before,\n.ril__loadingCirclePoint:nth-of-type(10)::before {\n animation-delay: -400ms;\n}\n.ril__loadingCirclePoint:nth-of-type(5) {\n transform: rotate(120deg);\n}\n.ril__loadingCirclePoint:nth-of-type(11) {\n transform: rotate(300deg);\n}\n.ril__loadingCirclePoint:nth-of-type(5)::before,\n.ril__loadingCirclePoint:nth-of-type(11)::before {\n animation-delay: -266ms;\n}\n.ril__loadingCirclePoint:nth-of-type(6) {\n transform: rotate(150deg);\n}\n.ril__loadingCirclePoint:nth-of-type(12) {\n transform: rotate(330deg);\n}\n.ril__loadingCirclePoint:nth-of-type(6)::before,\n.ril__loadingCirclePoint:nth-of-type(12)::before {\n animation-delay: -133ms;\n}\n.ril__loadingCirclePoint:nth-of-type(7) {\n transform: rotate(180deg);\n}\n.ril__loadingCirclePoint:nth-of-type(13) {\n transform: rotate(360deg);\n}\n.ril__loadingCirclePoint:nth-of-type(7)::before,\n.ril__loadingCirclePoint:nth-of-type(13)::before {\n animation-delay: 0ms;\n}\n\n.ril__loadingContainer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.ril__imagePrev .ril__loadingContainer,\n.ril__imageNext .ril__loadingContainer {\n display: none;\n}\n\n.ril__errorContainer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n}\n.ril__imagePrev .ril__errorContainer,\n.ril__imageNext .ril__errorContainer {\n display: none;\n}\n\n.ril__loadingContainer__icon {\n color: #fff;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n",".sf-image-wrapper {\n position: relative;\n display: inline-block;\n max-width: 100%;\n padding: 1px;\n}\n\n.sf-image-wrapper .sf-image.selected {\n box-shadow: 0 0 0 2px #007bff;\n}\n\n.sf-image-wrapper .resizer {\n width: 10px;\n height: 10px;\n position: absolute;\n right: -5px;\n bottom: -5px;\n background-color: #007bff;\n border: 1px solid #fff;\n cursor: se-resize;\n}\n\n.sf-image-wrapper .full-screen {\n position: absolute;\n height: 26px;\n display: inline-block;\n width: 26px;\n top: 0;\n right: -32px;\n text-align: center;\n line-height: 20px;\n padding: 2px;\n box-shadow: 0 2px 5px 0 #0003;\n border-radius: 3px;\n border: 1px solid #0028641f;\n background-color: #fff;\n user-select: none !important;\n z-index: 1000;\n}\n\n.sf-image-wrapper .full-screen:hover {\n display: block;\n background-color: #efefef;\n}\n\n.sf-image-wrapper .image-size-info-tooltip {\n display: inline-block;\n padding: 5px;\n white-space: nowrap;\n height: 22px;\n position: absolute;\n bottom: -25px;\n left: 100%;\n z-index: 1;\n transform: translateX(5px);\n border-radius: 3px;\n line-height: 12px;\n color: #fff;\n background-color: #4c4c4c;\n font-size: 12px;\n}\n",".permission-editor-explanation {\n user-select: none;\n padding-left: 10px;\n color: #9c9c9c;\n font-size: 12px;\n word-break: keep-all;\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n.permission-editor .permission-editor__option {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.permission-editor .permission-editor__control .permission-editor-explanation {\n display: none;\n}\n\n.cur-view-content .permission-editor-select .permission-editor__control,\n.cur-view-content .permission-editor-select .permission-editor__control div,\n.cur-view-content .permission-editor-select .permission-editor__control .permission-editor__input,\n.cur-view-content .permission-editor-select .permission-editor__indicators {\n height: 1.5rem;\n min-height: 1.5rem;\n}\n\n.cur-view-content .permission-editor-select .permission-editor__value-container div:nth-child(2) {\n margin: 0;\n padding: 0;\n}\n\n.cur-view-content .permission-editor-select .permission-editor__indicators .permission-editor__indicator {\n padding: 0 0.5rem;\n}\n\n.permission-editor__menu .permission-editor__option--is-disabled {\n color: #9c9c9c;\n border-top: 1px solid #dedede;\n}\n\n.permission-editor__menu .permission-editor__option--is-disabled:hover {\n background-color: #f0f0f0 !important;\n color: #9c9c9c !important;\n}\n\n.permission-editor-btn-add-custom-permission {\n display: flex;\n align-items: center;\n padding: .5rem 0;\n font-size: 12px;\n line-height: 13px;\n}\n\n.permission-editor-btn-add-custom-permission .fa {\n font-size: 12px;\n line-height: 13px;\n margin-right: .25rem;\n}\n\n.share-dialog-main .permission-editor .permission-editor__placeholder,\n.share-dialog-main .true__menu,\n.share-dialog-main .true__placeholder,\n.permission-editor .btn-add-custom-permission span {\n word-break: keep-all;\n}\n",".sf-virtual-link {\n color: #eb8205;\n}\n\n.sf-virtual-link:hover {\n text-decoration: underline;\n text-underline-position: under;\n}\n\n.sf-virtual-link.selected {\n background-color: #e5e5e5;\n}\n\n.sf-link-op-menu {\n height: 36px;\n padding: 7px 8px;\n display: flex;\n position: absolute;\n background-color: #fff;\n border: 1px solid #e5e5e5;\n border-radius: 3px;\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);\n z-index: 1000;\n}\n\n.sf-link-op-menu-link {\n font-size: 12px;\n color: #212529;\n padding: 0 5px;\n border-right: 1p solid #f1f1f1;\n line-height: 20px;\n}\n\n.sf-link-op-menu-link:hover {\n color: #212529;\n text-decoration: none;\n background: #f1f1f1;\n cursor: pointer;\n}\n\n.sf-link-op-icons {\n margin-left: 8px;\n border-left: 1px solid #e5e5e5;\n}\n\n.sf-link-op-icon {\n padding: 4px;\n border-radius: 2px;\n margin-left: 8px;\n display: flex;\n align-items: center;\n color: #444;\n}\n\n.sf-link-op-icon .iconfont {\n font-size: 12px;\n}\n\n.sf-link-op-icon:hover {\n background: #f2f2f2;\n}\n",".sf-code-block-container {\n position: relative;\n margin: 0 0 20px;\n padding: 0;\n border-radius: 4px;\n overflow: hidden;\n background: #f5f7fa;\n}\n\n.sf-lang-selector {\n position: absolute;\n top: 0;\n right: 0;\n display: flex;\n padding: 2px 5px;\n width: max-content;\n border: none;\n border-radius: 3px;\n appearance: none;\n align-items: center;\n line-height: 1;\n font-size: 12px;\n background: #eeeeee;\n cursor: pointer;\n transition: all 0.3s;\n outline: none;\n}\n",".sf-list-line {\n display: flex;\n flex-direction: column;\n margin: 0 !important;\n padding-inline-start: 24px;\n}\n",".sf-table-menu-item {\n position: relative;\n}\n\n.sf-table-size-selector-card {\n position: absolute;\n z-index: 1;\n top: 30px;\n padding: 12px;\n background-color: #fff;\n\n}\n\n.sf-table-size-selector-card .sf-table-grid-info {\n margin-bottom: 5px;\n width: 100%;\n text-align: center;\n}\n\n.sf-table-size-selector-card .sf-table-selector-cell {\n height: 15px;\n width: 20px;\n border: 1px solid #ccc;\n}\n\n.sf-table-size-selector-card .sf-table-row {\n display: flex;\n}\n\n.sf-table-size-selector-card .sf-table-selector-cell.selected {\n background-color: #ffa94d;\n}\n",".sf-table-container td {\n position: relative;\n}\n\n.sf-table-container .selected-cell {\n caret-color: transparent;\n background-color: #fff4e6;\n}\n\n.sf-table-container .selected-cell-top:before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: -1px;\n border-top: 1px double #ffa94d;\n z-index: 2;\n}\n\n.sf-table-container .selected-cell-bottom:before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n margin: -1px;\n border-bottom: 1px double #ffa94d;\n z-index: 2;\n}\n\n.sf-table-container .selected-cell-left:before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: -1px;\n border-left: 1px double #ffa94d;\n z-index: 2;\n}\n\n.sf-table-container .selected-cell-right:before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n margin: -1px;\n border-right: 1px double #ffa94d;\n z-index: 2;\n}\n\n.sf-context-menu {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n /* float: left; */\n z-index: 1000;\n flex-direction: column;\n border: 1px solid rgba(0, 40, 100, 0.12);\n border-radius: 3px;\n background-color: #fff;\n}\n\n.sf-context-menu .sf-context-menu-item {\n display: flex;\n clear: both;\n padding: 0.25rem 1.5rem;\n border: none;\n white-space: nowrap;\n color: #212529;\n background-color: #fff;\n}\n\n.sf-context-menu .sf-context-menu-item:hover,\n.sf-context-menu .sf-context-menu-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.sf-context-menu .sf-divider {\n width: 100%;\n height: 1px;\n margin: 5px 0;\n color: #eee;\n cursor: default;\n}\n",".seafile-multicolor-icon {\n width: 1em; \n height: 1em;\n fill: currentColor;\n overflow: hidden;\n}\n\n.seafile-multicolor-icon-monitor {\n font-size: 14px;\n fill: #444;\n color: #bdbdbd;\n}\n",".ai-search-refrences {\n margin-top: 10px;\n}\n\n.ai-search-refrences .ai-search-refrences-title {\n margin-bottom: 6px;\n}\n\n.ai-search-refrences .ai-search-refrences-container {\n display: flex;\n}\n\n.ai-search-refrences .ai-search-refrences-container .ai-search-refrences-detail {\n border: 1px solid #ccc;\n max-width: 200px;\n margin-right: 8px;\n padding: 4px 8px;\n border-radius: 3px;\n}\n\n.ai-search-refrences .ai-search-refrences-detail:hover {\n cursor: pointer;\n background-color: rgb(245, 245, 245);\n}\n",".ai-search-help {\n padding: 20px 0 20px 0;\n border-bottom: 1px solid rgba(0, 40, 100, 0.12);\n}\n\n.ai-search-help .ai-search-help-title {\n margin-bottom: 10px;\n}\n\n.ai-search-help .ai-search-help-container {\n display: flex;\n}\n\n.ai-search-help .ai-search-help-container .ai-search-help-detail {\n border: 1px solid #ccc;\n max-width: 200px;\n margin-right: 8px;\n padding: 4px 8px;\n border-radius: 3px;\n}\n\n.ai-search-help .ai-search-help-detail:hover {\n cursor: pointer;\n background-color: rgb(245, 245, 245);\n}\n",".search-container.show.ai-search-ask {\n width: 800px;\n}\n\n.ai-search-ask .ai-search-ask-header {\n display: flex;\n align-items: center;\n padding: 1rem;\n border-bottom: 1px solid rgba(0, 40, 100, 0.12);\n}\n\n.ai-search-ask .ai-search-ask-header .ai-search-ask-return {\n padding: 0 4px;\n transform: rotate(180deg);\n line-height: 10px;\n cursor: pointer;\n}\n\n.ai-search-ask .ai-search-ask-header .ai-search-ask-return .seafile-multicolor-icon-arrow {\n opacity: 0.6;\n}\n\n.ai-search-ask .ai-search-ask-header .ai-search-ask-return:hover .seafile-multicolor-icon-arrow {\n opacity: 0.8;\n}\n\n.ai-search-ask .ai-search-ask-body {\n display: flex;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.ai-search-ask .ai-search-ask-body .ai-search-ask-body-left {\n flex-shrink: 0;\n margin-right: 1rem;\n}\n\n.ai-search-ask .ai-search-ask-body .ai-search-ask-body-right {\n line-height: 1.8;\n font-size: 14px;\n width: 100%;\n}\n\n.ai-search-ask .ai-search-ask-footer {\n border-top: 1px solid rgba(0, 40, 100, 0.12);\n margin: 0 1rem;\n padding: 1rem 0;\n}\n\n.ai-search-ask .ai-search-ask-footer .ai-search-ask-footer-btn {\n width: 16px;\n height: 16px;\n position: absolute;\n right: 8px;\n top: 8px;\n background-color: #fff;\n cursor: pointer;\n}\n\n.ai-search-ask .ai-search-ask-footer .ai-search-ask-footer-btn .seafile-multicolor-icon-send {\n color: #ff8000;\n}\n\n.ai-search-ask .ai-search-ask-footer .ai-search-ask-footer-btn:hover .seafile-multicolor-icon-send {\n color: #d96d00;\n}\n\n@media (max-width: 768px) {\n\n .search-container.show.ai-search-ask {\n width: 100%;\n }\n\n .ai-search-ask .search-input {\n box-shadow: none;\n width: 100% !important;\n }\n\n}\n",".top-search-file-icon {\n color: #999;\n font-size: 20px;\n align-self: center;\n font-weight: 800;\n cursor: pointer;\n}\n",".notification-wrapper .popover {\n max-width: 300px;\n}\n\n.notification-container {\n position: absolute;\n background: #fff;\n width: 320px;\n right: -10px;\n top: -1px;\n border-radius: 3px;\n box-shadow: 0 0 5px #ccc;\n}\n\n.notification-container .notification-header {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 50px;\n border-bottom: 1px solid #ededed;\n font-size: 16px;\n font-weight: 600;\n position: relative;\n}\n\n.notification-container .notification-header .notification-close-icon {\n position: absolute;\n right: 14px;\n height: 24px;\n width: 24px;\n text-align: center;\n cursor: pointer;\n color: #000;\n opacity: 0.5;\n font-weight: 700;\n}\n\n.notification-container .notification-header .notification-close-icon:hover {\n opacity: 0.75;\n}\n\n.notification-container .notification-body {\n padding: 0;\n}\n\n.notification-container .notification-body .show-weixin-qrcode {\n cursor: pointer;\n border-bottom: 1px solid #ededed;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding-left: 10px;\n}\n\n.show-weixin-qrcode .weixin-icon {\n color: #999;\n font-size: 20px;\n margin-left: 20px;\n}\n\n.notification-container .notification-body .mark-notifications {\n color: #b4b4b4;\n cursor: pointer;\n border-bottom: 1px solid #ededed;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-right: 1rem;\n}\n\n.notification-container .notification-body .mark-notifications:hover {\n text-decoration: underline;\n}\n\n.notification-body .notification-list-container {\n max-height: 260px;\n overflow: auto;\n}\n\n.notification-list-container .notification-item {\n padding: 14px 16px 14px 10px;\n border-bottom: 1px solid #ededed;\n position: relative;\n cursor: pointer;\n}\n\n.notification-list-container .notification-item:last-child {\n border-bottom: none;\n}\n\n.notification-list-container .notification-item:hover {\n background: #f5f5f5;\n}\n\n.notification-list-container .notification-item .notification-item-header {\n display: flex;\n align-items: center\n}\n\n.notification-list-container .notification-item .notification-point {\n display: inline-block;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: red;\n margin-right: 12px;\n position: absolute;\n}\n\n.notification-list-container .notification-item .notification-header-info {\n display: flex;\n justify-content: space-between;\n flex: 1;\n margin-left: 20px;\n width: calc(100% - 20px);\n}\n\n.notification-user-detail {\n display: flex;\n width: 65%;\n}\n\n.notification-user-detail img {\n margin-top: 3px;\n}\n\n.notification-user-name {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n font-weight: 500;\n}\n\n.notification-item .notification-header-info .notification-time {\n color: #b4b4b4;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n font-size: 13px;\n}\n\n.notification-list-container .notification-item .notification-content-wrapper {\n font-size: 13px;\n}\n\n.notification-item .notification-content-quotes {\n width: 8px;\n}\n\n.notification-list-container .notification-item .notification-comment-content {\n max-width: calc(100% - 16px);\n}\n\n.notification-list-container .notification-item .notification-comment-content p {\n display: inline-block;\n letter-spacing: 1px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin-bottom: 0;\n}\n\n.notification-list-container .notification-item .notification-comment-content p img {\n max-width: 70%;\n height: auto;\n max-height: 60px;\n}\n\n.notification-body .notification-footer {\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f9f9f9;\n cursor: pointer;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n border-top: 1px solid #ededed;\n}\n\n.notification-body .notification-footer:hover {\n text-decoration: underline;\n}\n","/* formula */\n.sf-selected-formula {\n display: block;\n user-select: none;\n outline: 2px solid #007bff;\n cursor: pointer;\n}\n\n.sf-selected-formula .MathJax {\n margin: 0;\n}\n\n.formula-dialog-wrapper .form-check-label {\n margin-bottom: 4px;\n}\n\n.formula-dialog-wrapper .formula-preview {\n padding: 10px;\n border: 2px dashed #ebebeb;\n min-height: 40px;\n overflow-x: auto;\n}\n","\n/* begin toobar-container */\n.cur-view-toolbar {\n position: relative;\n display: flex;\n flex: 1;\n align-items: center;\n height: 32px;\n}\n\n.border-left-show:before {\n position: absolute;\n top: 10px;\n left: -1px;\n width: 1px;\n height: 30px;\n content: '';\n background-color: #ddd;\n}\n\n/* end toolbar-container */\n\n/* file-operation toolbar eg: edit, upload, new, share*/\n.operation-item {\n padding: 0 0.5rem;\n margin-right: 0.25rem;\n height: 30px;\n min-width: 55px;\n background-color: #fff;\n line-height: 29px;\n font-weight: normal;\n border: 1px solid #ccc;\n border-radius: 2px;\n}\n\n.group-operations {\n margin-right: 0.25rem;\n}\n\n.group-operations .group-op-item {\n padding: 0 0.5rem;\n height: 30px;\n min-width: 46px;\n background-color: #fff;\n line-height: 29px;\n font-weight: normal;\n border: 1px solid #ccc;\n border-radius: 2px;\n font-size: 1.125rem;\n}\n/* end file-operation toolbar */\n\n/* begin view-mode toolbar */\n.detail-btn button,\n.sf-view-mode-btn {\n padding: 0;\n height: 30px;\n min-width: 2rem;\n color: #aaa;\n background-color: #fff;\n border: 1px solid #ccc;\n line-height: 29px;\n font-size: 18px;\n border-radius: 2px;\n}\n\n.detail-btn button {\n font-size: 15px;\n padding-top: 1px;\n}\n\n.sf-view-mode-btn.current-mode {\n background-color: #ccc !important;\n color: #fff !important;\n}\n/* end view-mode toolbar */\n\n/* begin common-toolbar */\n.common-toolbar {\n display: flex;\n margin-left: auto;\n align-items: center;\n}\n\n.common-toolbar > div{\n margin-left: .5rem;\n}\n\n.common-toolbar .logout-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n margin-left: 8px;\n text-decoration: none;\n color: #ccc;\n}\n/* end common-toolbar */\n\n/* begin path toolbar */\n.path-toolbar {\n list-style: none;\n}\n\n.path-toolbar .toolbar-item {\n display: inline-block;\n text-align: center;\n margin-left: 0.75rem;\n}\n\n.path-toolbar .toolbar-item a {\n color:#8a8a8a;\n font-size:22px;\n}\n\n\n.path-toolbar .toolbar-item a:hover {\n color:#eb8205;\n text-decoration:none;\n}\n/* end path toolbar */\n\n@media (max-width: 767px) {\n .border-left-show:before {\n width: 0;\n }\n}\n",".search-mask {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.2);\n z-index: 1;\n}\n\n.search-container {\n position: relative;\n z-index: 2;\n}\n\n.search-container.show {\n display: flex;\n flex-direction: column;\n position: absolute;\n top: 10px;\n right: 110px;\n min-height: 200px;\n border-radius: 3px;\n box-shadow: 0 3px 8px 0 rgba(116,129,141,.1);\n background-color: #fff;\n cursor: default;\n overflow: hidden;\n width: 600px;\n padding: 1rem 0rem 0rem 1rem;\n}\n\n.search-icon-left {\n display: flex;\n}\n\n.search-icon-right {\n display: flex;\n cursor: pointer;\n pointer-events: all;\n font-style: normal;\n min-width: 25px;\n color: #999;\n}\n\n.search-icon-right:hover {\n color: #333;\n text-decoration: none;\n}\n\n.search-icon-arrow {\n right: 40px;\n left: auto;\n}\n\n.search-input {\n height: 1.875rem;\n width: 15rem;\n font-size: .875rem;\n}\n\n.search-container.show .search-input {\n height: 38px;\n}\n\n.search-result-container {\n position: absolute;\n top: 2rem;\n left: 0;\n width: 100%;\n background-color: #fff;\n border-radius: 0 0 3px 3px;\n box-shadow: 0 3px 8px 0 rgba(116, 129, 141, 0.1);\n top: 60px;\n}\n\n.dropdown-search-result-container {\n max-height: 300px;\n overflow: auto;\n position: relative;\n top: 0;\n box-shadow: none;\n display: flex;\n flex-direction: column;\n}\n\n.dropdown-search-result-container .seahub-switch .custom-switch {\n padding-left: 0;\n}\n\n.search-result-container .search-result-none {\n text-align: center;\n line-height: 4rem;\n}\n\n.search-result-container .search-result-list {\n margin: 4px 0;\n padding: 0;\n list-style: none;\n}\n\n\n.search-result-container .search-result-list-container {\n overflow: auto;\n flex: 1;\n}\n\n.search-result-container .search-result-item {\n display: flex;\n padding: 10px 0 10px 8px;\n font-size: 0.8125rem;\n cursor: pointer;\n margin-right: 1rem;\n border-radius: 4px;\n}\n\n.search-result-container .search-result-item:hover,\n.search-result-container .search-result-item.search-result-item-highlight {\n background-color: #f0f0f0;\n}\n\n.search-result-item .item-img {\n width: 36px;\n height: 36px;\n}\n.search-result-item .lib-item-img {\n width: 36px;\n height: 36px;\n padding: 4px;\n}\n.search-result-item .item-content {\n flex: 1;\n margin-left: 0.25rem;\n overflow-x: hidden;\n}\n.item-content .item-name a {\n color: #EA8102 !important;\n}\n.item-content .item-link {\n color: #7d7d7d;\n margin: 0;\n}\n.item-content .item-text {\n margin: 0;\n}\n.item-content .item-text b {\n font-weight: bold;\n}\n.search-result-container .item-content .item-text {\n padding: 0;\n font-size: 0.8125rem;\n line-height: 1.5;\n}\n\n.main-panel-south {\n flex: auto;\n overflow: auto;\n height: calc(100% - 50px);\n}\n.search-page {\n margin: 30px auto;\n width: 65%;\n}\n.search-page .search-result-container {\n border-radius: 0;\n box-shadow: none;\n padding: 1.25rem 1rem;\n}\n.search-page .search-page-container {\n padding: 1.25rem 1rem;\n background: #f7f7f8;\n}\n.search-page .search-page-container .search-input {\n padding-left: 0.5rem;\n width: 30rem;\n}\n.search-page .search-page-container .fa-angle-double-up,\n.search-page .search-page-container .fa-angle-double-down {\n font-size: 1rem;\n}\n.search-page .advanced-search .search-file-types .search-input {\n padding-left: 0.5rem;\n width: 30rem;\n max-width: 100%;\n}\n.search-page .search-page-container .search-icon-right {\n left: 28rem;\n}\n.search-page .paginator {\n text-align: center;\n margin: 1rem 0;\n}\n.search-page .advanced-search, .search-page .search-filters {\n color: #747474;\n}\n.search-page .search-filters {\n padding-top: 10px;\n}\n.search-page .advanced-search .search-repo, \n.search-page .advanced-search .search-file-types {\n padding: 5px 0;\n}\n.search-file-types .search-file-types-form {\n top: 10px;\n}\n.search-page .advanced-search .search-catalog {\n border-top: 1px dashed #e2e2e2;\n padding: 10px 0;\n}\n.search-page .advanced-search .search-catalog:first-child {\n border: none;\n}\n.search-page .custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #3B88FD;\n}\n.search-date .ant-input {\n height: 2.375rem;\n padding: 0.375rem 0.75rem;\n line-height: 1.6;\n border: 1px solid rgba(0, 40, 100, 0.12);\n border-radius: 3px;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.search-date .select-data-icon {\n position: absolute;\n right: 1.5rem;\n top: 0.5rem;\n color: #b2b2b2;\n}\n.search-page .search-result-container .search-result-item {\n padding: 0;\n margin-bottom: 1rem;\n}\n.search-page .search-result-container .search-result-item:hover {\n background-color: inherit;\n}\n.search-page .search-result-item .item-content {\n margin-left: 0.8rem;\n}\n.search-page .search-result-item .item-content .item-link a {\n color: #8b8b8b !important;\n}\n.search-page .search-result-container .search-result-item {\n cursor: default;\n}\n.rc-calendar tbody tr {\n height: 1.75rem;\n}\n\n@media (max-width: 767px) {\n .common-toolbar .search {\n margin: 0;\n }\n \n .search-icon-container {\n display: flex;\n width: 2rem;\n align-items: center;\n justify-content: center;\n }\n\n .search-icon {\n font-size: 1.25rem;\n line-height: 1;\n color: #999;\n }\n\n .search-container {\n position: fixed;\n z-index: 2;\n top: 5rem;\n left: 0;\n right: 0;\n display: flex;\n justify-content: center;\n }\n\n .search-input {\n height: 2.5rem;\n width: 20rem !important;\n box-shadow: 5px 5px 5px #888888;\n }\n\n .search-result-container {\n position: absolute;\n top: 2.5rem;\n left: auto;\n width: 20rem;\n }\n\n .search-page {\n margin: 0;\n width: 100%;\n height: 100%;\n }\n\n .search-page .search-page-container .search-input {\n box-shadow: none;\n width: 95% !important;\n }\n\n .search-page .search-page-container .search-icon-right {\n left: 85%;\n }\n\n .search-page .search-result-container {\n top: 0;\n left: 0;\n width: 100%;\n }\n}\n\n.search-result-container .search-mode-container {\n display: flex;\n align-items: center;\n height: 40px;\n border-bottom: 1px solid #ddd;\n padding: 0 12px;\n margin-right: 16px;\n}\n\n.search-result-container .search-mode-item {\n display: flex;\n align-items: center;\n height: 40px;\n line-height: 40px;\n margin-right: 30px;\n font-size: 14px;\n cursor: pointer;\n border-bottom: 2px solid transparent;\n user-select: none;\n}\n\n.search-result-container .search-mode-item.search-mode-active {\n color: #ff8001;\n border-bottom-color: #ff8001;\n}\n\n.search-result-container .search-mode-similarity-index-status {\n height: 64px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.search-result-container .search-mode-similarity-index-status.index-status-uncreated {\n cursor: pointer;\n}\n\n.visited-search-results-title {\n color: #999;\n font-size: .875rem;\n font-weight: normal;\n margin: 7px 0 10px;\n}\n",".notification-list-dialog {\n width: 720px;\n max-width: 720px;\n height: calc(100% - 56px);\n}\n\n.notification-list-dialog .notification-list-content {\n height: 100%;\n}\n\n.notification-header-close {\n display: flex;\n}\n\n.notification-header-close .notification-dropdown-toggle {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 24px;\n width: 24px\n}\n\n.notification-header-close .item-dropdown-icon,\n.notification-header-close .notification-close-icon {\n height: 24px;\n width: 24px;\n cursor: pointer;\n color: #000;\n opacity: 0.5;\n}\n\n.notification-header-close .notification-close-icon:hover,\n.notification-header-close .item-dropdown-icon:hover {\n color: #000;\n opacity: 0.75;\n}\n\n/* The icon \"...\" do not need to be bold */\n.notification-header-close .item-dropdown-icon {\n font-weight: 400;\n}\n\n/* The icon 'x' needs to be bold */\n.notification-header-close .notification-close-icon {\n font-weight: 700;\n}\n\n.notification-header-close .dropdown-menu {\n min-width: 8rem;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n}\n\n.notification-header-close .dtable-dropdown-menu.large.dropdown-menu .dropdown-item {\n padding: 0.25rem 1.5rem;\n min-height: unset;\n}\n\n.notification-list-content .notification-modal-body {\n height: 100%;\n overflow: hidden;\n padding: 0;\n}\n\n.notification-modal-body .notification-dialog-body {\n overflow: auto;\n padding: 2rem 1rem;\n height: 100%;\n}\n\n.notification-dialog-body table {\n width: 100%;\n table-layout: fixed;\n overflow-y: auto;\n}\n\n.notification-modal-body .notification-dialog-body .paginator {\n height: 38px;\n}\n\n.notification-dialog-body table thead tr {\n height: 2.1875rem;\n}\n\n.notification-dialog-body table th {\n padding: 0.3125rem 0.1875rem;\n border-bottom: 1px solid #eee;\n text-align: left;\n font-weight: normal;\n line-height: 1.6;\n color: #9c9c9c;\n}\n\n.notification-dialog-body table tbody tr:hover {\n background: #f5f5f5;\n cursor: pointer;\n}\n\n.notification-dialog-body table td {\n padding: 0.5rem 0.1875rem;\n border-bottom: 1px solid #eee;\n color: #333;\n font-size: 14px;\n word-break: break-all;\n}\n\n.wechat-dialog-body {\n display: flex;\n justify-content: center;\n padding: 3rem;\n flex-direction: column;\n align-items: center;\n}\n\n.wechat-dialog-message {\n width: 100%;\n display: flex;\n justify-content: center;\n flex-direction: column;\n align-items: center;\n margin-top: 1rem;\n color: #666;\n font-size: 14px;\n}\n\n.notification-dialog-body .empty-tip {\n margin: 5.5em 1em;\n border-radius: 3px;\n padding: 30px;\n background-color: #fff;\n text-align: center;\n}\n\n.notification-dialog-body .empty-tip .no-items-img-tip {\n width: 100px;\n height: 100px;\n}\n\n@media (min-width: 768px) {\n .notification-dialog-body .empty-tip {\n padding: 30px 80px;\n }\n}\n","#notifications {\n position: relative;\n width: 32px;\n}\n\n#notice-icon {\n position: relative;\n display: block;\n}\n\n@media (max-width: 390px) {\n #notifications {\n margin-left: 8px;\n }\n}\n\n#notifications .title {\n line-height: 1.5;\n font-size: 1rem;\n color: #322;\n font-weight: normal;\n}\n\n#notifications .sf2-icon-bell {\n font-size: 24px;\n line-height: 1;\n color: #999;\n vertical-align: middle;\n}\n\n#notifications .num {\n position: absolute;\n top: -3px;\n left: 12px;\n padding: 0 2px;\n min-width: 16px;\n height: 16px;\n color: #fff;\n font-size: 9px;\n line-height: 16px;\n text-align: center;\n background: #fc6440;\n border-radius: 100%;\n}\n\n#notice-popover {\n top: 38px;\n right: -12px;\n}\n\n#notice-popover .outer-caret {\n right: 18px;\n}\n\n#notice-popover a {\n font-weight: normal;\n}\n\n#notice-popover li {\n padding: 9px 0 3px;\n border-bottom: 1px solid #dfdfe1;\n}\n\n#notice-popover li.unread {\n padding-right: 10px;\n padding-left: 10px;\n border-left: 2px solid #feac74;\n}\n\n#notice-popover li.read {\n padding-right: 10px;\n padding-left: 10px;\n border-left: 2px solid transparent;\n}\n\n#notice-popover li:hover {\n background: #f5f5f7;\n}\n\n#notice-popover li.read:hover {\n background: #f5f5f7;\n border-left: 2px solid #dfdfe1;\n}\n\n#notice-popover .avatar {\n border-radius: 1000px;\n float: left;\n}\n\n#notice-popover .brief {\n margin-left: 40px;\n margin-bottom: 1rem;\n font-size: 0.8125rem;\n line-height: 1.5rem;\n}\n\n#notice-popover .time {\n margin: 0;\n color: #999;\n text-align: right;\n font-size: 0.8125rem;\n line-height: 1.5rem;\n clear: both;\n}\n\n#notice-popover .view-all {\n display: block;\n padding: 7px 0;\n text-align: center;\n color: #a4a4a4;\n}\n\n#notice-popover .sf-popover-close {\n position: absolute;\n right: 10px;\n top: 17px;\n}\n\n#notice-popover .sf-popover-hd {\n border-bottom: 1px solid #dfdfe1;\n margin: 0 10px;\n}\n\n#notice-popover .sf-popover-con {\n max-height: 25rem;\n}\n",".keyboard-shortcut-dialog {\n max-width: 500px;\n}\n\n.keyboard-shortcut-dialog .modal-body {\n max-height: 390px;\n overflow: auto;\n}\n\n.keyboard-shortcut-container {\n line-height: 1.5;\n border-radius: 3px;\n padding-top: .5rem;\n padding-bottom: .5rem;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n margin-top: 3px;\n background-color: rgb(248, 248, 248);\n}\n\n.keyboard-shortcut-title {\n font-size: 0.9rem;\n}\n\n.keyboard-shortcut-container>div:first-child {\n text-align: right;\n}\n\n.keyboard-shortcut-container>div:last-child {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.keyboard-shortcut {\n display: inline-block;\n}\n\n.keyboard-shortcut kbd {\n font: inherit;\n background-color: hsla(0,0%,100%,0.25);\n border-color: rgba(0,0,0,0.1);\n text-transform: uppercase;\n text-align: center;\n border-radius: 3px;\n color: #333333;\n box-sizing: border-box;\n border-style: solid;\n border-width: 1px;\n display: inline-block;\n border-bottom-width: 2px;\n font-size: 12px;\n margin-left: 1px;\n margin-right: 1px;\n margin-bottom: 0px;\n min-width: 12px;\n padding: 1px 3px;\n}\n",".sf-slate-editor-toolbar {\n background-color: #fcfcfc !important;\n}\n\n.sf-slate-editor-toolbar .sf-slate-article-info-control {\n position: absolute;\n right: 20px;\n height: 30px;\n width: 30px;\n line-height: 30px;\n display: flex;\n justify-content: center;\n cursor: pointer;\n color: #555;\n}\n\n.sf-slate-editor-toolbar .sf-slate-article-info-control:hover {\n background-color: #e5e5e5;\n}\n\n.sf-slate-editor-toolbar .sf-slate-help-info-control {\n position: absolute;\n right: 20px;\n height: 30px;\n width: 30px;\n line-height: 30px;\n display: flex;\n justify-content: center;\n cursor: pointer;\n color: #555;\n}\n\n.sf-slate-editor-toolbar .sf-slate-help-info-control > span:hover {\n cursor: pointer;\n color: #333;\n}\n\n.sf-slate-editor-toolbar .sf-slate-article-info-control .iconfont {\n font-size: 13px;\n}\n",".sf-single-selector .cur-option {\n cursor: pointer;\n}\n\n.sf-single-selector .cur-option .toggle-icon {\n color: #999;\n}\n\n.sf-single-selector .options-container {\n min-width: 165px;\n background: #fff;\n border: 1px solid #e8e8e8;\n z-index: 2;\n}\n\n.sf-single-selector .option-list {\n min-height: 4rem;\n max-height: 200px;\n}\n\n.sf-single-selector .option-item {\n cursor: pointer;\n}\n\n.sf-single-selector .option-item:hover {\n background: #f5f5f5;\n}\n\n.sf-single-selector .option-item-text {\n font-size: 14px;\n}\n",".btn-qr-code-icon {\n font-size: 1.5rem;\n line-height: 1;\n font-weight: normal;\n padding: 0.375rem;\n}\n","\n.sf-editor-helper {\n height: 100%;\n flex: 1 0 350px;\n background-color: #fff;\n overflow-y: auto;\n overflow-x: hidden;\n border-left: 1px solid #eee;\n}\n\n.sf-editor-helper__header {\n height: 50px;\n background-color: rgb(250,250,249);\n display: flex;\n justify-content: space-between;\n padding: 0 10px;\n box-sizing: border-box;\n border-bottom: 1px solid #eee;\n line-height: 50px;\n font-size: 1rem;\n}\n\n.sf-editor-helper__header .title {\n font-weight: bolder;\n margin-bottom: 0;\n}\n\n.sf-editor-helper__header .help-close {\n cursor: pointer;\n}\n\n.sf-editor-helper__content {\n height: calc(100% - 50px);\n overflow-y: auto;\n padding: 0 15px;\n box-sizing: border-box;\n font-size: 0.8rem;\n}\n\n.sf-editor-helper .sf-editor-classify-hotkeys {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n color: #2c2d30;\n /* border-bottom: 1px solid #eee; */\n /* padding: 10px 0; */\n}\n\n.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-type {\n border-bottom: 1px solid #eee;\n line-height: 2;\n font-weight: bolder;\n margin: 10px 0 0 0;\n}\n\n.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-list {\n list-style: none;\n padding: 0;\n}\n\n.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-shortcuts {\n display: flex;\n justify-content: space-between;\n padding: 10px 0;\n border-bottom: 1px solid #eee;\n color: #2c2d30;\n}\n\n.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-shortcuts-left {\n word-break: break-all;\n line-height: 30px;\n}\n\n.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-shortcuts-right {\n min-width: max-content;\n}\n\n.sf-editor-helper .sf-editor-classify-hotkeys .hotkey-shortcuts-right .key {\n display: inline-block;\n border-radius: 3px;\n background-color: #e8e8e8;\n border: 1px solid #919191;\n box-shadow: 0 1px 0 #919193;\n padding: 3px 5px;\n margin-left: 5px;\n height: 30px;\n line-height: 20px;\n}\n\n/* .sf-editor-helper .sf-editor-classify-hotkeys .hotkey-shortcuts-right:not(:first-child) {\n margin-top: 10px;\n} */\n"," /* to overwrite styles from seahub_react.css */\n.rc-calendar-table {\n table-layout: auto;\n}\n.rc-calendar-table tbody tr {\n height: auto;\n}\n\n/* overwrite some styles */\n/* for 'markdown file view -> share -> picker' */\n.rc-calendar-input:focus {\n border-color: transparent;\n}\n",".sf-editor-outline {\n border-left: 1px solid #ddd;\n padding: .5rem 1rem .5rem 0;\n}\n\n.sf-editor-outline .outline-h2, \n.sf-editor-outline .outline-h3 {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sf-editor-outline .outline-h2 {\n margin-left: 20px;\n line-height: 2.5;\n color:#364149;\n white-space: nowrap;\n cursor:pointer;\n}\n\n.sf-editor-outline .outline-h2:hover {\n color: #eb8205;\n}\n\n.sf-editor-outline .outline-h3 {\n margin-left: 40px;\n line-height: 2.5;\n color:#364149;\n white-space: nowrap;\n cursor:pointer;\n}\n\n.sf-editor-outline .outline-h3:hover {\n color: #eb8205;\n}\n\n.sf-editor-outline .empty-container {\n margin-top: 10px;\n text-align: center;\n}\n\n.sf-editor-outline .outline-h2.active,\n.sf-editor-outline .outline-h3.active {\n color: #eb8205;\n}\n",".user-option-name {\n font-size: 14px;\n font-weight: 500;\n}\n.user-option-email {\n font-size: 12px;\n}\n",".sf-article-info-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n background-color: #f5f5f5;\n user-select: none;\n min-height: 0;\n}\n\n.sf-article-info-container .nav {\n padding: 10px 0;\n min-width: 125px;\n height: 36px;\n border-bottom: 1px solid #eee;\n background-color: #fff;\n justify-content: space-around;\n flex-wrap: nowrap;\n flex-shrink: 0;\n}\n\n.sf-article-info-container .nav .nav-item {\n padding: 0 0.75rem;\n}\n\n.sf-article-info-container .nav .nav-link {\n padding: 0 0.75rem;\n transition: 0.3s color;\n margin-right: 0;\n}\n\n.sf-article-info-container .nav-link {\n color: #888;\n}\n\n.sf-article-info-container .nav .nav-link.active {\n color: #ff9800;\n border-bottom: 0;\n}\n\n.sf-article-info-container .nav .iconfont {\n font-weight: 700;\n font-size: 0.875rem;\n}\n\n.sf-article-info-container .sf-article-info-content {\n flex: 1;\n font-size: 0.937rem;\n min-height: 0;\n overflow: auto;\n}\n\n.sf-article-info-container .sf-article-info-content:hover {\n overflow: auto;\n}\n",".invite-accept-icon {\n color: green;\n margin-left: 0.5rem;\n font-size: 1.25rem;\n font-style: normal;\n line-height: 1;\n vertical-align: middle;\n}\n\n.invite-link-in-popup,\n.invite-link-in-popup:hover {\n text-decoration: none;\n}\n\n.invite-link-icon-in-popup {\n color: #f89a68;\n margin-left: 0.5rem;\n font-size: 0.875rem;\n font-style: normal;\n line-height: 1;\n cursor: pointer;\n vertical-align: middle;\n}\n\n.submit-btn .loading-icon {\n margin: 1px auto;\n width: 21px;\n height: 21px;\n}\n",".sf-markdown-help-wrapper {\n display: none;\n background-color: #fff;\n border-left: 1px solid #eee;\n flex: 0 0 300px;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n width: 300px;\n}\n\n.sf-markdown-help-wrapper.active {\n display: flex;\n flex-direction: column;\n}\n",".user-details-popover {\n border: 1px solid #eee;\n border-radius: 4px;\n box-shadow: 0 0 14px rgba(0, 0, 0, 0.14);\n background: #fff;\n z-index: 1000;\n left: 2px;\n}\n.user-details-main {\n border-bottom: 1px solid #eee;\n}\n.user-details-name {\n font-size: 1rem;\n font-weight: 500;\n}\n",".sf-slate-editor-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n min-width: 0;\n}\n\n.sf-slate-editor-container .sf-slate-editor-toolbar {\n display: flex;\n justify-content: center;\n height: 44px;\n align-items: center;\n padding: 0 10px;\n background-color: #fff;\n user-select: none;\n border-bottom: 1px solid #e5e6e8;\n position: relative;\n z-index: 102;\n}\n\n.sf-slate-editor-container .sf-slate-editor-content {\n width: 100%;\n height: calc(100% - 44px);\n display: flex;\n background: #f5f5f5;\n position: relative;\n min-height: 0;\n}\n\n.sf-slate-editor-container .sf-slate-scroll-container {\n height: 100%;\n width: 100%;\n background-color: #fafaf9;\n overflow: auto;\n}\n\n.sf-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar{\n width: 8px;\n height: 8px;\n}\n\n.sf-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar-button {\n display: none;\n}\n\n.sf-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar-thumb {\n background-color: rgb(206, 206, 212);\n border-radius: 10px;\n}\n\n.sf-slate-editor-container .sf-slate-article-container {\n flex: 1;\n position: relative;\n max-width: 950px;\n min-width: 400px;\n margin: 0 auto;\n padding-top: 20px;\n padding-bottom: 20px;\n}\n\n.sf-slate-editor-container .sf-slate-editor-content .article {\n max-width: 950px;\n min-height: 1200px;\n padding: 40px 60px;\n background-color: #fff;\n border: 1px solid #e5e6e8;\n box-shadow: 0 0 15px rgba(0, 0, 0, 0.06);\n}\n\n.sf-slate-editor-container .sf-slate-editor-content .article div:first-child {\n outline: none;\n}\n\n@media (max-width: 991.8px) {\n .sf-slate-editor-toolbar {\n overflow-x: auto;\n padding-right: 40px !important;\n justify-content: flex-start !important;\n }\n\n .sf-slate-editor-toolbar::-webkit-scrollbar{\n display: none;\n }\n\n .sf-slate-editor-toolbar .sf-slate-article-info-control,\n .sf-slate-editor-toolbar .sf-slate-help-info-control {\n right: 0;\n padding: 0 20px;\n height: 43px;\n align-items: center;\n background-color: #fcfcfc;\n position: fixed;\n }\n\n .sf-slate-article-container {\n width: 100%;\n }\n\n .sf-slate-article-container .article {\n margin: 20px !important;\n padding: 20px 30px;\n }\n\n .sf-markdown-help-wrapper {\n width: 250px !important;\n flex: 0 0 250px;\n }\n}\n\n@media (max-width: 768px) {\n .sf-slate-editor-container .sf-slate-article-container {\n flex: 1;\n position: relative;\n max-width: 950px;\n min-width: auto;\n margin: 0 auto;\n padding-top: 0;\n padding-bottom: 0;\n }\n\n .sf-slate-article-container .article {\n margin: 0 !important;\n padding: 10px 15px !important;\n border: 0 !important;\n }\n}\n",".share-dialog .share-dialog-content {\n padding: 0;\n min-height: 27rem;\n display: flex;\n flex-direction: column;\n}\n\n@media (min-width: 768px) {\n .share-dialog .share-dialog-content {\n flex-direction: row;\n }\n}\n\n.share-dialog-content .share-dialog-side {\n /*display: flex;*/\n flex-basis: 22%;\n padding: 1rem;\n border-bottom: 1px solid #eee;\n}\n\n.share-dialog .nav .nav-item .nav-link {\n padding: 0.3125rem 0.25rem;\n}\n\n@media (min-width: 768px) {\n .share-dialog-content .share-dialog-side {\n padding: 12px 8px;\n border: 0;\n border-right: 1px solid #eee;\n }\n .share-dialog-side .nav {\n flex-direction: column;\n }\n .share-dialog-side .nav-pills .nav-item .nav-link {\n width: 100%;\n padding: 0.3125rem 0.5rem;\n margin: 0;\n }\n}\n\n.share-dialog-content .share-dialog-main {\n display: flex;\n flex-basis: 78%;\n padding: 1rem;\n}\n\n.share-dialog-content .share-dialog-main .tab-content {\n flex: 1;\n}\n\n.share-dialog-content .share-dialog-main .tab-pane {\n height: 100%;\n}\n\n.share-list-container {\n max-height: 20rem;\n min-height: 10rem;\n overflow: auto;\n}\n\n#share-link-panel .share-list-container {\n max-height: 23rem;\n overflow: hidden;\n}\n\n#share-link-panel .table-real-container {\n height: 20rem;\n overflow: auto;\n}\n\n.share-dialog-content label {\n padding: 0.5rem 0 0.25rem;\n}\n\n.share-dialog-content label.form-check-label {\n padding: 0.25rem 0;\n}\n\n.link-operation-content {\n margin-left: 1.25rem;\n}\n\n.link-operation-icon {\n color: #9aa0ac;\n}\n\n.tip {\n color: #808080;\n margin-bottom: 1rem;\n}\n\n.generate-share-link .passwd,\n.generate-upload-link .passwd {\n width: 60%;\n}\n\n.generate-share-link .permission {\n margin-left: 2.5rem;\n}\n\n.generate-link-btn {\n margin-top: 1.125rem;\n}\n\ninput.expire-input {\n display: inline-block;\n width: 4rem;\n height: 1.5rem;\n padding: 0.25rem 0.25rem;\n margin: 0 0.25rem 0 1.25rem;\n}\n\n.expire-input-border {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n height: 2.375rem!important;\n padding: 0.375rem 0.75rem!important;\n}\n\n.share-dialog-main .permission-editor .permission-editor__menu {\n width: 240px;\n}\n\n.expir-span {\n border: 1px solid rgba(0, 40, 100, 0.12);\n border-left: none;\n font-size: 0.9375rem;\n margin-left: -5px;\n padding: 0px 8px;\n height: 2.375rem;\n display: inline-block;\n text-align: center;\n position: absolute;\n top: 4px;\n min-width: 2.375rem;\n line-height: 2.25;\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n\n.custom-permission .permission-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: .375rem 0;\n border-bottom: 1px solid #efefef;\n}\n\n.custom-permission .permission-header .back-icon {\n color: #999;\n margin-right: 10px;\n cursor: pointer;\n}\n\n.custom-permission .permission-name-desc {\n margin-top: .375rem;\n}\n.custom-permission .permission-name-desc label {\n font-size: 14px;\n color: #999;\n}\n\n.custom-permission .permission-name-desc .permission-name,\n.custom-permission .permission-name-desc .permission-desc {\n flex: 1;\n}\n\n.custom-permission .permission-name-desc .permission-desc {\n margin-left: .4rem;\n}\n\n.custom-permission .permissions-list-body {\n max-height: 350px;\n overflow-y: scroll;\n}\n",".empty-loading-page {\n position: fixed;\n height: 100%;\n width: 100%;\n}\n\n.page-centered {\n position: fixed;\n top: 50%;\n left: 50%;\n /* bring your own prefixes */\n transform: translate(-50%, -50%);\n}\n\n.lds-ripple {\n display: inline-block;\n position: relative;\n width: 64px;\n height: 64px;\n}\n\n.lds-ripple div {\n position: absolute;\n border: 4px solid #eb8205;\n opacity: 1;\n border-radius: 50%;\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n}\n\n.lds-ripple div:nth-child(2) {\n animation-delay: -0.5s;\n}\n\n@keyframes lds-ripple {\n 0% {\n top: 28px;\n left: 28px;\n width: 0;\n height: 0;\n opacity: 1;\n }\n 100% {\n top: -1px;\n left: -1px;\n width: 58px;\n height: 58px;\n opacity: 0;\n }\n}\n",".sf-slate-viewer-scroll-container {\n flex: 1;\n display: flex;\n min-height: 0;\n min-width: 0;\n overflow: auto;\n background: #f4f4f4;\n padding: 30px 0 15px;\n}\n\n.sf-slate-viewer-scroll-container.isWin::-webkit-scrollbar{\n width: 8px;\n height: 8px;\n}\n\n.sf-slate-viewer-scroll-container.isWin::-webkit-scrollbar-button {\n display: none;\n}\n\n.sf-slate-viewer-scroll-container.isWin::-webkit-scrollbar-thumb {\n background-color: rgb(206, 206, 212);\n border-radius: 10px;\n}\n\n.sf-slate-viewer-scroll-container .sf-slate-viewer-article-container {\n flex: 1;\n margin: 0 auto 15px;\n}\n\n.sf-slate-viewer-scroll-container.outline .sf-slate-viewer-article-container {\n margin: 0 340px 15px 40px;\n}\n\n.sf-slate-viewer-scroll-container .sf-slate-viewer-outline {\n height: 80%;\n overflow-y: hidden;\n padding-right: 1rem;\n position: fixed;\n right: 0;\n top: 97px;\n width: 300px;\n}\n\n.sf-slate-viewer-scroll-container .sf-slate-viewer-outline:hover {\n overflow-y: auto;\n}\n\n.sf-slate-viewer-scroll-container .article {\n margin: 0 auto;\n padding: 40px 60px;\n max-width: 950px;\n min-height: calc(100% - 15px);\n border: 1px solid #e6e6dd;\n background: #fff;\n}\n\n@media (max-width: 991.98px) {\n .sf-slate-viewer-article-container {\n padding: 0 10px;\n width: 100%;\n margin: 0 !important;\n }\n \n .sf-slate-viewer-outline {\n display: none !important;\n }\n}\n\n@media (max-width: 768px) {\n .sf-slate-viewer-article-container .article {\n margin: 0 !important;\n padding: 20px !important;\n }\n}\n\n\n",".file-chooser-container {\n padding: 0.5rem;\n height: 20rem;\n border: 1px solid rgba(0, 40, 100, 0.12);\n border-radius: 3px;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n overflow: auto;\n font-size: 1rem;\n}\n\n.item-toggle{\n position: absolute;\n height: 1.5rem;\n width: 1.5rem;\n left: 0;\n top: 0;\n line-height: 1.5rem !important;\n text-align: center;\n cursor: pointer;\n color: #c0c0c0;\n}\n\n.file-chooser-container .list-view {\n margin-top: 0.25rem;\n}\n\n.list-view-header {\n position: relative;\n padding-left: 1.5rem;\n}\n.list-view-header:hover {\n background-color: #FDEFB9;\n}\n\n.list-view-header .name {\n color: #eb8205;\n}\n\n.list-view-content {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.file-chooser-item {\n position: relative;\n padding-left: 22px;\n}\n\n.file-chooser-item .item-info {\n height: 1.5rem;\n cursor: pointer;\n position: relative;\n line-height: 1.625;\n}\n\n.file-chooser-item .item-active {\n background: #F3AF7D !important;\n border-radius: 2px;\n box-shadow: inset 0 0 1px #999;\n color: #fff;\n}\n\n .file-chooser-item .item-info:hover {\n background: #FDEFB9;\n border-radius: 2px;\n box-shadow: inset 0 0 1px #999;\n}\n\n.file-chooser-item .item-info .name {\n flex: 1;\n}\n\n.file-chooser-item .item-active .icon {\n color: #fff !important;\n}\n\n.file-chooser-search-input {\n position: relative;\n}\n\n.file-chooser-search-input .search-control {\n position: absolute;\n top: 0.5rem;\n right: 0.7rem;\n}\n\n.file-chooser-search-input .search-input {\n width: 100%;\n}\n\n.file-chooser-search-container {\n height: 20rem;\n position: relative;\n border: 1px solid #eee;\n padding: 10px;\n overflow: auto;\n}\n\n.file-chooser-search-close {\n position: absolute;\n right: -0.5rem;\n top: -0.5rem;\n}\n\n.searched-active {\n background: #F3AF7D !important;\n border-radius: 2px;\n box-shadow: inset 0 0 1px #999;\n}\n\n.searched-active td {\n color: #fff;\n}\n\n.searched-active .icon {\n color: #fff !important;\n}\n\n.select-open-repo {\n background: #FDEFB9;\n}\n\n.file-chooser-table td {\n border-bottom: 1px solid rgba(0, 0, 0, 0);\n}\n\n.file-chooser-item .item-info .item-text {\n padding-left: 2.8rem;\n font-size: 15px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 24px;\n}\n\n.file-chooser-item .item-info .item-left-icon {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n padding-left: 1.5rem;\n}\n\n\n\n\n","#wrapper {\n height: 100%;\n}\n\n.shared-file-view-md {\n height: 100%;\n overflow-y: hidden;\n}\n\n.shared-file-view-md-header {\n background: #f4f4f7;\n height: 53px;\n border-bottom: 1px solid #e8e8e8;\n padding: 8px 16px 4px;\n justify-content: space-between;\n}\n\n.shared-file-view-md-main {\n height: calc(100% - 53px);\n}\n\n.shared-file-view-head {\n width: 950px;\n height: 60px;\n background: #fff;\n margin: 0 auto;\n display: flex;\n align-items:center;\n justify-content: space-between;\n}\n\n.shared-file-view-head h2 {\n color: #222;\n font-size: 1.4em;\n margin-bottom: 0px;\n font-weight: 400;\n}\n\n.shared-file-view-head .share-by {\n margin: 0;\n}\n\n.shared-file-view-body {\n height: calc(100% - 60px);\n padding: 30px 0 15px;\n background: #f4f4f4;\n border: 1px solid #ededed;\n overflow: auto;\n}\n\n.shared-file-view-body.md-view {\n padding: 0;\n display: flex;\n min-height: 0;\n}\n\n.shared-file-view-body .sf-slate-viewer-outline {\n top: 145px !important;\n}\n\n@media (max-width: 991.98px) {\n .shared-file-view-head {\n width: 100%;\n padding: 10px 20px;\n }\n}\n",".dialog-operation {\n display: flex;\n align-items: center;\n}\n\n.dialog-operation .file-internal-link {\n font-size: 12px;\n font-weight: 700;\n cursor: pointer;\n margin-left: 0.5rem;\n color: #999;\n margin-top: 2px;\n}\n\n.dialog-operation .file-internal-link:hover {\n color: #333;\n}\n",".sf-simple-slate-editor-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n min-width: 0;\n}\n\n.sf-simple-slate-editor-container .sf-slate-editor-toolbar {\n display: flex;\n justify-content: flex-start;\n height: 44px;\n align-items: center;\n padding: 0 10px;\n background-color: #fff;\n user-select: none;\n border-bottom: 1px solid #e5e6e8;\n position: relative;\n z-index: 102;\n}\n\n.sf-simple-slate-editor-container .sf-slate-editor-content {\n width: 100%;\n height: calc(100% - 44px);\n display: flex;\n background: #f5f5f5;\n position: relative;\n min-height: 0;\n}\n\n.sf-simple-slate-editor-container .sf-slate-scroll-container {\n height: 100%;\n width: 100%;\n overflow: auto;\n}\n\n.sf-simple-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar{\n width: 8px;\n height: 8px;\n}\n\n.sf-simple-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar-button {\n display: none;\n}\n\n.sf-simple-slate-editor-container .sf-slate-scroll-container.isWin::-webkit-scrollbar-thumb {\n background-color: rgb(206, 206, 212);\n border-radius: 10px;\n}\n\n/* .sf-simple-slate-editor-container .sf-slate-article-container {\n flex: 1;\n position: relative;\n max-width: 950px;\n min-width: 400px;\n margin: 0 auto;\n padding-top: 20px;\n padding-bottom: 20px;\n} */\n\n.sf-simple-slate-editor-container .sf-slate-article-container {\n height: 100%;\n width: 100%;\n overflow: auto;\n}\n\n.sf-simple-slate-editor-container .sf-slate-editor-content .article {\n margin: 0;\n padding: 10px;\n border: none;\n background-color: #fff;\n}\n\n.sf-simple-slate-editor-container .sf-slate-editor-content .article div:first-child {\n outline: none;\n}\n",".file-tag-list .file-tag-item {\n display: flex;\n align-items: center;\n max-width: 180px;\n margin: 0.25rem 0;\n padding: 0 0.5rem;\n width: fit-content;\n border-radius: 10px;\n}\n\n.file-tag-list .file-tag-item .tag-name {\n color: #fff;\n font-size: 13px;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n",".detail-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n border-left: 1px solid #e8e8e8;\n}\n\n.detail-header {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 2.5rem;\n background-color: #f9f9f9;\n border-bottom: 1px solid #e8e8e8;\n height: 40px;\n}\n\n.detail-header .detail-control {\n padding-left: 0.5rem;\n font-size: 16px;\n color: #b9b9b9;\n}\n\n.detail-header .detail-control:hover {\n color: #888;\n}\n\n.detail-header .detail-title {\n margin-left: 0.25rem;\n display: flex;\n flex: 1;\n justify-content: center;\n align-items: center;\n width: 0; /* prevent strut flex layout */\n}\n\n.detail-header .detail-title .name {\n margin: 0 0.5rem 0 0.25rem;\n line-height: 1.5rem;\n vertical-align: middle;\n font-size: 1rem;\n color: #322;\n}\n\n.detail-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.dirent-info .img {\n height: 10rem;\n padding: 0.5rem 0;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.dirent-info .img .thumbnail {\n max-width: calc(100% - 4px);\n max-height: 100%;\n display: inline-block;\n}\n\n.dirent-table-container {\n padding: 10px 20px 20px;\n display: flex;\n}\n\n.dirent-table-container tr {\n border: none;\n}\n\n.dirent-table-container table {\n flex: 1;\n}\n\n.dirent-table-container th,\n.dirent-table-container td {\n padding: 5px 3px;\n border: none;\n}\n\n.dirent-table-container th {\n font-size: 13px;\n text-align: left;\n font-weight: normal;\n color: #9c9c9c;\n}\n\n.dirent-table-container td {\n font-size: 14px;\n color: #333;\n word-break: break-all;\n}\n\n.dirent-table-container .file-tag-container th {\n vertical-align: top;\n list-style: none;\n padding-top: 8px;\n}\n\n.dirent-table-container .file-tag-container .tag-list {\n list-style: none;\n}\n\n.dirent-table-container .seafile-multicolor-icon.seafile-multicolor-icon-tag {\n width: 20px;\n height: 20px;\n cursor: pointer;\n}\n\n.file-related-files th {\n vertical-align: top;\n}\n\n.file-related-files td i {\n padding: 0;\n}\n\n.file-related-files td ul {\n list-style: none;\n max-height: 100px;\n overflow-y: scroll;\n white-space: nowrap;\n}\n\n.file-related-files td ul li {\n margin-bottom: 5px;\n overflow-x: hidden;\n text-overflow: ellipsis;\n}\n\n.file-related-files ul li a,\n.list-related-file-table tr td a {\n color: #333;\n}\n\n.list-related-file-body {\n min-height: 200px;\n max-height: 500px;\n overflow-y: scroll;\n}\n\n.no-related-file {\n text-align: center;\n}\n\n.sf-add-related-file .alert {\n margin: 0.5rem;\n}\n\n.sf-add-related-file .related-file-subtitle {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\n.detail-container .nav-item .nav-link, .detail-container .nav-item .nav-link i {\n margin: 0 auto;\n}\n\n.detail-container .edit-file-extra-attributes-btn {\n min-width: 80px;\n width: fit-content;\n max-width: 100%;\n height: 28px;\n line-height: 28px;\n padding: 0 10px;\n background-color: #f0f0f0;\n border-radius: 3px;\n color: #929292;\n font-size: 14px;\n text-align: center;\n cursor: pointer;\n}\n\n.detail-container .edit-file-extra-attributes-btn:hover {\n cursor: pointer;\n background-color: #dbdbdb;\n color: #666;\n}\n",".file-uploader-container {\n display: flex;\n /* flex: 1; */\n}\n\n.file-uploader {\n position: fixed;\n bottom: 99999px;\n}\n\n.uploader-list-view {\n display: flex;\n flex-direction: column;\n position: fixed;\n right: 1px;\n bottom: 1px;\n width: 35rem;\n height: 20rem;\n border: 1px solid #ddd;\n border-radius: 3px;\n box-shadow: 0 0 6px #ddd;\n background-color: #fff;\n z-index: 1050;\n}\n\n.uploader-list-header {\n background-color: #f0f0f0;\n padding: 0.375rem 0.625rem;\n font-size: 1rem;\n line-height: 1.5;\n color: #322;\n display: flex;\n justify-content: space-between;\n min-height: 2.25rem;\n}\n\n.uploader-list-header .uploader-options span{\n display: inline-block;\n margin-left: 0.25rem;\n font-size: 18px;\n color: #b8b8b8;\n cursor: pointer;\n}\n\n.uploader-list-content {\n padding: 0rem 1rem 1.25rem;\n background-color: #fff;\n overflow: auto;\n}\n\n.file-upload-item {\n height: 44px;\n}\n\n.upload-progress .progress-container {\n height: 24px;\n padding: 4px 0;\n}\n\n.upload-progress .progress {\n height: 5px;\n width: 80%;\n}\n\n.upload-progress .progress .progress-bar {\n color: #e83;\n}\n\n.upload-progress .progress-text {\n margin-top: 2px;\n font-size: 12px;\n line-height: 12px;\n color: #666666;\n}\n\n.upload-operation .saving {\n color: #ee8204;\n word-wrap: break-word;\n}\n\n.disabled-link {\n color: #999999;\n}\n","#wrapper, .wrapper {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* for top bottom layout*/\n#header {\n display: flex;\n}\n\n/* for left right layout */\n#main {\n flex: 1;\n display: flex;\n min-height: 0;\n overflow: hidden;\n}\n\n.side-panel {\n flex: 0 0 22%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.main-panel {\n flex: 1 0 78%;\n display: flex;\n flex-direction: column;\n}\n\n@media (max-width: 767px) {\n .side-panel {\n position:fixed;\n left:-300px;\n z-index: 1031;\n width: 300px;\n max-width: calc(100% - 40px);\n height:100%;\n background:#f8f8f8;\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n transition: all 0.3s ease;\n }\n}\n\n.side-panel-north,\n.main-panel-north {\n position: relative;\n padding: .5rem 1rem;\n display: flex;\n flex-shrink: 0;\n background: #f4f4f7;\n border-bottom: 1px solid #e8e8e8;\n z-index: 100;\n}\n\n@media (max-width: 767px) {\n .side-panel-north {\n border-right: 1px solid #eee;\n }\n\n .main-panel-north {\n padding-bottom: 0.25rem;\n }\n}\n\n.side-panel-center,\n.main-panel-center {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n position: relative;\n}\n\n.side-panel-center,\n.side-panel-footer {\n min-height: 0;\n border-right: 1px solid #eee;\n}\n\n.cur-view-container {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n overflow: hidden;\n min-height: 0;\n}\n\n.cur-view-path {\n position: relative; /* for the ':after' */\n padding: 8px 16px;\n max-height: 40px;\n background:#f9f9f9;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n justify-content: space-between;\n}\n\n.cur-view-path:after {\n position: absolute;\n left: 16px;\n right: 16px;\n bottom: 0;\n content: '';\n border-bottom: 1px solid #e8e8e8;\n}\n\n.cur-view-content {\n padding: 0rem 1rem;\n flex: 1;\n min-height: 0;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.table-container {\n flex: 1;\n padding: 0 1rem 10rem;\n position: relative;\n}\n\n.table-drop-active::before {\n border: 1px solid rgba(69,170,242); \n content: '';\n position: absolute;\n display: block;\n width: 100%;\n height: 100%;\n left: 0;\n z-index: -1;\n}\n\n.cur-view-content .article {\n padding: 40px;\n}\n\n.cur-view-content .hd {\n padding-bottom: 0;\n margin-bottom: .5em;\n height: 48px;\n padding: 9px 10px;\n background: #f2f2f2;\n border-radius: 2px;\n}\n\n.cur-view-content .tip {\n font-size: 14px;\n}\n\n.cur-view-detail {\n display: block;\n position: absolute;\n right: 0;\n background-color: #fff;\n width: 300px;\n height: 100%;\n box-shadow: -1px 0 3px 0 #ccc;\n animation: move .5s ease-in-out 1;\n z-index: 50;\n}\n\n@keyframes move {\n from {\n right: -500px;\n opacity: 0.5;\n }\n to {\n right: 0px;\n opacity: 1;\n }\n}\n\n.cur-view-detail .detail-container {\n height: 100%;\n}\n\n/* for reach/router */\n.reach-router,\ndiv[tabindex=\"-1\"][role=\"group\"] {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n}\n\n.header {\n padding: 0.625rem;\n display: flex;\n flex-shrink:0;\n align-items: center;\n justify-content: space-between;\n background-color: #fff;\n border-bottom: 1px solid #e5e5e5;\n box-shadow: 0 3px 2px -2px rgba(200,200,200,.15);\n}\n\n.header .cur-file-info {\n display: flex;\n margin-left: 0.5rem;\n}\n\n.header .info-item {\n display: flex;\n font-size: 1.2rem;\n font-weight: bold;\n margin-right: 0.5rem;\n align-items: center;\n justify-content: center;\n}\n\n.header .file-copywriting {\n margin-left: 0.5rem;\n font-size: 1rem;\n font-weight: normal;\n color: #999;\n}\n\n.header .file-feature {\n width: 2.9375rem;\n height: 2.9375rem;\n font-size: 1.8rem;\n background-color: #fbcb09;\n color: #fff;\n}\n\n.header .file-operation-btn {\n margin-right: 0.25rem;\n}\n\n.review {\n padding: 0;\n}\n\n.review .cur-file-info {\n margin: 0;\n}\n\n.review .file-feature {\n width: 4.1875rem;\n height: 4.1875rem;\n font-size: 3rem;\n}\n\n.review-state {\n position: relative;\n margin: auto 0.5rem;\n border: 1px solid transparent;\n border-radius: 3px;\n}\n\n.review-state-finished {\n color: #316100;\n background-color: #dff1cc;\n border-color: #d2ecb8;\n}\n\n.review-state-closed {\n color: #6b1110;\n background-color: #f5d2d2;\n border-color: #f1c1c0;\n}\n\n.review-state-closed:focus, \n.review-state-finished:focus {\n box-shadow: 0 0 0 0;\n}\n\nimg[src=\"\"],img:not([src]){ /* for first loading img*/\n opacity:0;\n}\n\n.cur-view-path.draft-review-nav,\n.cur-view-path.share-upload-nav {\n padding: 0 1rem;\n}\n\n.cur-view-container .fa-star.fas {\n color: #999;\n}\n\n.path-container {\n display: flex;\n align-items: center;\n word-break: keep-all;\n max-width: 80%;\n}\n.path-container a, .path-container span {\n max-height: 50px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n} \n.path-container span, .path-container a {\n flex-shrink: 1;\n} \n.path-container span:first-child, .path-container span:last-child {\n flex-shrink: 0;\n} \n.path-container span.path-file-name, .path-container span.path-repo-name {\n flex-shrink: 1;\n}\n","@charset \"UTF-8\";\n.vjs-modal-dialog .vjs-modal-dialog-content, .video-js .vjs-modal-dialog, .vjs-button > .vjs-icon-placeholder:before, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.vjs-button > .vjs-icon-placeholder:before, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {\n text-align: center;\n}\n\n@font-face {\n font-family: VideoJS;\n src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABDkAAsAAAAAG6gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPgAAAFZRiV3hY21hcAAAAYQAAADaAAADPv749/pnbHlmAAACYAAAC3AAABHQZg6OcWhlYWQAAA3QAAAAKwAAADYZw251aGhlYQAADfwAAAAdAAAAJA+RCLFobXR4AAAOHAAAABMAAACM744AAGxvY2EAAA4wAAAASAAAAEhF6kqubWF4cAAADngAAAAfAAAAIAE0AIFuYW1lAAAOmAAAASUAAAIK1cf1oHBvc3QAAA/AAAABJAAAAdPExYuNeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGS7wTiBgZWBgaWQ5RkDA8MvCM0cwxDOeI6BgYmBlZkBKwhIc01hcPjI+FGJHcRdyA4RZgQRADK3CxEAAHic7dFZbsMgAEXRS0ycyZnnOeG7y+qC8pU1dHusIOXxuoxaOlwZYWQB0Aea4quIEN4E9LzKbKjzDeM6H/mua6Lmc/p8yhg0lvdYx15ZG8uOLQOGjMp3EzqmzJizYMmKNRu27Nhz4MiJMxeu3Ljz4Ekqm7T8P52G8PP3lnTOVk++Z6iN6QZzNN1F7ptuN7eGOjDUoaGODHVsuvU8MdTO9Hd5aqgzQ50b6sJQl4a6MtS1oW4MdWuoO0PdG+rBUI+GejLUs6FeDPVqqDdDvRvqw1CfhpqM9At0iFLaAAB4nJ1YDXBTVRZ+5/22TUlJ8we0pHlJm7RJf5O8F2j6EymlSPkpxaL8U2xpa3DKj0CBhc2IW4eWKSokIoLsuMqssM64f+jA4HSdWXXXscBq67IOs3FXZ1ZYWVyRFdo899yXtIBQZ90k7717zz3v3HPPOfd854YCCj9cL9dL0RQFOqCbGJnrHb5EayiKIWN8iA/hWBblo6hUWm8TtCDwE80WMJus/irwyxOdxeB0MDb14VNJHnXYoLLSl6FfCUYO9nYPTA8Epg9090LprfbBbZ2hY0UlJUXHQp3/vtWkS6EBv8+rPMq5u9692f/dNxJNiqwC1xPE9TCUgCsSdQWgE3XQD25lkG4CN2xmTcOXWBOyser6RN6KnGbKSbmQ3+d0OI1m2W8QzLLkI2sykrWAgJJEtA8vGGW/2Q+CmT3n8zS9wZwu2DCvtuZKZN3xkrLh36yCZuUomQSqGpY8t/25VfHVhw8z4ebGBtfLb0ya9PCaDc+8dGTvk2dsh6z7WzvowlXKUSWo9MJ15a3KrEP2loOr2Ojhw6iW6hf2BDdEccQvZGpaAy7YovSwq8kr7HGllxpd71rkS6G0Sf11sl9OvMK1+jwPPODxjUwkOim9CU3ix1wNjXDfmJSEn618Bs6lpWwUpU+8PCqLMY650zjq8VhCIP17NEKTx3eaLL+s5Pi6yJWaWjTHLR1jYzPSV9VF/6Ojdb/1kO3Mk3uhHC0x6gc1BjlKQ+nQFxTYdaJkZ7ySVxLBbhR1dsboNXp1tCYKW2LRaEzpYcIx2BKNxaL0ZaUnSqfFoiNhHKR/GkX6PWUSAaJelQaqZL1EpoHNsajSEyPSoJ9IjhIxTdjHLmwZvhRDOiFTY/YeQnvrVZmiTQtGncECXtFTBZLOVwwMRgoXHAkXzMzPn1nAJJ8jYSbMDaqN2waGLzNhih/bZynUBMpIWSg7VYi7DRx2m8ALkIdRCJwI6ArJx2EI8kaDWeTQKeAFk9fjl/1AvwktjQ1P7NjyMGQyfd4vjipX6M/i52D7Cq80kqlcxEcGXRr/FEcgs0u5uGgB4VWuMFfpdn2Re6Hi3PqzmxWKsz6+ae2Pn9hXXw/fqM859UiGC0oKYYILJBqJrsn1Z1E5qOs9rQCiUQRREjm8yJcbHF5cUJufX1vAHlefw0XgUoboS3ETfQlTxBC4SOtuE8VPRJTBSCQSjZCpk7Gqzu+masaZ2y7Zjehho4F3g82BNDkAHpORG4+OCS+f6JTPmtRn/PH1kch6d04sp7AQb25aQ/pqUyXeQ8vrebG8OYQdXOQ+585u0sdW9rqalzRURiJ+9F4MweRFrKUjl1GUYhH1A27WOHw5cTFSFPMo9EeUIGnQTZHIaJ7AHLaOKsOODaNF9jkBjYG2QEsQ2xjMUAx2bBEbeTBWMHwskBjngq56S/yfgkBnWBa4K9sqKtq2t1UI8S9He5XuBRbawAdatrQEAi30Aks2+LM8WeCbalVZkWNylvJ+dqJnzVb+OHlSoKW8nPCP7Rd+CcZ2DdWAGqJ2CBFOphgywFFCFBNtfAbGtNPBCwxvygHeYMZMY9ZboBqwq/pVrsbgN5tkv152ODlbMfiqwGMBgxa4Exz3QhovRIUp6acqZmQzRq0ypDXS2TPLT02YIkQETnOE445oOGxOmXAqUJNNG7XgupMjPq2ua9asrj5yY/yuKteO1Kx0YNJTufrirLe1mZnat7OL6rnUdCWenpW6I8mAnbsY8KWs1PuSovCW9A/Z25PQ24a7cNOqgmTkLmBMgh4THgc4b9k2IVv1/g/F5nGljwPLfOgHAzJzh45V/4+WenTzmMtR5Z7us2Tys909UHqrPY7KbckoxRvRHhmVc3cJGE97uml0R1S0jdULVl7EvZtDFVBF35N9cEdjpgmAiOlFZ+Dtoh93+D3zzHr8RRNZQhnCNMNbcegOvpEwZoL+06cJQ07h+th3fZ/7PVbVC6ngTAV/KoLFuO6+2KFcU651gEb5ugPSIb1D+Xp8V4+k3sEIGnw5mYe4If4k1lFYr6SCzmM2EQ8iWtmwjnBI9kTwe1TlfAmXh7H02by9fW2gsjKwtv0aaURKil4OdV7rDL1MXIFNrhdxohcZXYTnq47WisrKitaObbf5+yvkLi5J6lCNZZ+B6GC38VNBZBDidSS/+mSvh6s+srgC8pyKMvDtt+de3c9fU76ZPfuM8ud4Kv0fyP/LqfepMT/3oZxSqpZaTa1DaQYLY8TFsHYbWYsPoRhRWfL5eSSQbhUGgGC3YLbVMk6PitTFNGpAsNrC6D1VNBKgBHMejaiuRWEWGgsSDBTJjqWIl8kJLlsaLJ2tXDr6xGfT85bM2Q06a46x2HTgvdnV8z5YDy/27J4zt6x2VtkzjoYpkq36kaBr4eQSg7tyiVweWubXZugtadl58ydapfbORfKsDTuZ0OBgx4cfdjCf5tbWNITnL120fdOi1RV1C3uKGzNdwYLcMvZ3BxoPyTOCD1XvXTp7U10gWCVmTV9b3r2z0SkGWovb2hp9I89O8a2smlyaO8muMU+dRmtzp60IzAoFpjLr1n388boLyf0dRvxhsHZ0qbWqDkwqvvpkj4l0fY6EIXRi5sQSrAvsVYwXRy4qJ2EVtD1AN7a0HWth9ymvL1xc3WTUKK/TAHA/bXDVtVWfOMfuGxGZv4Ln/jVr9jc3j1yMv0tndmyt9Vq88Y9gH1wtLX3KWjot5++jWHgAoZZkQ14wGQ20Fli71UmKJAy4xKMSTGbVdybW7FDDAut9XpD5AzWrYO7zQ8qffqF8+Ynd/clrHcdyxGy3a/3+mfNnzC/cBsveTjnTvXf1o6vzOlZw7WtqtdmPK/Errz/6NNtD72zmNOZfbmYdTGHfoofqI79Oc+R2n1lrnL6pOm0Up7kwxhTW12Amm7WYkXR2qYrF2AmgmbAsxZjwy1xpg/m1Je2vrp8v/nz2xpmlBg4E9hrMU341wVpTOh/OfmGvAnra8q6uctr60ZQHV3Q+WMQJykMj8ZsWn2QBOmmHMB+m5pDIpTFonYigiaKAhGEiAHF7EliVnQkjoLVIMPtJpBKHYd3A8GYH9jJzrWwmHx5Qjp7vDAX0suGRym1vtm/9W1/HyR8vczfMs6Sk8DSv855/5dlX9oQq52hT8syyp2rx5Id17IAyAM3wIjQPMOHzytEB64q6D5zT91yNbnx3V/nqnd017S9Y0605k3izoXLpsxde2n38yoOV9s1LcjwzNjbdX6asnBVaBj/6/DwKwPkpcqbDG7BnsXoSqWnUAmottYF6jMSdVyYZh3zVXCjwTiwwHH6sGuRiEHQGzuRX6whZkp123oy1BWE2mEfJ/tvIRtM4ZM5bDXiMsPMaAKOTyc5uL57rqyyc5y5JE5pm1i2S2iUX0CcaQ6lC6Zog7JqSqZmYlosl2K6pwNA84zRnQW6SaALYZQGW5lhCtU/W34N6o+bKfZ8cf3/Cl/+iTX3wBzpOY4mRkeNf3rptycGSshQWgGbYt5jFc2e0+DglIrwl6DVWQ7BuwaJ3Xk1J4VL5urnLl/Wf+gHU/hZoZdKNym6lG+I34FaNeZKcSpJIo2IeCVvpdsDGfKvzJnAwmeD37Ow65ZWwSowpgwX5T69s/rB55dP5BcpgDKFV8p7q2sn/1uc93bVzT/w6UrCqDTWvfCq/oCD/qZXNoUj8BL5Kp6GU017frfNXkAtiiyf/SOCEeLqnd8R/Ql9GlCRfctS6k5chvIBuQ1zCCjoCHL2DHNHIXxMJ3kQeO8lbsUXONeSfA5EjcG6/E+KdhN4bP04vBhdi883+BFBzQbxFbvZzQeY9LNBZc0FNfn5NwfDn6rCTnTw6R8o+gfpf5hCom33cRuiTlss3KHmZjD+BPN+5gXuA2ziS/Q73mLxUkpbKN/eqwz5uK0X9F3h2d1V4nGNgZGBgAOJd776+iue3+crAzc4AAje5Bfcg0xz9YHEOBiYQBQA8FQlFAHicY2BkYGBnAAGOPgaG//85+hkYGVCBMgBGGwNYAAAAeJxjYGBgYB8EmKOPgQEAQ04BfgAAAAAAAA4AaAB+AMwA4AECAUIBbAGYAcICGAJYArQC4AMwA7AD3gQwBJYE3AUkBWYFigYgBmYGtAbqB1gIEghYCG4IhAi2COh4nGNgZGBgUGYoZWBnAAEmIOYCQgaG/2A+AwAYCQG2AHicXZBNaoNAGIZfE5PQCKFQ2lUps2oXBfOzzAESyDKBQJdGR2NQR3QSSE/QE/QEPUUPUHqsvsrXjTMw83zPvPMNCuAWP3DQDAejdm1GjzwS7pMmwi75XngAD4/CQ/oX4TFe4Qt7uMMbOzjuDc0EmXCP/C7cJ38Iu+RP4QEe8CU8pP8WHmOPX2EPz87TPo202ey2OjlnQSXV/6arOjWFmvszMWtd6CqwOlKHq6ovycLaWMWVydXKFFZnmVFlZU46tP7R2nI5ncbi/dDkfDtFBA2DDXbYkhKc+V0Bqs5Zt9JM1HQGBRTm/EezTmZNKtpcAMs9Yu6AK9caF76zoLWIWcfMGOSkVduvSWechqZsz040Ib2PY3urxBJTzriT95lipz+TN1fmAAAAeJxtkMl2wjAMRfOAhABlKm2h80C3+ajgCKKDY6cegP59TYBzukAL+z1Zsq8ctaJTTKPrsUQLbXQQI0EXKXroY4AbDDHCGBNMcYsZ7nCPB8yxwCOe8IwXvOIN7/jAJ76wxHfUqWX+OzgumWAjJMV17i0Ndlr6irLKO+qftdT7i6y4uFSUvCknay+lFYZIZaQcmfH/xIFdYn98bqhra1aKTM/6lWMnyaYirx1rFUQZFBkb2zJUtoXeJCeg0WnLtHeSFc3OtrnozNwqi0TkSpBMDB1nSde5oJXW23hTS2/T0LilglXX7dmFVxLnq5U0vYATHFk3zX3BOisoQHNDFDeZnqKDy9hRNawN7Vh727hFzcJ5c8TILrKZfH7tIPxAFP0BpLeJPA==) format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-play, .video-js .vjs-play-control .vjs-icon-placeholder, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-play:before, .video-js .vjs-play-control .vjs-icon-placeholder:before, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {\n content: \"\\f101\";\n}\n\n.vjs-icon-play-circle {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-play-circle:before {\n content: \"\\f102\";\n}\n\n.vjs-icon-pause, .video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-pause:before, .video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before {\n content: \"\\f103\";\n}\n\n.vjs-icon-volume-mute, .video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-volume-mute:before, .video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before {\n content: \"\\f104\";\n}\n\n.vjs-icon-volume-low, .video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-volume-low:before, .video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before {\n content: \"\\f105\";\n}\n\n.vjs-icon-volume-mid, .video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-volume-mid:before, .video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before {\n content: \"\\f106\";\n}\n\n.vjs-icon-volume-high, .video-js .vjs-mute-control .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-volume-high:before, .video-js .vjs-mute-control .vjs-icon-placeholder:before {\n content: \"\\f107\";\n}\n\n.vjs-icon-fullscreen-enter, .video-js .vjs-fullscreen-control .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-fullscreen-enter:before, .video-js .vjs-fullscreen-control .vjs-icon-placeholder:before {\n content: \"\\f108\";\n}\n\n.vjs-icon-fullscreen-exit, .video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-fullscreen-exit:before, .video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before {\n content: \"\\f109\";\n}\n\n.vjs-icon-square {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-square:before {\n content: \"\\f10a\";\n}\n\n.vjs-icon-spinner {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-spinner:before {\n content: \"\\f10b\";\n}\n\n.vjs-icon-subtitles, .video-js .vjs-subs-caps-button .vjs-icon-placeholder,\n.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,\n.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,\n.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,\n.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder, .video-js .vjs-subtitles-button .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-subtitles:before, .video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,\n.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,\n.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,\n.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,\n.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before, .video-js .vjs-subtitles-button .vjs-icon-placeholder:before {\n content: \"\\f10c\";\n}\n\n.vjs-icon-captions, .video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,\n.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder, .video-js .vjs-captions-button .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-captions:before, .video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,\n.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before, .video-js .vjs-captions-button .vjs-icon-placeholder:before {\n content: \"\\f10d\";\n}\n\n.vjs-icon-chapters, .video-js .vjs-chapters-button .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-chapters:before, .video-js .vjs-chapters-button .vjs-icon-placeholder:before {\n content: \"\\f10e\";\n}\n\n.vjs-icon-share {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-share:before {\n content: \"\\f10f\";\n}\n\n.vjs-icon-cog {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-cog:before {\n content: \"\\f110\";\n}\n\n.vjs-icon-circle, .vjs-seek-to-live-control .vjs-icon-placeholder, .video-js .vjs-volume-level, .video-js .vjs-play-progress {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-circle:before, .vjs-seek-to-live-control .vjs-icon-placeholder:before, .video-js .vjs-volume-level:before, .video-js .vjs-play-progress:before {\n content: \"\\f111\";\n}\n\n.vjs-icon-circle-outline {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-circle-outline:before {\n content: \"\\f112\";\n}\n\n.vjs-icon-circle-inner-circle {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-circle-inner-circle:before {\n content: \"\\f113\";\n}\n\n.vjs-icon-hd {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-hd:before {\n content: \"\\f114\";\n}\n\n.vjs-icon-cancel, .video-js .vjs-control.vjs-close-button .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-cancel:before, .video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before {\n content: \"\\f115\";\n}\n\n.vjs-icon-replay, .video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-replay:before, .video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before {\n content: \"\\f116\";\n}\n\n.vjs-icon-facebook {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-facebook:before {\n content: \"\\f117\";\n}\n\n.vjs-icon-gplus {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-gplus:before {\n content: \"\\f118\";\n}\n\n.vjs-icon-linkedin {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-linkedin:before {\n content: \"\\f119\";\n}\n\n.vjs-icon-twitter {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-twitter:before {\n content: \"\\f11a\";\n}\n\n.vjs-icon-tumblr {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-tumblr:before {\n content: \"\\f11b\";\n}\n\n.vjs-icon-pinterest {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-pinterest:before {\n content: \"\\f11c\";\n}\n\n.vjs-icon-audio-description, .video-js .vjs-descriptions-button .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-audio-description:before, .video-js .vjs-descriptions-button .vjs-icon-placeholder:before {\n content: \"\\f11d\";\n}\n\n.vjs-icon-audio, .video-js .vjs-audio-button .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-audio:before, .video-js .vjs-audio-button .vjs-icon-placeholder:before {\n content: \"\\f11e\";\n}\n\n.vjs-icon-next-item {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-next-item:before {\n content: \"\\f11f\";\n}\n\n.vjs-icon-previous-item {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-previous-item:before {\n content: \"\\f120\";\n}\n\n.vjs-icon-picture-in-picture-enter, .video-js .vjs-picture-in-picture-control .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-picture-in-picture-enter:before, .video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before {\n content: \"\\f121\";\n}\n\n.vjs-icon-picture-in-picture-exit, .video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder {\n font-family: VideoJS;\n font-weight: normal;\n font-style: normal;\n}\n.vjs-icon-picture-in-picture-exit:before, .video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before {\n content: \"\\f122\";\n}\n\n.video-js {\n display: block;\n vertical-align: top;\n box-sizing: border-box;\n color: #fff;\n background-color: #000;\n position: relative;\n padding: 0;\n font-size: 10px;\n line-height: 1;\n font-weight: normal;\n font-style: normal;\n font-family: Arial, Helvetica, sans-serif;\n word-break: initial;\n}\n.video-js:-moz-full-screen {\n position: absolute;\n}\n.video-js:-webkit-full-screen {\n width: 100% !important;\n height: 100% !important;\n}\n\n.video-js[tabindex=\"-1\"] {\n outline: none;\n}\n\n.video-js *,\n.video-js *:before,\n.video-js *:after {\n box-sizing: inherit;\n}\n\n.video-js ul {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n list-style-position: outside;\n margin-left: 0;\n margin-right: 0;\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.video-js.vjs-fluid,\n.video-js.vjs-16-9,\n.video-js.vjs-4-3,\n.video-js.vjs-9-16,\n.video-js.vjs-1-1 {\n width: 100%;\n max-width: 100%;\n}\n\n.video-js.vjs-fluid:not(.vjs-audio-only-mode),\n.video-js.vjs-16-9:not(.vjs-audio-only-mode),\n.video-js.vjs-4-3:not(.vjs-audio-only-mode),\n.video-js.vjs-9-16:not(.vjs-audio-only-mode),\n.video-js.vjs-1-1:not(.vjs-audio-only-mode) {\n height: 0;\n}\n\n.video-js.vjs-16-9:not(.vjs-audio-only-mode) {\n padding-top: 56.25%;\n}\n\n.video-js.vjs-4-3:not(.vjs-audio-only-mode) {\n padding-top: 75%;\n}\n\n.video-js.vjs-9-16:not(.vjs-audio-only-mode) {\n padding-top: 177.7777777778%;\n}\n\n.video-js.vjs-1-1:not(.vjs-audio-only-mode) {\n padding-top: 100%;\n}\n\n.video-js.vjs-fill:not(.vjs-audio-only-mode) {\n width: 100%;\n height: 100%;\n}\n\n.video-js .vjs-tech {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.video-js.vjs-audio-only-mode .vjs-tech {\n display: none;\n}\n\nbody.vjs-full-window {\n padding: 0;\n margin: 0;\n height: 100%;\n}\n\n.vjs-full-window .video-js.vjs-fullscreen {\n position: fixed;\n overflow: hidden;\n z-index: 1000;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n}\n\n.video-js.vjs-fullscreen:not(.vjs-ios-native-fs) {\n width: 100% !important;\n height: 100% !important;\n padding-top: 0 !important;\n}\n\n.video-js.vjs-fullscreen.vjs-user-inactive {\n cursor: none;\n}\n\n.vjs-hidden {\n display: none !important;\n}\n\n.vjs-disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.video-js .vjs-offscreen {\n height: 1px;\n left: -9999px;\n position: absolute;\n top: 0;\n width: 1px;\n}\n\n.vjs-lock-showing {\n display: block !important;\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n.vjs-no-js {\n padding: 20px;\n color: #fff;\n background-color: #000;\n font-size: 18px;\n font-family: Arial, Helvetica, sans-serif;\n text-align: center;\n width: 300px;\n height: 150px;\n margin: 0px auto;\n}\n\n.vjs-no-js a,\n.vjs-no-js a:visited {\n color: #66A8CC;\n}\n\n.video-js .vjs-big-play-button {\n font-size: 3em;\n line-height: 1.5em;\n height: 1.63332em;\n width: 3em;\n display: block;\n position: absolute;\n top: 10px;\n left: 10px;\n padding: 0;\n cursor: pointer;\n opacity: 1;\n border: 0.06666em solid #fff;\n background-color: #2B333F;\n background-color: rgba(43, 51, 63, 0.7);\n border-radius: 0.3em;\n transition: all 0.4s;\n}\n.vjs-big-play-centered .vjs-big-play-button {\n top: 50%;\n left: 50%;\n margin-top: -0.81666em;\n margin-left: -1.5em;\n}\n\n.video-js:hover .vjs-big-play-button,\n.video-js .vjs-big-play-button:focus {\n border-color: #fff;\n background-color: #73859f;\n background-color: rgba(115, 133, 159, 0.5);\n transition: all 0s;\n}\n\n.vjs-controls-disabled .vjs-big-play-button,\n.vjs-has-started .vjs-big-play-button,\n.vjs-using-native-controls .vjs-big-play-button,\n.vjs-error .vjs-big-play-button {\n display: none;\n}\n\n.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button {\n display: block;\n}\n\n.video-js button {\n background: none;\n border: none;\n color: inherit;\n display: inline-block;\n font-size: inherit;\n line-height: inherit;\n text-transform: none;\n text-decoration: none;\n transition: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.vjs-control .vjs-button {\n width: 100%;\n height: 100%;\n}\n\n.video-js .vjs-control.vjs-close-button {\n cursor: pointer;\n height: 3em;\n position: absolute;\n right: 0;\n top: 0.5em;\n z-index: 2;\n}\n.video-js .vjs-modal-dialog {\n background: rgba(0, 0, 0, 0.8);\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.8), rgba(255, 255, 255, 0));\n overflow: auto;\n}\n\n.video-js .vjs-modal-dialog > * {\n box-sizing: border-box;\n}\n\n.vjs-modal-dialog .vjs-modal-dialog-content {\n font-size: 1.2em;\n line-height: 1.5;\n padding: 20px 24px;\n z-index: 1;\n}\n\n.vjs-menu-button {\n cursor: pointer;\n}\n\n.vjs-menu-button.vjs-disabled {\n cursor: default;\n}\n\n.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu {\n display: none;\n}\n\n.vjs-menu .vjs-menu-content {\n display: block;\n padding: 0;\n margin: 0;\n font-family: Arial, Helvetica, sans-serif;\n overflow: auto;\n}\n\n.vjs-menu .vjs-menu-content > * {\n box-sizing: border-box;\n}\n\n.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu {\n display: none;\n}\n\n.vjs-menu li {\n list-style: none;\n margin: 0;\n padding: 0.2em 0;\n line-height: 1.4em;\n font-size: 1.2em;\n text-align: center;\n text-transform: lowercase;\n}\n\n.vjs-menu li.vjs-menu-item:focus,\n.vjs-menu li.vjs-menu-item:hover,\n.js-focus-visible .vjs-menu li.vjs-menu-item:hover {\n background-color: #73859f;\n background-color: rgba(115, 133, 159, 0.5);\n}\n\n.vjs-menu li.vjs-selected,\n.vjs-menu li.vjs-selected:focus,\n.vjs-menu li.vjs-selected:hover,\n.js-focus-visible .vjs-menu li.vjs-selected:hover {\n background-color: #fff;\n color: #2B333F;\n}\n\n.video-js .vjs-menu *:not(.vjs-selected):focus:not(:focus-visible),\n.js-focus-visible .vjs-menu *:not(.vjs-selected):focus:not(.focus-visible) {\n background: none;\n}\n\n.vjs-menu li.vjs-menu-title {\n text-align: center;\n text-transform: uppercase;\n font-size: 1em;\n line-height: 2em;\n padding: 0;\n margin: 0 0 0.3em 0;\n font-weight: bold;\n cursor: default;\n}\n\n.vjs-menu-button-popup .vjs-menu {\n display: none;\n position: absolute;\n bottom: 0;\n width: 10em;\n left: -3em;\n height: 0em;\n margin-bottom: 1.5em;\n border-top-color: rgba(43, 51, 63, 0.7);\n}\n\n.vjs-menu-button-popup .vjs-menu .vjs-menu-content {\n background-color: #2B333F;\n background-color: rgba(43, 51, 63, 0.7);\n position: absolute;\n width: 100%;\n bottom: 1.5em;\n max-height: 15em;\n}\n\n.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,\n.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content {\n max-height: 5em;\n}\n\n.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content {\n max-height: 10em;\n}\n\n.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content {\n max-height: 14em;\n}\n\n.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,\n.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,\n.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content {\n max-height: 25em;\n}\n\n.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu,\n.vjs-menu-button-popup .vjs-menu.vjs-lock-showing {\n display: block;\n}\n\n.video-js .vjs-menu-button-inline {\n transition: all 0.4s;\n overflow: hidden;\n}\n\n.video-js .vjs-menu-button-inline:before {\n width: 2.222222222em;\n}\n\n.video-js .vjs-menu-button-inline:hover,\n.video-js .vjs-menu-button-inline:focus,\n.video-js .vjs-menu-button-inline.vjs-slider-active,\n.video-js.vjs-no-flex .vjs-menu-button-inline {\n width: 12em;\n}\n\n.vjs-menu-button-inline .vjs-menu {\n opacity: 0;\n height: 100%;\n width: auto;\n position: absolute;\n left: 4em;\n top: 0;\n padding: 0;\n margin: 0;\n transition: all 0.4s;\n}\n\n.vjs-menu-button-inline:hover .vjs-menu,\n.vjs-menu-button-inline:focus .vjs-menu,\n.vjs-menu-button-inline.vjs-slider-active .vjs-menu {\n display: block;\n opacity: 1;\n}\n\n.vjs-no-flex .vjs-menu-button-inline .vjs-menu {\n display: block;\n opacity: 1;\n position: relative;\n width: auto;\n}\n\n.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu,\n.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,\n.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu {\n width: auto;\n}\n\n.vjs-menu-button-inline .vjs-menu-content {\n width: auto;\n height: 100%;\n margin: 0;\n overflow: hidden;\n}\n\n.video-js .vjs-control-bar {\n display: none;\n width: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 3em;\n background-color: #2B333F;\n background-color: rgba(43, 51, 63, 0.7);\n}\n\n.vjs-has-started .vjs-control-bar,\n.vjs-audio-only-mode .vjs-control-bar {\n display: flex;\n visibility: visible;\n opacity: 1;\n transition: visibility 0.1s, opacity 0.1s;\n}\n\n.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {\n visibility: visible;\n opacity: 0;\n pointer-events: none;\n transition: visibility 1s, opacity 1s;\n}\n\n.vjs-controls-disabled .vjs-control-bar,\n.vjs-using-native-controls .vjs-control-bar,\n.vjs-error .vjs-control-bar {\n display: none !important;\n}\n\n.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar,\n.vjs-audio-only-mode.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {\n opacity: 1;\n visibility: visible;\n pointer-events: auto;\n}\n\n.vjs-has-started.vjs-no-flex .vjs-control-bar {\n display: table;\n}\n\n.video-js .vjs-control {\n position: relative;\n text-align: center;\n margin: 0;\n padding: 0;\n height: 100%;\n width: 4em;\n flex: none;\n}\n\n.video-js .vjs-control.vjs-visible-text {\n width: auto;\n padding-left: 1em;\n padding-right: 1em;\n}\n\n.vjs-button > .vjs-icon-placeholder:before {\n font-size: 1.8em;\n line-height: 1.67;\n}\n\n.vjs-button > .vjs-icon-placeholder {\n display: block;\n}\n\n.video-js .vjs-control:focus:before,\n.video-js .vjs-control:hover:before,\n.video-js .vjs-control:focus {\n text-shadow: 0em 0em 1em white;\n}\n\n.video-js *:not(.vjs-visible-text) > .vjs-control-text {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.vjs-no-flex .vjs-control {\n display: table-cell;\n vertical-align: middle;\n}\n\n.video-js .vjs-custom-control-spacer {\n display: none;\n}\n\n.video-js .vjs-progress-control {\n cursor: pointer;\n flex: auto;\n display: flex;\n align-items: center;\n min-width: 4em;\n touch-action: none;\n}\n\n.video-js .vjs-progress-control.disabled {\n cursor: default;\n}\n\n.vjs-live .vjs-progress-control {\n display: none;\n}\n\n.vjs-liveui .vjs-progress-control {\n display: flex;\n align-items: center;\n}\n\n.vjs-no-flex .vjs-progress-control {\n width: auto;\n}\n\n.video-js .vjs-progress-holder {\n flex: auto;\n transition: all 0.2s;\n height: 0.3em;\n}\n\n.video-js .vjs-progress-control .vjs-progress-holder {\n margin: 0 10px;\n}\n\n.video-js .vjs-progress-control:hover .vjs-progress-holder {\n font-size: 1.6666666667em;\n}\n\n.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled {\n font-size: 1em;\n}\n\n.video-js .vjs-progress-holder .vjs-play-progress,\n.video-js .vjs-progress-holder .vjs-load-progress,\n.video-js .vjs-progress-holder .vjs-load-progress div {\n position: absolute;\n display: block;\n height: 100%;\n margin: 0;\n padding: 0;\n width: 0;\n}\n\n.video-js .vjs-play-progress {\n background-color: #fff;\n}\n.video-js .vjs-play-progress:before {\n font-size: 0.9em;\n position: absolute;\n right: -0.5em;\n top: -0.3333333333em;\n z-index: 1;\n}\n\n.video-js .vjs-load-progress {\n background: rgba(115, 133, 159, 0.5);\n}\n\n.video-js .vjs-load-progress div {\n background: rgba(115, 133, 159, 0.75);\n}\n\n.video-js .vjs-time-tooltip {\n background-color: #fff;\n background-color: rgba(255, 255, 255, 0.8);\n border-radius: 0.3em;\n color: #000;\n float: right;\n font-family: Arial, Helvetica, sans-serif;\n font-size: 1em;\n padding: 6px 8px 8px 8px;\n pointer-events: none;\n position: absolute;\n top: -3.4em;\n visibility: hidden;\n z-index: 1;\n}\n\n.video-js .vjs-progress-holder:focus .vjs-time-tooltip {\n display: none;\n}\n\n.video-js .vjs-progress-control:hover .vjs-time-tooltip,\n.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip {\n display: block;\n font-size: 0.6em;\n visibility: visible;\n}\n\n.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip {\n font-size: 1em;\n}\n\n.video-js .vjs-progress-control .vjs-mouse-display {\n display: none;\n position: absolute;\n width: 1px;\n height: 100%;\n background-color: #000;\n z-index: 1;\n}\n\n.vjs-no-flex .vjs-progress-control .vjs-mouse-display {\n z-index: 0;\n}\n\n.video-js .vjs-progress-control:hover .vjs-mouse-display {\n display: block;\n}\n\n.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display {\n visibility: hidden;\n opacity: 0;\n transition: visibility 1s, opacity 1s;\n}\n\n.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display {\n display: none;\n}\n\n.vjs-mouse-display .vjs-time-tooltip {\n color: #fff;\n background-color: #000;\n background-color: rgba(0, 0, 0, 0.8);\n}\n\n.video-js .vjs-slider {\n position: relative;\n cursor: pointer;\n padding: 0;\n margin: 0 0.45em 0 0.45em;\n /* iOS Safari */\n -webkit-touch-callout: none;\n /* Safari */\n -webkit-user-select: none;\n /* Konqueror HTML */\n /* Firefox */\n -moz-user-select: none;\n /* Internet Explorer/Edge */\n -ms-user-select: none;\n /* Non-prefixed version, currently supported by Chrome and Opera */\n user-select: none;\n background-color: #73859f;\n background-color: rgba(115, 133, 159, 0.5);\n}\n\n.video-js .vjs-slider.disabled {\n cursor: default;\n}\n\n.video-js .vjs-slider:focus {\n text-shadow: 0em 0em 1em white;\n box-shadow: 0 0 1em #fff;\n}\n\n.video-js .vjs-mute-control {\n cursor: pointer;\n flex: none;\n}\n.video-js .vjs-volume-control {\n cursor: pointer;\n margin-right: 1em;\n display: flex;\n}\n\n.video-js .vjs-volume-control.vjs-volume-horizontal {\n width: 5em;\n}\n\n.video-js .vjs-volume-panel .vjs-volume-control {\n visibility: visible;\n opacity: 0;\n width: 1px;\n height: 1px;\n margin-left: -1px;\n}\n\n.video-js .vjs-volume-panel {\n transition: width 1s;\n}\n.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control, .video-js .vjs-volume-panel:active .vjs-volume-control, .video-js .vjs-volume-panel:focus .vjs-volume-control, .video-js .vjs-volume-panel .vjs-volume-control:active, .video-js .vjs-volume-panel.vjs-hover .vjs-mute-control ~ .vjs-volume-control, .video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active {\n visibility: visible;\n opacity: 1;\n position: relative;\n transition: visibility 0.1s, opacity 0.1s, height 0.1s, width 0.1s, left 0s, top 0s;\n}\n.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal, .video-js .vjs-volume-panel.vjs-hover .vjs-mute-control ~ .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal {\n width: 5em;\n height: 3em;\n margin-right: 0;\n}\n.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical, .video-js .vjs-volume-panel.vjs-hover .vjs-mute-control ~ .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical {\n left: -3.5em;\n transition: left 0s;\n}\n.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover, .video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active, .video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active {\n width: 10em;\n transition: width 0.1s;\n}\n.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only {\n width: 4em;\n}\n\n.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical {\n height: 8em;\n width: 3em;\n left: -3000em;\n transition: visibility 1s, opacity 1s, height 1s 1s, width 1s 1s, left 1s 1s, top 1s 1s;\n}\n\n.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal {\n transition: visibility 1s, opacity 1s, height 1s 1s, width 1s, left 1s 1s, top 1s 1s;\n}\n\n.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal {\n width: 5em;\n height: 3em;\n visibility: visible;\n opacity: 1;\n position: relative;\n transition: none;\n}\n\n.video-js.vjs-no-flex .vjs-volume-control.vjs-volume-vertical,\n.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical {\n position: absolute;\n bottom: 3em;\n left: 0.5em;\n}\n\n.video-js .vjs-volume-panel {\n display: flex;\n}\n\n.video-js .vjs-volume-bar {\n margin: 1.35em 0.45em;\n}\n\n.vjs-volume-bar.vjs-slider-horizontal {\n width: 5em;\n height: 0.3em;\n}\n\n.vjs-volume-bar.vjs-slider-vertical {\n width: 0.3em;\n height: 5em;\n margin: 1.35em auto;\n}\n\n.video-js .vjs-volume-level {\n position: absolute;\n bottom: 0;\n left: 0;\n background-color: #fff;\n}\n.video-js .vjs-volume-level:before {\n position: absolute;\n font-size: 0.9em;\n z-index: 1;\n}\n\n.vjs-slider-vertical .vjs-volume-level {\n width: 0.3em;\n}\n.vjs-slider-vertical .vjs-volume-level:before {\n top: -0.5em;\n left: -0.3em;\n z-index: 1;\n}\n\n.vjs-slider-horizontal .vjs-volume-level {\n height: 0.3em;\n}\n.vjs-slider-horizontal .vjs-volume-level:before {\n top: -0.3em;\n right: -0.5em;\n}\n\n.video-js .vjs-volume-panel.vjs-volume-panel-vertical {\n width: 4em;\n}\n\n.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level {\n height: 100%;\n}\n\n.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level {\n width: 100%;\n}\n\n.video-js .vjs-volume-vertical {\n width: 3em;\n height: 8em;\n bottom: 8em;\n background-color: #2B333F;\n background-color: rgba(43, 51, 63, 0.7);\n}\n\n.video-js .vjs-volume-horizontal .vjs-menu {\n left: -2em;\n}\n\n.video-js .vjs-volume-tooltip {\n background-color: #fff;\n background-color: rgba(255, 255, 255, 0.8);\n border-radius: 0.3em;\n color: #000;\n float: right;\n font-family: Arial, Helvetica, sans-serif;\n font-size: 1em;\n padding: 6px 8px 8px 8px;\n pointer-events: none;\n position: absolute;\n top: -3.4em;\n visibility: hidden;\n z-index: 1;\n}\n\n.video-js .vjs-volume-control:hover .vjs-volume-tooltip,\n.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip {\n display: block;\n font-size: 1em;\n visibility: visible;\n}\n\n.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip,\n.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip {\n left: 1em;\n top: -12px;\n}\n\n.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip {\n font-size: 1em;\n}\n\n.video-js .vjs-volume-control .vjs-mouse-display {\n display: none;\n position: absolute;\n width: 100%;\n height: 1px;\n background-color: #000;\n z-index: 1;\n}\n\n.video-js .vjs-volume-horizontal .vjs-mouse-display {\n width: 1px;\n height: 100%;\n}\n\n.vjs-no-flex .vjs-volume-control .vjs-mouse-display {\n z-index: 0;\n}\n\n.video-js .vjs-volume-control:hover .vjs-mouse-display {\n display: block;\n}\n\n.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display {\n visibility: hidden;\n opacity: 0;\n transition: visibility 1s, opacity 1s;\n}\n\n.video-js.vjs-user-inactive.vjs-no-flex .vjs-volume-control .vjs-mouse-display {\n display: none;\n}\n\n.vjs-mouse-display .vjs-volume-tooltip {\n color: #fff;\n background-color: #000;\n background-color: rgba(0, 0, 0, 0.8);\n}\n\n.vjs-poster {\n display: inline-block;\n vertical-align: middle;\n background-repeat: no-repeat;\n background-position: 50% 50%;\n background-size: contain;\n background-color: #000000;\n cursor: pointer;\n margin: 0;\n padding: 0;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n}\n\n.vjs-has-started .vjs-poster,\n.vjs-using-native-controls .vjs-poster {\n display: none;\n}\n\n.vjs-audio.vjs-has-started .vjs-poster,\n.vjs-has-started.vjs-audio-poster-mode .vjs-poster {\n display: block;\n}\n\n.video-js .vjs-live-control {\n display: flex;\n align-items: flex-start;\n flex: auto;\n font-size: 1em;\n line-height: 3em;\n}\n\n.vjs-no-flex .vjs-live-control {\n display: table-cell;\n width: auto;\n text-align: left;\n}\n\n.video-js:not(.vjs-live) .vjs-live-control,\n.video-js.vjs-liveui .vjs-live-control {\n display: none;\n}\n\n.video-js .vjs-seek-to-live-control {\n align-items: center;\n cursor: pointer;\n flex: none;\n display: inline-flex;\n height: 100%;\n padding-left: 0.5em;\n padding-right: 0.5em;\n font-size: 1em;\n line-height: 3em;\n width: auto;\n min-width: 4em;\n}\n\n.vjs-no-flex .vjs-seek-to-live-control {\n display: table-cell;\n width: auto;\n text-align: left;\n}\n\n.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,\n.video-js:not(.vjs-live) .vjs-seek-to-live-control {\n display: none;\n}\n\n.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge {\n cursor: auto;\n}\n\n.vjs-seek-to-live-control .vjs-icon-placeholder {\n margin-right: 0.5em;\n color: #888;\n}\n\n.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder {\n color: red;\n}\n\n.video-js .vjs-time-control {\n flex: none;\n font-size: 1em;\n line-height: 3em;\n min-width: 2em;\n width: auto;\n padding-left: 1em;\n padding-right: 1em;\n}\n\n.vjs-live .vjs-time-control {\n display: none;\n}\n\n.video-js .vjs-current-time,\n.vjs-no-flex .vjs-current-time {\n display: none;\n}\n\n.video-js .vjs-duration,\n.vjs-no-flex .vjs-duration {\n display: none;\n}\n\n.vjs-time-divider {\n display: none;\n line-height: 3em;\n}\n\n.vjs-live .vjs-time-divider {\n display: none;\n}\n\n.video-js .vjs-play-control {\n cursor: pointer;\n}\n\n.video-js .vjs-play-control .vjs-icon-placeholder {\n flex: none;\n}\n\n.vjs-text-track-display {\n position: absolute;\n bottom: 3em;\n left: 0;\n right: 0;\n top: 0;\n pointer-events: none;\n}\n\n.video-js.vjs-controls-disabled .vjs-text-track-display,\n.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display {\n bottom: 1em;\n}\n\n.video-js .vjs-text-track {\n font-size: 1.4em;\n text-align: center;\n margin-bottom: 0.1em;\n}\n\n.vjs-subtitles {\n color: #fff;\n}\n\n.vjs-captions {\n color: #fc6;\n}\n\n.vjs-tt-cue {\n display: block;\n}\n\nvideo::-webkit-media-text-track-display {\n transform: translateY(-3em);\n}\n\n.video-js.vjs-controls-disabled video::-webkit-media-text-track-display,\n.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display {\n transform: translateY(-1.5em);\n}\n\n.video-js .vjs-picture-in-picture-control {\n cursor: pointer;\n flex: none;\n}\n.video-js.vjs-audio-only-mode .vjs-picture-in-picture-control {\n display: none;\n}\n\n.video-js .vjs-fullscreen-control {\n cursor: pointer;\n flex: none;\n}\n.video-js.vjs-audio-only-mode .vjs-fullscreen-control {\n display: none;\n}\n\n.vjs-playback-rate > .vjs-menu-button,\n.vjs-playback-rate .vjs-playback-rate-value {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.vjs-playback-rate .vjs-playback-rate-value {\n pointer-events: none;\n font-size: 1.5em;\n line-height: 2;\n text-align: center;\n}\n\n.vjs-playback-rate .vjs-menu {\n width: 4em;\n left: 0em;\n}\n\n.vjs-error .vjs-error-display .vjs-modal-dialog-content {\n font-size: 1.4em;\n text-align: center;\n}\n\n.vjs-error .vjs-error-display:before {\n color: #fff;\n content: \"X\";\n font-family: Arial, Helvetica, sans-serif;\n font-size: 4em;\n left: 0;\n line-height: 1;\n margin-top: -0.5em;\n position: absolute;\n text-shadow: 0.05em 0.05em 0.1em #000;\n text-align: center;\n top: 50%;\n vertical-align: middle;\n width: 100%;\n}\n\n.vjs-loading-spinner {\n display: none;\n position: absolute;\n top: 50%;\n left: 50%;\n margin: -25px 0 0 -25px;\n opacity: 0.85;\n text-align: left;\n border: 6px solid rgba(43, 51, 63, 0.7);\n box-sizing: border-box;\n background-clip: padding-box;\n width: 50px;\n height: 50px;\n border-radius: 25px;\n visibility: hidden;\n}\n\n.vjs-seeking .vjs-loading-spinner,\n.vjs-waiting .vjs-loading-spinner {\n display: block;\n -webkit-animation: vjs-spinner-show 0s linear 0.3s forwards;\n animation: vjs-spinner-show 0s linear 0.3s forwards;\n}\n\n.vjs-loading-spinner:before,\n.vjs-loading-spinner:after {\n content: \"\";\n position: absolute;\n margin: -6px;\n box-sizing: inherit;\n width: inherit;\n height: inherit;\n border-radius: inherit;\n opacity: 1;\n border: inherit;\n border-color: transparent;\n border-top-color: white;\n}\n\n.vjs-seeking .vjs-loading-spinner:before,\n.vjs-seeking .vjs-loading-spinner:after,\n.vjs-waiting .vjs-loading-spinner:before,\n.vjs-waiting .vjs-loading-spinner:after {\n -webkit-animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, vjs-spinner-fade 1.1s linear infinite;\n animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, vjs-spinner-fade 1.1s linear infinite;\n}\n\n.vjs-seeking .vjs-loading-spinner:before,\n.vjs-waiting .vjs-loading-spinner:before {\n border-top-color: white;\n}\n\n.vjs-seeking .vjs-loading-spinner:after,\n.vjs-waiting .vjs-loading-spinner:after {\n border-top-color: white;\n -webkit-animation-delay: 0.44s;\n animation-delay: 0.44s;\n}\n\n@keyframes vjs-spinner-show {\n to {\n visibility: visible;\n }\n}\n@-webkit-keyframes vjs-spinner-show {\n to {\n visibility: visible;\n }\n}\n@keyframes vjs-spinner-spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n@-webkit-keyframes vjs-spinner-spin {\n 100% {\n -webkit-transform: rotate(360deg);\n }\n}\n@keyframes vjs-spinner-fade {\n 0% {\n border-top-color: #73859f;\n }\n 20% {\n border-top-color: #73859f;\n }\n 35% {\n border-top-color: white;\n }\n 60% {\n border-top-color: #73859f;\n }\n 100% {\n border-top-color: #73859f;\n }\n}\n@-webkit-keyframes vjs-spinner-fade {\n 0% {\n border-top-color: #73859f;\n }\n 20% {\n border-top-color: #73859f;\n }\n 35% {\n border-top-color: white;\n }\n 60% {\n border-top-color: #73859f;\n }\n 100% {\n border-top-color: #73859f;\n }\n}\n.video-js.vjs-audio-only-mode .vjs-captions-button {\n display: none;\n}\n\n.vjs-chapters-button .vjs-menu ul {\n width: 24em;\n}\n\n.video-js.vjs-audio-only-mode .vjs-descriptions-button {\n display: none;\n}\n\n.video-js .vjs-subs-caps-button + .vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder {\n vertical-align: middle;\n display: inline-block;\n margin-bottom: -0.1em;\n}\n\n.video-js .vjs-subs-caps-button + .vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before {\n font-family: VideoJS;\n content: \"\";\n font-size: 1.5em;\n line-height: inherit;\n}\n\n.video-js.vjs-audio-only-mode .vjs-subs-caps-button {\n display: none;\n}\n\n.video-js .vjs-audio-button + .vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder {\n vertical-align: middle;\n display: inline-block;\n margin-bottom: -0.1em;\n}\n\n.video-js .vjs-audio-button + .vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before {\n font-family: VideoJS;\n content: \" \";\n font-size: 1.5em;\n line-height: inherit;\n}\n\n.video-js.vjs-layout-small .vjs-current-time,\n.video-js.vjs-layout-small .vjs-time-divider,\n.video-js.vjs-layout-small .vjs-duration,\n.video-js.vjs-layout-small .vjs-remaining-time,\n.video-js.vjs-layout-small .vjs-playback-rate,\n.video-js.vjs-layout-small .vjs-volume-control, .video-js.vjs-layout-x-small .vjs-current-time,\n.video-js.vjs-layout-x-small .vjs-time-divider,\n.video-js.vjs-layout-x-small .vjs-duration,\n.video-js.vjs-layout-x-small .vjs-remaining-time,\n.video-js.vjs-layout-x-small .vjs-playback-rate,\n.video-js.vjs-layout-x-small .vjs-volume-control, .video-js.vjs-layout-tiny .vjs-current-time,\n.video-js.vjs-layout-tiny .vjs-time-divider,\n.video-js.vjs-layout-tiny .vjs-duration,\n.video-js.vjs-layout-tiny .vjs-remaining-time,\n.video-js.vjs-layout-tiny .vjs-playback-rate,\n.video-js.vjs-layout-tiny .vjs-volume-control {\n display: none;\n}\n.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover, .video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active, .video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active, .video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover, .video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover, .video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active, .video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active, .video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover, .video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover, .video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active, .video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active, .video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover {\n width: auto;\n width: initial;\n}\n.video-js.vjs-layout-x-small .vjs-progress-control, .video-js.vjs-layout-tiny .vjs-progress-control {\n display: none;\n}\n.video-js.vjs-layout-x-small .vjs-custom-control-spacer {\n flex: auto;\n display: block;\n}\n.video-js.vjs-layout-x-small.vjs-no-flex .vjs-custom-control-spacer {\n width: auto;\n}\n\n.vjs-modal-dialog.vjs-text-track-settings {\n background-color: #2B333F;\n background-color: rgba(43, 51, 63, 0.75);\n color: #fff;\n height: 70%;\n}\n\n.vjs-text-track-settings .vjs-modal-dialog-content {\n display: table;\n}\n\n.vjs-text-track-settings .vjs-track-settings-colors,\n.vjs-text-track-settings .vjs-track-settings-font,\n.vjs-text-track-settings .vjs-track-settings-controls {\n display: table-cell;\n}\n\n.vjs-text-track-settings .vjs-track-settings-controls {\n text-align: right;\n vertical-align: bottom;\n}\n\n@supports (display: grid) {\n .vjs-text-track-settings .vjs-modal-dialog-content {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: 1fr;\n padding: 20px 24px 0px 24px;\n }\n\n .vjs-track-settings-controls .vjs-default-button {\n margin-bottom: 20px;\n }\n\n .vjs-text-track-settings .vjs-track-settings-controls {\n grid-column: 1/-1;\n }\n\n .vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,\n.vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content,\n.vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content {\n grid-template-columns: 1fr;\n }\n}\n.vjs-track-setting > select {\n margin-right: 1em;\n margin-bottom: 0.5em;\n}\n\n.vjs-text-track-settings fieldset {\n margin: 5px;\n padding: 3px;\n border: none;\n}\n\n.vjs-text-track-settings fieldset span {\n display: inline-block;\n}\n\n.vjs-text-track-settings fieldset span > select {\n max-width: 7.3em;\n}\n\n.vjs-text-track-settings legend {\n color: #fff;\n margin: 0 0 5px 0;\n}\n\n.vjs-text-track-settings .vjs-label {\n position: absolute;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n display: block;\n margin: 0 0 5px 0;\n padding: 0;\n border: 0;\n height: 1px;\n width: 1px;\n overflow: hidden;\n}\n\n.vjs-track-settings-controls button:focus,\n.vjs-track-settings-controls button:active {\n outline-style: solid;\n outline-width: medium;\n background-image: linear-gradient(0deg, #fff 88%, #73859f 100%);\n}\n\n.vjs-track-settings-controls button:hover {\n color: rgba(43, 51, 63, 0.75);\n}\n\n.vjs-track-settings-controls button {\n background-color: #fff;\n background-image: linear-gradient(-180deg, #fff 88%, #73859f 100%);\n color: #2B333F;\n cursor: pointer;\n border-radius: 2px;\n}\n\n.vjs-track-settings-controls .vjs-default-button {\n margin-right: 1em;\n}\n\n@media print {\n .video-js > *:not(.vjs-tech):not(.vjs-poster) {\n visibility: hidden;\n }\n}\n.vjs-resize-manager {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: none;\n z-index: -1000;\n}\n\n.js-focus-visible .video-js *:focus:not(.focus-visible) {\n outline: none;\n}\n\n.video-js *:focus:not(:focus-visible) {\n outline: none;\n}\n",".video-js {\n width: calc(100% - 40px);\n max-width: 800px;\n max-height: 100%;\n margin: 0 auto;\n}\n",".audio-file-view .video-js {\n width: calc(100% - 40px);\n max-width: 500px;\n height: 3em;\n margin: 0 auto;\n}\n.audio-file-view .video-js .vjs-fullscreen-control {\n display: none;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/draft.99bd13be.css b/media/assets/frontend/static/css/draft.99bd13be.css new file mode 100644 index 00000000000..cdac7b5e37e --- /dev/null +++ b/media/assets/frontend/static/css/draft.99bd13be.css @@ -0,0 +1,2 @@ +#wrapper{display:flex;height:100%;width:100%}.header .button-group{align-items:center;display:flex}.header .add-reviewer-btn,.header .common-list-btn{margin-right:.25em}.header .common-list-btn .common-list-btn-number{margin-left:.5em}.main .cur-view-container{background-color:#fafaf9;display:flex;flex-flow:row nowrap;height:100%;width:100%}.main .cur-view-container .cur-view-content{flex:auto;height:100%}.main .cur-view-right-part{flex-shrink:0;height:100%;position:relative;width:300px}.cur-file-info .file-info{display:block;padding-top:10px}.file-info .draft-link,.file-info .view-file-link{color:#1e1e1e;display:block;font-size:.6em;font-weight:400;text-decoration:underline}.file-info .file-review{color:#999;font-size:1rem;font-weight:400}.cur-file-info .last-modification{font-size:.8125rem}.seafile-toggle-diff{display:flex;margin-right:10px}.seafile-toggle-diff .custom-switch .custom-switch-indicator{border:1px solid #e9ecef}.seafile-toggle-diff .custom-switch-input:checked~.custom-switch-indicator{background-color:#f19645}.review-side-panel{background-color:#fff;border-left:1px solid #e6e6dd;height:100%}.review-side-panel-head{background-color:#fafaf9;border-bottom:1px solid #e5e5e5;font-weight:700;line-height:3em;text-align:center}.review-side-panel-body{height:100%;overflow-y:scroll;padding:1rem 1rem 3rem}.review-side-panel-body .dirent-table-container{padding-left:0}.dirent-table-container th{word-wrap:break-word;word-break:normal}.dirent-table-container td a:hover{text-decoration:underline}.review-side-panel-item{border-bottom:1px solid #e6e6dd;padding:1em 0}.review-side-panel-item:last-child{border:0}.review-side-panel-item .author-info,.review-side-panel-item .reviewer-info{align-items:center;display:flex}.review-side-panel-header{color:#666;display:flex;font-size:.8125rem;font-weight:700;justify-content:space-between;margin-bottom:2px}.review-side-panel-item i{color:#c8c8c8;font-size:1rem;margin:5px 5px 0 0}.review-side-panel-item i:hover{color:#a4a4a4;cursor:pointer}.review-side-panel-avatar{height:1.5rem;margin-right:10px;width:1.5rem}.review-side-panel-item .author-name,.review-side-panel-item .reviewer-name{height:2rem;line-height:2rem}.markdown-viewer-render-content{position:relative}.markdown-viewer-render-content tr:nth-child(2n){background-color:#fff}.review-side-panel-nav{margin:0}.review-side-panel-nav .nav-item{padding-top:4px;width:33.3%}.review-side-panel-nav .nav-item .nav-link{margin:0 auto}.review-side-panel-nav .nav-item .nav-link.active{border-color:#f19645;color:#f19645}.review-side-panel-nav .nav-item i{font-size:1rem;padding:0 8px;width:1rem}.review-side-panel .tab-content{height:calc(100% - 38px)}.review-side-panel .tab-content .tab-pane{height:100%}@media (max-width:768px){.markdown-viewer-render-content{margin:0}.header .file-operation-btn{padding:.1rem .25rem}}@media (max-width:992px){.dirent-table-container td,.review-side-panel{font-size:12px!important}} +/*# sourceMappingURL=draft.99bd13be.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/draft.99bd13be.css.map b/media/assets/frontend/static/css/draft.99bd13be.css.map new file mode 100644 index 00000000000..089abe6e29c --- /dev/null +++ b/media/assets/frontend/static/css/draft.99bd13be.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/draft.99bd13be.css","mappings":"AAAA,SAGE,YAAa,CAFb,WAAY,CACZ,UAEF,CAEA,sBAEE,kBAAmB,CADnB,YAEF,CAEA,mDACE,kBACF,CAEA,iDACE,gBACF,CAEA,0BAKE,wBAAyB,CAFzB,YAAa,CACb,oBAAqB,CAFrB,WAAY,CADZ,UAKF,CAEA,4CACE,SAAU,CACV,WACF,CAEA,2BAGE,aAAc,CAFd,WAAY,CAGZ,iBAAkB,CAFlB,WAGF,CAEA,0BACE,aAAc,CACd,gBACF,CAEA,kDAGE,aAAc,CAEd,aAAc,CAHd,cAAe,CAIf,eAAmB,CAFnB,yBAGF,CAEA,wBACE,UAAW,CACX,cAAe,CACf,eACF,CAEA,kCACE,kBACF,CAEA,qBACE,YAAa,CACb,iBACF,CACA,6DACE,wBACF,CACA,2EACE,wBACF,CAEA,mBAEE,qBAAsB,CADtB,6BAA8B,CAE9B,WACF,CACA,wBAGE,wBAAyB,CAFzB,+BAAgC,CAIhC,eAAgB,CAHhB,eAAgB,CAEhB,iBAEF,CACA,wBAGE,WAAY,CADZ,iBAAkB,CADlB,sBAGF,CACA,gDACE,cACF,CACA,2BACE,oBAAqB,CACrB,iBACF,CACA,mCACE,yBACF,CACA,wBACE,+BAAgC,CAChC,aACF,CACA,mCACE,QACF,CACA,4EAGE,kBAAmB,CADnB,YAEF,CACA,0BAKE,UAAW,CAJX,YAAa,CAKb,kBAAoB,CAFpB,eAAiB,CAFjB,6BAA8B,CAC9B,iBAIF,CACA,0BACE,aAAc,CAEd,cAAe,CADf,kBAEF,CACA,gCAEE,aAAc,CADd,cAEF,CACA,0BAEE,aAAc,CADd,iBAAkB,CAElB,YACF,CACA,4EAEE,WAAY,CACZ,gBACF,CAEA,gCACE,iBACF,CAEA,iDACE,qBACF,CAEA,uBACE,QACF,CACA,iCAEE,eAAgB,CADhB,WAEF,CACA,2CACE,aACF,CACA,kDACE,oBAAqB,CACrB,aACF,CACA,mCAEE,cAAe,CADf,aAAc,CAEd,UACF,CACA,gCACE,wBACF,CACA,0CACE,WACF,CAEA,yBACE,gCACE,QACF,CACA,4BACE,oBACF,CACF,CAEA,yBACE,8CACE,wBACF,CACF","sources":["css/draft.css"],"sourcesContent":["#wrapper {\n height: 100%;\n width: 100%;\n display: flex;\n}\n\n.header .button-group {\n display: flex;\n align-items: center;\n}\n\n.header .common-list-btn, .header .add-reviewer-btn {\n margin-right: .25em;\n}\n\n.header .common-list-btn .common-list-btn-number {\n margin-left: .5em;\n}\n\n.main .cur-view-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-flow: row nowrap;\n background-color: #fafaf9;\n}\n\n.main .cur-view-container .cur-view-content {\n flex: auto;\n height: 100%;\n}\n\n.main .cur-view-right-part {\n height: 100%;\n width: 300px;\n flex-shrink: 0;\n position: relative;\n}\n\n.cur-file-info .file-info {\n display: block;\n padding-top: 10px;\n}\n\n.file-info .view-file-link, \n.file-info .draft-link {\n font-size: .6em;\n color: #1e1e1e;\n text-decoration: underline;\n display: block;\n font-weight: normal;\n}\n\n.file-info .file-review {\n color: #999;\n font-size: 1rem;\n font-weight: 400;\n}\n\n.cur-file-info .last-modification {\n font-size: 0.8125rem;\n}\n\n.seafile-toggle-diff {\n display: flex;\n margin-right: 10px;\n}\n.seafile-toggle-diff .custom-switch .custom-switch-indicator {\n border: 1px solid #e9ecef;\n}\n.seafile-toggle-diff .custom-switch-input:checked ~ .custom-switch-indicator {\n background-color: #f19645;\n}\n\n.review-side-panel {\n border-left: 1px solid #e6e6dd;\n background-color: #fff;\n height: 100%;\n}\n.review-side-panel-head {\n border-bottom: 1px solid #e5e5e5;\n line-height: 3em;\n background-color: #fafaf9;\n text-align: center;\n font-weight: 700;\n}\n.review-side-panel-body {\n padding: 1rem 1rem 3rem;\n overflow-y: scroll;\n height: 100%;\n}\n.review-side-panel-body .dirent-table-container {\n padding-left: 0;\n}\n.dirent-table-container th {\n word-wrap: break-word;\n word-break: normal;\n}\n.dirent-table-container td a:hover {\n text-decoration: underline;\n}\n.review-side-panel-item {\n border-bottom: 1px solid #e6e6dd;\n padding: 1em 0;\n}\n.review-side-panel-item:last-child {\n border: 0;\n}\n.review-side-panel-item .reviewer-info,\n.review-side-panel-item .author-info {\n display: flex;\n align-items: center;\n}\n.review-side-panel-header {\n display: flex;\n justify-content: space-between;\n margin-bottom: 2px;\n font-weight: bold;\n color: #666;\n font-size: 0.8125rem;\n}\n.review-side-panel-item i {\n color: #c8c8c8;\n margin: 5px 5px 0 0;\n font-size: 1rem;\n}\n.review-side-panel-item i:hover {\n cursor: pointer;\n color: #a4a4a4;\n}\n.review-side-panel-avatar {\n margin-right: 10px;\n height: 1.5rem;\n width: 1.5rem;\n}\n.review-side-panel-item .reviewer-name,\n.review-side-panel-item .author-name {\n height: 2rem;\n line-height: 2rem;\n}\n\n.markdown-viewer-render-content {\n position: relative;\n}\n\n.markdown-viewer-render-content tr:nth-child(2n) {\n background-color: #fff;\n}\n\n.review-side-panel-nav {\n margin: 0;\n}\n.review-side-panel-nav .nav-item {\n width: 33.3%;\n padding-top: 4px;\n}\n.review-side-panel-nav .nav-item .nav-link {\n margin: 0 auto;\n}\n.review-side-panel-nav .nav-item .nav-link.active {\n border-color: #f19645;\n color: #f19645;\n}\n.review-side-panel-nav .nav-item i {\n padding: 0 8px;\n font-size: 1rem;\n width: 1rem;\n}\n.review-side-panel .tab-content {\n height: calc(100% - 38px);\n}\n.review-side-panel .tab-content .tab-pane {\n height: 100%;\n}\n\n@media (max-width: 768px) {\n .markdown-viewer-render-content {\n margin: 0px;\n }\n .header .file-operation-btn {\n padding: 0.1rem 0.25rem;\n }\n}\n\n@media (max-width: 992px) {\n .review-side-panel, .dirent-table-container td {\n font-size: 12px !important;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/fileHistory.067ab156.css b/media/assets/frontend/static/css/fileHistory.067ab156.css new file mode 100644 index 00000000000..1f33eb10057 --- /dev/null +++ b/media/assets/frontend/static/css/fileHistory.067ab156.css @@ -0,0 +1,2 @@ +.item-active{background-color:#fdc297!important;color:#fff}.item-active i{color:#fff}.history-list-item .history-info{flex:1 1;padding:0 .5rem}.history-list-item .history-operation{align-items:center;display:flex;justify-content:center;width:1.5rem}.history-info .time{color:#000}.history-info .owner{align-items:center;color:#888;display:flex;margin-top:.25rem}.owner .squire-icon{background-color:#549b5a;height:.5rem;margin-right:.25rem;width:.5rem}.history-body .dropdown-menu{min-width:8rem}.history-body .dropdown-menu a{color:#6e7687;text-decoration:none}.history-header{align-items:center;background-color:#f4f4f7;border-bottom:1px solid #e8e8e8;display:flex;font-size:1rem;justify-content:space-between;padding:.5rem 1rem}.file-history-header{background-color:#fff;height:50px}.history-header .title{font-size:1.25rem;line-height:1rem}.history-header .title .go-back{color:silver;margin-right:.75rem}.history-header .title .go-back:hover{color:#f93;text-decoration:none}.content-viewer{display:flex;flex:1 1;min-height:0}.content-viewer .sf-slate-viewer-scroll-container{background-color:#fafaf9;display:block;padding:20px 40px}.content-viewer .sf-slate-viewer-article-container .article{max-width:100%;width:100%}.panel-header{border-bottom:1px solid #e8e8e8;font-size:1rem;font-weight:400;height:36px;line-height:1.5;padding:.5rem 0;position:relative;text-align:center;width:100%}.history-body{display:flex;flex:1 1;height:500px;min-height:0;overflow:hidden}.history-list-container{flex:1 1;flex-direction:column;min-height:0;overflow:auto}.history-list-container .history-list-item{display:flex;flex:1 1;padding:5px 10px}.history-list-container .history-list-item:hover{background-color:#ffe7d5}.history-content .main-panel{flex:1 1 auto}.history-content .history-side-panel{background-color:#fff;border-left:1px solid #e5e5e5;display:flex;flex:0 0 auto;flex-direction:column;-webkit-user-select:none;-ms-user-select:none;user-select:none}.history-content .history-side-panel .history-side-panel-title{border-bottom:1px solid #e5e5e5;font-size:1rem;font-weight:bolder;height:50px;line-height:50px;padding:0 10px}@media (min-width:992px){.history-side-panel{width:260px}.history-content .main-panel{max-width:calc(100% - 260px)}}@media (max-width:991.8px){.history-content .main-panel{max-width:calc(100% - 190px)}}@media (max-width:768px){.history-content .main-panel{max-width:100%}.content-viewer .sf-slate-viewer-scroll-container{padding:20px}.content-viewer .sf-slate-viewer-article-container{margin:0;padding:0}.content-viewer .sf-slate-viewer-article-container .article{padding:20px}} +/*# sourceMappingURL=fileHistory.067ab156.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/fileHistory.067ab156.css.map b/media/assets/frontend/static/css/fileHistory.067ab156.css.map new file mode 100644 index 00000000000..3799286d11f --- /dev/null +++ b/media/assets/frontend/static/css/fileHistory.067ab156.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/fileHistory.067ab156.css","mappings":"AAAA,aAEE,kCAAoC,CADpC,UAEF,CAEA,eACE,UACF,CAEA,iCACE,QAAO,CACP,eACF,CAEA,sCAGE,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAHvB,YAIF,CAEA,oBACE,UACF,CAEA,qBAIE,kBAAmB,CAFnB,UAAW,CACX,YAAa,CAFb,iBAIF,CAEA,oBAGE,wBAAyB,CADzB,YAAc,CAEd,mBAAqB,CAHrB,WAIF,CAEA,6BACE,cACF,CAEA,+BAEE,aAAc,CADd,oBAEF,CC9CA,gBAGE,kBAAmB,CAEnB,wBAAyB,CADzB,+BAAgC,CAHhC,YAAa,CAKb,cAAe,CAJf,6BAA8B,CAK9B,kBACF,CAEA,qBACE,qBAAsB,CACtB,WACF,CAEA,uBACE,iBAAkB,CAClB,gBACF,CAEA,gCAEE,YAAc,CADd,mBAEF,CAEA,sCACE,UAAa,CACb,oBACF,CAEA,gBAEE,YAAa,CADb,QAAO,CAEP,YACF,CAEA,kDACE,wBAAyB,CAEzB,aAAc,CADd,iBAEF,CAEA,4DAEE,cAAe,CADf,UAEF,CAEA,cAIE,+BAAgC,CAChC,cAAe,CACf,eAAgB,CAEhB,WAAY,CADZ,eAAgB,CALhB,eAAgB,CADhB,iBAAkB,CAQlB,iBAAkB,CANlB,UAOF,CAEA,cACE,YAAa,CACb,QAAO,CAGP,YAAa,CADb,YAAa,CADb,eAGF,CAEA,wBACE,QAAO,CACP,qBAAsB,CACtB,YAAa,CACb,aACF,CAEA,2CAEE,YAAa,CACb,QAAO,CAFP,gBAGF,CAEA,iDACE,wBACF,CAEA,6BACE,aACF,CAEA,qCAIE,qBAAsB,CADtB,6BAA8B,CAE9B,YAAa,CAJb,aAAc,CAKd,qBAAsB,CAJtB,wBAAiB,CAAjB,oBAAiB,CAAjB,gBAKF,CAEA,+DAEE,+BAAgC,CAEhC,cAAe,CAGf,kBAAmB,CANnB,WAAY,CAEZ,gBAAiB,CAEjB,cAGF,CAEA,yBACE,oBACE,WACF,CACA,6BACE,4BACF,CACF,CAEA,2BACE,6BACE,4BACF,CACF,CAEA,yBACE,6BACE,cACF,CACA,kDACE,YACF,CACA,mDACE,QAAS,CACT,SACF,CACA,4DACE,YACF,CACF","sources":["css/history-record-item.css","css/file-history.css"],"sourcesContent":[".item-active {\n color: #fff;\n background-color: #fdc297 !important;\n}\n\n.item-active i {\n color: #fff;\n}\n\n.history-list-item .history-info {\n flex: 1;\n padding: 0 0.5rem;\n}\n\n.history-list-item .history-operation {\n width: 1.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.history-info .time {\n color: #000;\n}\n\n.history-info .owner {\n margin-top: 0.25rem;\n color: #888;\n display: flex;\n align-items: center;\n}\n\n.owner .squire-icon {\n width: 0.5rem;\n height: 0.5rem;\n background-color: #549b5a;\n margin-right: 0.25rem;\n}\n\n.history-body .dropdown-menu {\n min-width: 8rem;\n}\n\n.history-body .dropdown-menu a {\n text-decoration: none;\n color: #6e7687;\n}\n",".history-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid #e8e8e8;\n background-color: #f4f4f7;\n font-size: 1rem;\n padding: 0.5rem 1rem;\n}\n\n.file-history-header { /* for markdown file history */\n background-color: #fff;\n height: 50px;\n}\n\n.history-header .title {\n font-size: 1.25rem;\n line-height: 1rem;\n}\n\n.history-header .title .go-back {\n margin-right: 0.75rem;\n color: #c0c0c0;\n}\n\n.history-header .title .go-back:hover {\n color:#ff9933;\n text-decoration: none;\n}\n\n.content-viewer {\n flex: 1;\n display: flex;\n min-height: 0;\n}\n\n.content-viewer .sf-slate-viewer-scroll-container {\n background-color: #fafaf9;\n padding: 20px 40px;\n display: block;\n}\n\n.content-viewer .sf-slate-viewer-article-container .article {\n width: 100%;\n max-width: 100%;\n}\n\n.panel-header {\n position: relative;\n padding: .5rem 0;\n width: 100%;\n border-bottom: 1px solid #e8e8e8;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n height: 36px;\n text-align: center;\n}\n\n.history-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n min-height: 0;\n height: 500px;\n}\n\n.history-list-container {\n flex: 1; \n flex-direction: column;\n min-height: 0;\n overflow: auto;\n}\n\n.history-list-container .history-list-item {\n padding: 5px 10px;\n display: flex;\n flex: 1;\n}\n\n.history-list-container .history-list-item:hover {\n background-color: #ffe7d5;\n}\n\n.history-content .main-panel {\n flex: 1 1 auto;\n}\n\n.history-content .history-side-panel {\n flex: 0 0 auto;\n user-select: none;\n border-left: 1px solid #e5e5e5;\n background-color: #fff;\n display: flex;\n flex-direction: column;\n}\n\n.history-content .history-side-panel .history-side-panel-title {\n height: 50px;\n border-bottom: 1px solid #e5e5e5;\n line-height: 50px;\n font-size: 1rem;\n padding: 0 10px;\n /*background-color: rgb(250,250,249);*/\n font-weight: bolder;\n}\n\n@media (min-width:992px) {\n .history-side-panel {\n width: 260px;\n }\n .history-content .main-panel {\n max-width: calc(100% - 260px);\n }\n}\n\n@media (max-width:991.8px) {\n .history-content .main-panel {\n max-width: calc(100% - 190px);\n }\n}\n\n@media (max-width:768px) {\n .history-content .main-panel {\n max-width: 100%;\n }\n .content-viewer .sf-slate-viewer-scroll-container {\n padding: 20px;\n }\n .content-viewer .sf-slate-viewer-article-container {\n margin: 0;\n padding: 0;\n }\n .content-viewer .sf-slate-viewer-article-container .article {\n padding: 20px;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/fileHistoryOld.34922be6.css b/media/assets/frontend/static/css/fileHistoryOld.34922be6.css new file mode 100644 index 00000000000..1b0d83c8ba3 --- /dev/null +++ b/media/assets/frontend/static/css/fileHistoryOld.34922be6.css @@ -0,0 +1,2 @@ +.old-history-header{align-items:center;background-color:#f4f4f7;border-bottom:1px solid #e8e8e8;display:flex;font-size:1rem;justify-content:space-between;padding:.5rem 1rem}.old-history-main{display:inline!important;min-height:1px;overflow:auto;padding:16px 10% 0;position:relative}.old-history-main .go-back{color:#ccc;float:left;font-size:25px;margin-left:-3rem}.old-history-main .go-back:hover{color:#f93;text-decoration:none}.old-history-main .get-more-btn{background:#efefef;border:0;border-radius:2px;color:#777;padding:.5em 0;width:100%}.old-history-main .get-more-btn:hover{color:#444}.old-history-main p{color:grey;font-size:12px;margin-bottom:1rem;margin-top:0}.old-history-main h2{color:#222;font-size:1.5em;font-weight:700;line-height:1.5}.old-history-main .file-name{word-wrap:break-word;color:#ee8204}.old-history-main .commit-list{margin:8px 0 40px;width:100%}.old-history-main .commit-list .avatar{border-radius:2px;height:16px;vertical-align:middle;width:16px}.old-history-main .commit-list .username{color:#eb8205;font-weight:700;text-decoration:none;vertical-align:middle}.old-history-more-operation i{color:#999;cursor:pointer}.old-history-more-operation a:hover{text-decoration:none}.old-history-more-operation i:hover{color:#666}@media (max-width:768px){.old-history-main .go-back{margin-left:-2rem}} +/*# sourceMappingURL=fileHistoryOld.34922be6.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/fileHistoryOld.34922be6.css.map b/media/assets/frontend/static/css/fileHistoryOld.34922be6.css.map new file mode 100644 index 00000000000..b0755f50f4f --- /dev/null +++ b/media/assets/frontend/static/css/fileHistoryOld.34922be6.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/fileHistoryOld.34922be6.css","mappings":"AAAA,oBAGE,kBAAmB,CAEnB,wBAAyB,CADzB,+BAAgC,CAHhC,YAAa,CAKb,cAAe,CAJf,6BAA8B,CAK9B,kBACF,CAEA,kBAEE,wBAA0B,CAG1B,cAAe,CAFf,aAAc,CAFd,kBAAmB,CAGnB,iBAEF,CAEA,2BAEE,UAAW,CACX,UAAW,CAFX,cAAe,CAGf,iBACF,CAEA,iCACE,UAAa,CACb,oBACF,CAEA,gCAGE,kBAAmB,CACnB,QAAS,CAET,iBAAkB,CADlB,UAAW,CAHX,cAAe,CADf,UAMF,CACA,sCACE,UACF,CAEA,oBACE,UAAc,CACd,cAAe,CAEf,kBAAmB,CADnB,YAEF,CAEA,qBAEE,UAAW,CADX,eAAgB,CAEhB,eAAiB,CACjB,eACF,CAEA,6BAEE,oBAAqB,CADrB,aAEF,CAEA,+BAEE,iBAAkB,CADlB,UAEF,CAEA,uCAGE,iBAAkB,CADlB,WAAY,CAEZ,qBAAsB,CAHtB,UAIF,CAEA,yCAEE,aAAc,CAEd,eAAiB,CADjB,oBAAqB,CAFrB,qBAIF,CAEA,8BACE,UAAW,CACX,cACF,CAEA,oCACE,oBACF,CAEA,oCACE,UACF,CAEA,yBACE,2BACE,iBACF,CACF","sources":["css/file-history-old.css"],"sourcesContent":[".old-history-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid #e8e8e8;\n background-color: #f4f4f7;\n font-size: 1rem;\n padding: 0.5rem 1rem;\n}\n\n.old-history-main {\n padding: 16px 10% 0;\n display: inline !important;\n overflow: auto;\n position: relative;\n min-height: 1px;\n}\n\n.old-history-main .go-back {\n font-size: 25px;\n color: #ccc;\n float: left;\n margin-left: -3rem;\n}\n\n.old-history-main .go-back:hover {\n color:#ff9933;\n text-decoration: none;\n}\n\n.old-history-main .get-more-btn {\n width: 100%;\n padding: .5em 0;\n background: #efefef;\n border: 0;\n color: #777;\n border-radius: 2px;\n}\n.old-history-main .get-more-btn:hover {\n color: #444;\n}\n\n.old-history-main p {\n color: #808080;\n font-size: 12px;\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\n.old-history-main h2 {\n font-size: 1.5em;\n color: #222;\n font-weight: bold;\n line-height: 1.5;\n}\n\n.old-history-main .file-name {\n color: #ee8204;\n word-wrap: break-word;\n} \n\n.old-history-main .commit-list {\n width: 100%;\n margin: 8px 0 40px;\n}\n\n.old-history-main .commit-list .avatar {\n width: 16px;\n height: 16px;\n border-radius: 2px;\n vertical-align: middle;\n}\n\n.old-history-main .commit-list .username {\n vertical-align: middle;\n color: #eb8205;\n text-decoration: none;\n font-weight: bold;\n}\n\n.old-history-more-operation i {\n color: #999;\n cursor: pointer;\n}\n\n.old-history-more-operation a:hover {\n text-decoration: none;\n}\n\n.old-history-more-operation i:hover {\n color: #666;\n}\n\n@media (max-width: 768px) {\n .old-history-main .go-back {\n margin-left: -2rem;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/historyTrashFileView.bcf014b6.css b/media/assets/frontend/static/css/historyTrashFileView.bcf014b6.css new file mode 100644 index 00000000000..483b85c6e82 --- /dev/null +++ b/media/assets/frontend/static/css/historyTrashFileView.bcf014b6.css @@ -0,0 +1,2 @@ +.file-view-content.md-content{background:#f4f4f4;border-right:none;display:flex;height:100%;padding:0;width:100%}.md-content .sf-slate-viewer-scroll-container .article{border:1px solid #ccc;box-shadow:0 0 6px #ccc;padding:70px 75px}.sdoc-file-view .sdoc-editor-container{background:transparent} +/*# sourceMappingURL=historyTrashFileView.bcf014b6.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/historyTrashFileView.bcf014b6.css.map b/media/assets/frontend/static/css/historyTrashFileView.bcf014b6.css.map new file mode 100644 index 00000000000..d07286ae6dd --- /dev/null +++ b/media/assets/frontend/static/css/historyTrashFileView.bcf014b6.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/historyTrashFileView.bcf014b6.css","mappings":"AAAA,8BAGI,kBAAmB,CACnB,iBAAkB,CAElB,YAAa,CAJb,WAAY,CAGZ,SAAU,CAJV,UAMJ,CAEA,uDACI,qBAAsB,CACtB,uBAAwB,CACxB,iBACJ,CCbA,uCACE,sBACF","sources":["css/md-file-view.css","css/sdoc-file-view.css"],"sourcesContent":[".file-view-content.md-content {\n width: 100%;\n height: 100%;\n background: #f4f4f4;\n border-right: none;\n padding: 0;\n display: flex;\n}\n\n.md-content .sf-slate-viewer-scroll-container .article {\n border: 1px solid #ccc;\n box-shadow: 0 0 6px #ccc;\n padding: 70px 75px;\n}\n",".sdoc-file-view .sdoc-editor-container {\n background: transparent;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/markdownEditor.d88bbc1a.css b/media/assets/frontend/static/css/markdownEditor.d88bbc1a.css new file mode 100644 index 00000000000..f2e2e8e6cf1 --- /dev/null +++ b/media/assets/frontend/static/css/markdownEditor.d88bbc1a.css @@ -0,0 +1,2 @@ +.seafile-btn-view-review{align-items:center;display:flex}.seafile-btn-view-review .tag:hover{cursor:pointer}.topbar-btn-container{align-items:center;display:flex}.btn-new-draft,.seafile-btn-add-review{margin-right:10px}.collab-users-dropdown.dropdown{margin-right:6px}.btn-active[data-active=true]{color:#eb8205}.add-item-btn{align-items:center;background:#fff;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #dedede;cursor:pointer;display:flex;font-size:14px;font-weight:500;height:30px;overflow:hidden;padding:0 10px;position:relative}.add-item-btn:hover{background-color:#f5f5f5}.add-item-btn .dtable-icon-add-table{font-size:12px;font-weight:600;margin-right:10px;-webkit-transform:none;transform:none}.add-item-btn .add-new-option{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag-list-container{list-style:none;max-height:15rem;overflow:auto}.add-tag-link{color:#666}.add-tag-link:hover{background:#f5f5f5;color:#444;text-decoration:none}.tag-list-item{height:2.5rem}.tag-list-item.hl{background:#f5f5f5}.tag-selected-icon{color:#999}.tag-delete-icon{color:#999;font-size:18px}.tag-delete-icon:hover{color:#444}.tag-dialog-back{color:#888;cursor:pointer;margin-right:10px}.tag-dialog-back:focus,.tag-dialog-back:hover{color:#444}.tag-color-option .colorinput-color:before{display:none}.tag-color-option .color-selected{opacity:0}.tag-color-option .colorinput-input:checked~.colorinput-color .color-selected{opacity:1}.tag-color-popover .popover{max-width:360px}.tag-color-popover .colorinput-color,.tag-color-popover .tag-color{height:20px;width:20px}.tag-color-popover .tag-color-option .colorinput-input:checked~.colorinput-color .color-selected{font-size:12px}.edit-filetag-popover .edit-filetag-popover-input{color:#212529;font-size:14px;height:30px;max-height:30px}.edit-filetag-popover .popover{padding:10px 10px 0;width:200px}.edit-filetag-popover .tag-list-container{padding:10px 0}.edit-filetag-popover .tag-list-container .tag-not-found{opacity:.5}.edit-filetag-popover .tag-list-item{height:30px}.edit-filetag-popover .tag-item{align-items:center;border-radius:10px;display:flex;margin:.25rem 0;max-width:130px;padding:0 .5rem;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.edit-filetag-popover .tag-item .tag-name{color:#fff;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-filetag-popover .add-item-btn{margin:0 -10px}.dirent-table-container tr{border:none}.dirent-table-container td,.dirent-table-container th{border:none;padding:5px 3px}.dirent-table-container th{color:#9c9c9c;font-size:13px;font-weight:400;text-align:left}.dirent-table-container td{color:#333;font-size:14px;word-break:break-all}.dirent-table-container .file-tag-container th{list-style:none;padding-top:8px;vertical-align:top}.dirent-table-container .file-tag-container .tag-list{list-style:none}.file-related-files th{vertical-align:top}.file-related-files td i{padding:0}.file-related-files td ul{list-style:none;max-height:100px;overflow-x:hidden;overflow-y:scroll;text-overflow:ellipsis;white-space:nowrap}.file-related-files td ul li{margin-bottom:5px}.file-related-files ul li a,.list-related-file-table tr td a{color:#333}.list-related-file-body{max-height:500px;min-height:200px;overflow-y:scroll}.detail-container .tab-content{height:calc(100% - 73px)}.detail-container .nav-item .nav-link,.detail-container .nav-item .nav-link i{margin:0 auto}#root,body,html{height:100%;width:100%}#root{display:flex;flex-direction:column;min-height:0;min-width:0}.seafile-md-viewer{flex-direction:row;float:none;height:100%;position:relative}.sf-md-viewer-topbar-first,.sf-md-viewer-topbar-first-narrow{align-items:center;background-color:#fff;border-bottom:1px solid #e5e5e5;box-shadow:0 3px 2px -2px hsla(0,0%,78%,.15);flex-shrink:0;padding:4px 10px}.seafile-md-viewer-container{background-color:#fafaf9;display:flex;height:100%;overflow:auto;position:relative;width:100%}.seafile-md-viewer-container.side-panel-on{width:calc(100% - 260px)}.seafile-md-viewer-slate{flex:auto;margin:20px 0 20px 5%;max-width:calc(90% - 260px);position:relative}.seafile-md-viewer-main{background:#fafaf9;flex:auto;overflow:auto;width:70%}.seafile-md-viewer-slate.side-panel-on{margin:20px 5%}.seafile-md-viewer .seafile-editor-outline{background-color:#fafaf9;border-left:0;height:80%;margin:40px auto;overflow-y:hidden;padding:0 .75rem 0 1.25rem;position:fixed;right:5%;top:68px;width:260px;z-index:1}.seafile-md-viewer .seafile-editor-outline:hover{overflow:auto}.seafile-md-viewer .seafile-editor-outline .active{border-left:1px solid #eb8205;color:#eb8205}.seafile-md-viewer .seafile-editor-outline-heading{border-bottom:1px solid #eee;color:#a0a0a0;padding:7px 0}.seafile-editor-outline .outline-h2,.seafile-editor-outline .outline-h3{font-size:14px;height:30px;margin-left:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seafile-editor-outline .outline-h2{padding-left:20px}.seafile-editor-outline .outline-h3{padding-left:40px}.seafile-md-viewer-side-panel{height:100%;overflow:hidden;position:fixed;right:0;top:87px;width:260px}.seafile-md-viewer-side-panel .seafile-history-side-panel{border-left:1px solid #e6e6dd;height:100%;width:100%}@media (max-width:991.8px){.seafile-editor-outline{display:none}.seafile-md-viewer-slate{margin:20px 40px;max-width:100%;width:calc(100% - 80px)}}@media (max-width:768px){.sf-md-viewer-topbar-first{display:none!important}}@media (min-width:768px){.sf-md-viewer-topbar-first-narrow{display:none!important}}.topbar-file-info{display:inline-block;margin-left:8px;-webkit-user-select:text;-ms-user-select:text;user-select:text}.topbar-file-info .file-title{align-items:center;display:flex;font-size:1.2rem;font-weight:700}.topbar-file-info .file-title .iconfont{font-size:.875rem}.topbar-file-info .file-title .file-star{color:#999;cursor:pointer;font-size:.875rem;margin-left:.5rem;vertical-align:text-bottom}.topbar-file-info .file-title .file-star .star{color:#999}.topbar-file-info .file-state{font-size:.8125rem}.topbar-file-info .file-state .file-modifier-name{margin-right:.5rem}.topbar-file-info .file-state .file-modifier-savedraft{color:#888;margin-left:.5rem}.sf-md-viewer-content{display:flex;flex:1 1;min-height:0;min-width:0}*{margin:0;padding:0}html,input,textarea{background:#eee;font-family:Roboto,sans-serif;line-height:1.4}body{overflow-y:hidden}p{margin:0}:not(pre)>code{background-color:#eee;font-family:monospace;padding:3px}img{max-width:100%}img.active{box-shadow:0 0 0 2px blue}input{background:#fafafa;border:2px solid #ddd;box-sizing:border-box;font-size:.85em;padding:.5em;width:100%}input:focus{border-color:blue;outline:0}input[type=checkbox]{width:auto}a,a:hover{color:#eb8205}.lds-ripple{display:inline-block;height:64px;position:relative;width:64px}.lds-ripple div{-webkit-animation:lds-ripple 1s cubic-bezier(0,.2,.8,1) infinite;animation:lds-ripple 1s cubic-bezier(0,.2,.8,1) infinite;border:4px solid #eb8205;border-radius:50%;opacity:1;position:absolute}.lds-ripple div:nth-child(2){-webkit-animation-delay:-.5s;animation-delay:-.5s}@-webkit-keyframes lds-ripple{0%{height:0;left:28px;opacity:1;top:28px;width:0}to{height:58px;left:-1px;opacity:0;top:-1px;width:58px}}@keyframes lds-ripple{0%{height:0;left:28px;opacity:1;top:28px;width:0}to{height:58px;left:-1px;opacity:0;top:-1px;width:58px}}.empty-loading-page{height:100%;position:fixed;width:100%}.page-centered{left:50%;position:fixed;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} +/*# sourceMappingURL=markdownEditor.d88bbc1a.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/markdownEditor.d88bbc1a.css.map b/media/assets/frontend/static/css/markdownEditor.d88bbc1a.css.map new file mode 100644 index 00000000000..0aaf40bac85 --- /dev/null +++ b/media/assets/frontend/static/css/markdownEditor.d88bbc1a.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/markdownEditor.d88bbc1a.css","mappings":"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","sources":["pages/markdown-editor/css/header-toolbar.css","css/common-add-tool.css","css/repo-tag.css","css/edit-filetag-popover.css","pages/markdown-editor/css/detail-list-view.css","css/markdown-viewer/markdown-editor.css","index.css"],"sourcesContent":[".seafile-btn-view-review {\n display: flex;\n align-items: center;\n}\n\n.seafile-btn-view-review .tag:hover {\n cursor: pointer;\n}\n\n.topbar-btn-container {\n display: flex;\n align-items: center;\n}\n\n.seafile-btn-add-review {\n margin-right: 10px;\n}\n\n.btn-new-draft {\n margin-right: 10px;\n}\n\n.collab-users-dropdown.dropdown {\n margin-right: 6px;\n}\n\n.btn-active[data-active=true] {\n color: #eb8205;\n}\n",".add-item-btn {\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n font-weight: 500;\n border-top: 1px solid #dedede;\n background: #fff;\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n position: relative;\n height: 30px;\n padding: 0 10px;\n overflow: hidden;\n}\n\n.add-item-btn:hover {\n background-color: #f5f5f5;\n}\n\n.add-item-btn .dtable-icon-add-table {\n margin-right: 10px;\n font-size: 12px;\n font-weight: 600;\n transform: none;\n}\n\n.add-item-btn .add-new-option {\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n",".tag-list-container {\n max-height: 15rem;\n list-style: none;\n overflow: auto;\n}\n\n.add-tag-link {\n color: #666;\n}\n\n.add-tag-link:hover {\n color: #444;\n text-decoration: none;\n background: #f5f5f5;\n}\n\n.tag-list-item {\n height: 2.5rem;\n}\n\n.tag-list-item.hl {\n background: #f5f5f5;\n}\n\n.tag-selected-icon {\n color: #999;\n}\n\n.tag-delete-icon {\n color: #999;\n font-size: 18px;\n}\n\n.tag-delete-icon:hover {\n color: #444;\n}\n\n.tag-dialog-back {\n color: #888;\n cursor: pointer;\n margin-right: 10px;\n}\n\n.tag-dialog-back:hover,\n.tag-dialog-back:focus {\n color: #444;\n}\n\n/* overwrite the code from seafile-ui */\n.tag-color-option .colorinput-color::before {\n display: none;\n}\n\n.tag-color-option .color-selected {\n opacity: 0;\n}\n\n.tag-color-option .colorinput-input:checked ~ .colorinput-color .color-selected {\n opacity: 1;\n}\n\n/* tag-color */\n.tag-color-popover .popover {\n max-width: 360px;\n}\n\n.tag-color-popover .tag-color {\n width: 20px;\n height: 20px;\n}\n\n.tag-color-popover .colorinput-color {\n width: 20px;\n height: 20px;\n}\n\n.tag-color-popover .tag-color-option .colorinput-input:checked ~ .colorinput-color .color-selected {\n font-size: 12px;\n}\n",".edit-filetag-popover .edit-filetag-popover-input {\n max-height: 30px;\n font-size: 14px;\n color: #212529;\n height: 30px;\n}\n\n.edit-filetag-popover .popover {\n padding: 10px;\n width: 200px;\n padding-bottom: 0px;\n}\n\n.edit-filetag-popover .tag-list-container {\n padding: 10px 0;\n}\n\n.edit-filetag-popover .tag-list-container .tag-not-found {\n opacity: 0.5;\n}\n\n.edit-filetag-popover .tag-list-item {\n height: 30px;\n}\n\n.edit-filetag-popover .tag-item {\n display: flex;\n align-items: center;\n max-width: 130px;\n margin: 0.25rem 0;\n padding: 0 0.5rem;\n width: fit-content;\n border-radius: 10px;\n}\n\n.edit-filetag-popover .tag-item .tag-name {\n color: #fff;\n font-size: 13px;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.edit-filetag-popover .add-item-btn {\n margin: 0 -10px;\n}\n",".dirent-table-container tr {\n border: none;\n}\n\n.dirent-table-container th,\n.dirent-table-container td {\n padding: 5px 3px;\n border: none;\n}\n\n.dirent-table-container th {\n font-size: 13px;\n text-align: left;\n font-weight: normal;\n color: #9c9c9c;\n}\n\n.dirent-table-container td {\n font-size: 14px;\n color: #333;\n word-break: break-all;\n}\n\n.dirent-table-container .file-tag-container th {\n vertical-align: top;\n list-style: none;\n padding-top: 8px;\n}\n\n.dirent-table-container .file-tag-container .tag-list {\n list-style: none;\n}\n\n.file-related-files th {\n vertical-align: top;\n}\n\n.file-related-files td i {\n padding: 0;\n}\n\n.file-related-files td ul {\n list-style: none;\n max-height: 100px;\n overflow-y: scroll;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n}\n\n.file-related-files td ul li {\n margin-bottom: 5px;\n}\n\n.file-related-files ul li a,\n.list-related-file-table tr td a {\n color: #333;\n}\n\n.list-related-file-body {\n min-height: 200px;\n max-height: 500px;\n overflow-y: scroll;\n}\n\n.detail-container .tab-content {\n height: calc(100% - 73px);\n}\n\n.detail-container .nav-item .nav-link, .detail-container .nav-item .nav-link i {\n margin: 0 auto;\n}\n","html, body, #root {\n width: 100%;\n height: 100%;\n}\n\n#root {\n display: flex;\n flex-direction: column;\n min-height: 0;\n min-width: 0;\n}\n\n.seafile-md-viewer {\n height: 100%;\n flex-direction: row;\n position: relative;\n float: none;\n}\n.sf-md-viewer-topbar-first,\n.sf-md-viewer-topbar-first-narrow {\n padding: 4px 10px;\n background-color: #fff;\n border-bottom: 1px solid #e5e5e5;\n box-shadow: 0 3px 2px -2px rgba(200,200,200,.15);\n flex-shrink:0;\n align-items: center;\n}\n.seafile-md-viewer-container {\n width: 100%;\n background-color: #fafaf9;\n height: 100%;\n position: relative;\n overflow: auto;\n display: flex;\n}\n.seafile-md-viewer-container.side-panel-on {\n width: calc(100% - 260px);\n}\n.seafile-md-viewer-slate {\n flex: auto;\n position: relative;\n margin: 20px 0px 20px 5%;\n max-width: calc(90% - 260px);\n}\n.seafile-md-viewer-main {\n flex: auto;\n overflow: auto;\n background:#fafaf9;\n width: 70%;\n}\n.seafile-md-viewer-slate.side-panel-on {\n margin: 20px 5%;\n}\n/* outline */\n.seafile-md-viewer .seafile-editor-outline {\n background-color: #fafaf9;\n margin: 40px auto;\n padding: 0 0.75rem 0 1.25rem;\n border-left: 0;\n width: 260px;\n position: fixed;\n top: 68px;\n overflow-y: hidden;\n right: 5%;\n z-index: 1;\n height: 80%;\n}\n.seafile-md-viewer .seafile-editor-outline:hover {\n overflow: auto;\n}\n.seafile-md-viewer .seafile-editor-outline .active {\n color: #eb8205;\n border-left: 1px solid #eb8205;\n}\n.seafile-md-viewer .seafile-editor-outline-heading {\n padding: 7px 0;\n border-bottom: 1px solid #eee;\n color: #a0a0a0;\n}\n.seafile-editor-outline .outline-h2, .seafile-editor-outline .outline-h3 {\n height: 30px;\n margin-left: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n}\n.seafile-editor-outline .outline-h2 {\n padding-left: 20px;\n}\n.seafile-editor-outline .outline-h3 {\n padding-left: 40px;\n}\n/* side-panel */\n.seafile-md-viewer-side-panel {\n height: 100%;\n overflow: hidden;\n width: 260px;\n position: fixed;\n right: 0;\n top: 87px;\n}\n.seafile-md-viewer-side-panel .seafile-history-side-panel {\n width: 100%;\n height: 100%;\n}\n.seafile-md-viewer-side-panel .seafile-history-side-panel {\n border-left: 1px solid #e6e6dd;\n}\n@media (max-width:991.8px) {\n .seafile-editor-outline {\n display: none;\n }\n .seafile-md-viewer-slate {\n width: calc(100% - 80px);\n margin: 20px 40px;\n max-width: 100%;\n }\n}\n\n@media (max-width: 768px) {\n .sf-md-viewer-topbar-first {\n display: none !important;\n }\n}\n@media (min-width: 768px) {\n .sf-md-viewer-topbar-first-narrow {\n display: none !important;\n }\n}\n\n/* toolbar */\n.topbar-file-info {\n display: inline-block;\n margin-left: 8px;\n /*\n only select file info text\n */\n user-select: text;\n}\n.topbar-file-info .file-title {\n font-size: 1.2rem;\n font-weight: bold;\n display: flex;\n align-items: center;\n}\n\n.topbar-file-info .file-title .iconfont {\n font-size: 0.875rem;\n}\n\n.topbar-file-info .file-title .file-star {\n font-size: 0.875rem;\n cursor: pointer;\n margin-left: 0.5rem;\n vertical-align: text-bottom;\n color: #999;\n}\n\n.topbar-file-info .file-title .file-star .star {\n color: #999;\n}\n\n.topbar-file-info .file-state {\n font-size: 0.8125rem;\n}\n\n.topbar-file-info .file-state .file-modifier-name {\n margin-right: 0.5rem;\n}\n\n.topbar-file-info .file-state .file-modifier-savedraft {\n margin-left: 0.5rem;\n color: #888;\n}\n\n.sf-md-viewer-content {\n flex: 1;\n display: flex;\n min-height: 0;\n min-width: 0;\n}","* {\n margin: 0;\n padding: 0;\n}\nhtml,\ninput,\ntextarea {\n font-family: 'Roboto', sans-serif;\n line-height: 1.4;\n background: #eee;\n}\n\nbody {\n overflow-y: hidden;\n}\n\np {\n margin: 0;\n}\n\n:not(pre) > code {\n font-family: monospace;\n background-color: #eee;\n padding: 3px;\n}\n\nimg {\n max-width: 100%;\n}\n\nimg.active {\n box-shadow: 0 0 0 2px blue;\n}\n\ninput {\n box-sizing: border-box;\n font-size: 0.85em;\n width: 100%;\n padding: 0.5em;\n border: 2px solid #ddd;\n background: #fafafa;\n}\n\ninput:focus {\n outline: 0;\n border-color: blue;\n}\ninput[type=\"checkbox\"] {\n width: auto;\n}\n\na,\na:hover {\n color: #eb8205;\n}\n\n.lds-ripple {\n display: inline-block;\n position: relative;\n width: 64px;\n height: 64px;\n}\n.lds-ripple div {\n position: absolute;\n border: 4px solid #eb8205;\n opacity: 1;\n border-radius: 50%;\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n}\n.lds-ripple div:nth-child(2) {\n animation-delay: -0.5s;\n}\n@keyframes lds-ripple {\n 0% {\n top: 28px;\n left: 28px;\n width: 0;\n height: 0;\n opacity: 1;\n }\n 100% {\n top: -1px;\n left: -1px;\n width: 58px;\n height: 58px;\n opacity: 0;\n }\n}\n.empty-loading-page {\n position: fixed;\n height: 100%;\n width: 100%;\n}\n\n.page-centered {\n position: fixed;\n top: 50%;\n left: 50%;\n /* bring your own prefixes */\n transform: translate(-50%, -50%);\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/orgAdmin.bb6a05c5.css b/media/assets/frontend/static/css/orgAdmin.bb6a05c5.css new file mode 100644 index 00000000000..75da4194b37 --- /dev/null +++ b/media/assets/frontend/static/css/orgAdmin.bb6a05c5.css @@ -0,0 +1,2 @@ +.system-statistic-time-range{align-items:center;display:flex;font-size:13px;margin:15px 0 25px}.sys-stat-tool{color:#333;display:flex;font-size:13px}.system-statistic-item{border:1px solid #c5c5c5;cursor:pointer;padding:5px 10px}.sys-stat-tool .item-active,.system-statistic-item:hover{background:#efefef}.system-statistic-input-container{align-items:center;display:flex;margin-left:1rem}.system-statistic-input{height:31px;width:120px}.error-tip{color:red}.statistic-traffic-tab{color:#333;display:flex;font-size:13px;margin-top:10px}.statistic-traffic-tab .statistic-traffic-tab-item{border-bottom:2px solid transparent;color:#8a948f;cursor:pointer;margin-right:10px;padding:3px 0}.statistic-traffic-tab .statistic-traffic-tab-item.active,.statistic-traffic-tab .statistic-traffic-tab-item:hover{border-bottom:2px solid #eb8025;color:#eb8025}.statistic-reports-title{background:#f7f7f7;color:#222;margin-top:15px;padding:3px 10px}.statistic-reports-submit{margin-left:15px}.statistic-reports-wrapper{align-items:center;display:flex;margin-top:15px}.statistic-reports-input{height:30px;width:80px}.statistic-reports-tip{font-size:13px;padding:0 10px}.system-statistic-connect{line-height:1;padding:0 5px}.system-statistic-button{height:31px;margin-left:1rem}.rc-calendar table{table-layout:auto}.rc-calendar tbody tr{height:1.75rem}.web-setting-icon-btn{font-size:1rem;line-height:1.5;min-width:0}.web-setting-icon-btn-submit{color:green}.web-setting-icon-btn-cancel{color:#666}.web-setting-textarea{min-height:7rem}.web-setting-label{word-break:break-word}.paginator{font-size:14px;margin:10px 0;text-align:center}.cur-view-path.org-user-nav{padding:0 1rem}.cur-view-path.org-admin-user-nav{padding:0 16px 1px}.cur-view-path .operation-item{font-size:12px;height:24px;line-height:24px}.cur-view-container .no-group,.cur-view-container .no-libraty,.cur-view-container .no-member{color:#a4a4a4;margin:30px 0;text-align:center}.cur-view-path .sf-heading a{color:#eb8205}.cur-view-subcontainer{margin:10px}.cur-view-subcontainer table{margin:8px 0 40px}.org-departments>div{height:100%}.org-members .cur-view-content{padding-bottom:40px}.cur-view-path button:hover{cursor:pointer}.audit-unselect-item{background:#f2f2f2;border:1px solid #ccc;border-radius:2px;cursor:pointer;display:inline-block;font-size:14px;margin:10px 5px 0;padding:1px 8px}.audit-unselect-item:hover{background-color:#ddd}.no-deco,.no-deco:focus,.no-deco:hover{text-decoration:none}.cur-view-path .nav .nav-item a{padding:7px 10px} +/*# sourceMappingURL=orgAdmin.bb6a05c5.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/orgAdmin.bb6a05c5.css.map b/media/assets/frontend/static/css/orgAdmin.bb6a05c5.css.map new file mode 100644 index 00000000000..da36ab231bf --- /dev/null +++ b/media/assets/frontend/static/css/orgAdmin.bb6a05c5.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/orgAdmin.bb6a05c5.css","mappings":"AAAA,6BAGE,kBAAmB,CADnB,YAAa,CAEb,cAAe,CAHf,kBAIF,CAEA,eAGE,UAAW,CAFX,YAAa,CACb,cAEF,CAEA,uBACE,wBAAyB,CAEzB,cAAe,CADf,gBAEF,CAMA,yDACE,kBACF,CAEA,kCAGE,kBAAmB,CAFnB,YAAa,CACb,gBAEF,CAEA,wBACE,WAAY,CACZ,WACF,CAEA,WACE,SACF,CAEA,uBAGE,UAAW,CAFX,YAAa,CACb,cAAe,CAEf,eACF,CAEA,mDAGE,mCAAoC,CAEpC,aAAc,CADd,cAAe,CAHf,iBAAkB,CAClB,aAIF,CAOA,mHAEE,+BAAgC,CADhC,aAEF,CAEA,yBACE,kBAAmB,CAEnB,UAAc,CADd,eAAgB,CAEhB,gBACF,CAEA,0BACE,gBACF,CAEA,2BAEE,kBAAmB,CADnB,YAAa,CAEb,eACF,CAEA,yBAEE,WAAY,CADZ,UAEF,CAEA,uBAEE,cAAe,CADf,cAEF,CAEA,0BAEE,aAAc,CADd,aAEF,CAEA,yBACE,WAAY,CACZ,gBACF,CAEA,mBACE,iBACF,CAEA,sBACE,cACF,CC9GA,sBACE,cAAe,CACf,eAAgB,CAChB,WACF,CACA,6BACE,WACF,CACA,6BACE,UACF,CACA,sBACE,eACF,CACA,mBACE,qBACF,CChBA,WAGI,cAAe,CADf,aAAc,CADd,iBAGJ,CAEA,4BACI,cACJ,CCRA,kCACE,kBACF,CCFA,+BACE,cAAe,CACf,WAAY,CACZ,gBACF,CACA,6FACE,aAAc,CAEd,aAAc,CADd,iBAEF,CACA,6BACE,aACF,CACA,uBACE,WACF,CACA,6BACE,iBACF,CACA,qBACE,WACF,CACA,+BACE,mBACF,CACA,4BACE,cACF,CC3BA,qBAKE,kBAAmB,CAHnB,qBAAsB,CACtB,iBAAkB,CAGlB,cAAe,CALf,oBAAqB,CAMrB,cAAe,CACf,iBAAkB,CAJlB,eAKF,CACA,2BACE,qBACF,CACA,uCAGE,oBACF,CACA,gCACE,gBACF","sources":["css/system-stat.css","css/system-admin-web-settings.css","css/org-admin-paginator.css","css/org-admin-user.css","css/org-department-item.css","css/org-logs.css"],"sourcesContent":[".system-statistic-time-range {\n margin: 15px 0 25px;\n display: flex;\n align-items: center;\n font-size: 13px;\n}\n\n.sys-stat-tool {\n display: flex;\n font-size: 13px;\n color: #333;\n}\n\n.system-statistic-item {\n border: 1px solid #c5c5c5;\n padding: 5px 10px;\n cursor: pointer;\n}\n\n.system-statistic-item:hover {\n background: #efefef;\n}\n\n.sys-stat-tool .item-active {\n background: #efefef;\n}\n\n.system-statistic-input-container {\n display: flex;\n margin-left: 1rem;\n align-items: center;\n}\n\n.system-statistic-input {\n height: 31px;\n width: 120px;\n}\n\n.error-tip {\n color: red;\n}\n\n.statistic-traffic-tab {\n display: flex;\n font-size: 13px;\n color: #333;\n margin-top: 10px;\n}\n\n.statistic-traffic-tab .statistic-traffic-tab-item {\n margin-right: 10px;\n padding: 3px 0;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n color: #8a948f;\n}\n\n.statistic-traffic-tab .statistic-traffic-tab-item:hover {\n color: #eb8025;\n border-bottom: 2px solid #eb8025;\n}\n\n.statistic-traffic-tab .statistic-traffic-tab-item.active {\n color: #eb8025;\n border-bottom: 2px solid #eb8025;\n}\n\n.statistic-reports-title {\n background: #f7f7f7;\n margin-top: 15px;\n color: #222222;\n padding: 3px 10px;\n}\n\n.statistic-reports-submit {\n margin-left: 15px;\n}\n\n.statistic-reports-wrapper {\n display: flex;\n align-items: center;\n margin-top: 15px;\n}\n\n.statistic-reports-input {\n width: 80px;\n height: 30px;\n}\n\n.statistic-reports-tip {\n padding: 0 10px;\n font-size: 13px;\n}\n\n.system-statistic-connect {\n padding: 0 5px;\n line-height: 1;\n}\n\n.system-statistic-button {\n height: 31px;\n margin-left: 1rem;\n}\n\n.rc-calendar table {\n table-layout: initial;\n}\n\n.rc-calendar tbody tr {\n height: 1.75rem;\n}\n",".web-setting-icon-btn {\n font-size: 1rem;\n line-height: 1.5;\n min-width: 0;\n}\n.web-setting-icon-btn-submit {\n color: green;\n}\n.web-setting-icon-btn-cancel {\n color: #666;\n}\n.web-setting-textarea {\n min-height: 7rem;\n}\n.web-setting-label {\n word-break: break-word;\n}\n",".paginator {\n text-align: center;\n margin: 10px 0;\n font-size: 14px;\n}\n\n.cur-view-path.org-user-nav {\n padding: 0 1rem;\n}\n",".cur-view-path.org-admin-user-nav {\n padding: 0 16px 1px;\n}\n",".cur-view-path .operation-item {\n font-size: 12px;\n height: 24px;\n line-height: 24px;\n}\n.cur-view-container .no-libraty, .cur-view-container .no-member, .cur-view-container .no-group {\n color: #a4a4a4;\n text-align: center;\n margin: 30px 0;\n}\n.cur-view-path .sf-heading a {\n color: #eb8205;\n}\n.cur-view-subcontainer {\n margin: 10px;\n}\n.cur-view-subcontainer table {\n margin: 8px 0 40px;\n}\n.org-departments>div{\n height: 100%;\n}\n.org-members .cur-view-content {\n padding-bottom: 40px;\n}\n.cur-view-path button:hover {\n cursor: pointer;\n}\n",".audit-unselect-item {\n display: inline-block;\n border: 1px solid #ccc;\n border-radius: 2px;\n padding: 1px 8px;\n background: #f2f2f2;\n cursor: pointer;\n font-size: 14px;\n margin: 10px 5px 0;\n}\n.audit-unselect-item:hover {\n background-color: #ddd;\n}\n.no-deco,\n.no-deco:hover,\n.no-deco:focus {\n text-decoration: none;\n}\n.cur-view-path .nav .nav-item a {\n padding: 7px 10px;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/repoFolderTrash.d4170c41.css b/media/assets/frontend/static/css/repoFolderTrash.d4170c41.css new file mode 100644 index 00000000000..8d875f554cf --- /dev/null +++ b/media/assets/frontend/static/css/repoFolderTrash.d4170c41.css @@ -0,0 +1,2 @@ +body{overflow:hidden}#wrapper{height:100%}.top-header{background:#f4f4f7;border-bottom:1px solid #e8e8e8;flex-shrink:0;padding:.5rem 1rem}.go-back{color:silver;font-size:1.75rem;left:-40px;position:absolute;top:-5px}.op-bar{background:#f2f2f2;border-radius:2px;padding:9px 10px}.more{background:#efefef;border:0;color:#777}.more:hover{background:#dfdfdf;color:#000}.clean{border-color:#ccc;border-radius:2px;font-weight:400;height:30px;line-height:28px;min-width:55px;padding:0 .5rem} +/*# sourceMappingURL=repoFolderTrash.d4170c41.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/repoFolderTrash.d4170c41.css.map b/media/assets/frontend/static/css/repoFolderTrash.d4170c41.css.map new file mode 100644 index 00000000000..bcdd1d1e98c --- /dev/null +++ b/media/assets/frontend/static/css/repoFolderTrash.d4170c41.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/repoFolderTrash.d4170c41.css","mappings":"AAAA,KACE,eACF,CACA,SACE,WACF,CACA,YACE,kBAAmB,CACnB,+BAAgC,CAEhC,aAAc,CADd,kBAEF,CACA,SACE,YAAc,CACd,iBAAkB,CAElB,UAAW,CADX,iBAAkB,CAElB,QACF,CACA,QAEE,kBAAmB,CACnB,iBAAkB,CAFlB,gBAGF,CACA,MACE,kBAAmB,CACnB,QAAS,CACT,UACF,CACA,YAEE,kBAAmB,CADnB,UAEF,CACA,OACE,iBAAkB,CAClB,iBAAkB,CAGlB,eAAmB,CAFnB,WAAY,CACZ,gBAAiB,CAGjB,cAAe,CADf,eAEF","sources":["css/repo-folder-trash.css"],"sourcesContent":["body {\n overflow: hidden;\n}\n#wrapper {\n height: 100%;\n}\n.top-header {\n background: #f4f4f7;\n border-bottom: 1px solid #e8e8e8;\n padding: .5rem 1rem;\n flex-shrink: 0;\n}\n.go-back {\n color: #c0c0c0;\n font-size: 1.75rem;\n position: absolute;\n left: -40px;\n top: -5px;\n}\n.op-bar {\n padding: 9px 10px;\n background: #f2f2f2;\n border-radius: 2px;\n}\n.more {\n background: #efefef;\n border: 0;\n color: #777;\n}\n.more:hover {\n color: #000;\n background: #dfdfdf;\n}\n.clean {\n border-color: #ccc;\n border-radius: 2px;\n height: 30px;\n line-height: 28px;\n font-weight: normal;\n padding: 0 0.5rem;\n min-width: 55px;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/repoHistory.f0ad8622.css b/media/assets/frontend/static/css/repoHistory.f0ad8622.css new file mode 100644 index 00000000000..e4563a9a865 --- /dev/null +++ b/media/assets/frontend/static/css/repoHistory.f0ad8622.css @@ -0,0 +1,2 @@ +.commit-detail-item{list-style-type:none}body{overflow:hidden}#wrapper{height:100%}.top-header{background:#f4f4f7;border-bottom:1px solid #e8e8e8;flex-shrink:0;padding:.5rem 1rem}.details{color:#666;font-size:12px;margin-left:.25rem;text-decoration:underline}.commit-label{background:#eee;border-radius:3px;margin:0 2px;padding:1px 5px;white-space:nowrap}.go-back{color:silver;font-size:1.75rem;left:-40px;position:absolute;top:-5px} +/*# sourceMappingURL=repoHistory.f0ad8622.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/repoHistory.f0ad8622.css.map b/media/assets/frontend/static/css/repoHistory.f0ad8622.css.map new file mode 100644 index 00000000000..d781b917a62 --- /dev/null +++ b/media/assets/frontend/static/css/repoHistory.f0ad8622.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/repoHistory.f0ad8622.css","mappings":"AAAA,oBACE,oBACF,CCFA,KACE,eACF,CACA,SACE,WACF,CACA,YACE,kBAAmB,CACnB,+BAAgC,CAEhC,aAAc,CADd,kBAEF,CACA,SAEE,UAAW,CADX,cAAe,CAGf,kBAAmB,CADnB,yBAEF,CACA,cAGE,eAAgB,CAChB,iBAAkB,CAFlB,YAAa,CADb,eAAgB,CAIhB,kBACF,CACA,SACE,YAAc,CACd,iBAAkB,CAElB,UAAW,CADX,iBAAkB,CAElB,QACF","sources":["css/commit-details.css","css/repo-history.css"],"sourcesContent":[".commit-detail-item {\n list-style-type: none;\n}\n","body {\n overflow: hidden;\n}\n#wrapper {\n height: 100%;\n}\n.top-header {\n background: #f4f4f7;\n border-bottom: 1px solid #e8e8e8;\n padding: .5rem 1rem;\n flex-shrink: 0;\n}\n.details {\n font-size: 12px;\n color: #666;\n text-decoration: underline;\n margin-left: .25rem;\n}\n.commit-label {\n padding: 1px 5px;\n margin: 0 2px;\n background: #eee;\n border-radius: 3px;\n white-space: nowrap;\n}\n.go-back {\n color: #c0c0c0;\n font-size: 1.75rem;\n position: absolute;\n left: -40px;\n top: -5px;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/repoSnapshot.c6bbee77.css b/media/assets/frontend/static/css/repoSnapshot.c6bbee77.css new file mode 100644 index 00000000000..7d1f2b7f24b --- /dev/null +++ b/media/assets/frontend/static/css/repoSnapshot.c6bbee77.css @@ -0,0 +1,2 @@ +body{overflow:hidden}#wrapper{height:100%}.top-header{background:#f4f4f7;border-bottom:1px solid #e8e8e8;flex-shrink:0;padding:.5rem 1rem}.go-back{color:silver;font-size:1.75rem;left:-40px;position:absolute;top:-5px}.op-bar{background:#f2f2f2;border-radius:2px;padding:9px 10px}.op-bar-btn{border-color:#ccc;border-radius:2px;font-weight:400;height:30px;line-height:28px;min-width:55px;padding:0 .5rem}.heading-commit-time{font-size:60%;font-weight:400} +/*# sourceMappingURL=repoSnapshot.c6bbee77.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/repoSnapshot.c6bbee77.css.map b/media/assets/frontend/static/css/repoSnapshot.c6bbee77.css.map new file mode 100644 index 00000000000..3275358ddf9 --- /dev/null +++ b/media/assets/frontend/static/css/repoSnapshot.c6bbee77.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/repoSnapshot.c6bbee77.css","mappings":"AAAA,KACE,eACF,CACA,SACE,WACF,CACA,YACE,kBAAmB,CACnB,+BAAgC,CAEhC,aAAc,CADd,kBAEF,CACA,SACE,YAAc,CACd,iBAAkB,CAElB,UAAW,CADX,iBAAkB,CAElB,QACF,CACA,QAEE,kBAAmB,CACnB,iBAAkB,CAFlB,gBAGF,CACA,YACE,iBAAkB,CAClB,iBAAkB,CAGlB,eAAmB,CAFnB,WAAY,CACZ,gBAAiB,CAGjB,cAAe,CADf,eAEF,CACA,qBAEE,aAAc,CADd,eAEF","sources":["css/repo-snapshot.css"],"sourcesContent":["body {\n overflow: hidden;\n}\n#wrapper {\n height: 100%;\n}\n.top-header {\n background: #f4f4f7;\n border-bottom: 1px solid #e8e8e8;\n padding: .5rem 1rem;\n flex-shrink: 0;\n}\n.go-back {\n color: #c0c0c0;\n font-size: 1.75rem;\n position: absolute;\n left: -40px;\n top: -5px;\n}\n.op-bar {\n padding: 9px 10px;\n background: #f2f2f2;\n border-radius: 2px;\n}\n.op-bar-btn {\n border-color: #ccc;\n border-radius: 2px;\n height: 30px;\n line-height: 28px;\n font-weight: normal;\n padding: 0 0.5rem;\n min-width: 55px;\n}\n.heading-commit-time {\n font-weight: normal;\n font-size: 60%;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/sdocFileHistory.f936c666.css b/media/assets/frontend/static/css/sdocFileHistory.f936c666.css new file mode 100644 index 00000000000..494095b8d3e --- /dev/null +++ b/media/assets/frontend/static/css/sdocFileHistory.f936c666.css @@ -0,0 +1,2 @@ +.go-back{color:silver;margin-right:.75rem}.go-back:hover{color:#f93;cursor:pointer}.item-active{background-color:#fdc297!important;color:#fff}.item-active i{color:#fff}.history-list-item .history-info{flex:1 1;padding:0 .5rem}.history-list-item .history-operation{align-items:center;display:flex;justify-content:center;width:1.5rem}.history-info .time{color:#000}.history-info .owner{align-items:center;color:#888;display:flex;margin-top:.25rem}.owner .squire-icon{background-color:#549b5a;height:.5rem;margin-right:.25rem;width:.5rem}.history-body .dropdown-menu{min-width:8rem}.history-body .dropdown-menu a{color:#6e7687;text-decoration:none}.sdoc-file-history .sdoc-file-history-container{flex:1 1;overflow-x:hidden}.sdoc-file-history .sdoc-file-history-header{background-color:#fff;border-bottom:1px solid #e5e5e5;height:50px}.sdoc-file-history .sdoc-file-history-header .sdoc-file-history-header-left{flex:1 1;font-size:1.25rem}.sdoc-file-history .sdoc-file-history-header .file-name{flex:1 1}.sdoc-file-history .sdoc-file-history-header .sdoc-file-history-header-right{height:100%}.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-container{border:1px solid #e5e5e5;border-radius:3px;height:32px}.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-divider{border-right:1px solid #e5e5e5;height:100%;width:1px}.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-last,.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-next{height:100%;padding:0 8px}.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-last .fas,.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-next .fas{color:#000;opacity:.5}.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-last:hover,.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-next:hover{background-color:#f5f5f5;cursor:pointer;opacity:.75}.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-last:hover .fas,.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-next:hover .fas{opacity:.75}.sdoc-file-history .sdoc-file-history-content{background-color:#f5f5f5;flex:1 1;min-height:0;overflow-y:scroll;padding:20px 40px}.sdoc-file-history .sdoc-file-history-content .sdoc-file-history-viewer{background-color:#fff;border:1px solid #e6e6dd;flex:1 1;min-height:120px;width:100%;word-break:break-word}.sdoc-file-history .sdoc-file-history-content .sdoc-scroll-container{overflow:hidden;position:relative!important;width:100%}.sdoc-file-history .sdoc-file-history-content .sdoc-article-container{margin-left:0!important;padding-bottom:0;padding-top:0;width:100%}.sdoc-file-history .sdoc-file-history-content .article{margin:0;width:100%}.sdoc-file-history .sdoc-file-history-panel{border-left:1px solid #e5e5e5;width:260px}.sdoc-file-history .sdoc-file-history-panel .sdoc-file-history-select-range{background-color:#fff;border-bottom:1px solid #e5e5e5;height:50px;padding:10px 18px}.sdoc-file-history .sdoc-file-history-panel .sdoc-file-history-select-range-title{font-size:1rem;font-weight:bolder;height:100%;line-height:29px;width:100%}.sdoc-file-history .sdoc-file-history-panel .sdoc-file-history-diff-switch{border-top:1px solid #e5e5e5;height:50px;padding:0 18px}.sdoc-file-history .sdoc-file-history-diff-switch .custom-switch{align-items:center;cursor:pointer;display:flex;justify-content:space-between;padding-left:0;width:100%}.sdoc-file-history .sdoc-file-history-diff-switch .custom-switch-description{flex:1 1;margin-left:0;padding-right:8px}.sdoc-file-history-versions{flex:1 1;flex-direction:column;min-height:0;overflow:auto}.sdoc-file-history-versions .history-list-item{border-bottom:1px solid #e5e5e5;display:flex;flex:1 1;padding:5px 10px}.sdoc-file-history-versions .history-list-item.history-month-title{padding:5px 16px}.sdoc-file-history-versions .history-list-item:last-child{border-bottom:none}.sdoc-file-history-versions .history-list-item:not(.item-active):hover{background-color:#f5f5f5;cursor:pointer}.sdoc-file-history-versions .history-list-item .history-operation{flex-shrink:0}.sdoc-file-history-versions .history-list-item .history-info{overflow:hidden}.sdoc-file-history-versions .history-list-item .history-info .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.sdoc-file-history-versions .history-list-item.item-active .history-info .name{color:#ff8000}.sdoc-file-history-versions .history-list-item .history-operation:hover{cursor:pointer}.sdoc-file-history-versions .history-list-item .history-operation a.fas{color:#888}.sdoc-file-history-versions .history-list-item .history-operation:hover a.fas{color:#333}.sdoc-file-history-versions .history-list-item.item-active{background-color:#ffecd9!important}.sdoc-file-history-versions .history-list-item.item-active .history-info .time{color:#ff8000}.history-info .owner{min-height:22.5px}.sdoc-file-history-versions .dropdown-menu{min-width:8rem}.history-content .main-panel{flex:1 1 auto}.history-content .history-side-panel{background-color:#fff;border-left:1px solid #e5e5e5;display:flex;flex:0 0 auto;flex-direction:column;-webkit-user-select:none;-ms-user-select:none;user-select:none}.history-content .history-side-panel .history-side-panel-title{background-color:#fafaf9;border-bottom:1px solid #e5e5e5;font-size:1rem;font-weight:bolder;height:50px;line-height:50px;padding:0 10px}.sdoc-file-history-versions .history-info .rename-container,.sdoc-file-history-versions .history-info .rename-container input{box-sizing:border-box;max-width:100%;min-width:100%;overflow:hidden;width:100%}.sdoc-file-history-versions .history-info .rename-container input:focus{box-shadow:none}.sdoc-file-history-versions .daily-history-detail-toggle-container{display:flex;flex-shrink:0;height:100%;justify-content:center;width:20px}.sdoc-file-history-versions .daily-history-detail-toggle-container .daily-history-detail-toggle{align-items:center;display:flex;height:20px;justify-content:center;width:20px}.sdoc-file-history-versions .daily-history-detail-no-more{height:20px;margin-right:14px;width:20px}.sdoc-file-history-versions .daily-history-detail-toggle .dropdown-toggle{color:#888;font-size:18px;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);transition:all .1s}.sdoc-file-history-versions .daily-history-detail-toggle.daily-history-detail-show .dropdown-toggle{-webkit-transform:none;-webkit-transform:initial;transform:none}.sdoc-file-history-versions .daily-history-detail-toggle .dropdown-toggle:hover{color:#333;cursor:pointer}@media (min-width:992px){.history-side-panel{width:260px}}@media (max-width:768px){.sdoc-file-history .sdoc-file-history-content{padding:0}.sdoc-file-history .sdoc-file-history-content .sdoc-file-history-viewer{border:none}.markdown-viewer-render-content{margin:20px}.markdown-viewer-render-content .diff-view{padding:20px}} +/*# sourceMappingURL=sdocFileHistory.f936c666.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/sdocFileHistory.f936c666.css.map b/media/assets/frontend/static/css/sdocFileHistory.f936c666.css.map new file mode 100644 index 00000000000..6c03b3b3fe4 --- /dev/null +++ b/media/assets/frontend/static/css/sdocFileHistory.f936c666.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/sdocFileHistory.f936c666.css","mappings":"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","sources":["components/common/go-back/index.css","css/history-record-item.css","pages/sdoc/sdoc-file-history/index.css"],"sourcesContent":[".go-back {\n margin-right: 0.75rem;\n color: #c0c0c0;\n}\n\n.go-back:hover {\n color: #ff9933;\n cursor: pointer;\n}\n",".item-active {\n color: #fff;\n background-color: #fdc297 !important;\n}\n\n.item-active i {\n color: #fff;\n}\n\n.history-list-item .history-info {\n flex: 1;\n padding: 0 0.5rem;\n}\n\n.history-list-item .history-operation {\n width: 1.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.history-info .time {\n color: #000;\n}\n\n.history-info .owner {\n margin-top: 0.25rem;\n color: #888;\n display: flex;\n align-items: center;\n}\n\n.owner .squire-icon {\n width: 0.5rem;\n height: 0.5rem;\n background-color: #549b5a;\n margin-right: 0.25rem;\n}\n\n.history-body .dropdown-menu {\n min-width: 8rem;\n}\n\n.history-body .dropdown-menu a {\n text-decoration: none;\n color: #6e7687;\n}\n",".sdoc-file-history .sdoc-file-history-container {\n flex: 1;\n overflow-x: hidden;\n}\n\n.sdoc-file-history .sdoc-file-history-header {\n height: 50px;\n border-bottom: 1px solid #e5e5e5;\n background-color: #fff;\n}\n\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-history-header-left {\n font-size: 1.25rem;\n flex: 1;\n}\n\n.sdoc-file-history .sdoc-file-history-header .file-name {\n flex: 1;\n}\n\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-history-header-right {\n height: 100%;\n}\n\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-container {\n height: 32px;\n border: 1px solid #e5e5e5;\n border-radius: 3px;\n}\n\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-divider {\n border-right: 1px solid #e5e5e5;\n height: 100%;\n width: 1px;\n}\n\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-last,\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-next {\n padding: 0 8px;\n height: 100%;\n}\n\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-last .fas,\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-next .fas {\n color: #000;\n opacity: .5;\n}\n\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-last:hover,\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-next:hover {\n cursor: pointer;\n opacity: .75;\n background-color: #F5F5F5;\n}\n\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-last:hover .fas,\n.sdoc-file-history .sdoc-file-history-header .sdoc-file-changes-next:hover .fas {\n opacity: .75;\n}\n\n.sdoc-file-history .sdoc-file-history-content {\n flex: 1;\n min-height: 0;\n padding: 20px 40px;\n background-color: #F5F5F5;\n overflow-y: scroll;\n}\n\n.sdoc-file-history .sdoc-file-history-content .sdoc-file-history-viewer {\n width: 100%;\n min-height: 120px;\n flex: 1;\n background-color: #fff;\n word-break: break-word;\n border: 1px solid #e6e6dd;\n}\n\n.sdoc-file-history .sdoc-file-history-content .sdoc-scroll-container {\n position: relative !important;\n overflow: hidden;\n width: 100%;\n}\n\n.sdoc-file-history .sdoc-file-history-content .sdoc-article-container {\n width: 100%;\n padding-top: 0;\n padding-bottom: 0;\n margin-left: 0 !important;\n}\n\n.sdoc-file-history .sdoc-file-history-content .article {\n width: 100%;\n margin: 0;\n}\n\n/* panel */\n.sdoc-file-history .sdoc-file-history-panel {\n width: 260px;\n border-left: 1px solid #e5e5e5;\n}\n\n.sdoc-file-history .sdoc-file-history-panel .sdoc-file-history-select-range {\n padding: 10px 18px;\n height: 50px;;\n border-bottom: 1px solid #e5e5e5;\n background-color: #fff;\n}\n\n.sdoc-file-history .sdoc-file-history-panel .sdoc-file-history-select-range-title {\n height: 100%;\n width: 100%;\n font-size: 1rem;\n font-weight: bolder;\n line-height: 29px;\n}\n\n.sdoc-file-history .sdoc-file-history-panel .sdoc-file-history-diff-switch {\n padding: 0 18px;\n height: 50px;;\n border-top: 1px solid #e5e5e5;\n}\n\n.sdoc-file-history .sdoc-file-history-diff-switch .custom-switch {\n width: 100%;\n padding-left: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n}\n\n.sdoc-file-history .sdoc-file-history-diff-switch .custom-switch-description {\n margin-left: 0;\n flex: 1;\n padding-right: 8px;\n}\n\n/* history versions */\n.sdoc-file-history-versions {\n flex: 1; \n flex-direction: column;\n min-height: 0;\n overflow: auto;\n}\n\n.sdoc-file-history-versions .history-list-item {\n padding: 5px 10px;\n display: flex;\n flex: 1;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.sdoc-file-history-versions .history-list-item.history-month-title {\n padding: 5px 16px;\n}\n\n.sdoc-file-history-versions .history-list-item:last-child {\n border-bottom: none;\n}\n\n.sdoc-file-history-versions .history-list-item:not(.item-active):hover {\n background-color: #F5F5F5;\n cursor: pointer;\n}\n\n.sdoc-file-history-versions .history-list-item .history-operation {\n flex-shrink: 0;\n}\n\n.sdoc-file-history-versions .history-list-item .history-info {\n overflow: hidden;\n}\n\n.sdoc-file-history-versions .history-list-item .history-info .name {\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sdoc-file-history-versions .history-list-item.item-active .history-info .name{\n color: #ff8000;\n}\n\n.sdoc-file-history-versions .history-list-item .history-operation:hover {\n cursor: pointer;\n}\n\n.sdoc-file-history-versions .history-list-item .history-operation a.fas {\n color: #888;\n}\n\n.sdoc-file-history-versions .history-list-item .history-operation:hover a.fas {\n color: #333;\n}\n\n.sdoc-file-history-versions .history-list-item.item-active {\n background-color: #FFECD9 !important;\n}\n\n.sdoc-file-history-versions .history-list-item.item-active .history-info .time {\n color: #ff8000;\n}\n\n.history-info .owner {\n min-height: 22.5px;\n}\n\n.sdoc-file-history-versions .dropdown-menu {\n min-width: 8rem;\n}\n\n.history-content .main-panel {\n flex: 1 1 auto;\n}\n\n.history-content .history-side-panel {\n flex: 0 0 auto;\n user-select: none;\n border-left: 1px solid #e5e5e5;\n background-color: #fff;\n display: flex;\n flex-direction: column;\n}\n\n.history-content .history-side-panel .history-side-panel-title {\n height: 50px;\n border-bottom: 1px solid #e5e5e5;\n line-height: 50px;\n font-size: 1rem;\n padding: 0 10px;\n background-color: rgb(250,250,249);\n font-weight: bolder;\n}\n\n.sdoc-file-history-versions .history-info .rename-container,\n.sdoc-file-history-versions .history-info .rename-container input {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n min-width: 100%;\n overflow: hidden;\n}\n\n.sdoc-file-history-versions .history-info .rename-container input:focus {\n box-shadow: none;\n}\n\n.sdoc-file-history-versions .daily-history-detail-toggle-container {\n width: 20px;\n height: 100%;\n display: flex;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sdoc-file-history-versions .daily-history-detail-toggle-container .daily-history-detail-toggle {\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sdoc-file-history-versions .daily-history-detail-no-more {\n width: 20px;\n height: 20px;\n margin-right: 14px;\n}\n\n.sdoc-file-history-versions .daily-history-detail-toggle .dropdown-toggle {\n font-size: 18px;\n color: #888;\n transform: rotate(-90deg);\n transition: all .1s;\n}\n\n.sdoc-file-history-versions .daily-history-detail-toggle.daily-history-detail-show .dropdown-toggle {\n transform: unset;\n}\n\n.sdoc-file-history-versions .daily-history-detail-toggle .dropdown-toggle:hover {\n color: #333;\n cursor: pointer;\n}\n\n@media (min-width:992px) {\n\n .history-side-panel {\n width: 260px;\n }\n\n}\n\n@media (max-width:768px) {\n\n .sdoc-file-history .sdoc-file-history-content {\n padding: 0;\n }\n\n .sdoc-file-history .sdoc-file-history-content .sdoc-file-history-viewer {\n border: none;\n }\n\n .markdown-viewer-render-content {\n margin: 20px;\n }\n\n .markdown-viewer-render-content .diff-view {\n padding: 20px;\n }\n\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/settings.391717d2.css b/media/assets/frontend/static/css/settings.391717d2.css new file mode 100644 index 00000000000..53876fac3ad --- /dev/null +++ b/media/assets/frontend/static/css/settings.391717d2.css @@ -0,0 +1,2 @@ +body{overflow:hidden}#wrapper{height:100%}.top-header{background:#f4f4f7;border-bottom:1px solid #e8e8e8;flex-shrink:0;padding:.5rem 1rem}.side-panel{border-right:1px solid #eee;flex:0 0 22%;padding:1rem}.main-panel{flex:1 0 78%}.heading{background:#f9f9f9;color:#322;font-size:1rem;font-weight:400;line-height:1.5;margin:0;padding:8px 16px;position:relative}.heading:after{border-bottom:1px solid #e8e8e8;bottom:0;content:"";left:16px;position:absolute;right:16px}.content{overflow:auto;padding:0 1rem 8rem}.setting-item{font-size:.875rem;margin:1em 0 3em}.setting-item-heading{border-bottom:1px solid #ddd;font-size:.9375rem;font-weight:400;margin-bottom:.7rem;padding-bottom:.3rem}.avatar-edit,.user-avatar{border-radius:3px}.avatar-edit{background:rgba(0,0,0,.3);color:#fff;cursor:pointer;font-size:24px;height:80px;left:.75rem;line-height:80px;position:absolute;text-align:center;top:0;width:80px}.user-setting-nav .nav-item .nav-link{border-left:2px solid transparent;color:#333;flex:auto;margin:0;padding-left:1em}.user-setting-nav .nav-item.active .nav-link{border-color:#ff9800;color:#ff9800}.user-setting-nav .nav-item .nav-link:hover{color:#eb8205}.eye-icon{color:#666}.input-tip{color:#666;padding-top:calc(.375rem + 1px)}@media (min-width:768px){.input-tip{padding-left:0}}.language-selector{width:260px}.btn{min-width:60px} +/*# sourceMappingURL=settings.391717d2.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/settings.391717d2.css.map b/media/assets/frontend/static/css/settings.391717d2.css.map new file mode 100644 index 00000000000..80a4bb9b28d --- /dev/null +++ b/media/assets/frontend/static/css/settings.391717d2.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/settings.391717d2.css","mappings":"AAAA,KACE,eACF,CACA,SACE,WACF,CACA,YACE,kBAAmB,CACnB,+BAAgC,CAEhC,aAAc,CADd,kBAEF,CAEA,YAGE,2BAA4B,CAF5B,YAAa,CACb,YAEF,CACA,YACE,YACF,CACA,SAEE,kBAAmB,CAEnB,UAAW,CADX,cAAe,CAEf,eAAmB,CACnB,eAAgB,CAChB,QAAQ,CANR,gBAAiB,CAOjB,iBACF,CACA,eAME,+BAAgC,CAFhC,QAAS,CACT,UAAW,CAHX,SAAU,CADV,iBAAkB,CAElB,UAIF,CACA,SAEE,aAAc,CADd,mBAEF,CACA,cACE,iBAAmB,CACnB,gBACF,CACA,sBAIE,4BAA6B,CAH7B,kBAAoB,CACpB,eAAmB,CAGnB,mBAAqB,CAFrB,oBAGF,CAIA,0BAFE,iBAeF,CAbA,aAOE,yBAA8B,CAC9B,UAAW,CAIX,cAAe,CAHf,cAAe,CAJf,WAAY,CAHZ,WAAa,CAQb,gBAAiB,CATjB,iBAAkB,CAUlB,iBAAkB,CARlB,KAAM,CACN,UASF,CACA,sCAIE,iCAAkC,CAClC,UAAW,CAJX,SAAU,CACV,QAAS,CACT,gBAGF,CACA,6CAEE,oBAAqB,CADrB,aAEF,CACA,4CACE,aACF,CACA,UACE,UACF,CACA,WAEE,UAAW,CADX,+BAEF,CACA,yBACE,WACE,cACF,CACF,CACA,mBACE,WACF,CACA,KACE,cACF","sources":["css/user-settings.css"],"sourcesContent":["body {\n overflow: hidden;\n}\n#wrapper {\n height: 100%;\n}\n.top-header {\n background: #f4f4f7;\n border-bottom: 1px solid #e8e8e8;\n padding: .5rem 1rem;\n flex-shrink: 0;\n}\n\n.side-panel {\n flex: 0 0 22%;\n padding: 1rem;\n border-right: 1px solid #eee;\n}\n.main-panel {\n flex: 1 0 78%;\n}\n.heading {\n padding: 8px 16px;\n background: #f9f9f9;\n font-size: 1rem;\n color: #322;\n font-weight: normal;\n line-height: 1.5;\n margin:0;\n position: relative;\n}\n.heading:after {\n position: absolute;\n left: 16px;\n right: 16px;\n bottom: 0;\n content: '';\n border-bottom: 1px solid #e8e8e8;\n}\n.content {\n padding: 0rem 1rem 8rem;\n overflow: auto;\n}\n.setting-item {\n font-size: 0.875rem;\n margin: 1em 0 3em;\n}\n.setting-item-heading {\n font-size: 0.9375rem;\n font-weight: normal;\n padding-bottom: 0.3rem;\n border-bottom: 1px solid #ddd;\n margin-bottom: 0.7rem;\n}\n.user-avatar {\n border-radius: 3px;\n}\n.avatar-edit {\n position: absolute;\n left: 0.75rem;\n top: 0;\n width: 80px;\n height: 80px;\n border-radius: 3px;\n background: rgba(0, 0, 0, 0.3);\n color: #fff;\n font-size: 24px;\n line-height: 80px;\n text-align: center;\n cursor: pointer;\n}\n.user-setting-nav .nav-item .nav-link {\n flex: auto;\n margin: 0;\n padding-left: 1em;\n border-left: 2px solid transparent;\n color: #333;\n}\n.user-setting-nav .nav-item.active .nav-link {\n color: #ff9800;\n border-color: #ff9800;\n}\n.user-setting-nav .nav-item .nav-link:hover {\n color: #eb8205;\n}\n.eye-icon {\n color: #666;\n}\n.input-tip {\n padding-top: calc(0.375rem + 1px);\n color: #666;\n}\n@media (min-width: 768px) {\n .input-tip {\n padding-left: 0;\n }\n}\n.language-selector {\n width: 260px;\n}\n.btn {\n min-width: 60px;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/sharedDirView.945789e9.css b/media/assets/frontend/static/css/sharedDirView.945789e9.css new file mode 100644 index 00000000000..ca12b047d9b --- /dev/null +++ b/media/assets/frontend/static/css/sharedDirView.945789e9.css @@ -0,0 +1,2 @@ +.repo-info-bar{border:1px solid #e6e6dd;border-radius:5px;margin:10px 16px 0;padding:10px}.used-tag-list{list-style:none}.used-tag-item{display:inline-block;margin:auto 15px}.used-tag{border-radius:50%;cursor:pointer;display:inline-block;height:12px;width:12px}.used-tag-name{margin:0 .25rem}.used-tag-files{color:#888;font-size:14px}.used-tag-files:hover{cursor:pointer;text-decoration:underline}.file-info{cursor:pointer;display:inline-block;margin:0 15px}.file-info a{color:#333}.info-icon{color:#888;vertical-align:-3px}.readme-dialog-edit{position:absolute;right:16px}.readme-dialog .modal-body{padding:0 30px}body{overflow:hidden}#wrapper{height:100%}.top-header{background:#f4f4f7;border-bottom:1px solid #e8e8e8;flex-shrink:0;height:53px;padding:8px 16px 4px}.shared-dir-view-main{margin:0 auto;max-width:950px;padding:15px 0 40px;width:calc(100% - 40px)}.op-bar{background:#f2f2f2;border-radius:2px;padding:9px 10px}.sf-view-mode-btn{background-color:#fff;border:1px solid #ccc;border-radius:2px;color:#aaa;font-size:18px;height:30px;line-height:29px;min-width:2rem;padding:0}.sf-view-mode-btn.current-mode{background-color:#ccc;color:#fff}.shared-dir-op-btn{height:30px;line-height:30px;padding:0 10px}.shared-dir-upload-btn{border:1px solid #ccc}.grid-item .action-icon{background:#fff;border:1px solid #eee;border-radius:3px;margin:0;padding:3px 5px;position:absolute;right:24px;top:10px}.grid-view{align-content:flex-start;display:flex;flex:1 1;flex-wrap:wrap;list-style:none;padding:.625rem 1rem 10rem}.grid-item{line-height:0;padding:10px 4px;position:relative;text-align:center;width:134px}.grid-item:hover .grid-file-img-link{background:#f8f8f8}.grid-item:hover a{color:#eb8205}.grid-file-img-link{border-radius:3px;font-size:0;height:96px;line-height:0;margin:0 auto 6px;position:relative;text-align:center;width:96px}.grid-file-img-link .thumbnail{background:#fff;border:1px solid #ddd;border-radius:1px;max-height:88px;max-width:88px;padding:1px}.grid-file-img-link:before{content:"";display:inline-block;height:100%;vertical-align:middle}.grid-file-name{display:inline-block;font-size:14px;line-height:17px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:keep-all}.grid-file-name-link{color:#333;font-size:.875rem}.grid-file-locked-icon{bottom:0;position:absolute;right:10px;width:16px}.grid-selected-active{background-color:#f8f8f8}.grid-link-selected-active{color:#eb8205}.grid-drop-show{background:#f8f8f8} +/*# sourceMappingURL=sharedDirView.945789e9.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/sharedDirView.945789e9.css.map b/media/assets/frontend/static/css/sharedDirView.945789e9.css.map new file mode 100644 index 00000000000..2408ef1c9b9 --- /dev/null +++ b/media/assets/frontend/static/css/sharedDirView.945789e9.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/sharedDirView.945789e9.css","mappings":"AAAA,eAGE,wBAAyB,CACzB,iBAAkB,CAFlB,kBAAmB,CADnB,YAKF,CAEA,eACE,eACF,CAEA,eACE,oBAAqB,CACrB,gBACF,CAEA,UAIE,iBAAkB,CAClB,cAAe,CAJf,oBAAqB,CAErB,WAAY,CADZ,UAIF,CAEA,eACE,eACF,CAEA,gBACE,UAAW,CACX,cACF,CAEA,sBACE,cAAe,CACf,yBACF,CAEA,WAGE,cAAe,CADf,oBAAqB,CADrB,aAGF,CAEA,aACE,UACF,CAEA,WACE,UAAW,CACX,mBACF,CAEA,oBACE,iBAAkB,CAClB,UACF,CAEA,2BACE,cACF,CC7DA,KACE,eACF,CACA,SACE,WACF,CACA,YACE,kBAAmB,CACnB,+BAAgC,CAGhC,aAAc,CADd,WAAY,CADZ,oBAGF,CACA,sBAIE,aAAc,CAFd,eAAgB,CAChB,mBAAoB,CAFpB,uBAIF,CACA,QAEE,kBAAmB,CACnB,iBAAkB,CAFlB,gBAGF,CAEA,kBAKE,qBAAsB,CACtB,qBAAsB,CAGtB,iBAAkB,CALlB,UAAW,CAIX,cAAe,CANf,WAAY,CAKZ,gBAAiB,CAJjB,cAAe,CAFf,SASF,CACA,+BACE,qBAAsB,CACtB,UACF,CACA,mBACE,WAAY,CACZ,gBAAiB,CACjB,cACF,CACA,uBACE,qBACF,CACA,wBAKE,eAAgB,CAChB,qBAAsB,CACtB,iBAAkB,CAClB,QAAS,CAJT,eAAgB,CAHhB,iBAAkB,CAElB,UAAW,CADX,QAOF,CCzDA,WAME,wBAAyB,CAHzB,YAAa,CAEb,QAAO,CADP,cAAe,CAFf,eAAgB,CADhB,0BAMF,CAEA,WAKE,aAAc,CAHd,gBAAiB,CAEjB,iBAAkB,CADlB,iBAAkB,CAFlB,WAKF,CAEA,qCACE,kBACF,CAEA,mBACE,aACF,CAEA,oBAKE,iBAAkB,CAClB,WAAY,CAJZ,WAAY,CAMZ,aAAc,CALd,iBAAkB,CAClB,iBAAkB,CAGlB,iBAAkB,CANlB,UAQF,CAEA,+BAIE,eAAgB,CAChB,qBAAsB,CACtB,iBAAkB,CAJlB,eAAgB,CADhB,cAAe,CAEf,WAIF,CAEA,2BACE,UAAW,CACX,oBAAqB,CAErB,WAAY,CADZ,qBAEF,CAEA,gBACE,oBAAqB,CAOrB,cAAe,CADf,gBAAiB,CALjB,cAAe,CACf,eAAgB,CAGhB,sBAAuB,CADvB,kBAAmB,CADnB,mBAKF,CAEA,qBACE,UAAW,CACX,iBACF,CAEA,uBAEE,QAAS,CADT,iBAAkB,CAElB,UAAW,CACX,UACF,CAEA,sBACE,wBACF,CAEA,2BACE,aACF,CAEA,gBACE,kBACF","sources":["css/repo-info-bar.css","css/shared-dir-view.css","css/grid-view.css"],"sourcesContent":[".repo-info-bar {\n padding: 10px;\n margin: 10px 16px 0;\n border: 1px solid #e6e6dd;\n border-radius: 5px;\n /* background: #f8f8f8; */\n}\n\n.used-tag-list {\n list-style: none;\n}\n\n.used-tag-item {\n display: inline-block;\n margin: auto 15px;\n}\n\n.used-tag {\n display: inline-block;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n cursor: pointer;\n}\n\n.used-tag-name {\n margin: 0 0.25rem;\n}\n\n.used-tag-files {\n color: #888;\n font-size: 14px;\n}\n\n.used-tag-files:hover {\n cursor: pointer;\n text-decoration: underline;\n}\n\n.file-info {\n margin: 0 15px;\n display: inline-block;\n cursor: pointer;\n}\n\n.file-info a {\n color: #333;\n}\n\n.info-icon {\n color: #888;\n vertical-align: -3px;\n}\n\n.readme-dialog-edit {\n position: absolute;\n right: 16px;\n}\n\n.readme-dialog .modal-body {\n padding: 0 30px;\n}\n","body {\n overflow: hidden;\n}\n#wrapper {\n height: 100%;\n}\n.top-header {\n background: #f4f4f7;\n border-bottom: 1px solid #e8e8e8;\n padding: 8px 16px 4px;\n height: 53px;\n flex-shrink: 0;\n}\n.shared-dir-view-main {\n width: calc(100% - 40px);\n max-width: 950px;\n padding: 15px 0 40px;\n margin: 0 auto;\n}\n.op-bar {\n padding: 9px 10px;\n background: #f2f2f2;\n border-radius: 2px;\n}\n\n.sf-view-mode-btn {\n padding: 0;\n height: 30px;\n min-width: 2rem;\n color: #aaa;\n background-color: #fff;\n border: 1px solid #ccc;\n line-height: 29px;\n font-size: 18px;\n border-radius: 2px;\n}\n.sf-view-mode-btn.current-mode {\n background-color: #ccc;\n color: #fff;\n}\n.shared-dir-op-btn {\n height: 30px;\n line-height: 30px;\n padding: 0 10px;\n}\n.shared-dir-upload-btn {\n border: 1px solid #ccc;\n}\n.grid-item .action-icon {\n position: absolute;\n top: 10px;\n right: 24px;\n padding: 3px 5px;\n background: #fff;\n border: 1px solid #eee;\n border-radius: 3px;\n margin: 0;\n}\n",".grid-view {\n padding: 0.625rem 1rem 10rem;\n list-style: none;\n display: flex;\n flex-wrap: wrap;\n flex: 1;\n align-content: flex-start;\n}\n\n.grid-item {\n width: 134px;\n padding: 10px 4px;\n text-align: center;\n position: relative;\n line-height: 0;\n}\n\n.grid-item:hover .grid-file-img-link {\n background: #f8f8f8;\n}\n\n.grid-item:hover a {\n color: #eb8205;\n}\n\n.grid-file-img-link {\n width: 96px;\n height: 96px;\n margin: 0 auto 6px;\n position: relative;\n border-radius: 3px;\n font-size: 0;\n text-align: center;\n line-height: 0;\n}\n\n.grid-file-img-link .thumbnail {\n max-width: 88px;\n max-height: 88px;\n padding: 1px;\n background: #fff;\n border: 1px solid #ddd;\n border-radius: 1px;\n}\n\n.grid-file-img-link::before {\n content: '';\n display: inline-block;\n vertical-align: middle;\n height: 100%;\n}\n\n.grid-file-name {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n word-break: keep-all;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 17px;\n font-size: 14px;\n}\n\n.grid-file-name-link {\n color: #333;\n font-size: 0.875rem;\n}\n\n.grid-file-locked-icon {\n position: absolute;\n bottom: 0;\n right: 10px;\n width: 16px;\n}\n\n.grid-selected-active {\n background-color: #f8f8f8;\n}\n\n.grid-link-selected-active {\n color: #eb8205;\n}\n\n.grid-drop-show {\n background: #f8f8f8;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css b/media/assets/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css new file mode 100644 index 00000000000..8acfe6eb0f0 --- /dev/null +++ b/media/assets/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css @@ -0,0 +1,2 @@ +.spreadsheet-file-view{overflow:auto}#spreadsheet-container{background:#fff;border:1px solid #ccc;box-shadow:0 0 6px #ccc;display:block;margin:0 auto;max-width:950px;min-height:100%;width:calc(100% - 40px)} +/*# sourceMappingURL=sharedFileViewSpreadsheet.ff1ddac7.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css.map b/media/assets/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css.map new file mode 100644 index 00000000000..1d75d8e7be1 --- /dev/null +++ b/media/assets/frontend/static/css/sharedFileViewSpreadsheet.ff1ddac7.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/sharedFileViewSpreadsheet.ff1ddac7.css","mappings":"AAAA,uBACI,aACJ,CACA,uBAMI,eAAgB,CAChB,qBAAsB,CACtB,uBAAwB,CAPxB,aAAc,CAId,aAAc,CAFd,eAAgB,CAChB,eAAgB,CAFhB,uBAOJ","sources":["css/spreadsheet-file-view.css"],"sourcesContent":[".spreadsheet-file-view {\n overflow: auto;\n}\n#spreadsheet-container {\n display: block;\n width: calc(100% - 40px);\n max-width: 950px;\n min-height: 100%;\n margin: 0 auto;\n background: #fff;\n border: 1px solid #ccc;\n box-shadow: 0 0 6px #ccc;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/sysAdmin.feb7b73d.css b/media/assets/frontend/static/css/sysAdmin.feb7b73d.css new file mode 100644 index 00000000000..706d54cfdb9 --- /dev/null +++ b/media/assets/frontend/static/css/sysAdmin.feb7b73d.css @@ -0,0 +1,2 @@ +.heading{background:#f9f9f9;color:#322;font-size:1rem;font-weight:400;line-height:1.5;margin:0;padding:8px 16px}.content{display:flex;overflow:auto;padding:0 1rem 8rem}.system-admin-info dd,.system-admin-info dt{color:inherit}.info-item-heading{border-bottom:1px solid #ddd;font-size:1rem;font-weight:400;margin-bottom:.7em;padding-bottom:.2em}.info-item-content{margin-bottom:2em}.btn{min-width:60px}.system-statistic-time-range{align-items:center;display:flex;font-size:13px;margin:15px 0 25px}.sys-stat-tool{color:#333;display:flex;font-size:13px}.system-statistic-item{border:1px solid #c5c5c5;cursor:pointer;padding:5px 10px}.sys-stat-tool .item-active,.system-statistic-item:hover{background:#efefef}.system-statistic-input-container{align-items:center;display:flex;margin-left:1rem}.system-statistic-input{height:31px;width:120px}.error-tip{color:red}.statistic-traffic-tab{color:#333;display:flex;font-size:13px;margin-top:10px}.statistic-traffic-tab .statistic-traffic-tab-item{border-bottom:2px solid transparent;color:#8a948f;cursor:pointer;margin-right:10px;padding:3px 0}.statistic-traffic-tab .statistic-traffic-tab-item.active,.statistic-traffic-tab .statistic-traffic-tab-item:hover{border-bottom:2px solid #eb8025;color:#eb8025}.statistic-reports-title{background:#f7f7f7;color:#222;margin-top:15px;padding:3px 10px}.statistic-reports-submit{margin-left:15px}.statistic-reports-wrapper{align-items:center;display:flex;margin-top:15px}.statistic-reports-input{height:30px;width:80px}.statistic-reports-tip{font-size:13px;padding:0 10px}.system-statistic-connect{line-height:1;padding:0 5px}.system-statistic-button{height:31px;margin-left:1rem}.rc-calendar table{table-layout:auto}.rc-calendar tbody tr{height:1.75rem}.cur-view-path .operation-item{font-size:12px;height:24px;line-height:24px}.cur-view-container .no-group,.cur-view-container .no-libraty,.cur-view-container .no-member{color:#a4a4a4;margin:30px 0;text-align:center}.cur-view-path .sf-heading a{color:#eb8205}.cur-view-subcontainer{margin:10px}.cur-view-subcontainer table{margin:8px 0 40px}.org-departments>div{height:100%}.org-members .cur-view-content{padding-bottom:40px}.cur-view-path button:hover{cursor:pointer}.commit-detail-item{list-style-type:none}.web-setting-icon-btn{font-size:1rem;line-height:1.5;min-width:0}.web-setting-icon-btn-submit{color:green}.web-setting-icon-btn-cancel{color:#666}.web-setting-textarea{min-height:7rem}.web-setting-label{word-break:break-word}.cur-view-content{position:relative}.dir-content-main{height:100%;overflow-y:hidden;padding-right:1rem;position:absolute;right:0;width:75%}.dir-content-main:hover{overflow-y:auto}.dir-content-main table td{line-height:2rem}.dir-content-main .empty-tip{box-shadow:none}.dir-content-main .empty-tip img{height:140px;width:140px}.dir-content-nav{overflow:hidden;position:absolute;width:24%}.dir-content-nav:hover{overflow:auto}.dir-content-resize{border-left:1px solid #eee;height:100%;left:25%;position:absolute;width:1%}.department-children{padding-left:1rem;position:relative}.tree-node-inner{display:flex;padding-right:1rem;position:relative}.tree-node-inner i{color:silver;left:.3rem;position:absolute;top:20%}.tree-node-inner-hover{background-color:#ffefb2;border-radius:.25rem;cursor:pointer}.tree-node-hight-light{background-color:#feac74!important;border-radius:4px;color:#fff}.tree-node-hight-light i{color:#fff}.tree-node-hight-light .attr-action-icon,.tree-node-hight-light .attr-action-icon:focus,.tree-node-hight-light .attr-action-icon:hover{color:#fff!important}.tree-node-icon{padding-right:1.5rem}.tree-node-text{font-size:14px;line-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 2.5rem)}.tree-view{flex:1 1;padding:12px 12px 12px 0}.form-content .conditions-preview-container{background-color:#f5f5f5;max-height:300px;min-height:38px;overflow:auto;padding:10px}.conditions-preview-wrapper .conditions-preview-container{background-color:#f5f5f5;min-height:300px;overflow:auto;padding:10px}.conditions-preview-container ol,.conditions-preview-container ul{-webkit-padding-start:40px;margin-bottom:1em;padding-inline-start:40px}.conditions-editor-dialog-main{height:600px;overflow:hidden;padding:0} +/*# sourceMappingURL=sysAdmin.feb7b73d.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/sysAdmin.feb7b73d.css.map b/media/assets/frontend/static/css/sysAdmin.feb7b73d.css.map new file mode 100644 index 00000000000..79ccb87bf3f --- /dev/null +++ b/media/assets/frontend/static/css/sysAdmin.feb7b73d.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/sysAdmin.feb7b73d.css","mappings":"AAAA,SAEE,kBAAmB,CAEnB,UAAW,CADX,cAAe,CAEf,eAAmB,CACnB,eAAgB,CAChB,QAAS,CANT,gBAOF,CACA,SACE,YAAa,CAEb,aAAc,CADd,mBAEF,CACA,4CAEE,aACF,CACA,mBAIE,4BAA6B,CAH7B,cAAe,CACf,eAAmB,CAGnB,kBAAoB,CAFpB,mBAGF,CACA,mBACE,iBACF,CACA,KACE,cACF,CC9BA,6BAGE,kBAAmB,CADnB,YAAa,CAEb,cAAe,CAHf,kBAIF,CAEA,eAGE,UAAW,CAFX,YAAa,CACb,cAEF,CAEA,uBACE,wBAAyB,CAEzB,cAAe,CADf,gBAEF,CAMA,yDACE,kBACF,CAEA,kCAGE,kBAAmB,CAFnB,YAAa,CACb,gBAEF,CAEA,wBACE,WAAY,CACZ,WACF,CAEA,WACE,SACF,CAEA,uBAGE,UAAW,CAFX,YAAa,CACb,cAAe,CAEf,eACF,CAEA,mDAGE,mCAAoC,CAEpC,aAAc,CADd,cAAe,CAHf,iBAAkB,CAClB,aAIF,CAOA,mHAEE,+BAAgC,CADhC,aAEF,CAEA,yBACE,kBAAmB,CAEnB,UAAc,CADd,eAAgB,CAEhB,gBACF,CAEA,0BACE,gBACF,CAEA,2BAEE,kBAAmB,CADnB,YAAa,CAEb,eACF,CAEA,yBAEE,WAAY,CADZ,UAEF,CAEA,uBAEE,cAAe,CADf,cAEF,CAEA,0BAEE,aAAc,CADd,aAEF,CAEA,yBACE,WAAY,CACZ,gBACF,CAEA,mBACE,iBACF,CAEA,sBACE,cACF,CC9GA,+BACE,cAAe,CACf,WAAY,CACZ,gBACF,CACA,6FACE,aAAc,CAEd,aAAc,CADd,iBAEF,CACA,6BACE,aACF,CACA,uBACE,WACF,CACA,6BACE,iBACF,CACA,qBACE,WACF,CACA,+BACE,mBACF,CACA,4BACE,cACF,CC3BA,oBACE,oBACF,CCFA,sBACE,cAAe,CACf,eAAgB,CAChB,WACF,CACA,6BACE,WACF,CACA,6BACE,UACF,CACA,sBACE,eACF,CACA,mBACE,qBACF,CChBA,kBACE,iBACF,CACA,kBAGE,WAAY,CAEZ,iBAAkB,CAClB,kBAAmB,CALnB,iBAAkB,CAClB,OAAQ,CAER,SAGF,CACA,wBACE,eACF,CACA,2BACE,gBACF,CACA,6BACE,eACF,CACA,iCAEE,YAAa,CADb,WAEF,CACA,iBAEE,eAAgB,CADhB,iBAAkB,CAElB,SACF,CACA,uBACE,aACF,CACA,oBAKE,0BAA2B,CAF3B,WAAY,CADZ,QAAS,CADT,iBAAkB,CAGlB,QAEF,CACA,qBACE,iBAAkB,CAClB,iBACF,CACA,iBAEE,YAAa,CACb,kBAAmB,CAFnB,iBAGF,CACA,mBAIE,YAAa,CADb,UAAY,CAFZ,iBAAkB,CAClB,OAGF,CACA,uBACE,wBAAyB,CACzB,oBAAsB,CACtB,cACF,CACA,uBAGE,kCAAoC,CADpC,iBAAkB,CADlB,UAGF,CACA,yBACE,UACF,CACA,uIAGE,oBACF,CACA,gBACE,oBACF,CACA,gBAEE,cAAe,CAIf,gBAAiB,CAFjB,eAAgB,CAChB,sBAAuB,CAFvB,kBAAmB,CAFnB,yBAMF,CACA,WAEE,QAAS,CADT,wBAEF,CCtFA,4CAKE,wBAAyB,CAFzB,gBAAiB,CADjB,eAAgB,CAEhB,aAAc,CAHd,YAKF,CAEA,0DAIE,wBAAyB,CAFzB,gBAAiB,CACjB,aAAc,CAFd,YAIF,CAEA,kEAEE,0BAA0B,CAC1B,iBAAkB,CADlB,yBAEF,CAEA,+BAEE,YAAa,CACb,eAAgB,CAFhB,SAGF","sources":["css/system-info.css","css/system-stat.css","css/org-department-item.css","css/commit-details.css","css/system-admin-web-settings.css","css/dingtalk-departments.css","css/terms-conditions-editor.css"],"sourcesContent":[".heading {\n padding: 8px 16px;\n background: #f9f9f9;\n font-size: 1rem;\n color: #322;\n font-weight: normal;\n line-height: 1.5;\n margin: 0;\n}\n.content {\n display: flex;\n padding: 0rem 1rem 8rem;\n overflow: auto;\n}\n.system-admin-info dt,\n.system-admin-info dd {\n color: inherit;\n}\n.info-item-heading {\n font-size: 1rem;\n font-weight: normal;\n padding-bottom: 0.2em;\n border-bottom: 1px solid #ddd;\n margin-bottom: 0.7em;\n}\n.info-item-content {\n margin-bottom: 2em;\n}\n.btn {\n min-width: 60px;\n}\n",".system-statistic-time-range {\n margin: 15px 0 25px;\n display: flex;\n align-items: center;\n font-size: 13px;\n}\n\n.sys-stat-tool {\n display: flex;\n font-size: 13px;\n color: #333;\n}\n\n.system-statistic-item {\n border: 1px solid #c5c5c5;\n padding: 5px 10px;\n cursor: pointer;\n}\n\n.system-statistic-item:hover {\n background: #efefef;\n}\n\n.sys-stat-tool .item-active {\n background: #efefef;\n}\n\n.system-statistic-input-container {\n display: flex;\n margin-left: 1rem;\n align-items: center;\n}\n\n.system-statistic-input {\n height: 31px;\n width: 120px;\n}\n\n.error-tip {\n color: red;\n}\n\n.statistic-traffic-tab {\n display: flex;\n font-size: 13px;\n color: #333;\n margin-top: 10px;\n}\n\n.statistic-traffic-tab .statistic-traffic-tab-item {\n margin-right: 10px;\n padding: 3px 0;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n color: #8a948f;\n}\n\n.statistic-traffic-tab .statistic-traffic-tab-item:hover {\n color: #eb8025;\n border-bottom: 2px solid #eb8025;\n}\n\n.statistic-traffic-tab .statistic-traffic-tab-item.active {\n color: #eb8025;\n border-bottom: 2px solid #eb8025;\n}\n\n.statistic-reports-title {\n background: #f7f7f7;\n margin-top: 15px;\n color: #222222;\n padding: 3px 10px;\n}\n\n.statistic-reports-submit {\n margin-left: 15px;\n}\n\n.statistic-reports-wrapper {\n display: flex;\n align-items: center;\n margin-top: 15px;\n}\n\n.statistic-reports-input {\n width: 80px;\n height: 30px;\n}\n\n.statistic-reports-tip {\n padding: 0 10px;\n font-size: 13px;\n}\n\n.system-statistic-connect {\n padding: 0 5px;\n line-height: 1;\n}\n\n.system-statistic-button {\n height: 31px;\n margin-left: 1rem;\n}\n\n.rc-calendar table {\n table-layout: initial;\n}\n\n.rc-calendar tbody tr {\n height: 1.75rem;\n}\n",".cur-view-path .operation-item {\n font-size: 12px;\n height: 24px;\n line-height: 24px;\n}\n.cur-view-container .no-libraty, .cur-view-container .no-member, .cur-view-container .no-group {\n color: #a4a4a4;\n text-align: center;\n margin: 30px 0;\n}\n.cur-view-path .sf-heading a {\n color: #eb8205;\n}\n.cur-view-subcontainer {\n margin: 10px;\n}\n.cur-view-subcontainer table {\n margin: 8px 0 40px;\n}\n.org-departments>div{\n height: 100%;\n}\n.org-members .cur-view-content {\n padding-bottom: 40px;\n}\n.cur-view-path button:hover {\n cursor: pointer;\n}\n",".commit-detail-item {\n list-style-type: none;\n}\n",".web-setting-icon-btn {\n font-size: 1rem;\n line-height: 1.5;\n min-width: 0;\n}\n.web-setting-icon-btn-submit {\n color: green;\n}\n.web-setting-icon-btn-cancel {\n color: #666;\n}\n.web-setting-textarea {\n min-height: 7rem;\n}\n.web-setting-label {\n word-break: break-word;\n}\n",".cur-view-content {\n position: relative;\n}\n.dir-content-main {\n position: absolute;\n right: 0;\n height: 100%;\n width: 75%;\n overflow-y: hidden;\n padding-right: 1rem;\n}\n.dir-content-main:hover {\n overflow-y: auto;\n}\n.dir-content-main table td {\n line-height: 2rem;\n}\n.dir-content-main .empty-tip {\n box-shadow: none;\n}\n.dir-content-main .empty-tip img {\n width: 140px;\n height: 140px;\n}\n.dir-content-nav {\n position: absolute;\n overflow: hidden;\n width: 24%;\n}\n.dir-content-nav:hover {\n overflow: auto;\n}\n.dir-content-resize {\n position: absolute;\n left: 25%;\n height: 100%;\n width: 1%;\n border-left: 1px solid #eee;\n}\n.department-children {\n padding-left: 1rem;\n position: relative;\n}\n.tree-node-inner {\n position: relative;\n display: flex;\n padding-right: 1rem;\n}\n.tree-node-inner i {\n position: absolute;\n top: 20%;\n left: 0.3rem;\n color: silver;\n}\n.tree-node-inner-hover {\n background-color: #FFEFB2;\n border-radius: 0.25rem;\n cursor: pointer;\n}\n.tree-node-hight-light {\n color: #fff;\n border-radius: 4px;\n background-color: #feac74 !important;\n}\n.tree-node-hight-light i {\n color: #fff;\n}\n.tree-node-hight-light .attr-action-icon,\n.tree-node-hight-light .attr-action-icon:focus,\n.tree-node-hight-light .attr-action-icon:hover {\n color: #fff !important;\n}\n.tree-node-icon {\n padding-right: 1.5rem;\n}\n.tree-node-text {\n width: calc(100% - 2.5rem);\n font-size: 14px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 24px;\n}\n.tree-view {\n padding: 12px 12px 12px 0;\n flex: 1 1;\n}\n",".form-content .conditions-preview-container {\n padding: 10px;\n min-height: 38px;\n max-height: 300px;\n overflow: auto;\n background-color: #f5f5f5;\n}\n\n.conditions-preview-wrapper .conditions-preview-container {\n padding: 10px;\n min-height: 300px;\n overflow: auto;\n background-color: #f5f5f5;\n}\n\n.conditions-preview-container ol,\n.conditions-preview-container ul {\n padding-inline-start: 40px;\n margin-bottom: 1em;\n}\n\n.conditions-editor-dialog-main {\n padding: 0;\n height: 600px;\n overflow: hidden;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/uploadLink.01103a58.css b/media/assets/frontend/static/css/uploadLink.01103a58.css new file mode 100644 index 00000000000..6fbca29a915 --- /dev/null +++ b/media/assets/frontend/static/css/uploadLink.01103a58.css @@ -0,0 +1,2 @@ +body{overflow:hidden}#wrapper{height:100%}.top-header{background:#f4f4f7;border-bottom:1px solid #e8e8e8;flex-shrink:0;padding:.5rem 1rem}#upload-link-panel{border:1px solid #ddd;margin:2em auto;max-width:calc(100% - 20px);width:928px}.shared-by .avatar{height:20px;width:20px}#upload-link-panel .warning-icon{color:#f25041;font-size:48px}#upload-link-panel .tip-list-item{list-style:decimal none inside}#upload-link-drop-zone{background:rgba(255,152,0,.1);border:2px dashed #ff9800;border-radius:4px;padding:28px 0}#upload-link-drop-zone .upload-icon{color:rgba(240,159,63,.8);font-size:60px;line-height:1}.mh-2{min-height:2rem} +/*# sourceMappingURL=uploadLink.01103a58.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/uploadLink.01103a58.css.map b/media/assets/frontend/static/css/uploadLink.01103a58.css.map new file mode 100644 index 00000000000..34ee279bb9b --- /dev/null +++ b/media/assets/frontend/static/css/uploadLink.01103a58.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/uploadLink.01103a58.css","mappings":"AAAA,KACE,eACF,CACA,SACE,WACF,CACA,YACE,kBAAmB,CACnB,+BAAgC,CAEhC,aAAc,CADd,kBAEF,CAEA,mBAGE,qBAAsB,CACtB,eAAgB,CAFhB,2BAA4B,CAD5B,WAIF,CACA,mBAEE,WAAY,CADZ,UAEF,CACA,iCACE,aAAc,CACd,cACF,CACA,kCACE,8BACF,CACA,uBACE,6BAAkC,CAClC,yBAA0B,CAC1B,iBAAkB,CAClB,cACF,CACA,oCACE,yBAA8B,CAC9B,cAAe,CACf,aACF,CACA,MACE,eACF","sources":["css/upload-link.css"],"sourcesContent":["body {\n overflow: hidden;\n}\n#wrapper {\n height: 100%;\n}\n.top-header {\n background: #f4f4f7;\n border-bottom: 1px solid #e8e8e8;\n padding: .5rem 1rem;\n flex-shrink: 0;\n}\n\n#upload-link-panel {\n width: 928px;\n max-width: calc(100% - 20px);\n border: 1px solid #ddd;\n margin: 2em auto;\n}\n.shared-by .avatar {\n width: 20px;\n height: 20px;\n}\n#upload-link-panel .warning-icon {\n color: #f25041;\n font-size: 48px;\n}\n#upload-link-panel .tip-list-item {\n list-style: decimal inside none;\n}\n#upload-link-drop-zone {\n background: rgba(255, 152, 0, 0.1);\n border: 2px dashed #ff9800;\n border-radius: 4px;\n padding: 28px 0;\n}\n#upload-link-drop-zone .upload-icon {\n color: rgba(240, 159, 63, 0.8);\n font-size: 60px;\n line-height: 1;\n}\n.mh-2 {\n min-height: 2rem;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css b/media/assets/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css new file mode 100644 index 00000000000..1200dea6915 --- /dev/null +++ b/media/assets/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css @@ -0,0 +1,2 @@ +.spreadsheet-file-view{overflow:auto}#spreadsheet-container{background:#fff;border:1px solid #ccc;box-shadow:0 0 6px #ccc;display:block;margin:0 auto;max-width:950px;min-height:100%;width:calc(100% - 40px)} +/*# sourceMappingURL=viewFileSpreadsheet.ff1ddac7.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css.map b/media/assets/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css.map new file mode 100644 index 00000000000..2235cce2899 --- /dev/null +++ b/media/assets/frontend/static/css/viewFileSpreadsheet.ff1ddac7.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/viewFileSpreadsheet.ff1ddac7.css","mappings":"AAAA,uBACI,aACJ,CACA,uBAMI,eAAgB,CAChB,qBAAsB,CACtB,uBAAwB,CAPxB,aAAc,CAId,aAAc,CAFd,eAAgB,CAChB,eAAgB,CAFhB,uBAOJ","sources":["css/spreadsheet-file-view.css"],"sourcesContent":[".spreadsheet-file-view {\n overflow: auto;\n}\n#spreadsheet-container {\n display: block;\n width: calc(100% - 40px);\n max-width: 950px;\n min-height: 100%;\n margin: 0 auto;\n background: #fff;\n border: 1px solid #ccc;\n box-shadow: 0 0 6px #ccc;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/css/wiki.b992029b.css b/media/assets/frontend/static/css/wiki.b992029b.css new file mode 100644 index 00000000000..ce1a5d99261 --- /dev/null +++ b/media/assets/frontend/static/css/wiki.b992029b.css @@ -0,0 +1,2 @@ +.wiki-nav-content{margin-top:18px}.wiki-nav-content.no-children{margin-left:1rem}.wiki-nav-content a,.wiki-nav-content span{color:#4d5156;display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wiki-nav-content a:hover,.wiki-nav-content-highlight a{color:#eb8205;text-decoration:none}.switch-btn{color:silver;cursor:pointer;font-size:12px;left:0;padding-right:10px;position:absolute;top:2px}.side-panel{height:100%;-webkit-user-select:none;-ms-user-select:none;user-select:none}.side-panel .nav{border-bottom:1px solid #eee;height:36px;min-width:125px;padding-bottom:10px;padding-top:10px}.side-panel .nav-link{color:#888}.side-panel .nav-link.active{color:#eb8205}.side-panel-content{font-size:.875rem;height:calc(100% - 36px);overflow:auto;padding-bottom:8px;padding-top:8px}.image-view{background-color:#fff;border-radius:3px;box-shadow:0 0 10px #aaa;font-size:0;height:150px;line-height:150px;overflow:hidden;position:absolute;text-align:center;width:200px;z-index:1004}.image-view img{max-height:100%;max-width:100%}.image-view i{-webkit-animation:rotate 1.5s ease infinite;animation:rotate 1.5s ease infinite;color:#eb8205;font-size:30px;height:100%;line-height:150px;text-align:center;width:100%}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.outline-h2{color:#364149;cursor:pointer;line-height:2.5;margin-left:20px;white-space:nowrap}.outline-h2:hover{color:#eb8205}.outline-h3{color:#364149;cursor:pointer;line-height:2.5;margin-left:40px;white-space:nowrap}.outline-h3:hover{color:#eb8205}.tree-view{line-height:1.5;padding:0 12px}.tree-node-inner{cursor:pointer;height:24px;line-height:1.625;position:relative}.tree-node-inner-hover{background-color:#ffefb2;border-radius:.25rem}.tree-node-inner .tree-node-text{font-size:14px;line-height:24px;overflow:hidden;padding-left:2.8rem;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 1rem)}.tree-node-inner .left-icon{align-items:center;padding-left:1.5rem;top:0}.folder-toggle-icon,.tree-node-inner .left-icon{display:flex;justify-content:center;left:0;position:absolute}.folder-toggle-icon{align-content:center;color:silver;line-height:1.625;width:1.5rem}.tree-node-icon{color:#b0b0b0;display:inline-block;text-align:center;width:1rem}.tree-node-inner .right-icon{bottom:0;color:#888;font-size:.8125rem;position:absolute;right:1rem;text-align:center;top:0;width:1.5rem;z-index:2}.tree-node-inner .right-icon i{font-size:.8125rem;height:100%;line-height:1.625rem!important;vertical-align:middle;width:100%}.tree-node-hight-light{background-color:#feac74!important;border-radius:4px;color:#fff}.tree-node-hight-light i{color:#fff}.dropdown-menu{min-width:8rem}.parent-path{position:relative}.parent-path .form-text{font-size:.9375rem;margin-left:.25rem;margin-top:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.wiki-side-panel .panel-top{background:#fff}.wiki-side-nav{border-right:1px solid #eee;display:flex;flex:auto;flex-direction:column;overflow:hidden}.wiki-pages-heading{background-color:#f9f9f9;border-bottom:1px solid #e8e8e8;font-size:1rem;font-weight:400;height:40px;line-height:1.5;margin-bottom:0;padding:.5rem 0 .5rem 2rem;position:relative}.heading-icon{color:#888;font-size:.8125rem;position:absolute;right:1rem;top:25%}.wiki-pages-container{flex:1 1;overflow:hidden;padding-bottom:10px}.wiki-pages-container:hover{overflow:auto}.wiki-pages-container .tree-view{margin-left:-10px;margin-top:14px;padding-left:0}img[src=""]{opacity:0}.wiki-side-panel{display:flex;flex:0 0 20%;flex-direction:column;overflow:hidden}@media (max-width:767px){.wiki-side-panel{z-index:1051}}.wiki-main-panel{display:flex;flex:1 0 80%;flex-direction:column;min-height:0}.wiki-main-panel .main-panel-north{background-color:#fff}.cur-view-content .wiki-page-container{display:flex;flex:1 1;margin:0 -1rem -1.25rem;overflow-y:auto;padding:30px 1rem 1.25rem 30px}.cur-view-content .wiki-page-content{padding-right:30px;width:calc(100% - 200px)}@media (max-width:991.98px){.cur-view-content .wiki-page-container{padding:30px 14px 0}.cur-view-content .wiki-page-content{padding-right:0;width:100%}}.wiki-page-container .article{margin:0;padding:0 10px}.wiki-page-container .article h1{margin-top:0}.wiki-page-container .article span[data-url]{cursor:pointer}.wiki-page-container .article .ml-2{text-decoration:underline}.wiki-page-container .article .ml-2:hover{color:#eb8205;text-decoration:underline}.wiki-page-container .outline-h2,.wiki-page-container .outline-h3{color:#4d5156;font-size:12px;height:24px}.wiki-page-container .outline-h2.active,.wiki-page-container .outline-h3.active{color:#eb8205}.wiki-page-container .sf-slate-viewer-scroll-container{background-color:#fff!important;overflow:inherit;padding:0!important}.wiki-page-container .sf-slate-viewer-article-container{margin:0!important}.wiki-page-container .article{border:none}.wiki-page-container .sf-slate-viewer-outline{top:79px;width:200px}@media (max-width:767px){.wiki-page-container .article{padding:0!important}}#wiki-page-last-modified{color:#666;font-size:12px;padding:40px 10px} +/*# sourceMappingURL=wiki.b992029b.css.map*/ \ No newline at end of file diff --git a/media/assets/frontend/static/css/wiki.b992029b.css.map b/media/assets/frontend/static/css/wiki.b992029b.css.map new file mode 100644 index 00000000000..f73331bbd50 --- /dev/null +++ b/media/assets/frontend/static/css/wiki.b992029b.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/wiki.b992029b.css","mappings":"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","sources":["pages/wiki/index-md-viewer/style.css","css/side-panel.css","pages/wiki/wiki.css"],"sourcesContent":[".wiki-nav-content {\n margin-top: 18px;\n}\n\n.wiki-nav-content.no-children {\n margin-left: 1rem;\n}\n\n.wiki-nav-content a, \n.wiki-nav-content span {\n color: #4d5156;\n font-size: 14px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n display: block;\n}\n\n.wiki-nav-content a:hover {\n text-decoration: none;\n color: #eb8205;\n}\n\n.wiki-nav-content-highlight a {\n text-decoration: none;\n color: #eb8205;\n}\n\n.switch-btn {\n position: absolute;\n left: 0;\n top: 2px;\n color: #c0c0c0;\n cursor: pointer;\n font-size: 12px;\n padding-right: 10px;\n}\n","/*\n the main reason to icon can not be align is that .folder has a real width it take the place\n of .tree-node-inner causing tree-node-icon not aligned , use absolute can make sure .tree-node-icon\n is always at the far left of .tree-node-inner\n*/\n.side-panel {\n user-select: none;\n height:100%;\n}\n.side-panel .nav {\n border-bottom: 1px solid #eee;\n padding-top: 10px;\n padding-bottom: 10px;\n min-width: 125px;\n height: 36px;\n}\n.side-panel .nav-link {\n color: #888;\n}\n.side-panel .nav-link.active {\n color: #eb8205;\n}\n.side-panel-content {\n padding-top: 8px;\n padding-bottom: 8px;\n height: calc(100% - 36px);\n overflow: auto;\n font-size: 0.875rem;\n}\n\n.image-view {\n width: 200px;\n height: 150px;\n position: absolute;\n background-color: #fff;\n z-index: 1004;\n box-shadow: 0 0 10px #aaa;\n border-radius: 3px;\n line-height: 150px;\n overflow: hidden;\n font-size: 0;\n text-align: center;\n}\n\n.image-view img {\n max-width: 100%;\n max-height: 100%;\n}\n\n.image-view i {\n width: 100%;\n height: 100%;\n text-align: center;\n line-height: 150px;\n font-size: 30px;\n color: #eb8205;\n -moz-animation: rotate 1.5s ease infinite;\n -webkit-animation: rotate 1.5s ease infinite;\n animation: rotate 1.5s ease infinite;\n}\n\n@keyframes rotate {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.outline-h2 {\n margin-left: 20px;\n line-height: 2.5;\n color:#364149;\n white-space: nowrap;\n cursor:pointer;\n}\n.outline-h2:hover {\n color: #eb8205;\n}\n.outline-h3 {\n margin-left: 40px;\n line-height: 2.5;\n color:#364149;\n white-space: nowrap;\n cursor:pointer;\n}\n.outline-h3:hover {\n color: #eb8205;\n}\n\n/*tree view */\n.tree-view {\n padding: 0 12px;\n line-height: 1.5;\n}\n\n.tree-node-inner {\n position: relative;\n height: 24px;\n cursor: pointer;\n line-height: 1.625;\n}\n\n.tree-node-inner-hover {\n background-color: rgb(255,239,178);\n border-radius: 0.25rem;\n}\n\n.tree-node-inner .tree-node-text {\n padding-left: 2.8rem;\n width: calc(100% - 1rem);\n font-size: 14px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 24px;\n}\n\n.tree-node-inner .left-icon {\n position: absolute;\n display:flex;\n justify-content:center;\n align-items:center;\n top: 0;\n left: 0;\n padding-left: 1.5rem;\n}\n\n.folder-toggle-icon {\n position: absolute;\n left: 0;\n color: #c0c0c0;\n line-height: 1.625;\n width: 1.5rem;\n display: flex;\n align-content: center;\n justify-content: center;\n}\n\n.tree-node-icon {\n display: inline-block;\n width: 1rem;\n text-align: center;\n color: #b0b0b0;\n}\n\n.tree-node-inner .right-icon {\n position: absolute;\n top: 0;\n right: 1rem;\n bottom: 0;\n width: 1.5rem;\n color: #888; \n z-index: 2; \n font-size: 0.8125rem;\n text-align: center;\n}\n\n.tree-node-inner .right-icon i {\n width: 100%;\n height: 100%;\n vertical-align: middle;\n font-size: 0.8125rem;\n line-height: 1.625rem !important;\n}\n\n.tree-node-hight-light {\n color: #fff;\n border-radius: 4px;\n background-color: #feac74 !important;\n}\n\n.tree-node-hight-light i {\n color:#fff;\n}\n\n.dropdown-menu {\n min-width: 8rem;\n}\n\n.parent-path {\n position: relative;\n}\n\n.parent-path .form-text {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n margin-top: 0;\n margin-left: 0.25rem;\n font-size: 0.9375rem;\n}\n\n",".wiki-side-panel .panel-top {\n background: #fff;\n}\n.wiki-side-nav {\n flex:auto;\n display:flex;\n flex-direction:column;\n overflow:hidden; /* for ff */\n border-right:1px solid #eee;\n}\n\n.wiki-pages-heading {\n position: relative;\n font-size: 1rem;\n font-weight: normal;\n padding: 0.5rem 0 0.5rem 2rem;\n border-bottom: 1px solid #e8e8e8;\n line-height: 1.5;\n height: 40px;\n background-color: #f9f9f9;\n margin-bottom: 0;\n}\n.heading-icon {\n position: absolute;\n right: 1rem;\n top: 25%;\n color: #888; \n font-size: 0.8125rem;\n}\n.wiki-pages-container {\n flex: 1;\n overflow: hidden;\n padding-bottom: 10px;\n}\n.wiki-pages-container:hover {\n overflow: auto;\n}\n.wiki-pages-container .tree-view {\n margin-left: -10px;\n margin-top: 14px;\n padding-left:0;\n}\n\nimg[src=\"\"] {\n opacity: 0;\n}\n\n.wiki-side-panel {\n flex: 0 0 20%;\n display:flex;\n flex-direction:column;\n overflow:hidden;\n}\n\n@media (max-width: 767px) {\n .wiki-side-panel {\n z-index: 1051;\n }\n}\n\n.wiki-main-panel {\n flex: 1 0 80%;\n display:flex;\n flex-direction:column;\n min-height: 0;\n}\n\n.wiki-main-panel .main-panel-north {\n background-color: #fff;\n}\n\n.cur-view-content .wiki-page-container {\n margin: 0 -1rem -1.25rem;\n padding: 30px 1rem 1.25rem;\n display: flex;\n flex: 1;\n padding-left: 30px;\n overflow-y: auto;\n}\n\n.cur-view-content .wiki-page-content {\n width: calc(100% - 200px);\n padding-right: 30px;\n}\n\n@media (max-width: 991.98px) {\n .cur-view-content .wiki-page-container {\n padding: 0 14px;\n padding-top: 30px;\n }\n .cur-view-content .wiki-page-content {\n width: 100%;\n padding-right: 0;\n }\n}\n\n.wiki-page-container .article {\n margin: 0;\n padding: 0 10px;\n}\n\n.wiki-page-container .article h1 {\n margin-top: 0;\n}\n\n.wiki-page-container .article span[data-url] {\n cursor: pointer;\n}\n\n.wiki-page-container .article .ml-2 {\n text-decoration: underline;\n}\n\n.wiki-page-container .article .ml-2:hover {\n text-decoration: underline;\n color:#eb8205;\n}\n\n.wiki-page-container .outline-h2,\n.wiki-page-container .outline-h3 {\n height: 24px;\n font-size: 12px;\n color: #4d5156;\n}\n\n.wiki-page-container .outline-h2.active,\n.wiki-page-container .outline-h3.active { \n color: #eb8205;\n}\n\n.wiki-page-container .sf-slate-viewer-scroll-container {\n background-color: #fff !important;\n padding: 0px !important;\n overflow: inherit;\n}\n\n.wiki-page-container .sf-slate-viewer-article-container {\n margin: 0 !important;\n}\n\n.wiki-page-container .article {\n border: none;\n}\n\n.wiki-page-container .sf-slate-viewer-outline {\n top: 79px;\n width: 200px;\n}\n\n@media (max-width: 767px) {\n .wiki-page-container .article {\n padding: 0 !important;\n }\n}\n\n#wiki-page-last-modified {\n padding: 40px 10px;\n font-size:12px;\n color: #666;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/305.d8dbbbbc.chunk.js b/media/assets/frontend/static/js/305.d8dbbbbc.chunk.js new file mode 100644 index 00000000000..73cb6099629 --- /dev/null +++ b/media/assets/frontend/static/js/305.d8dbbbbc.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[305],{6305:function(e,t,r){r.r(t),r.d(t,{css:function(){return _},gss:function(){return S},keywords:function(){return q},less:function(){return O},mkCSS:function(){return i},sCSS:function(){return C}});var o=r(1413);function i(e){var t,r,i=(e=(0,o.Z)((0,o.Z)({},K),e)).inline,a=e.tokenHooks,n=e.documentTypes||{},l=e.mediaTypes||{},s=e.mediaFeatures||{},c=e.mediaValueKeywords||{},d=e.propertyKeywords||{},p=e.nonStandardPropertyKeywords||{},u=e.fontProperties||{},m=e.counterDescriptors||{},g=e.colorKeywords||{},h=e.valueKeywords||{},b=e.allowNested,f=e.lineComment,k=!0===e.supportsAtComponent,y=!1!==e.highlightNonStandardPropertyKeywords;function w(e,r){return t=r,e}function v(e,t){var r=e.next();if(a[r]){var o=a[r](e,t);if(!1!==o)return o}return"@"==r?(e.eatWhile(/[\w\\\-]/),w("def",e.current())):"="==r||("~"==r||"|"==r)&&e.eat("=")?w(null,"compare"):'"'==r||"'"==r?(t.tokenize=x(r),t.tokenize(e,t)):"#"==r?(e.eatWhile(/[\w\\\-]/),w("atom","hash")):"!"==r?(e.match(/^\s*\w*/),w("keyword","important")):/\d/.test(r)||"."==r&&e.eat(/\d/)?(e.eatWhile(/[\w.%]/),w("number","unit")):"-"!==r?/[,+>*\/]/.test(r)?w(null,"select-op"):"."==r&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?w("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(r)?w(null,r):e.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(e.current())&&(t.tokenize=z),w("variableName.function","variable")):/[\w\\\-]/.test(r)?(e.eatWhile(/[\w\\\-]/),w("property","word")):w(null,null):/[\d.]/.test(e.peek())?(e.eatWhile(/[\w.%]/),w("number","unit")):e.match(/^-[\w\\\-]*/)?(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?w("def","variable-definition"):w("variableName","variable")):e.match(/^\w+-/)?w("meta","meta"):void 0}function x(e){return function(t,r){for(var o,i=!1;null!=(o=t.next());){if(o==e&&!i){")"==e&&t.backUp(1);break}i=!i&&"\\"==o}return(o==e||!i&&")"!=e)&&(r.tokenize=null),w("string","string")}}function z(e,t){return e.next(),e.match(/^\s*[\"\')]/,!1)?t.tokenize=null:t.tokenize=x(")"),w(null,"(")}function P(e,t,r){this.type=e,this.indent=t,this.prev=r}function q(e,t,r,o){return e.context=new P(r,t.indentation()+(!1===o?0:t.indentUnit),e.context),r}function _(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function B(e,t,r){return S[r.context.type](e,t,r)}function C(e,t,r,o){for(var i=o||1;i>0;i--)r.context=r.context.prev;return B(e,t,r)}function O(e){var t=e.current().toLowerCase();r=h.hasOwnProperty(t)?"atom":g.hasOwnProperty(t)?"keyword":"variable"}var S={top:function(e,t,o){if("{"==e)return q(o,t,"block");if("}"==e&&o.context.prev)return _(o);if(k&&/@component/i.test(e))return q(o,t,"atComponentBlock");if(/^@(-moz-)?document$/i.test(e))return q(o,t,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return q(o,t,"atBlock");if(/^@(font-face|counter-style)/i.test(e))return o.stateArg=e,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return"keyframes";if(e&&"@"==e.charAt(0))return q(o,t,"at");if("hash"==e)r="builtin";else if("word"==e)r="tag";else{if("variable-definition"==e)return"maybeprop";if("interpolation"==e)return q(o,t,"interpolation");if(":"==e)return"pseudo";if(b&&"("==e)return q(o,t,"parens")}return o.context.type},block:function(e,t,o){if("word"==e){var i=t.current().toLowerCase();return d.hasOwnProperty(i)?(r="property","maybeprop"):p.hasOwnProperty(i)?(r=y?"string.special":"property","maybeprop"):b?(r=t.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(r="error","maybeprop")}return"meta"==e?"block":b||"hash"!=e&&"qualifier"!=e?S.top(e,t,o):(r="error","block")},maybeprop:function(e,t,r){return":"==e?q(r,t,"prop"):B(e,t,r)},prop:function(e,t,o){if(";"==e)return _(o);if("{"==e&&b)return q(o,t,"propBlock");if("}"==e||"{"==e)return C(e,t,o);if("("==e)return q(o,t,"parens");if("hash"!=e||/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(t.current())){if("word"==e)O(t);else if("interpolation"==e)return q(o,t,"interpolation")}else r="error";return"prop"},propBlock:function(e,t,o){return"}"==e?_(o):"word"==e?(r="property","maybeprop"):o.context.type},parens:function(e,t,r){return"{"==e||"}"==e?C(e,t,r):")"==e?_(r):"("==e?q(r,t,"parens"):"interpolation"==e?q(r,t,"interpolation"):("word"==e&&O(t),"parens")},pseudo:function(e,t,o){return"meta"==e?"pseudo":"word"==e?(r="variableName.constant",o.context.type):B(e,t,o)},documentTypes:function(e,t,o){return"word"==e&&n.hasOwnProperty(t.current())?(r="tag",o.context.type):S.atBlock(e,t,o)},atBlock:function(e,t,o){if("("==e)return q(o,t,"atBlock_parens");if("}"==e||";"==e)return C(e,t,o);if("{"==e)return _(o)&&q(o,t,b?"block":"top");if("interpolation"==e)return q(o,t,"interpolation");if("word"==e){var i=t.current().toLowerCase();r="only"==i||"not"==i||"and"==i||"or"==i?"keyword":l.hasOwnProperty(i)?"attribute":s.hasOwnProperty(i)?"property":c.hasOwnProperty(i)?"keyword":d.hasOwnProperty(i)?"property":p.hasOwnProperty(i)?y?"string.special":"property":h.hasOwnProperty(i)?"atom":g.hasOwnProperty(i)?"keyword":"error"}return o.context.type},atComponentBlock:function(e,t,o){return"}"==e?C(e,t,o):"{"==e?_(o)&&q(o,t,b?"block":"top",!1):("word"==e&&(r="error"),o.context.type)},atBlock_parens:function(e,t,r){return")"==e?_(r):"{"==e||"}"==e?C(e,t,r,2):S.atBlock(e,t,r)},restricted_atBlock_before:function(e,t,o){return"{"==e?q(o,t,"restricted_atBlock"):"word"==e&&"@counter-style"==o.stateArg?(r="variable","restricted_atBlock_before"):B(e,t,o)},restricted_atBlock:function(e,t,o){return"}"==e?(o.stateArg=null,_(o)):"word"==e?(r="@font-face"==o.stateArg&&!u.hasOwnProperty(t.current().toLowerCase())||"@counter-style"==o.stateArg&&!m.hasOwnProperty(t.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},keyframes:function(e,t,o){return"word"==e?(r="variable","keyframes"):"{"==e?q(o,t,"top"):B(e,t,o)},at:function(e,t,o){return";"==e?_(o):"{"==e||"}"==e?C(e,t,o):("word"==e?r="tag":"hash"==e&&(r="builtin"),"at")},interpolation:function(e,t,o){return"}"==e?_(o):"{"==e||";"==e?C(e,t,o):("word"==e?r="variable":"variable"!=e&&"("!=e&&")"!=e&&(r="error"),"interpolation")}};return{name:e.name,startState:function(){return{tokenize:null,state:i?"block":"top",stateArg:null,context:new P(i?"block":"top",0,null)}},token:function(e,o){if(!o.tokenize&&e.eatSpace())return null;var i=(o.tokenize||v)(e,o);return i&&"object"==typeof i&&(t=i[1],i=i[0]),r=i,"comment"!=t&&(o.state=S[o.state](t,e,o)),r},indent:function(e,t,r){var o=e.context,i=t&&t.charAt(0),a=o.indent;return"prop"!=o.type||"}"!=i&&")"!=i||(o=o.prev),o.prev&&("}"!=i||"block"!=o.type&&"top"!=o.type&&"interpolation"!=o.type&&"restricted_atBlock"!=o.type?(")"!=i||"parens"!=o.type&&"atBlock_parens"!=o.type)&&("{"!=i||"at"!=o.type&&"atBlock"!=o.type)||(a=Math.max(0,o.indent-r.unit)):a=(o=o.prev).indent),a},languageData:{indentOnInput:/^\s*\}$/,commentTokens:{line:f,block:{open:"/*",close:"*/"}},autocomplete:j}}}function a(e){for(var t={},r=0;r*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variableName.function\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : stream.indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string.special\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override = \"error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(stream.current())) {\n override = \"error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variableName.constant\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string.special\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n name: parserConfig.name,\n startState: function() {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter, iCx) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - iCx.unit);\n }\n }\n return indent;\n },\n\n languageData: {\n indentOnInput: /^\\s*\\}$/,\n commentTokens: {line: lineComment, block: {open: \"/*\", close: \"*/\"}},\n autocomplete: allWords\n }\n };\n};\n\nfunction keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n}\n\nvar documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n], documentTypes = keySet(documentTypes_);\n\nvar mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n], mediaTypes = keySet(mediaTypes_);\n\nvar mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\",\n \"dynamic-range\", \"video-dynamic-range\"\n], mediaFeatures = keySet(mediaFeatures_);\n\nvar mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\",\n \"standard\", \"high\"\n], mediaValueKeywords = keySet(mediaValueKeywords_);\n\nvar propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n], propertyKeywords = keySet(propertyKeywords_);\n\nvar nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\nvar fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n], fontProperties = keySet(fontProperties_);\n\nvar counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n], counterDescriptors = keySet(counterDescriptors_);\n\nvar colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n], colorKeywords = keySet(colorKeywords_);\n\nvar valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"conic-gradient\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-play-button\", \"media-slider\", \"media-sliderthumb\",\n \"media-volume-slider\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\",\n \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\", \"repeating-radial-gradient\",\n \"repeating-conic-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n], valueKeywords = keySet(valueKeywords_);\n\nvar allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n\nexport const keywords = {properties: propertyKeywords_, colors: colorKeywords_,\n fonts: fontProperties_, values: valueKeywords_, all: allWords}\n\nconst defaults = {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n }\n}\n\nexport const css = mkCSS({name: \"css\"})\n\nfunction tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n}\n\nexport const sCSS = mkCSS({\n name: \"scss\",\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"def\", \"variable-definition\"];\n return [\"variableName.special\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n }\n})\n\nexport const less = mkCSS({\n name: \"less\",\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"def\", \"variable-definition\"];\n return [\"variableName\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n }\n})\n\nexport const gss = mkCSS({\n name: \"gss\",\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n }\n})\n"],"names":["mkCSS","parserConfig","type","override","inline","_objectSpread","defaults","tokenHooks","documentTypes","mediaTypes","mediaFeatures","mediaValueKeywords","propertyKeywords","nonStandardPropertyKeywords","fontProperties","counterDescriptors","colorKeywords","valueKeywords","allowNested","lineComment","supportsAtComponent","highlightNonStandardPropertyKeywords","ret","style","tp","tokenBase","stream","state","ch","next","result","eatWhile","current","eat","tokenize","tokenString","match","test","tokenParenthesized","peek","quote","escaped","backUp","Context","indent","prev","this","pushContext","context","indentation","indentUnit","popContext","pass","states","popAndPass","n","i","wordAsValue","word","toLowerCase","hasOwnProperty","stateArg","charAt","top","_stream","atBlock","name","startState","token","eatSpace","textAfter","iCx","cx","Math","max","unit","languageData","indentOnInput","commentTokens","line","block","open","close","autocomplete","allWords","keySet","array","keys","length","documentTypes_","mediaTypes_","mediaFeatures_","mediaValueKeywords_","propertyKeywords_","nonStandardPropertyKeywords_","fontProperties_","colorKeywords_","valueKeywords_","concat","keywords","properties","colors","fonts","values","all","tokenCComment","css","maybeEnd","sCSS","skipToEnd","less","gss"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/311.e7e04ffb.chunk.js b/media/assets/frontend/static/js/311.e7e04ffb.chunk.js new file mode 100644 index 00000000000..dd2e502f29f --- /dev/null +++ b/media/assets/frontend/static/js/311.e7e04ffb.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[311],{88311:function(r,e,t){t.r(e),t.d(e,{rpmChanges:function(){return o},rpmSpec:function(){return m}});var n=/^-+$/,a=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /,c=/^[\w+.-]+@[\w.-]+/,o={name:"rpmchanges",token:function(r){if(r.sol()){if(r.match(n))return"tag";if(r.match(a))return"tag"}return r.match(c)?"string":(r.next(),null)}},i=/^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/,u=/^[a-zA-Z0-9()]+:/,p=/^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/,s=/^%(ifnarch|ifarch|if)/,l=/^%(else|endif)/,f=/^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/,m={name:"rpmspec",startState:function(){return{controlFlow:!1,macroParameters:!1,section:!1}},token:function(r,e){if("#"==r.peek())return r.skipToEnd(),"comment";if(r.sol()){if(r.match(u))return"header";if(r.match(p))return"atom"}if(r.match(/^\$\w+/))return"def";if(r.match(/^\$\{\w+\}/))return"def";if(r.match(l))return"keyword";if(r.match(s))return e.controlFlow=!0,"keyword";if(e.controlFlow){if(r.match(f))return"operator";if(r.match(/^(\d+)/))return"number";r.eol()&&(e.controlFlow=!1)}if(r.match(i))return r.eol()&&(e.controlFlow=!1),"number";if(r.match(/^%[\w]+/))return r.match("(")&&(e.macroParameters=!0),"keyword";if(e.macroParameters){if(r.match(/^\d+/))return"number";if(r.match(")"))return e.macroParameters=!1,"keyword"}return r.match(/^%\{\??[\w \-\:\!]+\}/)?(r.eol()&&(e.controlFlow=!1),"def"):(r.next(),null)}}}}]); +//# sourceMappingURL=311.e7e04ffb.chunk.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/311.e7e04ffb.chunk.js.map b/media/assets/frontend/static/js/311.e7e04ffb.chunk.js.map new file mode 100644 index 00000000000..2b80cbfdbd1 --- /dev/null +++ b/media/assets/frontend/static/js/311.e7e04ffb.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/311.e7e04ffb.chunk.js","mappings":"qMAAA,IAAIA,EAAkB,OAClBC,EAAa,sIACbC,EAAc,oBAELC,EAAa,CACxBC,KAAM,aACNC,MAAO,SAASC,GACd,GAAIA,EAAOC,MAAO,CAChB,GAAID,EAAOE,MAAMR,GAAoB,MAAO,MAC5C,GAAIM,EAAOE,MAAMP,GAAe,MAAO,KACzC,CACA,OAAIK,EAAOE,MAAMN,GAAuB,UACxCI,EAAOG,OACA,KACT,GAKEC,EAAO,qHAEPC,EAAW,mBACXC,EAAU,2NACVC,EAAuB,wBACvBC,EAAsB,iBACtBC,EAAY,0CAEHC,EAAU,CACrBZ,KAAM,UACNa,WAAY,WACV,MAAO,CACLC,aAAa,EACbC,iBAAiB,EACjBP,SAAS,EAEb,EACAP,MAAO,SAAUC,EAAQc,GAEvB,GAAU,KADDd,EAAOe,OACqB,OAApBf,EAAOgB,YAAoB,UAE5C,GAAIhB,EAAOC,MAAO,CAChB,GAAID,EAAOE,MAAMG,GAAa,MAAO,SACrC,GAAIL,EAAOE,MAAMI,GAAY,MAAO,MACtC,CAEA,GAAIN,EAAOE,MAAM,UAAa,MAAO,MACrC,GAAIF,EAAOE,MAAM,cAAiB,MAAO,MAEzC,GAAIF,EAAOE,MAAMM,GAAwB,MAAO,UAChD,GAAIR,EAAOE,MAAMK,GAEf,OADAO,EAAMF,aAAc,EACb,UAET,GAAIE,EAAMF,YAAa,CACrB,GAAIZ,EAAOE,MAAMO,GAAc,MAAO,WACtC,GAAIT,EAAOE,MAAM,UAAa,MAAO,SACjCF,EAAOiB,QAASH,EAAMF,aAAc,EAC1C,CAEA,GAAIZ,EAAOE,MAAME,GAEf,OADIJ,EAAOiB,QAASH,EAAMF,aAAc,GACjC,SAIT,GAAIZ,EAAOE,MAAM,WAEf,OADIF,EAAOE,MAAM,OAAQY,EAAMD,iBAAkB,GAC1C,UAET,GAAIC,EAAMD,gBAAiB,CACzB,GAAIb,EAAOE,MAAM,QAAW,MAAO,SACnC,GAAIF,EAAOE,MAAM,KAEf,OADAY,EAAMD,iBAAkB,EACjB,SAEX,CAGA,OAAIb,EAAOE,MAAM,0BACXF,EAAOiB,QAASH,EAAMF,aAAc,GACjC,QAGTZ,EAAOG,OACA,KACT,E","sources":["../node_modules/@codemirror/legacy-modes/mode/rpm.js"],"sourcesContent":["var headerSeparator = /^-+$/;\nvar headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\\d{1,2} \\d{2}:\\d{2}(:\\d{2})? [A-Z]{3,4} \\d{4} - /;\nvar simpleEmail = /^[\\w+.-]+@[\\w.-]+/;\n\nexport const rpmChanges = {\n name: \"rpmchanges\",\n token: function(stream) {\n if (stream.sol()) {\n if (stream.match(headerSeparator)) { return 'tag'; }\n if (stream.match(headerLine)) { return 'tag'; }\n }\n if (stream.match(simpleEmail)) { return 'string'; }\n stream.next();\n return null;\n }\n}\n\n// Quick and dirty spec file highlighting\n\nvar arch = /^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/;\n\nvar preamble = /^[a-zA-Z0-9()]+:/;\nvar section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/;\nvar control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros\nvar control_flow_simple = /^%(else|endif)/; // rpm control flow macros\nvar operators = /^(\\!|\\?|\\<\\=|\\<|\\>\\=|\\>|\\=\\=|\\&\\&|\\|\\|)/; // operators in control flow macros\n\nexport const rpmSpec = {\n name: \"rpmspec\",\n startState: function () {\n return {\n controlFlow: false,\n macroParameters: false,\n section: false\n };\n },\n token: function (stream, state) {\n var ch = stream.peek();\n if (ch == \"#\") { stream.skipToEnd(); return \"comment\"; }\n\n if (stream.sol()) {\n if (stream.match(preamble)) { return \"header\"; }\n if (stream.match(section)) { return \"atom\"; }\n }\n\n if (stream.match(/^\\$\\w+/)) { return \"def\"; } // Variables like '$RPM_BUILD_ROOT'\n if (stream.match(/^\\$\\{\\w+\\}/)) { return \"def\"; } // Variables like '${RPM_BUILD_ROOT}'\n\n if (stream.match(control_flow_simple)) { return \"keyword\"; }\n if (stream.match(control_flow_complex)) {\n state.controlFlow = true;\n return \"keyword\";\n }\n if (state.controlFlow) {\n if (stream.match(operators)) { return \"operator\"; }\n if (stream.match(/^(\\d+)/)) { return \"number\"; }\n if (stream.eol()) { state.controlFlow = false; }\n }\n\n if (stream.match(arch)) {\n if (stream.eol()) { state.controlFlow = false; }\n return \"number\";\n }\n\n // Macros like '%make_install' or '%attr(0775,root,root)'\n if (stream.match(/^%[\\w]+/)) {\n if (stream.match('(')) { state.macroParameters = true; }\n return \"keyword\";\n }\n if (state.macroParameters) {\n if (stream.match(/^\\d+/)) { return \"number\";}\n if (stream.match(')')) {\n state.macroParameters = false;\n return \"keyword\";\n }\n }\n\n // Macros like '%{defined fedora}'\n if (stream.match(/^%\\{\\??[\\w \\-\\:\\!]+\\}/)) {\n if (stream.eol()) { state.controlFlow = false; }\n return \"def\";\n }\n\n stream.next();\n return null;\n }\n};\n\n"],"names":["headerSeparator","headerLine","simpleEmail","rpmChanges","name","token","stream","sol","match","next","arch","preamble","section","control_flow_complex","control_flow_simple","operators","rpmSpec","startState","controlFlow","macroParameters","state","peek","skipToEnd","eol"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/379.e48ee7a7.chunk.js b/media/assets/frontend/static/js/379.e48ee7a7.chunk.js new file mode 100644 index 00000000000..d9286eb9a22 --- /dev/null +++ b/media/assets/frontend/static/js/379.e48ee7a7.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[379],{50379:function(e,t,n){function r(e){for(var t={},n=e.split(" "),r=0;r!=&|~^\/]/,o=e.support||{},u=e.hooks||{},d=e.dateSQL||{date:!0,time:!0,timestamp:!0},m=!1!==e.backslashStringEscapes,p=e.brackets||/^[\{}\(\)\[\]]/,g=e.punctuation||/^[;.,:]/;function h(e,s){var l=e.next();if(u[l]){var c=u[l](e,s);if(!1!==c)return c}if(o.hexNumber&&("0"==l&&e.match(/^[xX][0-9a-fA-F]+/)||("x"==l||"X"==l)&&e.match(/^'[0-9a-fA-F]*'/)))return"number";if(o.binaryNumber&&(("b"==l||"B"==l)&&e.match(/^'[01]+'/)||"0"==l&&e.match(/^b[01]*/)))return"number";if(l.charCodeAt(0)>47&&l.charCodeAt(0)<58)return e.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),o.decimallessFloat&&e.match(/^\.(?!\.)/),"number";if("?"==l&&(e.eatSpace()||e.eol()||e.eat(";")))return"macroName";if("'"==l||'"'==l&&o.doubleQuote)return s.tokenize=b(l),s.tokenize(e,s);if((o.nCharCast&&("n"==l||"N"==l)||o.charsetCast&&"_"==l&&e.match(/[a-z][a-z0-9]*/i))&&("'"==e.peek()||'"'==e.peek()))return"keyword";if(o.escapeConstant&&("e"==l||"E"==l)&&("'"==e.peek()||'"'==e.peek()&&o.doubleQuote))return s.tokenize=function(e,t){return(t.tokenize=b(e.next(),!0))(e,t)},"keyword";if(o.commentSlashSlash&&"/"==l&&e.eat("/"))return e.skipToEnd(),"comment";if(o.commentHash&&"#"==l||"-"==l&&e.eat("-")&&(!o.commentSpaceRequired||e.eat(" ")))return e.skipToEnd(),"comment";if("/"==l&&e.eat("*"))return s.tokenize=f(1),s.tokenize(e,s);if("."!=l){if(i.test(l))return e.eatWhile(i),"operator";if(p.test(l))return"bracket";if(g.test(l))return e.eatWhile(g),"punctuation";if("{"==l&&(e.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||e.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";e.eatWhile(/^[_\w\d]/);var m=e.current().toLowerCase();return d.hasOwnProperty(m)&&(e.match(/^( )+'[^']*'/)||e.match(/^( )+"[^"]*"/))?"number":r.hasOwnProperty(m)?"atom":a.hasOwnProperty(m)?"type":n.hasOwnProperty(m)?"keyword":t.hasOwnProperty(m)?"builtin":null}return o.zerolessFloat&&e.match(/^(?:\d+(?:e[+-]?\d+)?)/i)?"number":e.match(/^\.+/)?null:o.ODBCdotTable&&e.match(/^[\w\d_$#]+/)?"type":void 0}function b(e,t){return function(r,a){for(var n,i=!1;null!=(n=r.next());){if(n==e&&!i){a.tokenize=h;break}i=(m||t)&&!i&&"\\"==n}return"string"}}function f(e){return function(t,r){var a=t.match(/^.*?(\/\*|\*\/)/);return a?"/*"==a[1]?r.tokenize=f(e+1):r.tokenize=e>1?f(e-1):h:t.skipToEnd(),"comment"}}function _(e,t,r){t.context={prev:t.context,indent:e.indentation(),col:e.column(),type:r}}return{name:"sql",startState:function(){return{tokenize:h,context:null}},token:function(e,t){if(e.sol()&&t.context&&null==t.context.align&&(t.context.align=!1),t.tokenize==h&&e.eatSpace())return null;var r=t.tokenize(e,t);if("comment"==r)return r;t.context&&null==t.context.align&&(t.context.align=!0);var a=e.current();return"("==a?_(e,t,")"):"["==a?_(e,t,"]"):t.context&&t.context.type==a&&function(e){e.indent=e.context.indent,e.context=e.context.prev}(t),r},indent:function(e,t,r){var a=e.context;if(!a)return null;var n=t.charAt(0)==a.type;return a.align?a.col+(n?0:1):a.indent+(n?0:r.unit)},languageData:{commentTokens:{line:o.commentSlashSlash?"//":o.commentHash?"#":"--",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}}}function n(e){for(var t;null!=(t=e.next());)if("`"==t&&!e.eat("`"))return"string.special";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"string.special":null}function i(e){return e.eat("@")&&(e.match("session."),e.match("local."),e.match("global.")),e.eat("'")?(e.match(/^.*'/),"string.special"):e.eat('"')?(e.match(/^.*"/),"string.special"):e.eat("`")?(e.match(/^.*`/),"string.special"):e.match(/^[0-9a-zA-Z$\.\_]+/)?"string.special":null}function o(e){return e.eat("N")?"atom":e.match(/^[a-zA-Z.#!?]/)?"string.special":null}r.r(t),r.d(t,{cassandra:function(){return h},esper:function(){return w},gpSQL:function(){return v},gql:function(){return y},hive:function(){return f},mariaDB:function(){return p},msSQL:function(){return d},mySQL:function(){return m},pgSQL:function(){return _},plSQL:function(){return b},sparkSQL:function(){return x},sql:function(){return a},sqlite:function(){return g},standardSQL:function(){return u}});var s="alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit ";function l(e){for(var t={},r=e.split(" "),a=0;a!=^\&|\/]/,brackets:/^[\{}\(\)]/,punctuation:/^[;.,:/]/,backslashStringEscapes:!1,dateSQL:l("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":i}}),m=a({client:l("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:l(s+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:l("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:l("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:l("date time timestamp"),support:l("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":i,"`":n,"\\":o}}),p=a({client:l("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:l(s+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:l("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:l("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:l("date time timestamp"),support:l("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":i,"`":n,"\\":o}}),g=a({client:l("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"),keywords:l(s+"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"),builtin:l("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"),atoms:l("null current_date current_time current_timestamp"),operatorChars:/^[*+\-%<>!=&|/~]/,dateSQL:l("date time timestamp datetime"),support:l("decimallessFloat zerolessFloat"),identifierQuote:'"',hooks:{"@":i,":":i,"?":i,$:i,'"':function(e){for(var t;null!=(t=e.next());)if('"'==t&&!e.eat('"'))return"string.special";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"string.special":null},"`":n}}),h=a({client:{},keywords:l("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),builtin:l("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),atoms:l("false true infinity NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:l("commentSlashSlash decimallessFloat"),hooks:{}}),b=a({client:l("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:l("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:l("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*\/+\-%<>!=~]/,dateSQL:l("date time timestamp"),support:l("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),f=a({keywords:l("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year"),builtin:l("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar"),atoms:l("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:l("date timestamp"),support:l("ODBCdotTable doubleQuote binaryNumber hexNumber")}),_=a({client:l("source"),keywords:l(s+"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"),builtin:l("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:l("false true null unknown"),operatorChars:/^[*\/+\-%<>!=&|^\/#@?~]/,backslashStringEscapes:!1,dateSQL:l("date time timestamp"),support:l("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant")}),y=a({keywords:l("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),atoms:l("false true"),builtin:l("blob datetime first key __key__ string integer double boolean null"),operatorChars:/^[*+\-%<>!=]/}),v=a({client:l("source"),keywords:l("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"),builtin:l("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:l("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:l("date time timestamp"),support:l("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),x=a({keywords:l("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"),builtin:l("tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat"),atoms:l("false true null"),operatorChars:/^[*\/+\-%<>!=~&|^]/,dateSQL:l("date time timestamp"),support:l("ODBCdotTable doubleQuote zerolessFloat")}),w=a({client:l("source"),keywords:l("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"),builtin:{},atoms:l("false true null"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:l("time"),support:l("decimallessFloat zerolessFloat binaryNumber hexNumber")})}}]); +//# sourceMappingURL=482.40023cf1.chunk.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/482.40023cf1.chunk.js.map b/media/assets/frontend/static/js/482.40023cf1.chunk.js.map new file mode 100644 index 00000000000..a8501f58d22 --- /dev/null +++ b/media/assets/frontend/static/js/482.40023cf1.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/482.40023cf1.chunk.js","mappings":"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","sources":["../node_modules/@codemirror/legacy-modes/mode/sql.js"],"sourcesContent":["export function sql(parserConfig) {\n var client = parserConfig.client || {},\n atoms = parserConfig.atoms || {\"false\": true, \"true\": true, \"null\": true},\n builtin = parserConfig.builtin || set(defaultBuiltin),\n keywords = parserConfig.keywords || set(sqlKeywords),\n operatorChars = parserConfig.operatorChars || /^[*+\\-%<>!=&|~^\\/]/,\n support = parserConfig.support || {},\n hooks = parserConfig.hooks || {},\n dateSQL = parserConfig.dateSQL || {\"date\" : true, \"time\" : true, \"timestamp\" : true},\n backslashStringEscapes = parserConfig.backslashStringEscapes !== false,\n brackets = parserConfig.brackets || /^[\\{}\\(\\)\\[\\]]/,\n punctuation = parserConfig.punctuation || /^[;.,:]/\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n\n // call hooks from the mime type\n if (hooks[ch]) {\n var result = hooks[ch](stream, state);\n if (result !== false) return result;\n }\n\n if (support.hexNumber &&\n ((ch == \"0\" && stream.match(/^[xX][0-9a-fA-F]+/))\n || (ch == \"x\" || ch == \"X\") && stream.match(/^'[0-9a-fA-F]*'/))) {\n // hex\n // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html\n return \"number\";\n } else if (support.binaryNumber &&\n (((ch == \"b\" || ch == \"B\") && stream.match(/^'[01]+'/))\n || (ch == \"0\" && stream.match(/^b[01]*/)))) {\n // bitstring\n // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html\n return \"number\";\n } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) {\n // numbers\n // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html\n stream.match(/^[0-9]*(\\.[0-9]+)?([eE][-+]?[0-9]+)?/);\n support.decimallessFloat && stream.match(/^\\.(?!\\.)/);\n return \"number\";\n } else if (ch == \"?\" && (stream.eatSpace() || stream.eol() || stream.eat(\";\"))) {\n // placeholders\n return \"macroName\";\n } else if (ch == \"'\" || (ch == '\"' && support.doubleQuote)) {\n // strings\n // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html\n state.tokenize = tokenLiteral(ch);\n return state.tokenize(stream, state);\n } else if ((((support.nCharCast && (ch == \"n\" || ch == \"N\"))\n || (support.charsetCast && ch == \"_\" && stream.match(/[a-z][a-z0-9]*/i)))\n && (stream.peek() == \"'\" || stream.peek() == '\"'))) {\n // charset casting: _utf8'str', N'str', n'str'\n // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html\n return \"keyword\";\n } else if (support.escapeConstant && (ch == \"e\" || ch == \"E\")\n && (stream.peek() == \"'\" || (stream.peek() == '\"' && support.doubleQuote))) {\n // escape constant: E'str', e'str'\n // ref: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE\n state.tokenize = function(stream, state) {\n return (state.tokenize = tokenLiteral(stream.next(), true))(stream, state);\n }\n return \"keyword\";\n } else if (support.commentSlashSlash && ch == \"/\" && stream.eat(\"/\")) {\n // 1-line comment\n stream.skipToEnd();\n return \"comment\";\n } else if ((support.commentHash && ch == \"#\")\n || (ch == \"-\" && stream.eat(\"-\") && (!support.commentSpaceRequired || stream.eat(\" \")))) {\n // 1-line comments\n // ref: https://kb.askmonty.org/en/comment-syntax/\n stream.skipToEnd();\n return \"comment\";\n } else if (ch == \"/\" && stream.eat(\"*\")) {\n // multi-line comments\n // ref: https://kb.askmonty.org/en/comment-syntax/\n state.tokenize = tokenComment(1);\n return state.tokenize(stream, state);\n } else if (ch == \".\") {\n // .1 for 0.1\n if (support.zerolessFloat && stream.match(/^(?:\\d+(?:e[+-]?\\d+)?)/i))\n return \"number\";\n if (stream.match(/^\\.+/))\n return null\n // .table_name (ODBC)\n // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html\n if (support.ODBCdotTable && stream.match(/^[\\w\\d_$#]+/))\n return \"type\";\n } else if (operatorChars.test(ch)) {\n // operators\n stream.eatWhile(operatorChars);\n return \"operator\";\n } else if (brackets.test(ch)) {\n // brackets\n return \"bracket\";\n } else if (punctuation.test(ch)) {\n // punctuation\n stream.eatWhile(punctuation);\n return \"punctuation\";\n } else if (ch == '{' &&\n (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*\"[^\"]*\"( )*}/))) {\n // dates (weird ODBC syntax)\n // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html\n return \"number\";\n } else {\n stream.eatWhile(/^[_\\w\\d]/);\n var word = stream.current().toLowerCase();\n // dates (standard SQL syntax)\n // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html\n if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+\"[^\"]*\"/)))\n return \"number\";\n if (atoms.hasOwnProperty(word)) return \"atom\";\n if (builtin.hasOwnProperty(word)) return \"type\";\n if (keywords.hasOwnProperty(word)) return \"keyword\";\n if (client.hasOwnProperty(word)) return \"builtin\";\n return null;\n }\n }\n\n // 'string', with char specified in quote escaped by '\\'\n function tokenLiteral(quote, backslashEscapes) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = (backslashStringEscapes || backslashEscapes) && !escaped && ch == \"\\\\\";\n }\n return \"string\";\n };\n }\n function tokenComment(depth) {\n return function(stream, state) {\n var m = stream.match(/^.*?(\\/\\*|\\*\\/)/)\n if (!m) stream.skipToEnd()\n else if (m[1] == \"/*\") state.tokenize = tokenComment(depth + 1)\n else if (depth > 1) state.tokenize = tokenComment(depth - 1)\n else state.tokenize = tokenBase\n return \"comment\"\n }\n }\n\n function pushContext(stream, state, type) {\n state.context = {\n prev: state.context,\n indent: stream.indentation(),\n col: stream.column(),\n type: type\n };\n }\n\n function popContext(state) {\n state.indent = state.context.indent;\n state.context = state.context.prev;\n }\n\n return {\n name: \"sql\",\n\n startState: function() {\n return {tokenize: tokenBase, context: null};\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (state.context && state.context.align == null)\n state.context.align = false;\n }\n if (state.tokenize == tokenBase && stream.eatSpace()) return null;\n\n var style = state.tokenize(stream, state);\n if (style == \"comment\") return style;\n\n if (state.context && state.context.align == null)\n state.context.align = true;\n\n var tok = stream.current();\n if (tok == \"(\")\n pushContext(stream, state, \")\");\n else if (tok == \"[\")\n pushContext(stream, state, \"]\");\n else if (state.context && state.context.type == tok)\n popContext(state);\n return style;\n },\n\n indent: function(state, textAfter, iCx) {\n var cx = state.context;\n if (!cx) return null;\n var closing = textAfter.charAt(0) == cx.type;\n if (cx.align) return cx.col + (closing ? 0 : 1);\n else return cx.indent + (closing ? 0 : iCx.unit);\n },\n\n languageData: {\n commentTokens: {\n line: support.commentSlashSlash ? \"//\" : support.commentHash ? \"#\" : \"--\",\n block: {open: \"/*\", close: \"*/\"}\n },\n closeBrackets: {brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"`\"]}\n }\n };\n};\n\n// `identifier`\nfunction hookIdentifier(stream) {\n // MySQL/MariaDB identifiers\n // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"`\" && !stream.eat(\"`\")) return \"string.special\";\n }\n stream.backUp(stream.current().length - 1);\n return stream.eatWhile(/\\w/) ? \"string.special\" : null;\n}\n\n// \"identifier\"\nfunction hookIdentifierDoublequote(stream) {\n // Standard SQL /SQLite identifiers\n // ref: http://web.archive.org/web/20160813185132/http://savage.net.au/SQL/sql-99.bnf.html#delimited%20identifier\n // ref: http://sqlite.org/lang_keywords.html\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"\\\"\" && !stream.eat(\"\\\"\")) return \"string.special\";\n }\n stream.backUp(stream.current().length - 1);\n return stream.eatWhile(/\\w/) ? \"string.special\" : null;\n}\n\n// variable token\nfunction hookVar(stream) {\n // variables\n // @@prefix.varName @varName\n // varName can be quoted with ` or ' or \"\n // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html\n if (stream.eat(\"@\")) {\n stream.match('session.');\n stream.match('local.');\n stream.match('global.');\n }\n\n if (stream.eat(\"'\")) {\n stream.match(/^.*'/);\n return \"string.special\";\n } else if (stream.eat('\"')) {\n stream.match(/^.*\"/);\n return \"string.special\";\n } else if (stream.eat(\"`\")) {\n stream.match(/^.*`/);\n return \"string.special\";\n } else if (stream.match(/^[0-9a-zA-Z$\\.\\_]+/)) {\n return \"string.special\";\n }\n return null;\n};\n\n// short client keyword token\nfunction hookClient(stream) {\n // \\N means NULL\n // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html\n if (stream.eat(\"N\")) {\n return \"atom\";\n }\n // \\g, etc\n // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html\n return stream.match(/^[a-zA-Z.#!?]/) ? \"string.special\" : null;\n}\n\n// these keywords are used by all SQL dialects (however, a mode can still overwrite it)\nvar sqlKeywords = \"alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit \";\n\n// turn a space-separated list into an array\nfunction set(str) {\n var obj = {}, words = str.split(\" \");\n for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n}\n\nvar defaultBuiltin = \"bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric\"\n\n// A generic SQL Mode. It's not a standard, it just try to support what is generally supported\nexport const standardSQL = sql({\n keywords: set(sqlKeywords + \"begin\"),\n builtin: set(defaultBuiltin),\n atoms: set(\"false true null unknown\"),\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable doubleQuote binaryNumber hexNumber\")\n});\n\nexport const msSQL = sql({\n client: set(\"$partition binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id\"),\n keywords: set(sqlKeywords + \"begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx updlock with\"),\n builtin: set(\"bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table \"),\n atoms: set(\"is not null like and or in left right between inner outer join all any some cross unpivot pivot exists\"),\n operatorChars: /^[*+\\-%<>!=^\\&|\\/]/,\n brackets: /^[\\{}\\(\\)]/,\n punctuation: /^[;.,:/]/,\n backslashStringEscapes: false,\n dateSQL: set(\"date datetimeoffset datetime2 smalldatetime datetime time\"),\n hooks: {\n \"@\": hookVar\n }\n});\n\nexport const mySQL = sql({\n client: set(\"charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee\"),\n keywords: set(sqlKeywords + \"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat\"),\n builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*+\\-%<>!=&|^]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired\"),\n hooks: {\n \"@\": hookVar,\n \"`\": hookIdentifier,\n \"\\\\\": hookClient\n }\n});\n\nexport const mariaDB = sql({\n client: set(\"charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee\"),\n keywords: set(sqlKeywords + \"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat\"),\n builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*+\\-%<>!=&|^]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired\"),\n hooks: {\n \"@\": hookVar,\n \"`\": hookIdentifier,\n \"\\\\\": hookClient\n }\n});\n\n// provided by the phpLiteAdmin project - phpliteadmin.org\nexport const sqlite = sql({\n // commands of the official SQLite client, ref: https://www.sqlite.org/cli.html#dotcmd\n client: set(\"auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width\"),\n // ref: http://sqlite.org/lang_keywords.html\n keywords: set(sqlKeywords + \"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without\"),\n // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types.\n builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real\"),\n // ref: http://sqlite.org/syntax/literal-value.html\n atoms: set(\"null current_date current_time current_timestamp\"),\n // ref: http://sqlite.org/lang_expr.html#binaryops\n operatorChars: /^[*+\\-%<>!=&|/~]/,\n // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types.\n dateSQL: set(\"date time timestamp datetime\"),\n support: set(\"decimallessFloat zerolessFloat\"),\n identifierQuote: \"\\\"\", //ref: http://sqlite.org/lang_keywords.html\n hooks: {\n // bind-parameters ref:http://sqlite.org/lang_expr.html#varparam\n \"@\": hookVar,\n \":\": hookVar,\n \"?\": hookVar,\n \"$\": hookVar,\n // The preferred way to escape Identifiers is using double quotes, ref: http://sqlite.org/lang_keywords.html\n \"\\\"\": hookIdentifierDoublequote,\n // there is also support for backticks, ref: http://sqlite.org/lang_keywords.html\n \"`\": hookIdentifier\n }\n});\n\n// the query language used by Apache Cassandra is called CQL, but this mime type\n// is called Cassandra to avoid confusion with Contextual Query Language\nexport const cassandra = sql({\n client: { },\n keywords: set(\"add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime\"),\n builtin: set(\"ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint\"),\n atoms: set(\"false true infinity NaN\"),\n operatorChars: /^[<>=]/,\n dateSQL: { },\n support: set(\"commentSlashSlash decimallessFloat\"),\n hooks: { }\n});\n\n// this is based on Peter Raganitsch's 'plsql' mode\nexport const plSQL = sql({\n client: set(\"appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap\"),\n keywords: set(\"abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work\"),\n builtin: set(\"abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml\"),\n operatorChars: /^[*\\/+\\-%<>!=~]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"doubleQuote nCharCast zerolessFloat binaryNumber hexNumber\")\n});\n\n// Created to support specific hive keywords\nexport const hive = sql({\n keywords: set(\"select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year\"),\n builtin: set(\"bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*+\\-%<>!=]/,\n dateSQL: set(\"date timestamp\"),\n support: set(\"ODBCdotTable doubleQuote binaryNumber hexNumber\")\n});\n\nexport const pgSQL = sql({\n client: set(\"source\"),\n // For PostgreSQL - https://www.postgresql.org/docs/11/sql-keywords-appendix.html\n // For pl/pgsql lang - https://github.com/postgres/postgres/blob/REL_11_2/src/pl/plpgsql/src/pl_scanner.c\n keywords: set(sqlKeywords + \"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone\"),\n // https://www.postgresql.org/docs/11/datatype.html\n builtin: set(\"bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*\\/+\\-%<>!=&|^\\/#@?~]/,\n backslashStringEscapes: false,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant\")\n});\n\n// Google's SQL-like query language, GQL\nexport const gql = sql({\n keywords: set(\"ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where\"),\n atoms: set(\"false true\"),\n builtin: set(\"blob datetime first key __key__ string integer double boolean null\"),\n operatorChars: /^[*+\\-%<>!=]/\n});\n\n// Greenplum\nexport const gpSQL = sql({\n client: set(\"source\"),\n //https://github.com/greenplum-db/gpdb/blob/master/src/include/parser/kwlist.h\n keywords: set(\"abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone\"),\n builtin: set(\"bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*+\\-%<>!=&|^\\/#@?~]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast\")\n});\n\n// Spark SQL\nexport const sparkSQL = sql({\n keywords: set(\"add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with\"),\n builtin: set(\"tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat\"),\n atoms: set(\"false true null\"),\n operatorChars: /^[*\\/+\\-%<>!=~&|^]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable doubleQuote zerolessFloat\")\n});\n\n// Esper\nexport const esper = sql({\n client: set(\"source\"),\n // http://www.espertech.com/esper/release-5.5.0/esper-reference/html/appendix_keywords.html\n keywords: set(\"alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window\"),\n builtin: {},\n atoms: set(\"false true null\"),\n operatorChars: /^[*+\\-%<>!=&|^\\/#@?~]/,\n dateSQL: set(\"time\"),\n support: set(\"decimallessFloat zerolessFloat binaryNumber hexNumber\")\n});\n\n/*\n How options are used by SQL Mode\n =================================================\n\n keywords:\n A list of keywords you want to be highlighted.\n builtin:\n A list of builtin types you want to be highlighted (if you want types to be of class \"builtin\" instead of \"keyword\").\n operatorChars:\n All characters that must be handled as operators.\n client:\n Commands parsed and executed by the client (not the server).\n support:\n A list of supported syntaxes which are not common, but are supported by more than 1 DBMS.\n * ODBCdotTable: .tableName\n * zerolessFloat: .1\n * doubleQuote\n * nCharCast: N'string'\n * charsetCast: _utf8'string'\n * commentHash: use # char for comments\n * commentSlashSlash: use // for comments\n * commentSpaceRequired: require a space after -- for comments\n atoms:\n Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others:\n UNKNOWN, INFINITY, UNDERFLOW, NaN...\n dateSQL:\n Used for date/time SQL standard syntax, because not all DBMS's support same temporal types.\n*/\n"],"names":["sql","parserConfig","client","atoms","builtin","set","defaultBuiltin","keywords","sqlKeywords","operatorChars","support","hooks","dateSQL","backslashStringEscapes","brackets","punctuation","tokenBase","stream","state","ch","next","result","hexNumber","match","binaryNumber","charCodeAt","decimallessFloat","eatSpace","eol","eat","doubleQuote","tokenize","tokenLiteral","nCharCast","charsetCast","peek","escapeConstant","commentSlashSlash","skipToEnd","commentHash","commentSpaceRequired","tokenComment","test","eatWhile","word","current","toLowerCase","hasOwnProperty","zerolessFloat","ODBCdotTable","quote","backslashEscapes","escaped","depth","m","pushContext","type","context","prev","indent","indentation","col","column","name","startState","token","sol","align","style","tok","popContext","textAfter","iCx","cx","closing","charAt","unit","languageData","commentTokens","line","block","open","close","closeBrackets","hookIdentifier","backUp","length","hookVar","hookClient","str","obj","words","split","i","standardSQL","msSQL","mySQL","mariaDB","sqlite","identifierQuote","cassandra","plSQL","hive","pgSQL","gql","gpSQL","sparkSQL","esper"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/54.f8d765ee.chunk.js b/media/assets/frontend/static/js/54.f8d765ee.chunk.js new file mode 100644 index 00000000000..111ca68553d --- /dev/null +++ b/media/assets/frontend/static/js/54.f8d765ee.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[54],{28054:function(e,t,n){function r(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}n.r(t),n.d(t,{cython:function(){return f},mkPython:function(){return c},python:function(){return u}});var i=r(["and","or","not","is"]),a=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in","False","True"],o=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];function s(e){return e.scopes[e.scopes.length-1]}function c(e){for(var t="error",n=e.delimiters||e.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,c=[e.singleOperators,e.doubleOperators,e.doubleDelimiters,e.tripleDelimiters,e.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],l=0;li?v(e,n):a0&&x(e,n)&&(o+=" "+t),o}return k(e,n)}function k(r,a,o){if(r.eatSpace())return null;if(!o&&r.match(/^#.*/))return"comment";if(r.match(/^[0-9\.]/,!1)){var s=!1;if(r.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(s=!0),r.match(/^[\d_]+\.\d*/)&&(s=!0),r.match(/^\.\d+/)&&(s=!0),s)return r.eat(/J/i),"number";var l=!1;if(r.match(/^0x[0-9a-f_]+/i)&&(l=!0),r.match(/^0b[01_]+/i)&&(l=!0),r.match(/^0o[0-7_]+/i)&&(l=!0),r.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(r.eat(/J/i),l=!0),r.match(/^0(?![\dx])/i)&&(l=!0),l)return r.eat(/L/i),"number"}if(r.match(h))return-1!==r.current().toLowerCase().indexOf("f")?(a.tokenize=function(n,r){for(;"rubf".indexOf(n.charAt(0).toLowerCase())>=0;)n=n.substr(1);var i=1==n.length,a="string";function o(e){return function(t,n){var r=k(t,n,!0);return"punctuation"==r&&("{"==t.current()?n.tokenize=o(e+1):"}"==t.current()&&(n.tokenize=e>1?o(e-1):s)),r}}function s(s,c){for(;!s.eol();)if(s.eatWhile(/[^'"\{\}\\]/),s.eat("\\")){if(s.next(),i&&s.eol())return a}else{if(s.match(n))return c.tokenize=r,a;if(s.match("{{"))return a;if(s.match("{",!1))return c.tokenize=o(0),s.current()?a:c.tokenize(s,c);if(s.match("}}"))return a;if(s.match("}"))return t;s.eat(/['"]/)}if(i){if(e.singleLineStringErrors)return t;c.tokenize=r}return a}return s.isString=!0,s}(r.current(),a.tokenize),a.tokenize(r,a)):(a.tokenize=function(n,r){for(;"rubf".indexOf(n.charAt(0).toLowerCase())>=0;)n=n.substr(1);var i=1==n.length,a="string";function o(o,s){for(;!o.eol();)if(o.eatWhile(/[^'"\\]/),o.eat("\\")){if(o.next(),i&&o.eol())return a}else{if(o.match(n))return s.tokenize=r,a;o.eat(/['"]/)}if(i){if(e.singleLineStringErrors)return t;s.tokenize=r}return a}return o.isString=!0,o}(r.current(),a.tokenize),a.tokenize(r,a));for(var u=0;u1&&s(t).offset>n;){if("py"!=s(t).type)return!0;t.scopes.pop()}return s(t).offset!=n}function _(e,n){e.sol()&&(n.beginningOfLine=!0,n.dedent=!1);var r=n.tokenize(e,n),i=e.current();if(n.beginningOfLine&&"@"==i)return e.match(m,!1)?"meta":d?"operator":t;if(/\S/.test(i)&&(n.beginningOfLine=!1),"variable"!=r&&"builtin"!=r||"meta"!=n.lastToken||(r="meta"),"pass"!=i&&"return"!=i||(n.dedent=!0),"lambda"==i&&(n.lambda=!0),":"==i&&!n.lambda&&"py"==s(n).type&&e.match(/^\s*(?:#|$)/,!1)&&v(e,n),1==i.length&&!/string|comment/.test(r)){var a="[({".indexOf(i);if(-1!=a&&function(e,t,n){var r=e.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:e.column()+1;t.scopes.push({offset:t.indent+(u||e.indentUnit),type:n,align:r})}(e,n,"])}".slice(a,a+1)),-1!=(a="])}".indexOf(i))){if(s(n).type!=i)return t;n.indent=n.scopes.pop().offset-(u||e.indentUnit)}}return n.dedent&&e.eol()&&"py"==s(n).type&&n.scopes.length>1&&n.scopes.pop(),r}return{name:"python",startState:function(){return{tokenize:y,scopes:[{offset:0,type:"py",align:null}],indent:0,lastToken:null,lambda:!1,dedent:0}},token:function(e,n){var r=n.errorToken;r&&(n.errorToken=!1);var i=_(e,n);return i&&"comment"!=i&&(n.lastToken="keyword"==i||"punctuation"==i?e.current():i),"punctuation"==i&&(i=null),e.eol()&&n.lambda&&(n.lambda=!1),r?t:i},indent:function(e,t,n){if(e.tokenize!=y)return e.tokenize.isString?null:0;var r=s(e),i=r.type==t.charAt(0)||"py"==r.type&&!e.dedent&&/^(else:|elif |except |finally:)/.test(t);return null!=r.align?r.align-(i?1:0):r.offset-(i?u||n.unit:0)},languageData:{autocomplete:a.concat(o).concat(["exec","print"]),indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/,commentTokens:{line:"#"},closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""']}}}}var l,u=c({}),f=c({extra_keywords:(l="by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE",l.split(" "))})}}]); +//# sourceMappingURL=54.f8d765ee.chunk.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/54.f8d765ee.chunk.js.map b/media/assets/frontend/static/js/54.f8d765ee.chunk.js.map new file mode 100644 index 00000000000..c050a5563e6 --- /dev/null +++ b/media/assets/frontend/static/js/54.f8d765ee.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/54.f8d765ee.chunk.js","mappings":"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","sources":["../node_modules/@codemirror/legacy-modes/mode/python.js"],"sourcesContent":["function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n}\n\nvar wordOperators = wordRegexp([\"and\", \"or\", \"not\", \"is\"]);\nvar commonKeywords = [\"as\", \"assert\", \"break\", \"class\", \"continue\",\n \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\",\n \"for\", \"from\", \"global\", \"if\", \"import\",\n \"lambda\", \"pass\", \"raise\", \"return\",\n \"try\", \"while\", \"with\", \"yield\", \"in\", \"False\", \"True\"];\nvar commonBuiltins = [\"abs\", \"all\", \"any\", \"bin\", \"bool\", \"bytearray\", \"callable\", \"chr\",\n \"classmethod\", \"compile\", \"complex\", \"delattr\", \"dict\", \"dir\", \"divmod\",\n \"enumerate\", \"eval\", \"filter\", \"float\", \"format\", \"frozenset\",\n \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\",\n \"input\", \"int\", \"isinstance\", \"issubclass\", \"iter\", \"len\",\n \"list\", \"locals\", \"map\", \"max\", \"memoryview\", \"min\", \"next\",\n \"object\", \"oct\", \"open\", \"ord\", \"pow\", \"property\", \"range\",\n \"repr\", \"reversed\", \"round\", \"set\", \"setattr\", \"slice\",\n \"sorted\", \"staticmethod\", \"str\", \"sum\", \"super\", \"tuple\",\n \"type\", \"vars\", \"zip\", \"__import__\", \"NotImplemented\",\n \"Ellipsis\", \"__debug__\"];\n\nfunction top(state) {\n return state.scopes[state.scopes.length - 1];\n}\n\nexport function mkPython(parserConf) {\n var ERRORCLASS = \"error\";\n\n var delimiters = parserConf.delimiters || parserConf.singleDelimiters || /^[\\(\\)\\[\\]\\{\\}@,:`=;\\.\\\\]/;\n // (Backwards-compatibility with old, cumbersome config system)\n var operators = [parserConf.singleOperators, parserConf.doubleOperators, parserConf.doubleDelimiters, parserConf.tripleDelimiters,\n parserConf.operators || /^([-+*/%\\/&|^]=?|[<>=]+|\\/\\/=?|\\*\\*=?|!=|[~!@]|\\.\\.\\.)/]\n for (var i = 0; i < operators.length; i++) if (!operators[i]) operators.splice(i--, 1)\n\n var hangingIndent = parserConf.hangingIndent;\n\n var myKeywords = commonKeywords, myBuiltins = commonBuiltins;\n if (parserConf.extra_keywords != undefined)\n myKeywords = myKeywords.concat(parserConf.extra_keywords);\n\n if (parserConf.extra_builtins != undefined)\n myBuiltins = myBuiltins.concat(parserConf.extra_builtins);\n\n var py3 = !(parserConf.version && Number(parserConf.version) < 3)\n if (py3) {\n // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator\n var identifiers = parserConf.identifiers|| /^[_A-Za-z\\u00A1-\\uFFFF][_A-Za-z0-9\\u00A1-\\uFFFF]*/;\n myKeywords = myKeywords.concat([\"nonlocal\", \"None\", \"aiter\", \"anext\", \"async\", \"await\", \"breakpoint\", \"match\", \"case\"]);\n myBuiltins = myBuiltins.concat([\"ascii\", \"bytes\", \"exec\", \"print\"]);\n var stringPrefixes = new RegExp(\"^(([rbuf]|(br)|(rb)|(fr)|(rf))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n } else {\n var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/;\n myKeywords = myKeywords.concat([\"exec\", \"print\"]);\n myBuiltins = myBuiltins.concat([\"apply\", \"basestring\", \"buffer\", \"cmp\", \"coerce\", \"execfile\",\n \"file\", \"intern\", \"long\", \"raw_input\", \"reduce\", \"reload\",\n \"unichr\", \"unicode\", \"xrange\", \"None\"]);\n var stringPrefixes = new RegExp(\"^(([rubf]|(ur)|(br))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n }\n var keywords = wordRegexp(myKeywords);\n var builtins = wordRegexp(myBuiltins);\n\n // tokenizers\n function tokenBase(stream, state) {\n var sol = stream.sol() && state.lastToken != \"\\\\\"\n if (sol) state.indent = stream.indentation()\n // Handle scope changes\n if (sol && top(state).type == \"py\") {\n var scopeOffset = top(state).offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset)\n pushPyScope(stream, state);\n else if (lineOffset < scopeOffset && dedent(stream, state) && stream.peek() != \"#\")\n state.errorToken = true;\n return null;\n } else {\n var style = tokenBaseInner(stream, state);\n if (scopeOffset > 0 && dedent(stream, state))\n style += \" \" + ERRORCLASS;\n return style;\n }\n }\n return tokenBaseInner(stream, state);\n }\n\n function tokenBaseInner(stream, state, inFormat) {\n if (stream.eatSpace()) return null;\n\n // Handle Comments\n if (!inFormat && stream.match(/^#.*/)) return \"comment\";\n\n // Handle Number Literals\n if (stream.match(/^[0-9\\.]/, false)) {\n var floatLiteral = false;\n // Floats\n if (stream.match(/^[\\d_]*\\.\\d+(e[\\+\\-]?\\d+)?/i)) { floatLiteral = true; }\n if (stream.match(/^[\\d_]+\\.\\d*/)) { floatLiteral = true; }\n if (stream.match(/^\\.\\d+/)) { floatLiteral = true; }\n if (floatLiteral) {\n // Float literals may be \"imaginary\"\n stream.eat(/J/i);\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^0x[0-9a-f_]+/i)) intLiteral = true;\n // Binary\n if (stream.match(/^0b[01_]+/i)) intLiteral = true;\n // Octal\n if (stream.match(/^0o[0-7_]+/i)) intLiteral = true;\n // Decimal\n if (stream.match(/^[1-9][\\d_]*(e[\\+\\-]?[\\d_]+)?/)) {\n // Decimal literals may be \"imaginary\"\n stream.eat(/J/i);\n // TODO - Can you have imaginary longs?\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^0(?![\\dx])/i)) intLiteral = true;\n if (intLiteral) {\n // Integer literals may be \"long\"\n stream.eat(/L/i);\n return \"number\";\n }\n }\n\n // Handle Strings\n if (stream.match(stringPrefixes)) {\n var isFmtString = stream.current().toLowerCase().indexOf('f') !== -1;\n if (!isFmtString) {\n state.tokenize = tokenStringFactory(stream.current(), state.tokenize);\n return state.tokenize(stream, state);\n } else {\n state.tokenize = formatStringFactory(stream.current(), state.tokenize);\n return state.tokenize(stream, state);\n }\n }\n\n for (var i = 0; i < operators.length; i++)\n if (stream.match(operators[i])) return \"operator\"\n\n if (stream.match(delimiters)) return \"punctuation\";\n\n if (state.lastToken == \".\" && stream.match(identifiers))\n return \"property\";\n\n if (stream.match(keywords) || stream.match(wordOperators))\n return \"keyword\";\n\n if (stream.match(builtins))\n return \"builtin\";\n\n if (stream.match(/^(self|cls)\\b/))\n return \"self\";\n\n if (stream.match(identifiers)) {\n if (state.lastToken == \"def\" || state.lastToken == \"class\")\n return \"def\";\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return inFormat ? null :ERRORCLASS;\n }\n\n function formatStringFactory(delimiter, tokenOuter) {\n while (\"rubf\".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)\n delimiter = delimiter.substr(1);\n\n var singleline = delimiter.length == 1;\n var OUTCLASS = \"string\";\n\n function tokenNestedExpr(depth) {\n return function(stream, state) {\n var inner = tokenBaseInner(stream, state, true)\n if (inner == \"punctuation\") {\n if (stream.current() == \"{\") {\n state.tokenize = tokenNestedExpr(depth + 1)\n } else if (stream.current() == \"}\") {\n if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1)\n else state.tokenize = tokenString\n }\n }\n return inner\n }\n }\n\n function tokenString(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\{\\}\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol())\n return OUTCLASS;\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenOuter;\n return OUTCLASS;\n } else if (stream.match('{{')) {\n // ignore {{ in f-str\n return OUTCLASS;\n } else if (stream.match('{', false)) {\n // switch to nested mode\n state.tokenize = tokenNestedExpr(0)\n if (stream.current()) return OUTCLASS;\n else return state.tokenize(stream, state)\n } else if (stream.match('}}')) {\n return OUTCLASS;\n } else if (stream.match('}')) {\n // single } in f-string is an error\n return ERRORCLASS;\n } else {\n stream.eat(/['\"]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors)\n return ERRORCLASS;\n else\n state.tokenize = tokenOuter;\n }\n return OUTCLASS;\n }\n tokenString.isString = true;\n return tokenString;\n }\n\n function tokenStringFactory(delimiter, tokenOuter) {\n while (\"rubf\".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)\n delimiter = delimiter.substr(1);\n\n var singleline = delimiter.length == 1;\n var OUTCLASS = \"string\";\n\n function tokenString(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol())\n return OUTCLASS;\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenOuter;\n return OUTCLASS;\n } else {\n stream.eat(/['\"]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors)\n return ERRORCLASS;\n else\n state.tokenize = tokenOuter;\n }\n return OUTCLASS;\n }\n tokenString.isString = true;\n return tokenString;\n }\n\n function pushPyScope(stream, state) {\n while (top(state).type != \"py\") state.scopes.pop()\n state.scopes.push({offset: top(state).offset + stream.indentUnit,\n type: \"py\",\n align: null})\n }\n\n function pushBracketScope(stream, state, type) {\n var align = stream.match(/^[\\s\\[\\{\\(]*(?:#|$)/, false) ? null : stream.column() + 1\n state.scopes.push({offset: state.indent + (hangingIndent || stream.indentUnit),\n type: type,\n align: align})\n }\n\n function dedent(stream, state) {\n var indented = stream.indentation();\n while (state.scopes.length > 1 && top(state).offset > indented) {\n if (top(state).type != \"py\") return true;\n state.scopes.pop();\n }\n return top(state).offset != indented;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) {\n state.beginningOfLine = true;\n state.dedent = false;\n }\n\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle decorators\n if (state.beginningOfLine && current == \"@\")\n return stream.match(identifiers, false) ? \"meta\" : py3 ? \"operator\" : ERRORCLASS;\n\n if (/\\S/.test(current)) state.beginningOfLine = false;\n\n if ((style == \"variable\" || style == \"builtin\")\n && state.lastToken == \"meta\")\n style = \"meta\";\n\n // Handle scope changes.\n if (current == \"pass\" || current == \"return\")\n state.dedent = true;\n\n if (current == \"lambda\") state.lambda = true;\n if (current == \":\" && !state.lambda && top(state).type == \"py\" && stream.match(/^\\s*(?:#|$)/, false))\n pushPyScope(stream, state);\n\n if (current.length == 1 && !/string|comment/.test(style)) {\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index != -1)\n pushBracketScope(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index != -1) {\n if (top(state).type == current) state.indent = state.scopes.pop().offset - (hangingIndent || stream.indentUnit)\n else return ERRORCLASS;\n }\n }\n if (state.dedent && stream.eol() && top(state).type == \"py\" && state.scopes.length > 1)\n state.scopes.pop();\n\n return style;\n }\n\n return {\n name: \"python\",\n\n startState: function() {\n return {\n tokenize: tokenBase,\n scopes: [{offset: 0, type: \"py\", align: null}],\n indent: 0,\n lastToken: null,\n lambda: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var addErr = state.errorToken;\n if (addErr) state.errorToken = false;\n var style = tokenLexer(stream, state);\n\n if (style && style != \"comment\")\n state.lastToken = (style == \"keyword\" || style == \"punctuation\") ? stream.current() : style;\n if (style == \"punctuation\") style = null;\n\n if (stream.eol() && state.lambda)\n state.lambda = false;\n return addErr ? ERRORCLASS : style;\n },\n\n indent: function(state, textAfter, cx) {\n if (state.tokenize != tokenBase)\n return state.tokenize.isString ? null : 0;\n\n var scope = top(state)\n var closing = scope.type == textAfter.charAt(0) ||\n scope.type == \"py\" && !state.dedent && /^(else:|elif |except |finally:)/.test(textAfter)\n if (scope.align != null)\n return scope.align - (closing ? 1 : 0)\n else\n return scope.offset - (closing ? hangingIndent || cx.unit : 0)\n },\n\n languageData: {\n autocomplete: commonKeywords.concat(commonBuiltins).concat([\"exec\", \"print\"]),\n indentOnInput: /^\\s*([\\}\\]\\)]|else:|elif |except |finally:)$/,\n commentTokens: {line: \"#\"},\n closeBrackets: {brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"'''\", '\"\"\"']}\n }\n };\n};\n\nvar words = function(str) { return str.split(\" \"); };\n\nexport const python = mkPython({})\n\nexport const cython = mkPython({\n extra_keywords: words(\"by cdef cimport cpdef ctypedef enum except \"+\n \"extern gil include nogil property public \"+\n \"readonly struct union DEF IF ELIF ELSE\")\n})\n"],"names":["wordRegexp","words","RegExp","join","wordOperators","commonKeywords","commonBuiltins","top","state","scopes","length","mkPython","parserConf","ERRORCLASS","delimiters","singleDelimiters","operators","singleOperators","doubleOperators","doubleDelimiters","tripleDelimiters","i","splice","hangingIndent","myKeywords","myBuiltins","undefined","extra_keywords","concat","extra_builtins","py3","version","Number","identifiers","stringPrefixes","keywords","builtins","tokenBase","stream","sol","lastToken","indent","indentation","type","scopeOffset","offset","eatSpace","lineOffset","pushPyScope","dedent","peek","errorToken","style","tokenBaseInner","inFormat","match","floatLiteral","eat","intLiteral","current","toLowerCase","indexOf","tokenize","delimiter","tokenOuter","charAt","substr","singleline","OUTCLASS","tokenNestedExpr","depth","inner","tokenString","eol","eatWhile","next","singleLineStringErrors","isString","formatStringFactory","tokenStringFactory","pop","push","indentUnit","align","indented","tokenLexer","beginningOfLine","test","lambda","delimiter_index","column","pushBracketScope","slice","name","startState","token","addErr","textAfter","cx","scope","closing","unit","languageData","autocomplete","indentOnInput","commentTokens","line","closeBrackets","brackets","str","python","cython","split"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/545.2cc3d80f.chunk.js b/media/assets/frontend/static/js/545.2cc3d80f.chunk.js new file mode 100644 index 00000000000..3dd5aebd54b --- /dev/null +++ b/media/assets/frontend/static/js/545.2cc3d80f.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[545],{98545:function(e,t,r){function n(e){var t,r,n=e.statementIndent,a=e.jsonld,i=e.json||a,o=e.typescript,u=e.wordCharacters||/[\w$\xa1-\uffff]/,c=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),a=e("keyword d"),i=e("operator"),o={type:"atom",style:"atom"};return{if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:a,break:a,continue:a,new:e("new"),delete:n,void:n,throw:n,debugger:e("debugger"),var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:i,typeof:i,instanceof:i,true:o,false:o,null:o,undefined:o,NaN:o,Infinity:o,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n}}(),s=/[+\-*&%=<>!?|~^@]/,f=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function l(e,n,a){return t=e,r=a,n}function d(e,t){var r,n=e.next();if('"'==n||"'"==n)return t.tokenize=(r=n,function(e,t){var n,i=!1;if(a&&"@"==e.peek()&&e.match(f))return t.tokenize=d,l("jsonld-keyword","meta");for(;null!=(n=e.next())&&(n!=r||i);)i=!i&&"\\"==n;return i||(t.tokenize=d),l("string","string")}),t.tokenize(e,t);if("."==n&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return l("number","number");if("."==n&&e.match(".."))return l("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(n))return l(n);if("="==n&&e.eat(">"))return l("=>","operator");if("0"==n&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return l("number","number");if(/\d/.test(n))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),l("number","number");if("/"==n)return e.eat("*")?(t.tokenize=m,m(e,t)):e.eat("/")?(e.skipToEnd(),l("comment","comment")):function(e,t,r){return t.tokenize==d&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),l("regexp","string.special")):(e.eat("="),l("operator","operator",e.current()));if("`"==n)return t.tokenize=p,p(e,t);if("#"==n&&"!"==e.peek())return e.skipToEnd(),l("meta","meta");if("#"==n&&e.eatWhile(u))return l("variable","property");if("<"==n&&e.match("!--")||"-"==n&&e.match("->")&&!/\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),l("comment","comment");if(s.test(n))return">"==n&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=n&&"="!=n||e.eat("="):/[<>*+\-|&?]/.test(n)&&(e.eat(n),">"==n&&e.eat(n))),"?"==n&&e.eat(".")?l("."):l("operator","operator",e.current());if(u.test(n)){e.eatWhile(u);var i=e.current();if("."!=t.lastType){if(c.propertyIsEnumerable(i)){var o=c[i];return l(o.type,o.style,i)}if("async"==i&&e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return l("async","keyword",i)}return l("variable","variable",i)}}function m(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=d;break}n="*"==r}return l("comment","comment")}function p(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=d;break}n=!n&&"\\"==r}return l("quasi","string.special",e.current())}var k="([{}])";function v(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(o){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,c=r-1;c>=0;--c){var s=e.string.charAt(c),f=k.indexOf(s);if(f>=0&&f<3){if(!a){++c;break}if(0==--a){"("==s&&(i=!0);break}}else if(f>=3&&f<6)++a;else if(u.test(s))i=!0;else if(/["'\/`]/.test(s))for(;;--c){if(0==c)return;if(e.string.charAt(c-1)==s&&"\\"!=e.string.charAt(c-2)){c--;break}}else if(i&&!a){++c;break}}i&&!a&&(t.fatArrowAt=c)}}var y={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function w(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function b(e,t){for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}var h={state:null,column:null,marked:null,cc:null};function x(){for(var e=arguments.length-1;e>=0;e--)h.cc.push(arguments[e])}function g(){return x.apply(null,arguments),!0}function V(e,t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}function A(t){var r=h.state;if(h.marked="def",r.context)if("var"==r.lexical.info&&r.context&&r.context.block){var n=z(t,r.context);if(null!=n)return void(r.context=n)}else if(!V(t,r.localVars))return void(r.localVars=new $(t,r.localVars));e.globalVars&&!V(t,r.globalVars)&&(r.globalVars=new $(t,r.globalVars))}function z(e,t){if(t){if(t.block){var r=z(e,t.prev);return r?r==t.prev?t:new T(r,t.vars,!0):null}return V(e,t.vars)?t:new T(t.prev,new $(e,t.vars),!1)}return null}function j(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}function T(e,t,r){this.prev=e,this.vars=t,this.block=r}function $(e,t){this.name=e,this.next=t}var _=new $("this",new $("arguments",null));function O(){h.state.context=new T(h.state.context,h.state.localVars,!1),h.state.localVars=_}function q(){h.state.context=new T(h.state.context,h.state.localVars,!0),h.state.localVars=null}function E(){h.state.localVars=h.state.context.vars,h.state.context=h.state.context.prev}function I(e,t){var r=function(){var r=h.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new w(n,h.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function C(){var e=h.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function S(e){return function t(r){return r==e?g():";"==e||"}"==r||")"==r||"]"==r?x():g(t)}}function N(e,t){return"var"==e?g(I("vardef",t),he,S(";"),C):"keyword a"==e?g(I("form"),D,N,C):"keyword b"==e?g(I("form"),N,C):"keyword d"==e?h.stream.match(/^\s*$/,!1)?g():g(I("stat"),U,S(";"),C):"debugger"==e?g(S(";")):"{"==e?g(I("}"),q,ae,C,E):";"==e?g():"if"==e?("else"==h.state.lexical.info&&h.state.cc[h.state.cc.length-1]==C&&h.state.cc.pop()(),g(I("form"),D,N,C,je)):"function"==e?g(Oe):"for"==e?g(I("form"),q,Te,N,E,C):"class"==e||o&&"interface"==t?(h.marked="keyword",g(I("form","class"==e?e:t),Se,C)):"variable"==e?o&&"declare"==t?(h.marked="keyword",g(N)):o&&("module"==t||"enum"==t||"type"==t)&&h.stream.match(/^\s*\w/,!1)?(h.marked="keyword","enum"==t?g(Le):"type"==t?g(Ee,S("operator"),se,S(";")):g(I("form"),xe,S("{"),I("}"),ae,C,C)):o&&"namespace"==t?(h.marked="keyword",g(I("form"),W,N,C)):o&&"abstract"==t?(h.marked="keyword",g(N)):g(I("stat"),X):"switch"==e?g(I("form"),D,S("{"),I("}","switch"),q,ae,C,C,E):"case"==e?g(W,S(":")):"default"==e?g(S(":")):"catch"==e?g(I("form"),O,P,N,C,E):"export"==e?g(I("stat"),Be,C):"import"==e?g(I("stat"),Fe,C):"async"==e?g(N):"@"==t?g(W,N):x(I("stat"),W,S(";"),C)}function P(e){if("("==e)return g(Ie,S(")"))}function W(e,t){return F(e,t,!1)}function B(e,t){return F(e,t,!0)}function D(e){return"("!=e?x():g(I(")"),U,S(")"),C)}function F(e,t,r){if(h.state.fatArrowAt==h.stream.start){var n=r?M:L;if("("==e)return g(O,I(")"),re(Ie,")"),C,S("=>"),n,E);if("variable"==e)return x(O,xe,S("=>"),n,E)}var a=r?H:G;return y.hasOwnProperty(e)?g(a):"function"==e?g(Oe,a):"class"==e||o&&"interface"==t?(h.marked="keyword",g(I("form"),Ce,C)):"keyword c"==e||"async"==e?g(r?B:W):"("==e?g(I(")"),U,S(")"),C,a):"operator"==e||"spread"==e?g(r?B:W):"["==e?g(I("]"),Ke,C,a):"{"==e?ne(Z,"}",null,a):"quasi"==e?x(J,a):"new"==e?g(function(e){return function(t){return"."==t?g(e?R:Q):"variable"==t&&o?g(ye,e?H:G):x(e?B:W)}}(r)):g()}function U(e){return e.match(/[;\}\)\],]/)?x():x(W)}function G(e,t){return","==e?g(U):H(e,t,!1)}function H(e,t,r){var n=0==r?G:H,a=0==r?W:B;return"=>"==e?g(O,r?M:L,E):"operator"==e?/\+\+|--/.test(t)||o&&"!"==t?g(n):o&&"<"==t&&h.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?g(I(">"),re(se,">"),C,n):"?"==t?g(W,S(":"),a):g(a):"quasi"==e?x(J,n):";"!=e?"("==e?ne(B,")","call",n):"."==e?g(Y,n):"["==e?g(I("]"),U,S("]"),C,n):o&&"as"==t?(h.marked="keyword",g(se,n)):"regexp"==e?(h.state.lastType=h.marked="operator",h.stream.backUp(h.stream.pos-h.stream.start-1),g(a)):void 0:void 0}function J(e,t){return"quasi"!=e?x():"${"!=t.slice(t.length-2)?g(J):g(U,K)}function K(e){if("}"==e)return h.marked="string.special",h.state.tokenize=p,g(J)}function L(e){return v(h.stream,h.state),x("{"==e?N:W)}function M(e){return v(h.stream,h.state),x("{"==e?N:B)}function Q(e,t){if("target"==t)return h.marked="keyword",g(G)}function R(e,t){if("target"==t)return h.marked="keyword",g(H)}function X(e){return":"==e?g(C,N):x(G,S(";"),C)}function Y(e){if("variable"==e)return h.marked="property",g()}function Z(e,t){return"async"==e?(h.marked="property",g(Z)):"variable"==e||"keyword"==h.style?(h.marked="property","get"==t||"set"==t?g(ee):(o&&h.state.fatArrowAt==h.stream.start&&(r=h.stream.match(/^\s*:\s*/,!1))&&(h.state.fatArrowAt=h.stream.pos+r[0].length),g(te))):"number"==e||"string"==e?(h.marked=a?"property":h.style+" property",g(te)):"jsonld-keyword"==e?g(te):o&&j(t)?(h.marked="keyword",g(Z)):"["==e?g(W,ie,S("]"),te):"spread"==e?g(B,te):"*"==t?(h.marked="keyword",g(Z)):":"==e?x(te):void 0;var r}function ee(e){return"variable"!=e?x(te):(h.marked="property",g(Oe))}function te(e){return":"==e?g(B):"("==e?x(Oe):void 0}function re(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=h.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),g((function(r,n){return r==t||n==t?x():x(e)}),n)}return a==t||i==t?g():r&&r.indexOf(";")>-1?x(e):g(S(t))}return function(r,a){return r==t||a==t?g():x(e,n)}}function ne(e,t,r){for(var n=3;n"),se):"quasi"==e?x(me,ve):void 0}function fe(e){if("=>"==e)return g(se)}function le(e){return e.match(/[\}\)\]]/)?g():","==e||";"==e?g(le):x(de,le)}function de(e,t){return"variable"==e||"keyword"==h.style?(h.marked="property",g(de)):"?"==t||"number"==e||"string"==e?g(de):":"==e?g(se):"["==e?g(S("variable"),oe,S("]"),de):"("==e?x(qe,de):e.match(/[;\}\)\],]/)?void 0:g()}function me(e,t){return"quasi"!=e?x():"${"!=t.slice(t.length-2)?g(me):g(se,pe)}function pe(e){if("}"==e)return h.marked="string.special",h.state.tokenize=p,g(me)}function ke(e,t){return"variable"==e&&h.stream.match(/^\s*[?:]/,!1)||"?"==t?g(ke):":"==e?g(se):"spread"==e?g(ke):x(se)}function ve(e,t){return"<"==t?g(I(">"),re(se,">"),C,ve):"|"==t||"."==e||"&"==t?g(se):"["==e?g(se,S("]"),ve):"extends"==t||"implements"==t?(h.marked="keyword",g(se)):"?"==t?g(se,S(":"),se):void 0}function ye(e,t){if("<"==t)return g(I(">"),re(se,">"),C,ve)}function we(){return x(se,be)}function be(e,t){if("="==t)return g(se)}function he(e,t){return"enum"==t?(h.marked="keyword",g(Le)):x(xe,ie,Ae,ze)}function xe(e,t){return o&&j(t)?(h.marked="keyword",g(xe)):"variable"==e?(A(t),g()):"spread"==e?g(xe):"["==e?ne(Ve,"]"):"{"==e?ne(ge,"}"):void 0}function ge(e,t){return"variable"!=e||h.stream.match(/^\s*:/,!1)?("variable"==e&&(h.marked="property"),"spread"==e?g(xe):"}"==e?x():"["==e?g(W,S("]"),S(":"),ge):g(S(":"),xe,Ae)):(A(t),g(Ae))}function Ve(){return x(xe,Ae)}function Ae(e,t){if("="==t)return g(B)}function ze(e){if(","==e)return g(he)}function je(e,t){if("keyword b"==e&&"else"==t)return g(I("form","else"),N,C)}function Te(e,t){return"await"==t?g(Te):"("==e?g(I(")"),$e,C):void 0}function $e(e){return"var"==e?g(he,_e):"variable"==e?g(_e):x(_e)}function _e(e,t){return")"==e?g():";"==e?g(_e):"in"==t||"of"==t?(h.marked="keyword",g(W,_e)):x(W,_e)}function Oe(e,t){return"*"==t?(h.marked="keyword",g(Oe)):"variable"==e?(A(t),g(Oe)):"("==e?g(O,I(")"),re(Ie,")"),C,ue,N,E):o&&"<"==t?g(I(">"),re(we,">"),C,Oe):void 0}function qe(e,t){return"*"==t?(h.marked="keyword",g(qe)):"variable"==e?(A(t),g(qe)):"("==e?g(O,I(")"),re(Ie,")"),C,ue,E):o&&"<"==t?g(I(">"),re(we,">"),C,qe):void 0}function Ee(e,t){return"keyword"==e||"variable"==e?(h.marked="type",g(Ee)):"<"==t?g(I(">"),re(we,">"),C):void 0}function Ie(e,t){return"@"==t&&g(W,Ie),"spread"==e?g(Ie):o&&j(t)?(h.marked="keyword",g(Ie)):o&&"this"==e?g(ie,Ae):x(xe,ie,Ae)}function Ce(e,t){return"variable"==e?Se(e,t):Ne(e,t)}function Se(e,t){if("variable"==e)return A(t),g(Ne)}function Ne(e,t){return"<"==t?g(I(">"),re(we,">"),C,Ne):"extends"==t||"implements"==t||o&&","==e?("implements"==t&&(h.marked="keyword"),g(o?se:W,Ne)):"{"==e?g(I("}"),Pe,C):void 0}function Pe(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||o&&j(t))&&h.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1)?(h.marked="keyword",g(Pe)):"variable"==e||"keyword"==h.style?(h.marked="property",g(We,Pe)):"number"==e||"string"==e?g(We,Pe):"["==e?g(W,ie,S("]"),We,Pe):"*"==t?(h.marked="keyword",g(Pe)):o&&"("==e?x(qe,Pe):";"==e||","==e?g(Pe):"}"==e?g():"@"==t?g(W,Pe):void 0}function We(e,t){if("!"==t||"?"==t)return g(We);if(":"==e)return g(se,Ae);if("="==t)return g(B);var r=h.state.lexical.prev;return x(r&&"interface"==r.info?qe:Oe)}function Be(e,t){return"*"==t?(h.marked="keyword",g(Je,S(";"))):"default"==t?(h.marked="keyword",g(W,S(";"))):"{"==e?g(re(De,"}"),Je,S(";")):x(N)}function De(e,t){return"as"==t?(h.marked="keyword",g(S("variable"))):"variable"==e?x(B,De):void 0}function Fe(e){return"string"==e?g():"("==e?x(W):"."==e?x(G):x(Ue,Ge,Je)}function Ue(e,t){return"{"==e?ne(Ue,"}"):("variable"==e&&A(t),"*"==t&&(h.marked="keyword"),g(He))}function Ge(e){if(","==e)return g(Ue,Ge)}function He(e,t){if("as"==t)return h.marked="keyword",g(Ue)}function Je(e,t){if("from"==t)return h.marked="keyword",g(W)}function Ke(e){return"]"==e?g():x(re(B,"]"))}function Le(){return x(I("form"),xe,S("{"),I("}"),re(Me,"}"),C,C)}function Me(){return x(xe,Ae)}return O.lex=q.lex=!0,E.lex=!0,C.lex=!0,{name:e.name,startState:function(t){var r={tokenize:d,lastType:"sof",cc:[],lexical:new w(-t,0,"block",!1),localVars:e.localVars,context:e.localVars&&new T(null,null,!1),indented:0};return e.globalVars&&"object"==typeof e.globalVars&&(r.globalVars=e.globalVars),r},token:function(e,n){if(e.sol()&&(n.lexical.hasOwnProperty("align")||(n.lexical.align=!1),n.indented=e.indentation(),v(e,n)),n.tokenize!=m&&e.eatSpace())return null;var a=n.tokenize(e,n);return"comment"==t?a:(n.lastType="operator"!=t||"++"!=r&&"--"!=r?t:"incdec",function(e,t,r,n,a){var o=e.cc;for(h.state=e,h.stream=a,h.marked=null,h.cc=o,h.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((o.length?o.pop():i?W:N)(r,n)){for(;o.length&&o[o.length-1].lex;)o.pop()();return h.marked?h.marked:"variable"==r&&b(e,n)?"variableName.local":t}}(n,a,t,r,e))},indent:function(t,r,a){if(t.tokenize==m||t.tokenize==p)return null;if(t.tokenize!=d)return 0;var i,o=r&&r.charAt(0),u=t.lexical;if(!/^\s*else\b/.test(r))for(var c=t.cc.length-1;c>=0;--c){var f=t.cc[c];if(f==C)u=u.prev;else if(f!=je&&f!=E)break}for(;("stat"==u.type||"form"==u.type)&&("}"==o||(i=t.cc[t.cc.length-1])&&(i==G||i==H)&&!/^[,\.=+\-*:?[\(]/.test(r));)u=u.prev;n&&")"==u.type&&"stat"==u.prev.type&&(u=u.prev);var l=u.type,k=o==l;return"vardef"==l?u.indented+("operator"==t.lastType||","==t.lastType?u.info.length+1:0):"form"==l&&"{"==o?u.indented:"form"==l?u.indented+a.unit:"stat"==l?u.indented+(function(e,t){return"operator"==e.lastType||","==e.lastType||s.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}(t,r)?n||a.unit:0):"switch"!=u.info||k||0==e.doubleIndentSwitch?u.align?u.column+(k?0:1):u.indented+(k?0:a.unit):u.indented+(/^(?:case|default)\b/.test(r)?a.unit:2*a.unit)},languageData:{indentOnInput:/^\s*(?:case .*?:|default:|\{|\})$/,commentTokens:i?void 0:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]},wordChars:"$"}}}r.r(t),r.d(t,{javascript:function(){return a},json:function(){return i},jsonld:function(){return o},typescript:function(){return u}});var a=n({name:"javascript"}),i=n({name:"json",json:!0}),o=n({name:"json",jsonld:!0}),u=n({name:"typescript",typescript:!0})}}]); +//# sourceMappingURL=545.2cc3d80f.chunk.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/545.2cc3d80f.chunk.js.map b/media/assets/frontend/static/js/545.2cc3d80f.chunk.js.map new file mode 100644 index 00000000000..73b4581f9ef --- /dev/null +++ b/media/assets/frontend/static/js/545.2cc3d80f.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/545.2cc3d80f.chunk.js","mappings":"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","sources":["../node_modules/@codemirror/legacy-modes/mode/javascript.js"],"sourcesContent":["function mkJavaScript(parserConfig) {\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string.special\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string.special\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null; cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variableName.local\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string.special\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") return pass(quasiType, afterType)\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string.special\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+#?[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\" || value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n name: parserConfig.name,\n\n startState: function(indentUnit) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical(-indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter, cx) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return null;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + cx.unit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || cx.unit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? cx.unit : 2 * cx.unit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : cx.unit);\n },\n\n languageData: {\n indentOnInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n commentTokens: jsonMode ? undefined : {line: \"//\", block: {open: \"/*\", close: \"*/\"}},\n closeBrackets: {brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"`\"]},\n wordChars: \"$\"\n }\n };\n};\n\nexport const javascript = mkJavaScript({name: \"javascript\"})\nexport const json = mkJavaScript({name: \"json\", json: true})\nexport const jsonld = mkJavaScript({name: \"json\", jsonld: true})\nexport const typescript = mkJavaScript({name: \"typescript\", typescript: true})\n"],"names":["mkJavaScript","parserConfig","type","content","statementIndent","jsonldMode","jsonld","jsonMode","json","isTS","typescript","wordRE","wordCharacters","keywords","kw","style","A","B","C","D","operator","atom","isOperatorChar","isJsonldKeyword","ret","tp","cont","tokenBase","stream","state","quote","ch","next","tokenize","escaped","peek","match","test","eat","tokenComment","skipToEnd","backUp","lastType","string","slice","pos","expressionAllowed","inSet","readRegexp","current","tokenQuasi","eatWhile","start","lexical","word","propertyIsEnumerable","maybeEnd","brackets","findFatArrow","fatArrowAt","arrow","indexOf","m","exec","index","depth","sawSomething","charAt","bracket","atomicTypes","JSLexical","indented","column","align","prev","info","this","inScope","varname","v","localVars","name","cx","context","vars","marked","cc","pass","i","arguments","length","push","apply","inList","list","register","block","newContext","registerVarScoped","Var","globalVars","inner","Context","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","result","indent","outer","lex","poplex","expect","wanted","exp","statement","value","vardef","parenExpr","maybeexpression","pop","maybeelse","functiondef","forspec","className","enumdef","typename","typeexpr","pattern","expression","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","body","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","hasOwnProperty","classExpression","arrayLiteral","contCommasep","objprop","quasi","targetNoComma","target","maybeTypeArgs","maybeTarget","me","expr","property","continueQuasi","_","getterSetter","afterprop","maybetype","what","end","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","_type","forspec1","forspec2","classNameAfter","classBody","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","startState","indentUnit","token","sol","indentation","eatSpace","parseJS","textAfter","top","firstChar","c","closing","unit","isContinuedStatement","doubleIndentSwitch","languageData","indentOnInput","commentTokens","undefined","line","open","close","closeBrackets","wordChars","javascript"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/921.ba8481b9.chunk.js b/media/assets/frontend/static/js/921.ba8481b9.chunk.js new file mode 100644 index 00000000000..d7e5b6df1ee --- /dev/null +++ b/media/assets/frontend/static/js/921.ba8481b9.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[921],{9921:function(e,t,n){n.r(t),n.d(t,{clojure:function(){return g}});var r=["false","nil","true"],a=[".","catch","def","do","if","monitor-enter","monitor-exit","new","quote","recur","set!","throw","try","var"],s=["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Inst","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","any?","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","case","cast","cat","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"],o=y(r),i=y(a),c=y(s),d=y(["->","->>","as->","binding","bound-fn","case","catch","comment","cond","cond->","cond->>","condp","def","definterface","defmethod","defn","defmacro","defprotocol","defrecord","defstruct","deftype","do","doseq","dotimes","doto","extend","extend-protocol","extend-type","fn","for","future","if","if-let","if-not","if-some","let","letfn","locking","loop","ns","proxy","reify","struct-map","some->","some->>","try","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn"]),l=/^(?:[\\\[\]\s"(),;@^`{}~]|$)/,u=/^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/,p=/^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/,m=/^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~.][^\\\[\]\s"(),;@^`{}~.\/]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~.][^\\\[\]\s"(),;@^`{}~.\/]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/;function f(e,t){if(e.eatSpace()||e.eat(","))return["space",null];if(e.match(u))return[null,"number"];if(e.match(p))return[null,"string.special"];if(e.eat(/^"/))return(t.tokenize=h)(e,t);if(e.eat(/^[(\[{]/))return["open","bracket"];if(e.eat(/^[)\]}]/))return["close","bracket"];if(e.eat(/^;/))return e.skipToEnd(),["space","comment"];if(e.eat(/^[#'@^`~]/))return[null,"meta"];var n=e.match(m),r=n&&n[0];return r?"comment"===r&&"("===t.lastToken?(t.tokenize=b)(e,t):k(r,o)||":"===r.charAt(0)?["symbol","atom"]:k(r,i)||k(r,c)?["symbol","keyword"]:"("===t.lastToken?["symbol","builtin"]:["symbol","variable"]:(e.next(),e.eatWhile((function(e){return!k(e,l)})),[null,"error"])}function h(e,t){for(var n,r=!1;n=e.next();){if('"'===n&&!r){t.tokenize=f;break}r=!r&&"\\"===n}return[null,"string"]}function b(e,t){for(var n,r=1;n=e.next();)if(")"===n&&r--,"("===n&&r++,0===r){e.backUp(1),t.tokenize=f;break}return["space","comment"]}function y(e){for(var t={},n=0;n\", \"->>\", \"->ArrayChunk\", \"->Eduction\", \"->Vec\", \"->VecNode\",\n \"->VecSeq\", \"-cache-protocol-fn\", \"-reset-methods\", \"..\", \"/\", \"<\", \"<=\",\n \"=\", \"==\", \">\", \">=\", \"EMPTY-NODE\", \"Inst\", \"StackTraceElement->vec\",\n \"Throwable->map\", \"accessor\", \"aclone\", \"add-classpath\", \"add-watch\",\n \"agent\", \"agent-error\", \"agent-errors\", \"aget\", \"alength\", \"alias\",\n \"all-ns\", \"alter\", \"alter-meta!\", \"alter-var-root\", \"amap\", \"ancestors\",\n \"and\", \"any?\", \"apply\", \"areduce\", \"array-map\", \"as->\", \"aset\",\n \"aset-boolean\", \"aset-byte\", \"aset-char\", \"aset-double\", \"aset-float\",\n \"aset-int\", \"aset-long\", \"aset-short\", \"assert\", \"assoc\", \"assoc!\",\n \"assoc-in\", \"associative?\", \"atom\", \"await\", \"await-for\", \"await1\",\n \"bases\", \"bean\", \"bigdec\", \"bigint\", \"biginteger\", \"binding\", \"bit-and\",\n \"bit-and-not\", \"bit-clear\", \"bit-flip\", \"bit-not\", \"bit-or\", \"bit-set\",\n \"bit-shift-left\", \"bit-shift-right\", \"bit-test\", \"bit-xor\", \"boolean\",\n \"boolean-array\", \"boolean?\", \"booleans\", \"bound-fn\", \"bound-fn*\",\n \"bound?\", \"bounded-count\", \"butlast\", \"byte\", \"byte-array\", \"bytes\",\n \"bytes?\", \"case\", \"cast\", \"cat\", \"char\", \"char-array\",\n \"char-escape-string\", \"char-name-string\", \"char?\", \"chars\", \"chunk\",\n \"chunk-append\", \"chunk-buffer\", \"chunk-cons\", \"chunk-first\", \"chunk-next\",\n \"chunk-rest\", \"chunked-seq?\", \"class\", \"class?\", \"clear-agent-errors\",\n \"clojure-version\", \"coll?\", \"comment\", \"commute\", \"comp\", \"comparator\",\n \"compare\", \"compare-and-set!\", \"compile\", \"complement\", \"completing\",\n \"concat\", \"cond\", \"cond->\", \"cond->>\", \"condp\", \"conj\", \"conj!\", \"cons\",\n \"constantly\", \"construct-proxy\", \"contains?\", \"count\", \"counted?\",\n \"create-ns\", \"create-struct\", \"cycle\", \"dec\", \"dec'\", \"decimal?\",\n \"declare\", \"dedupe\", \"default-data-readers\", \"definline\", \"definterface\",\n \"defmacro\", \"defmethod\", \"defmulti\", \"defn\", \"defn-\", \"defonce\",\n \"defprotocol\", \"defrecord\", \"defstruct\", \"deftype\", \"delay\", \"delay?\",\n \"deliver\", \"denominator\", \"deref\", \"derive\", \"descendants\", \"destructure\",\n \"disj\", \"disj!\", \"dissoc\", \"dissoc!\", \"distinct\", \"distinct?\", \"doall\",\n \"dorun\", \"doseq\", \"dosync\", \"dotimes\", \"doto\", \"double\", \"double-array\",\n \"double?\", \"doubles\", \"drop\", \"drop-last\", \"drop-while\", \"eduction\",\n \"empty\", \"empty?\", \"ensure\", \"ensure-reduced\", \"enumeration-seq\",\n \"error-handler\", \"error-mode\", \"eval\", \"even?\", \"every-pred\", \"every?\",\n \"ex-data\", \"ex-info\", \"extend\", \"extend-protocol\", \"extend-type\",\n \"extenders\", \"extends?\", \"false?\", \"ffirst\", \"file-seq\", \"filter\",\n \"filterv\", \"find\", \"find-keyword\", \"find-ns\", \"find-protocol-impl\",\n \"find-protocol-method\", \"find-var\", \"first\", \"flatten\", \"float\",\n \"float-array\", \"float?\", \"floats\", \"flush\", \"fn\", \"fn?\", \"fnext\", \"fnil\",\n \"for\", \"force\", \"format\", \"frequencies\", \"future\", \"future-call\",\n \"future-cancel\", \"future-cancelled?\", \"future-done?\", \"future?\",\n \"gen-class\", \"gen-interface\", \"gensym\", \"get\", \"get-in\", \"get-method\",\n \"get-proxy-class\", \"get-thread-bindings\", \"get-validator\", \"group-by\",\n \"halt-when\", \"hash\", \"hash-combine\", \"hash-map\", \"hash-ordered-coll\",\n \"hash-set\", \"hash-unordered-coll\", \"ident?\", \"identical?\", \"identity\",\n \"if-let\", \"if-not\", \"if-some\", \"ifn?\", \"import\", \"in-ns\", \"inc\", \"inc'\",\n \"indexed?\", \"init-proxy\", \"inst-ms\", \"inst-ms*\", \"inst?\", \"instance?\",\n \"int\", \"int-array\", \"int?\", \"integer?\", \"interleave\", \"intern\",\n \"interpose\", \"into\", \"into-array\", \"ints\", \"io!\", \"isa?\", \"iterate\",\n \"iterator-seq\", \"juxt\", \"keep\", \"keep-indexed\", \"key\", \"keys\", \"keyword\",\n \"keyword?\", \"last\", \"lazy-cat\", \"lazy-seq\", \"let\", \"letfn\", \"line-seq\",\n \"list\", \"list*\", \"list?\", \"load\", \"load-file\", \"load-reader\",\n \"load-string\", \"loaded-libs\", \"locking\", \"long\", \"long-array\", \"longs\",\n \"loop\", \"macroexpand\", \"macroexpand-1\", \"make-array\", \"make-hierarchy\",\n \"map\", \"map-entry?\", \"map-indexed\", \"map?\", \"mapcat\", \"mapv\", \"max\",\n \"max-key\", \"memfn\", \"memoize\", \"merge\", \"merge-with\", \"meta\",\n \"method-sig\", \"methods\", \"min\", \"min-key\", \"mix-collection-hash\", \"mod\",\n \"munge\", \"name\", \"namespace\", \"namespace-munge\", \"nat-int?\", \"neg-int?\",\n \"neg?\", \"newline\", \"next\", \"nfirst\", \"nil?\", \"nnext\", \"not\", \"not-any?\",\n \"not-empty\", \"not-every?\", \"not=\", \"ns\", \"ns-aliases\", \"ns-imports\",\n \"ns-interns\", \"ns-map\", \"ns-name\", \"ns-publics\", \"ns-refers\",\n \"ns-resolve\", \"ns-unalias\", \"ns-unmap\", \"nth\", \"nthnext\", \"nthrest\",\n \"num\", \"number?\", \"numerator\", \"object-array\", \"odd?\", \"or\", \"parents\",\n \"partial\", \"partition\", \"partition-all\", \"partition-by\", \"pcalls\", \"peek\",\n \"persistent!\", \"pmap\", \"pop\", \"pop!\", \"pop-thread-bindings\", \"pos-int?\",\n \"pos?\", \"pr\", \"pr-str\", \"prefer-method\", \"prefers\",\n \"primitives-classnames\", \"print\", \"print-ctor\", \"print-dup\",\n \"print-method\", \"print-simple\", \"print-str\", \"printf\", \"println\",\n \"println-str\", \"prn\", \"prn-str\", \"promise\", \"proxy\",\n \"proxy-call-with-super\", \"proxy-mappings\", \"proxy-name\", \"proxy-super\",\n \"push-thread-bindings\", \"pvalues\", \"qualified-ident?\",\n \"qualified-keyword?\", \"qualified-symbol?\", \"quot\", \"rand\", \"rand-int\",\n \"rand-nth\", \"random-sample\", \"range\", \"ratio?\", \"rational?\",\n \"rationalize\", \"re-find\", \"re-groups\", \"re-matcher\", \"re-matches\",\n \"re-pattern\", \"re-seq\", \"read\", \"read-line\", \"read-string\",\n \"reader-conditional\", \"reader-conditional?\", \"realized?\", \"record?\",\n \"reduce\", \"reduce-kv\", \"reduced\", \"reduced?\", \"reductions\", \"ref\",\n \"ref-history-count\", \"ref-max-history\", \"ref-min-history\", \"ref-set\",\n \"refer\", \"refer-clojure\", \"reify\", \"release-pending-sends\", \"rem\",\n \"remove\", \"remove-all-methods\", \"remove-method\", \"remove-ns\",\n \"remove-watch\", \"repeat\", \"repeatedly\", \"replace\", \"replicate\", \"require\",\n \"reset!\", \"reset-meta!\", \"reset-vals!\", \"resolve\", \"rest\",\n \"restart-agent\", \"resultset-seq\", \"reverse\", \"reversible?\", \"rseq\",\n \"rsubseq\", \"run!\", \"satisfies?\", \"second\", \"select-keys\", \"send\",\n \"send-off\", \"send-via\", \"seq\", \"seq?\", \"seqable?\", \"seque\", \"sequence\",\n \"sequential?\", \"set\", \"set-agent-send-executor!\",\n \"set-agent-send-off-executor!\", \"set-error-handler!\", \"set-error-mode!\",\n \"set-validator!\", \"set?\", \"short\", \"short-array\", \"shorts\", \"shuffle\",\n \"shutdown-agents\", \"simple-ident?\", \"simple-keyword?\", \"simple-symbol?\",\n \"slurp\", \"some\", \"some->\", \"some->>\", \"some-fn\", \"some?\", \"sort\",\n \"sort-by\", \"sorted-map\", \"sorted-map-by\", \"sorted-set\", \"sorted-set-by\",\n \"sorted?\", \"special-symbol?\", \"spit\", \"split-at\", \"split-with\", \"str\",\n \"string?\", \"struct\", \"struct-map\", \"subs\", \"subseq\", \"subvec\", \"supers\",\n \"swap!\", \"swap-vals!\", \"symbol\", \"symbol?\", \"sync\", \"tagged-literal\",\n \"tagged-literal?\", \"take\", \"take-last\", \"take-nth\", \"take-while\", \"test\",\n \"the-ns\", \"thread-bound?\", \"time\", \"to-array\", \"to-array-2d\",\n \"trampoline\", \"transduce\", \"transient\", \"tree-seq\", \"true?\", \"type\",\n \"unchecked-add\", \"unchecked-add-int\", \"unchecked-byte\", \"unchecked-char\",\n \"unchecked-dec\", \"unchecked-dec-int\", \"unchecked-divide-int\",\n \"unchecked-double\", \"unchecked-float\", \"unchecked-inc\",\n \"unchecked-inc-int\", \"unchecked-int\", \"unchecked-long\",\n \"unchecked-multiply\", \"unchecked-multiply-int\", \"unchecked-negate\",\n \"unchecked-negate-int\", \"unchecked-remainder-int\", \"unchecked-short\",\n \"unchecked-subtract\", \"unchecked-subtract-int\", \"underive\", \"unquote\",\n \"unquote-splicing\", \"unreduced\", \"unsigned-bit-shift-right\", \"update\",\n \"update-in\", \"update-proxy\", \"uri?\", \"use\", \"uuid?\", \"val\", \"vals\",\n \"var-get\", \"var-set\", \"var?\", \"vary-meta\", \"vec\", \"vector\", \"vector-of\",\n \"vector?\", \"volatile!\", \"volatile?\", \"vreset!\", \"vswap!\", \"when\",\n \"when-first\", \"when-let\", \"when-not\", \"when-some\", \"while\",\n \"with-bindings\", \"with-bindings*\", \"with-in-str\", \"with-loading-context\",\n \"with-local-vars\", \"with-meta\", \"with-open\", \"with-out-str\",\n \"with-precision\", \"with-redefs\", \"with-redefs-fn\", \"xml-seq\", \"zero?\",\n \"zipmap\"];\nvar haveBodyParameter = [\n \"->\", \"->>\", \"as->\", \"binding\", \"bound-fn\", \"case\", \"catch\", \"comment\",\n \"cond\", \"cond->\", \"cond->>\", \"condp\", \"def\", \"definterface\", \"defmethod\",\n \"defn\", \"defmacro\", \"defprotocol\", \"defrecord\", \"defstruct\", \"deftype\",\n \"do\", \"doseq\", \"dotimes\", \"doto\", \"extend\", \"extend-protocol\",\n \"extend-type\", \"fn\", \"for\", \"future\", \"if\", \"if-let\", \"if-not\", \"if-some\",\n \"let\", \"letfn\", \"locking\", \"loop\", \"ns\", \"proxy\", \"reify\", \"struct-map\",\n \"some->\", \"some->>\", \"try\", \"when\", \"when-first\", \"when-let\", \"when-not\",\n \"when-some\", \"while\", \"with-bindings\", \"with-bindings*\", \"with-in-str\",\n \"with-loading-context\", \"with-local-vars\", \"with-meta\", \"with-open\",\n \"with-out-str\", \"with-precision\", \"with-redefs\", \"with-redefs-fn\"];\n\nvar atom = createLookupMap(atoms);\nvar specialForm = createLookupMap(specialForms);\nvar coreSymbol = createLookupMap(coreSymbols);\nvar hasBodyParameter = createLookupMap(haveBodyParameter);\nvar delimiter = /^(?:[\\\\\\[\\]\\s\"(),;@^`{}~]|$)/;\nvar numberLiteral = /^(?:[+\\-]?\\d+(?:(?:N|(?:[eE][+\\-]?\\d+))|(?:\\.?\\d*(?:M|(?:[eE][+\\-]?\\d+))?)|\\/\\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\\\\[\\]\\s\"#'(),;@^`{}~]|$))/;\nvar characterLiteral = /^(?:\\\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\\\\[\\]\\s\"(),;@^`{}~]|$))/;\n\n// simple-namespace := /^[^\\\\\\/\\[\\]\\d\\s\"#'(),;@^`{}~.][^\\\\\\[\\]\\s\"(),;@^`{}~.\\/]*/\n// simple-symbol := /^(?:\\/|[^\\\\\\/\\[\\]\\d\\s\"#'(),;@^`{}~][^\\\\\\[\\]\\s\"(),;@^`{}~]*)/\n// qualified-symbol := ((<.>)*)?\nvar qualifiedSymbol = /^(?:(?:[^\\\\\\/\\[\\]\\d\\s\"#'(),;@^`{}~.][^\\\\\\[\\]\\s\"(),;@^`{}~.\\/]*(?:\\.[^\\\\\\/\\[\\]\\d\\s\"#'(),;@^`{}~.][^\\\\\\[\\]\\s\"(),;@^`{}~.\\/]*)*\\/)?(?:\\/|[^\\\\\\/\\[\\]\\d\\s\"#'(),;@^`{}~][^\\\\\\[\\]\\s\"(),;@^`{}~]*)*(?=[\\\\\\[\\]\\s\"(),;@^`{}~]|$))/;\n\nfunction base(stream, state) {\n if (stream.eatSpace() || stream.eat(\",\")) return [\"space\", null];\n if (stream.match(numberLiteral)) return [null, \"number\"];\n if (stream.match(characterLiteral)) return [null, \"string.special\"];\n if (stream.eat(/^\"/)) return (state.tokenize = inString)(stream, state);\n if (stream.eat(/^[(\\[{]/)) return [\"open\", \"bracket\"];\n if (stream.eat(/^[)\\]}]/)) return [\"close\", \"bracket\"];\n if (stream.eat(/^;/)) {stream.skipToEnd(); return [\"space\", \"comment\"];}\n if (stream.eat(/^[#'@^`~]/)) return [null, \"meta\"];\n\n var matches = stream.match(qualifiedSymbol);\n var symbol = matches && matches[0];\n\n if (!symbol) {\n // advance stream by at least one character so we don't get stuck.\n stream.next();\n stream.eatWhile(function (c) {return !is(c, delimiter);});\n return [null, \"error\"];\n }\n\n if (symbol === \"comment\" && state.lastToken === \"(\")\n return (state.tokenize = inComment)(stream, state);\n if (is(symbol, atom) || symbol.charAt(0) === \":\") return [\"symbol\", \"atom\"];\n if (is(symbol, specialForm) || is(symbol, coreSymbol)) return [\"symbol\", \"keyword\"];\n if (state.lastToken === \"(\") return [\"symbol\", \"builtin\"]; // other operator\n\n return [\"symbol\", \"variable\"];\n}\n\nfunction inString(stream, state) {\n var escaped = false, next;\n\n while (next = stream.next()) {\n if (next === \"\\\"\" && !escaped) {state.tokenize = base; break;}\n escaped = !escaped && next === \"\\\\\";\n }\n\n return [null, \"string\"];\n}\n\nfunction inComment(stream, state) {\n var parenthesisCount = 1;\n var next;\n\n while (next = stream.next()) {\n if (next === \")\") parenthesisCount--;\n if (next === \"(\") parenthesisCount++;\n if (parenthesisCount === 0) {\n stream.backUp(1);\n state.tokenize = base;\n break;\n }\n }\n\n return [\"space\", \"comment\"];\n}\n\nfunction createLookupMap(words) {\n var obj = {};\n\n for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n\n return obj;\n}\n\nfunction is(value, test) {\n if (test instanceof RegExp) return test.test(value);\n if (test instanceof Object) return test.propertyIsEnumerable(value);\n}\n\nexport const clojure = {\n name: \"clojure\",\n startState: function () {\n return {\n ctx: {prev: null, start: 0, indentTo: 0},\n lastToken: null,\n tokenize: base\n };\n },\n\n token: function (stream, state) {\n if (stream.sol() && (typeof state.ctx.indentTo !== \"number\"))\n state.ctx.indentTo = state.ctx.start + 1;\n\n var typeStylePair = state.tokenize(stream, state);\n var type = typeStylePair[0];\n var style = typeStylePair[1];\n var current = stream.current();\n\n if (type !== \"space\") {\n if (state.lastToken === \"(\" && state.ctx.indentTo === null) {\n if (type === \"symbol\" && is(current, hasBodyParameter))\n state.ctx.indentTo = state.ctx.start + stream.indentUnit;\n else state.ctx.indentTo = \"next\";\n } else if (state.ctx.indentTo === \"next\") {\n state.ctx.indentTo = stream.column();\n }\n\n state.lastToken = current;\n }\n\n if (type === \"open\")\n state.ctx = {prev: state.ctx, start: stream.column(), indentTo: null};\n else if (type === \"close\") state.ctx = state.ctx.prev || state.ctx;\n\n return style;\n },\n\n indent: function (state) {\n var i = state.ctx.indentTo;\n\n return (typeof i === \"number\") ?\n i :\n state.ctx.start + 1;\n },\n\n languageData: {\n closeBrackets: {brackets: [\"(\", \"[\", \"{\", '\"']},\n commentTokens: {line: \";;\"},\n autocomplete: [].concat(atoms, specialForms, coreSymbols)\n }\n};\n"],"names":["atoms","specialForms","coreSymbols","atom","createLookupMap","specialForm","coreSymbol","hasBodyParameter","delimiter","numberLiteral","characterLiteral","qualifiedSymbol","base","stream","state","eatSpace","eat","match","tokenize","inString","skipToEnd","matches","symbol","lastToken","inComment","is","charAt","next","eatWhile","c","escaped","parenthesisCount","backUp","words","obj","i","length","value","test","RegExp","Object","propertyIsEnumerable","clojure","name","startState","ctx","prev","start","indentTo","token","sol","typeStylePair","type","style","current","indentUnit","column","indent","languageData","closeBrackets","brackets","commentTokens","line","autocomplete","concat"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/975.7f1d8705.chunk.js b/media/assets/frontend/static/js/975.7f1d8705.chunk.js new file mode 100644 index 00000000000..2ad515c8f60 --- /dev/null +++ b/media/assets/frontend/static/js/975.7f1d8705.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[975],{19975:function(e,r,o){function t(e){var r={as:"keyword",do:"keyword",else:"keyword",end:"keyword",exception:"keyword",fun:"keyword",functor:"keyword",if:"keyword",in:"keyword",include:"keyword",let:"keyword",of:"keyword",open:"keyword",rec:"keyword",struct:"keyword",then:"keyword",type:"keyword",val:"keyword",while:"keyword",with:"keyword"},o=e.extraWords||{};for(var t in o)o.hasOwnProperty(t)&&(r[t]=e.extraWords[t]);var n=[];for(var i in r)n.push(i);function d(o,t){var n=o.next();if('"'===n)return t.tokenize=k,t.tokenize(o,t);if("{"===n&&o.eat("|"))return t.longString=!0,t.tokenize=y,t.tokenize(o,t);if("("===n&&o.match(/^\*(?!\))/))return t.commentLevel++,t.tokenize=w,t.tokenize(o,t);if("~"===n||"?"===n)return o.eatWhile(/\w/),"variableName.special";if("`"===n)return o.eatWhile(/\w/),"quote";if("/"===n&&e.slashComments&&o.eat("/"))return o.skipToEnd(),"comment";if(/\d/.test(n))return"0"===n&&o.eat(/[bB]/)&&o.eatWhile(/[01]/),"0"===n&&o.eat(/[xX]/)&&o.eatWhile(/[0-9a-fA-F]/),"0"===n&&o.eat(/[oO]/)?o.eatWhile(/[0-7]/):(o.eatWhile(/[\d_]/),o.eat(".")&&o.eatWhile(/[\d]/),o.eat(/[eE]/)&&o.eatWhile(/[\d\-+]/)),"number";if(/[+\-*&%=<>!?|@\.~:]/.test(n))return"operator";if(/[\w\xa1-\uffff]/.test(n)){o.eatWhile(/[\w\xa1-\uffff]/);var i=o.current();return r.hasOwnProperty(i)?r[i]:"variable"}return null}function k(e,r){for(var o,t=!1,n=!1;null!=(o=e.next());){if('"'===o&&!n){t=!0;break}n=!n&&"\\"===o}return t&&!n&&(r.tokenize=d),"string"}function w(e,r){for(var o,t;r.commentLevel>0&&null!=(t=e.next());)"("===o&&"*"===t&&r.commentLevel++,"*"===o&&")"===t&&r.commentLevel--,o=t;return r.commentLevel<=0&&(r.tokenize=d),"comment"}function y(e,r){for(var o,t;r.longString&&null!=(t=e.next());)"|"===o&&"}"===t&&(r.longString=!1),o=t;return r.longString||(r.tokenize=d),"string"}return{startState:function(){return{tokenize:d,commentLevel:0,longString:!1}},token:function(e,r){return e.eatSpace()?null:r.tokenize(e,r)},languageData:{autocomplete:n,commentTokens:{line:e.slashComments?"//":void 0,block:{open:"(*",close:"*)"}}}}}o.r(r),o.d(r,{fSharp:function(){return i},oCaml:function(){return n},sml:function(){return d}});var n=t({name:"ocaml",extraWords:{and:"keyword",assert:"keyword",begin:"keyword",class:"keyword",constraint:"keyword",done:"keyword",downto:"keyword",external:"keyword",function:"keyword",initializer:"keyword",lazy:"keyword",match:"keyword",method:"keyword",module:"keyword",mutable:"keyword",new:"keyword",nonrec:"keyword",object:"keyword",private:"keyword",sig:"keyword",to:"keyword",try:"keyword",value:"keyword",virtual:"keyword",when:"keyword",raise:"builtin",failwith:"builtin",true:"builtin",false:"builtin",asr:"builtin",land:"builtin",lor:"builtin",lsl:"builtin",lsr:"builtin",lxor:"builtin",mod:"builtin",or:"builtin",raise_notrace:"builtin",trace:"builtin",exit:"builtin",print_string:"builtin",print_endline:"builtin",int:"type",float:"type",bool:"type",char:"type",string:"type",unit:"type",List:"builtin"}}),i=t({name:"fsharp",extraWords:{abstract:"keyword",assert:"keyword",base:"keyword",begin:"keyword",class:"keyword",default:"keyword",delegate:"keyword","do!":"keyword",done:"keyword",downcast:"keyword",downto:"keyword",elif:"keyword",extern:"keyword",finally:"keyword",for:"keyword",function:"keyword",global:"keyword",inherit:"keyword",inline:"keyword",interface:"keyword",internal:"keyword",lazy:"keyword","let!":"keyword",match:"keyword",member:"keyword",module:"keyword",mutable:"keyword",namespace:"keyword",new:"keyword",null:"keyword",override:"keyword",private:"keyword",public:"keyword","return!":"keyword",return:"keyword",select:"keyword",static:"keyword",to:"keyword",try:"keyword",upcast:"keyword","use!":"keyword",use:"keyword",void:"keyword",when:"keyword","yield!":"keyword",yield:"keyword",atomic:"keyword",break:"keyword",checked:"keyword",component:"keyword",const:"keyword",constraint:"keyword",constructor:"keyword",continue:"keyword",eager:"keyword",event:"keyword",external:"keyword",fixed:"keyword",method:"keyword",mixin:"keyword",object:"keyword",parallel:"keyword",process:"keyword",protected:"keyword",pure:"keyword",sealed:"keyword",tailcall:"keyword",trait:"keyword",virtual:"keyword",volatile:"keyword",List:"builtin",Seq:"builtin",Map:"builtin",Set:"builtin",Option:"builtin",int:"builtin",string:"builtin",not:"builtin",true:"builtin",false:"builtin",raise:"builtin",failwith:"builtin"},slashComments:!0}),d=t({name:"sml",extraWords:{abstype:"keyword",and:"keyword",andalso:"keyword",case:"keyword",datatype:"keyword",fn:"keyword",handle:"keyword",infix:"keyword",infixr:"keyword",local:"keyword",nonfix:"keyword",op:"keyword",orelse:"keyword",raise:"keyword",withtype:"keyword",eqtype:"keyword",sharing:"keyword",sig:"keyword",signature:"keyword",structure:"keyword",where:"keyword",true:"keyword",false:"keyword",int:"builtin",real:"builtin",string:"builtin",char:"builtin",bool:"builtin"},slashComments:!0})}}]); +//# sourceMappingURL=975.7f1d8705.chunk.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/975.7f1d8705.chunk.js.map b/media/assets/frontend/static/js/975.7f1d8705.chunk.js.map new file mode 100644 index 00000000000..9a3a8356067 --- /dev/null +++ b/media/assets/frontend/static/js/975.7f1d8705.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/975.7f1d8705.chunk.js","mappings":"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","sources":["../node_modules/@codemirror/legacy-modes/mode/mllike.js"],"sourcesContent":["function mlLike(parserConfig) {\n var words = {\n 'as': 'keyword',\n 'do': 'keyword',\n 'else': 'keyword',\n 'end': 'keyword',\n 'exception': 'keyword',\n 'fun': 'keyword',\n 'functor': 'keyword',\n 'if': 'keyword',\n 'in': 'keyword',\n 'include': 'keyword',\n 'let': 'keyword',\n 'of': 'keyword',\n 'open': 'keyword',\n 'rec': 'keyword',\n 'struct': 'keyword',\n 'then': 'keyword',\n 'type': 'keyword',\n 'val': 'keyword',\n 'while': 'keyword',\n 'with': 'keyword'\n };\n\n var extraWords = parserConfig.extraWords || {};\n for (var prop in extraWords) {\n if (extraWords.hasOwnProperty(prop)) {\n words[prop] = parserConfig.extraWords[prop];\n }\n }\n var hintWords = [];\n for (var k in words) { hintWords.push(k); }\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n\n if (ch === '\"') {\n state.tokenize = tokenString;\n return state.tokenize(stream, state);\n }\n if (ch === '{') {\n if (stream.eat('|')) {\n state.longString = true;\n state.tokenize = tokenLongString;\n return state.tokenize(stream, state);\n }\n }\n if (ch === '(') {\n if (stream.match(/^\\*(?!\\))/)) {\n state.commentLevel++;\n state.tokenize = tokenComment;\n return state.tokenize(stream, state);\n }\n }\n if (ch === '~' || ch === '?') {\n stream.eatWhile(/\\w/);\n return 'variableName.special';\n }\n if (ch === '`') {\n stream.eatWhile(/\\w/);\n return 'quote';\n }\n if (ch === '/' && parserConfig.slashComments && stream.eat('/')) {\n stream.skipToEnd();\n return 'comment';\n }\n if (/\\d/.test(ch)) {\n if (ch === '0' && stream.eat(/[bB]/)) {\n stream.eatWhile(/[01]/);\n } if (ch === '0' && stream.eat(/[xX]/)) {\n stream.eatWhile(/[0-9a-fA-F]/)\n } if (ch === '0' && stream.eat(/[oO]/)) {\n stream.eatWhile(/[0-7]/);\n } else {\n stream.eatWhile(/[\\d_]/);\n if (stream.eat('.')) {\n stream.eatWhile(/[\\d]/);\n }\n if (stream.eat(/[eE]/)) {\n stream.eatWhile(/[\\d\\-+]/);\n }\n }\n return 'number';\n }\n if ( /[+\\-*&%=<>!?|@\\.~:]/.test(ch)) {\n return 'operator';\n }\n if (/[\\w\\xa1-\\uffff]/.test(ch)) {\n stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n var cur = stream.current();\n return words.hasOwnProperty(cur) ? words[cur] : 'variable';\n }\n return null\n }\n\n function tokenString(stream, state) {\n var next, end = false, escaped = false;\n while ((next = stream.next()) != null) {\n if (next === '\"' && !escaped) {\n end = true;\n break;\n }\n escaped = !escaped && next === '\\\\';\n }\n if (end && !escaped) {\n state.tokenize = tokenBase;\n }\n return 'string';\n };\n\n function tokenComment(stream, state) {\n var prev, next;\n while(state.commentLevel > 0 && (next = stream.next()) != null) {\n if (prev === '(' && next === '*') state.commentLevel++;\n if (prev === '*' && next === ')') state.commentLevel--;\n prev = next;\n }\n if (state.commentLevel <= 0) {\n state.tokenize = tokenBase;\n }\n return 'comment';\n }\n\n function tokenLongString(stream, state) {\n var prev, next;\n while (state.longString && (next = stream.next()) != null) {\n if (prev === '|' && next === '}') state.longString = false;\n prev = next;\n }\n if (!state.longString) {\n state.tokenize = tokenBase;\n }\n return 'string';\n }\n\n return {\n startState: function() {return {tokenize: tokenBase, commentLevel: 0, longString: false};},\n token: function(stream, state) {\n if (stream.eatSpace()) return null;\n return state.tokenize(stream, state);\n },\n\n languageData: {\n autocomplete: hintWords,\n commentTokens: {\n line: parserConfig.slashComments ? \"//\" : undefined,\n block: {open: \"(*\", close: \"*)\"}\n }\n }\n };\n};\n\nexport const oCaml = mlLike({\n name: \"ocaml\",\n extraWords: {\n 'and': 'keyword',\n 'assert': 'keyword',\n 'begin': 'keyword',\n 'class': 'keyword',\n 'constraint': 'keyword',\n 'done': 'keyword',\n 'downto': 'keyword',\n 'external': 'keyword',\n 'function': 'keyword',\n 'initializer': 'keyword',\n 'lazy': 'keyword',\n 'match': 'keyword',\n 'method': 'keyword',\n 'module': 'keyword',\n 'mutable': 'keyword',\n 'new': 'keyword',\n 'nonrec': 'keyword',\n 'object': 'keyword',\n 'private': 'keyword',\n 'sig': 'keyword',\n 'to': 'keyword',\n 'try': 'keyword',\n 'value': 'keyword',\n 'virtual': 'keyword',\n 'when': 'keyword',\n\n // builtins\n 'raise': 'builtin',\n 'failwith': 'builtin',\n 'true': 'builtin',\n 'false': 'builtin',\n\n // Pervasives builtins\n 'asr': 'builtin',\n 'land': 'builtin',\n 'lor': 'builtin',\n 'lsl': 'builtin',\n 'lsr': 'builtin',\n 'lxor': 'builtin',\n 'mod': 'builtin',\n 'or': 'builtin',\n\n // More Pervasives\n 'raise_notrace': 'builtin',\n 'trace': 'builtin',\n 'exit': 'builtin',\n 'print_string': 'builtin',\n 'print_endline': 'builtin',\n\n 'int': 'type',\n 'float': 'type',\n 'bool': 'type',\n 'char': 'type',\n 'string': 'type',\n 'unit': 'type',\n\n // Modules\n 'List': 'builtin'\n }\n});\n\nexport const fSharp = mlLike({\n name: \"fsharp\",\n extraWords: {\n 'abstract': 'keyword',\n 'assert': 'keyword',\n 'base': 'keyword',\n 'begin': 'keyword',\n 'class': 'keyword',\n 'default': 'keyword',\n 'delegate': 'keyword',\n 'do!': 'keyword',\n 'done': 'keyword',\n 'downcast': 'keyword',\n 'downto': 'keyword',\n 'elif': 'keyword',\n 'extern': 'keyword',\n 'finally': 'keyword',\n 'for': 'keyword',\n 'function': 'keyword',\n 'global': 'keyword',\n 'inherit': 'keyword',\n 'inline': 'keyword',\n 'interface': 'keyword',\n 'internal': 'keyword',\n 'lazy': 'keyword',\n 'let!': 'keyword',\n 'match': 'keyword',\n 'member': 'keyword',\n 'module': 'keyword',\n 'mutable': 'keyword',\n 'namespace': 'keyword',\n 'new': 'keyword',\n 'null': 'keyword',\n 'override': 'keyword',\n 'private': 'keyword',\n 'public': 'keyword',\n 'return!': 'keyword',\n 'return': 'keyword',\n 'select': 'keyword',\n 'static': 'keyword',\n 'to': 'keyword',\n 'try': 'keyword',\n 'upcast': 'keyword',\n 'use!': 'keyword',\n 'use': 'keyword',\n 'void': 'keyword',\n 'when': 'keyword',\n 'yield!': 'keyword',\n 'yield': 'keyword',\n\n // Reserved words\n 'atomic': 'keyword',\n 'break': 'keyword',\n 'checked': 'keyword',\n 'component': 'keyword',\n 'const': 'keyword',\n 'constraint': 'keyword',\n 'constructor': 'keyword',\n 'continue': 'keyword',\n 'eager': 'keyword',\n 'event': 'keyword',\n 'external': 'keyword',\n 'fixed': 'keyword',\n 'method': 'keyword',\n 'mixin': 'keyword',\n 'object': 'keyword',\n 'parallel': 'keyword',\n 'process': 'keyword',\n 'protected': 'keyword',\n 'pure': 'keyword',\n 'sealed': 'keyword',\n 'tailcall': 'keyword',\n 'trait': 'keyword',\n 'virtual': 'keyword',\n 'volatile': 'keyword',\n\n // builtins\n 'List': 'builtin',\n 'Seq': 'builtin',\n 'Map': 'builtin',\n 'Set': 'builtin',\n 'Option': 'builtin',\n 'int': 'builtin',\n 'string': 'builtin',\n 'not': 'builtin',\n 'true': 'builtin',\n 'false': 'builtin',\n\n 'raise': 'builtin',\n 'failwith': 'builtin'\n },\n slashComments: true\n});\n\nexport const sml = mlLike({\n name: \"sml\",\n extraWords: {\n 'abstype': 'keyword',\n 'and': 'keyword',\n 'andalso': 'keyword',\n 'case': 'keyword',\n 'datatype': 'keyword',\n 'fn': 'keyword',\n 'handle': 'keyword',\n 'infix': 'keyword',\n 'infixr': 'keyword',\n 'local': 'keyword',\n 'nonfix': 'keyword',\n 'op': 'keyword',\n 'orelse': 'keyword',\n 'raise': 'keyword',\n 'withtype': 'keyword',\n 'eqtype': 'keyword',\n 'sharing': 'keyword',\n 'sig': 'keyword',\n 'signature': 'keyword',\n 'structure': 'keyword',\n 'where': 'keyword',\n 'true': 'keyword',\n 'false': 'keyword',\n\n // types\n 'int': 'builtin',\n 'real': 'builtin',\n 'string': 'builtin',\n 'char': 'builtin',\n 'bool': 'builtin'\n },\n slashComments: true\n});\n"],"names":["mlLike","parserConfig","words","extraWords","prop","hasOwnProperty","hintWords","k","push","tokenBase","stream","state","ch","next","tokenize","tokenString","eat","longString","tokenLongString","match","commentLevel","tokenComment","eatWhile","slashComments","skipToEnd","test","cur","current","end","escaped","prev","startState","token","eatSpace","languageData","autocomplete","commentTokens","line","undefined","block","open","close","oCaml","name","fSharp","sml"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/997.4e7b85c4.chunk.js b/media/assets/frontend/static/js/997.4e7b85c4.chunk.js new file mode 100644 index 00000000000..b44acf5d6d6 --- /dev/null +++ b/media/assets/frontend/static/js/997.4e7b85c4.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[997],{89997:function(e,t,T){function n(e){for(var t={},T=e.split(" "),n=0;n\n

    \n \n \n );\n }\n}\n\nReactDom.render(, document.getElementById('wrapper'));\n"],"names":["csrfToken","window","app","pageOptions","_window$tc","tc","termsName","formAction","formTerms","formReturnTo","logoutURL","termsText","TCAccept","_React$Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","_jsxs","className","children","_jsx","Logo","Account","dangerouslySetInnerHTML","__html","TermsPreviewWidget","content","action","method","type","name","Button","gettext","href","React","ReactDom","document","getElementById"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/TCView.d87affdd.js b/media/assets/frontend/static/js/TCView.d87affdd.js new file mode 100644 index 00000000000..02762c61ff7 --- /dev/null +++ b/media/assets/frontend/static/js/TCView.d87affdd.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[90],{30507:function(e,n,t){var s=t(15671),r=t(43144),c=t(60136),a=t(29388),u=t(72791),i=t(54164),l=t(263),o=t(55516),d=t(60534),h=(t(94704),t(80184)),x=window.tc,f=x.termsName,m=x.termsText,j=function(e){(0,c.Z)(t,e);var n=(0,a.Z)(t);function t(){return(0,s.Z)(this,t),n.apply(this,arguments)}return(0,r.Z)(t,[{key:"render",value:function(){return(0,h.jsxs)("div",{className:"h-100 d-flex flex-column",children:[(0,h.jsxs)("div",{className:"top-header d-flex justify-content-between",children:[(0,h.jsx)(l.Z,{}),(0,h.jsx)(o.Z,{})]}),(0,h.jsx)("div",{className:"o-auto",children:(0,h.jsxs)("div",{className:"py-4 px-4 my-6 mx-auto content",children:[(0,h.jsx)("h2",{dangerouslySetInnerHTML:{__html:f}}),(0,h.jsx)("div",{className:"article",children:(0,h.jsx)(d.Z,{content:m})})]})})]})}}]),t}(u.Component);i.render((0,h.jsx)(j,{}),document.getElementById("wrapper"))},94704:function(){}},function(e){e.O(0,[351],(function(){return n=30507,e(e.s=n);var n}));e.O()}]); +//# sourceMappingURL=TCView.d87affdd.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/TCView.d87affdd.js.map b/media/assets/frontend/static/js/TCView.d87affdd.js.map new file mode 100644 index 00000000000..2b000617afd --- /dev/null +++ b/media/assets/frontend/static/js/TCView.d87affdd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/TCView.d87affdd.js","mappings":"kPAQAA,EAGIC,OAAOC,GAFTC,EAASH,EAATG,UACAC,EAASJ,EAATI,UAGIC,EAAM,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAAA,SAAAA,IAAA,OAAAK,EAAAA,EAAAA,GAAA,KAAAL,GAAAG,EAAAG,MAAA,KAAAC,UAAA,CAmBT,OAnBSC,EAAAA,EAAAA,GAAAR,EAAA,EAAAS,IAAA,SAAAC,MAEV,WACE,OACEC,EAAAA,EAAAA,MAAA,OAAKC,UAAU,2BAA0BC,SAAA,EACvCF,EAAAA,EAAAA,MAAA,OAAKC,UAAU,4CAA2CC,SAAA,EACxDC,EAAAA,EAAAA,KAACC,EAAAA,EAAI,KACLD,EAAAA,EAAAA,KAACE,EAAAA,EAAO,QAEVF,EAAAA,EAAAA,KAAA,OAAKF,UAAU,SAAQC,UACrBF,EAAAA,EAAAA,MAAA,OAAKC,UAAU,iCAAgCC,SAAA,EAC7CC,EAAAA,EAAAA,KAAA,MAAIG,wBAAyB,CAACC,OAAQpB,MACtCgB,EAAAA,EAAAA,KAAA,OAAKF,UAAU,UAASC,UACtBC,EAAAA,EAAAA,KAACK,EAAAA,EAAkB,CAACC,QAASrB,aAMzC,KAACC,CAAA,CAnBS,CAASqB,EAAAA,WAsBrBC,EAAAA,QAAgBR,EAAAA,EAAAA,KAACd,EAAM,IAAKuB,SAASC,eAAe,W","sources":["tc-view.js"],"sourcesContent":["import React from 'react';\nimport ReactDom from 'react-dom';\nimport Logo from './components/logo';\nimport Account from './components/common/account';\nimport TermsPreviewWidget from './components/terms-preview-widget';\n\nimport './css/tc-accept.css';\n\nconst {\n termsName,\n termsText\n} = window.tc;\n\nclass TCView extends React.Component {\n\n render() {\n return (\n
    \n
    \n \n \n
    \n
    \n
    \n

    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nReactDom.render(, document.getElementById('wrapper'));\n"],"names":["_window$tc","window","tc","termsName","termsText","TCView","_React$Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","_jsxs","className","children","_jsx","Logo","Account","dangerouslySetInnerHTML","__html","TermsPreviewWidget","content","React","ReactDom","document","getElementById"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/app.54217b8e.js b/media/assets/frontend/static/js/app.54217b8e.js new file mode 100644 index 00000000000..735d695db1d --- /dev/null +++ b/media/assets/frontend/static/js/app.54217b8e.js @@ -0,0 +1,3 @@ +/*! For license information please see app.54217b8e.js.LICENSE.txt */ +(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[143],{7995:function(e,t,n){"use strict";var i=n(15671),s=n(43144),r=n(60136),o=n(29388),a=n(72791),l=n(54164),c=n(4918),h=n(24805),p=n.n(h),d=n(62298),u=n(53585),m=n(95996),g=n(80184),f=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).close=function(){if(s.setState({isClosed:!0}),navigator.cookieEnabled){var e=new Date,t=document.cookie.split("; "),n=!1,i=u.JR+"_";e.setTime(e.getTime()+12096e5),i+="; expires="+e.toGMTString()+"; path="+u.ze;for(var r=0,o=t.length;r ",p]});break;case"delete":e=(0,u.ih)("Deleted library"),t=s.repo_name;break;case"recover":e=(0,u.ih)("Restored library"),t=p;break;case"clean-up-trash":e=(0,u.ih)("Cleaned trash"),t=0==s.days?(0,u.ih)("Removed all items from trash."):(0,u.ih)("Removed items older than {n} days from trash.").replace("{n}",s.days),l=!0}else if("draft"==s.obj_type){var f="".concat(u.ze,"lib/").concat(s.repo_id,"/file").concat(m.c.encodePath(s.path)),v=(0,g.jsx)("a",{href:f,target:"_blank",rel:"noreferrer",children:s.name});e=(0,u.ih)("Publish draft"),t=v,l=!0}else if("files"==s.obj_type){var x="".concat(u.ze,"lib/").concat(s.repo_id,"/file").concat(m.c.encodePath(s.path));s.name.endsWith("(draft).md")&&(x=u.xx+"/drafts/"+s.draft_id+"/");var D="').concat(s.name,"");s.name.endsWith("(draft).md")&&!s.draft_id&&(D=s.name);var w=s.createdFilesCount-1,j=(0,u.ih)("{file} and {n} other files").replace("{file}",D).replace("{n}",w);e=(0,u.ih)("Created {n} files").replace("{n}",s.createdFilesCount),t=(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("p",{className:"m-0 d-inline",dangerouslySetInnerHTML:{__html:j}}),n&&(0,g.jsx)("button",{type:"button",onClick:this.onListCreatedFilesToggle,className:"activity-details text-secondary ml-2 border-0 p-0 bg-transparent",children:(0,u.ih)("details")})]}),l=!0}else if("file"==s.obj_type){var y=s.name.endsWith("(draft).md"),S=y?u.xx+"/drafts/"+s.draft_id+"/":"".concat(u.ze,"lib/").concat(s.repo_id,"/file").concat(m.c.encodePath(s.path)),b=(0,g.jsx)("a",{href:S,target:"_blank",rel:"noreferrer",children:s.name});switch(y&&!s.draft_id&&(b=s.name),s.op_type){case"create":e=y?(0,u.ih)("Created draft"):(0,u.ih)("Created file"),t=b,l=!0;break;case"delete":e=y?(0,u.ih)("Deleted draft"):(0,u.ih)("Deleted file"),t=s.name,l=!0;break;case"recover":e=(0,u.ih)("Restored file"),t=b,l=!0;break;case"rename":e=(0,u.ih)("Renamed file"),t=(0,g.jsxs)("span",{children:[s.old_name," => ",b]}),l=!0;break;case"move":var k=(0,g.jsx)("a",{href:S,children:s.path});e=(0,u.ih)("Moved file"),t=(0,g.jsxs)("span",{children:[s.old_path," => ",k]}),l=!0;break;case"edit":e=y?(0,u.ih)("Updated draft"):(0,u.ih)("Updated file"),t=b,l=!0}}else{var I=u.ze+"library/"+s.repo_id+"/"+encodeURIComponent(s.repo_name)+m.c.encodePath(s.path),N=(0,g.jsx)("a",{href:I,target:"_blank",rel:"noreferrer",children:s.name});switch(s.op_type){case"create":e=(0,u.ih)("Created folder"),t=N,l=!0;break;case"delete":e=(0,u.ih)("Deleted folder"),t=s.name,l=!0;break;case"recover":e=(0,u.ih)("Restored folder"),t=N,l=!0;break;case"rename":e=(0,u.ih)("Renamed folder"),t=(0,g.jsxs)("span",{children:[s.old_name," => ",N]}),l=!0;break;case"move":var M=(0,g.jsx)("a",{href:I,children:s.path});e=(0,u.ih)("Moved folder"),t=(0,g.jsxs)("span",{children:[s.old_path," => ",M]}),l=!0}}var Z=!0;if(r>0){var P=o[r-1].time;Z=!A()(s.time).isSame(P,"day")}return(0,g.jsxs)(a.Fragment,{children:[Z&&(0,g.jsx)("tr",{children:(0,g.jsx)("td",{colSpan:n?5:3,className:"border-top-0",children:A()(s.time).format("YYYY-MM-DD")})}),n?(0,g.jsxs)("tr",{children:[(0,g.jsx)("td",{className:"text-center",children:(0,g.jsx)("img",{src:s.avatar_url,alt:"",width:"32",height:"32",className:"avatar"})}),(0,g.jsx)("td",{children:(0,g.jsx)("a",{href:c,children:s.author_name})}),(0,g.jsx)("td",{children:e}),(0,g.jsxs)("td",{children:[t,l&&(0,g.jsx)("br",{}),l&&d]}),(0,g.jsx)("td",{className:"text-secondary",children:(0,g.jsx)("time",{datetime:s.time,is:"relative-time",title:A()(s.time).format("llll"),children:A()(s.time).fromNow()})})]}):(0,g.jsxs)("tr",{children:[(0,g.jsx)("td",{className:"text-center align-top",children:(0,g.jsx)("img",{src:s.avatar_url,alt:"",width:"32",height:"32",className:"avatar"})}),(0,g.jsxs)("td",{children:[(0,g.jsx)("a",{href:c,children:s.author_name}),(0,g.jsx)("p",{className:"m-0 text-secondary",children:e}),t]}),(0,g.jsxs)("td",{className:"text-right align-top",children:[(0,g.jsx)("span",{className:"text-secondary mobile-activity-time",children:(0,g.jsx)("time",{datetime:s.time,is:"relative-time",title:A()(s.time).format("llll"),children:A()(s.time).fromNow()})}),l&&(0,g.jsx)("br",{}),l&&p]})]}),this.state.isListCreatedFiles&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(te,{activity:s,toggleCancel:this.onListCreatedFilesToggle})})]})}}]),n}(a.Component);A().locale(window.app.config.lang);var ie=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=m.c.isDesktop(),t=this.props,n=t.items,i=t.isLoadingMore;if(!n.length)return(0,g.jsx)(O.Z,{children:(0,g.jsx)("p",{children:(0,u.ih)("No more activities")})});var s=(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"8%"}),(0,g.jsx)("th",{width:"15%",children:(0,u.ih)("User")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Operation")}),(0,g.jsxs)("th",{width:"37%",children:[(0,u.ih)("File")," / ",(0,u.ih)("Library")]}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Time")})]})}),r=(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"15%"}),(0,g.jsx)("th",{width:"53%"}),(0,g.jsx)("th",{width:"32%"})]})});return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsxs)("table",{className:"table-hover table-thead-hidden",children:[e?s:r,(0,g.jsx)("tbody",{children:n.map((function(t,i){return(0,g.jsx)(ne,{isDesktop:e,item:t,index:i,items:n},i)}))})]}),i?(0,g.jsx)("span",{className:"loading-icon loading-tip"}):""]})}}]),n}(a.Component),se=ie,re=n(54555),oe=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleOutsideClick=function(e){s.state.isPopoverOpen&&!s.userSelector.contains(e.target)&&s.togglePopover()},s.togglePopover=function(){s.setState({isPopoverOpen:!s.state.isPopoverOpen},(function(){if(!s.state.isPopoverOpen){var e=s.props.availableUsers.filter((function(e){return e.isSelected}));s.props.setTargetUsers(e)}}))},s.onToggleClick=function(e){e.stopPropagation(),s.togglePopover()},s.onQueryChange=function(e){s.setState({query:e.target.value})},s.toggleSelectItem=function(e,t){e.stopPropagation(),s.props.toggleSelectUser(t)},s.state={isPopoverOpen:!1,query:""},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){document.addEventListener("click",this.handleOutsideClick)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.handleOutsideClick)}},{key:"render",value:function(){var e=this,t=this.state,n=t.isPopoverOpen,i=t.query,s=this.props,r=s.currentSelectedUsers,o=s.availableUsers,a=o.filter((function(e){return e.isSelected})),l=i.trim()?o.filter((function(e){return-1!=e.email.indexOf(i.trim())})):o;return(0,g.jsxs)("div",{className:"mt-4 position-relative",children:[(0,g.jsxs)("span",{className:"cur-activity-modifiers d-inline-block p-2 rounded",onClick:this.onToggleClick,children:[r.length>0?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)("span",{children:(0,u.ih)("Modified by:")}),(0,g.jsx)("span",{className:"d-inline-block ml-1",children:r.map((function(e){return e.name})).join(", ")})]}):(0,u.ih)("Modified by"),(0,g.jsx)("i",{className:"fas fa-caret-down ml-2 toggle-icon"})]}),n&&(0,g.jsxs)("div",{className:"position-absolute activity-modifier-selector-container rounded shadow",ref:function(t){return e.userSelector=t},children:[(0,g.jsx)("ul",{className:"activity-selected-modifiers px-3 py-1 list-unstyled",children:a.map((function(t,n){return(0,g.jsxs)("li",{className:"activity-selected-modifier",children:[(0,g.jsx)("img",{src:t.avatar_url,className:"avatar w-5 h-5",alt:""}),(0,g.jsx)("span",{className:"activity-user-name ml-2",children:t.name}),(0,g.jsx)("i",{className:"sf2-icon-close unselect-activity-user ml-2",onClick:function(n){e.toggleSelectItem(n,t)}})]},n)}))}),(0,g.jsx)("div",{className:"px-3 pt-3",children:(0,g.jsx)(re.Z,{type:"text",placeholder:(0,u.ih)("Search users"),value:i,onChange:this.onQueryChange})}),(0,g.jsx)("ul",{className:"activity-user-list list-unstyled p-3 o-auto",children:l.map((function(t,n){return(0,g.jsxs)("li",{className:"activity-user-item h-6 p-1 rounded d-flex justify-content-between align-items-center",onClick:function(n){e.toggleSelectItem(n,t)},children:[(0,g.jsxs)("div",{children:[(0,g.jsx)("img",{src:t.avatar_url,className:"avatar w-5 h-5",alt:""}),(0,g.jsx)("span",{className:"activity-user-name ml-2",children:t.name})]}),t.isSelected&&(0,g.jsx)("i",{className:"sf2-icon-tick text-gray font-weight-bold"})]},n)}))})]})]})}}]),n}(a.Component);A().locale(window.app.config.lang);var ae=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).mergePublishEvents=function(e){e.forEach((function(e){"publish"===e.op_type&&(s.curPathList.push(e.path),s.oldPathList.push(e.old_path))}));for(var t=[],n=0;n=n&&s.setState({isLoadingMore:!0},(function(){s.getMore()}))}},s.state={errorMsg:"",isFirstLoading:!0,isLoadingMore:!1,currentPage:1,hasMore:!0,allItems:[],items:[],availableUsers:[],targetUsers:[]},s.avatarSize=72,s.curPathList=[],s.oldPathList=[],s.availableUserEmails=new Set,s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.state,n=t.currentPage,i=t.availableUsers;w.I.listActivities(n,this.avatarSize).then((function(t){var s=e.mergePublishEvents(t.data.events);(s=e.mergeFileCreateEvents(s)).forEach((function(t){e.availableUserEmails.has(t.author_email)||(e.availableUserEmails.add(t.author_email),i.push({email:t.author_email,name:t.author_name,avatar_url:t.avatar_url,isSelected:!1}))})),e.setState({allItems:s,items:e.filterEvents(s),availableUsers:i,currentPage:n+1,isFirstLoading:!1,hasMore:!0}),e.state.items.length<25&&e.getMore()})).catch((function(t){e.setState({isFirstLoading:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"getMore",value:function(){var e=this,t=this.state,n=t.currentPage,i=t.availableUsers,s=t.targetUsers;w.I.listActivities(n,this.avatarSize).then((function(t){var r=e.mergePublishEvents(t.data.events);(r=e.mergeFileCreateEvents(r)).forEach((function(t){e.availableUserEmails.has(t.author_email)||(e.availableUserEmails.add(t.author_email),i.push({email:t.author_email,name:t.author_name,avatar_url:t.avatar_url,isSelected:!1}))}));var o=e.filterEvents(r);e.setState({allItems:[].concat((0,K.Z)(e.state.allItems),(0,K.Z)(r)),items:[].concat((0,K.Z)(e.state.items),(0,K.Z)(o)),availableUsers:i,currentPage:n+1,isLoadingMore:!1,hasMore:0!==t.data.events.length}),e.state.items.length<25&&e.state.hasMore&&(s.length&&100==n||e.getMore())})).catch((function(t){e.setState({isLoadingMore:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this.props.onlyMine,t=this.state,n=t.targetUsers,i=t.availableUsers;return(0,g.jsx)("div",{className:"main-panel-center",children:(0,g.jsxs)("div",{className:"cur-view-container",id:"activities",children:[(0,g.jsx)("div",{className:"cur-view-path",children:(0,g.jsxs)("ul",{className:"nav",children:[(0,g.jsx)("li",{className:"nav-item",children:(0,g.jsx)(c.rU,{to:"".concat(u.ze,"dashboard/"),className:"nav-link".concat(e?"":" active"),children:(0,u.ih)("All Activities")})}),(0,g.jsx)("li",{className:"nav-item",children:(0,g.jsx)(c.rU,{to:"".concat(u.ze,"my-activities/"),className:"nav-link".concat(e?" active":""),children:(0,u.ih)("My Activities")})})]})}),(0,g.jsxs)("div",{className:"cur-view-content d-block",onScroll:this.handleScroll,children:[this.state.isFirstLoading&&(0,g.jsx)(R.Z,{}),!this.state.isFirstLoading&&this.state.errorMsg&&(0,g.jsx)("p",{className:"error text-center",children:this.state.errorMsg}),!this.state.isFirstLoading&&(0,g.jsxs)(a.Fragment,{children:[!e&&(0,g.jsx)(oe,{availableUsers:i,currentSelectedUsers:n,setTargetUsers:this.setTargetUsers,toggleSelectUser:this.toggleSelectUser}),(0,g.jsx)(se,{items:this.state.items,isLoadingMore:this.state.isLoadingMore})]})]})]})})}}]),n}(a.Component),le=ae,ce=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){return(0,g.jsx)(le,{onlyMine:!0})}}]),n}(a.Component),he=ce,pe=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.data,t=e.loading,n=e.errorMsg,i=e.items;if(t)return(0,g.jsx)(R.Z,{});if(n)return(0,g.jsx)("p",{className:"error text-center",children:n});var s=(0,g.jsxs)(O.Z,{children:[(0,g.jsx)("h2",{children:(0,u.ih)("No favorites")}),(0,g.jsx)("p",{children:(0,u.ih)("You have not added any libraries, folders or files to your favorites yet. A favorite gives you quick access to your most frequently used objects. You can add a library, folder or file to your favorites by clicking the star to the left of its name.")})]}),r=(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"4%"}),(0,g.jsx)("th",{width:"40%",children:(0,u.ih)("Name")}),(0,g.jsx)("th",{width:"32%",children:(0,u.ih)("Library")}),(0,g.jsx)("th",{width:"18%",children:(0,u.ih)("Last Update")}),(0,g.jsx)("th",{width:"6%"})]})}),o=(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"12%"}),(0,g.jsx)("th",{width:"80%"}),(0,g.jsx)("th",{width:"8%"})]})}),a=m.c.isDesktop();return i.length?(0,g.jsxs)("table",{className:"table-hover ".concat(a?"":"table-thead-hidden"),children:[a?r:o,(0,g.jsx)(de,{items:i})]}):s}}]),n}(a.Component),de=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).state={items:s.props.items},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.getThumbnails()}},{key:"getThumbnails",value:function(){var e=this.state.items.filter((function(e){return(m.c.imageCheck(e.obj_name)||u.eA&&m.c.videoCheck(e.obj_name))&&!e.repo_encrypted}));if(0!=e.length){var t=e.length,n=this;!function i(s){var r=e[s];w.I.createThumbnail(r.repo_id,r.path,48).then((function(e){r.encoded_thumbnail_src=e.data.encoded_thumbnail_src})).catch((function(e){})).then((function(){s0&&t.forEach((function(t){e.push(t.id+"")})),s.customPermissions=e),s.customPermissions},s.state={isLoading:!0,currentOption:s.props.currentPerm,customPermissions:[]},s.customPermissions=null,s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.props.repoID?this.listCustomPermissions():this.setState({isLoading:!1})}},{key:"render",value:function(){var e=this,t=this.state,n=t.isLoading,i=t.currentOption,s=[];return n||(s=this.getPermissions()),(0,g.jsx)(d.Z,{isOpen:!0,toggle:this.props.toggleDialog,children:(0,g.jsxs)(b.Z,{style:{maxHeight:"400px",overflow:"auto"},children:[n&&(0,g.jsx)(R.Z,{}),!n&&s.map((function(t,n){return(0,g.jsxs)("div",{className:"d-flex",children:[(0,g.jsx)("input",{id:"option-".concat(n),className:"mt-1",type:"radio",name:"permission",value:t,checked:i==t,onChange:e.switchOption}),(0,g.jsxs)("label",{htmlFor:"option-".concat(n),className:"ml-2",children:[e.translatePermission(t),(0,g.jsx)("p",{className:"text-secondary small m-0",children:e.translateExplanation(t)})]})]},n)}))]})})}}]),n}(a.Component),be=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o0&&(0,g.jsx)("span",{className:"sf3-font sf3-font-sort action-icon",onClick:this.toggleSortOptionsDialog})]}),(0,g.jsx)("div",{className:"cur-view-content",children:(0,g.jsx)(Be,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.items,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortItems:this.sortItems,onRemoveLink:this.onRemoveLink})})]})}),this.state.isSortOptionsDialogOpen&&(0,g.jsx)(Oe,{toggleDialog:this.toggleSortOptionsDialog,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortOptions:this.sortOptions,sortItems:this.sortItems}),this.state.isCleanInvalidShareLinksDialogOpen&&(0,g.jsx)(Re.Z,{title:(0,u.ih)("Clean invalid share links"),message:(0,u.ih)("Are you sure you want to clean invalid share links?"),executeOperation:this.cleanInvalidShareLinks,confirmBtnText:(0,u.ih)("Clean"),toggleDialog:this.toggleCleanInvalidShareLinksDialog})]})}}]),n}(a.Component),We=n(36681),Ve=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,s=t.items;if(n)return(0,g.jsx)(R.Z,{});if(i)return(0,g.jsx)("p",{className:"error text-center",children:i});var r=(0,g.jsxs)(O.Z,{children:[(0,g.jsx)("h2",{children:(0,u.ih)("No upload links")}),(0,g.jsx)("p",{children:(0,u.ih)("You have not created any upload links yet. An upload link allows anyone to upload files to a folder or library. You can create an upload link for a folder or library by clicking the share icon to the right of its name.")})]}),o=m.c.isDesktop(),a=(0,g.jsxs)("table",{className:"table-hover ".concat(o?"":"table-thead-hidden"),children:[(0,g.jsx)("thead",{children:o?(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"4%"}),(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("Name")}),(0,g.jsx)("th",{width:"24%",children:(0,u.ih)("Library")}),(0,g.jsx)("th",{width:"16%",children:(0,u.ih)("Visits")}),(0,g.jsx)("th",{width:"16%",children:(0,u.ih)("Expiration")}),(0,g.jsx)("th",{width:"10%"})]}):(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"12%"}),(0,g.jsx)("th",{width:"80%"}),(0,g.jsx)("th",{width:"8%"})]})}),(0,g.jsx)("tbody",{children:s.map((function(t,n){return(0,g.jsx)(qe,{isDesktop:o,item:t,onRemoveLink:e.props.onRemoveLink},n)}))})]});return s.length?a:r}}]),n}(a.Component),qe=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).toggleOpMenu=function(){s.setState({isOpMenuOpen:!s.state.isOpMenuOpen})},s.toggleLinkDialog=function(){s.setState({isLinkDialogOpen:!s.state.isLinkDialogOpen})},s.handleMouseOver=function(){s.setState({isOpIconShown:!0})},s.handleMouseOut=function(){s.setState({isOpIconShown:!1})},s.viewLink=function(e){e.preventDefault(),s.toggleLinkDialog()},s.removeLink=function(e){e.preventDefault(),s.props.onRemoveLink(s.props.item)},s.renderExpiration=function(){var e=s.props.item;if(!e.expire_date)return"--";var t=A()(e.expire_date).format("YYYY-MM-DD"),n=A()(e.expire_date).format("YYYY-MM-DD HH:mm:ss");return(0,g.jsx)("span",{className:e.is_expired?"error":"",title:n,children:t})},s.state={isOpIconShown:!1,isOpMenuOpen:!1,isLinkDialogOpen:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state,n=t.isOpIconShown,i=t.isLinkDialogOpen,s=m.c.getFolderIconUrl(!1),r="".concat(u.ze,"library/").concat(e.repo_id,"/").concat(encodeURIComponent(e.repo_name)),o="".concat(r).concat(m.c.encodePath(e.path)),l=""===e.obj_id?(0,g.jsx)("span",{style:{color:"red"},children:(0,u.ih)("(deleted)")}):null,h=(0,g.jsxs)("tr",{onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,onFocus:this.handleMouseOver,children:[(0,g.jsx)("td",{children:(0,g.jsx)("img",{src:s,alt:"",width:"24"})}),(0,g.jsxs)("td",{children:[(0,g.jsx)(c.rU,{to:o,children:e.obj_name}),l]}),(0,g.jsx)("td",{children:(0,g.jsx)(c.rU,{to:r,children:e.repo_name})}),(0,g.jsx)("td",{children:e.view_cnt}),(0,g.jsx)("td",{children:this.renderExpiration()}),(0,g.jsxs)("td",{children:[!e.is_expired&&(0,g.jsx)("a",{href:"#",className:"sf2-icon-link action-icon ".concat(n?"":"invisible"),title:(0,u.ih)("View"),"aria-label":(0,u.ih)("View"),role:"button",onClick:this.viewLink}),(0,g.jsx)("a",{href:"#",className:"sf2-icon-delete action-icon ".concat(n?"":"invisible"),title:(0,u.ih)("Remove"),"aria-label":(0,u.ih)("Remove"),role:"button",onClick:this.removeLink})]})]}),p=(0,g.jsxs)("tr",{children:[(0,g.jsx)("td",{children:(0,g.jsx)("img",{src:s,alt:"",width:"24"})}),(0,g.jsxs)("td",{children:[(0,g.jsx)(c.rU,{to:o,children:e.obj_name}),(0,g.jsx)("br",{}),(0,g.jsx)("span",{children:e.repo_name}),(0,g.jsx)("br",{}),(0,g.jsxs)("span",{className:"item-meta-info",children:[(0,u.ih)("Visits"),": ",e.view_cnt]}),(0,g.jsxs)("span",{className:"item-meta-info",children:[(0,u.ih)("Expiration"),": ",this.renderExpiration()]})]}),(0,g.jsx)("td",{children:(0,g.jsxs)(U.Z,{isOpen:this.state.isOpMenuOpen,toggle:this.toggleOpMenu,children:[(0,g.jsx)(z.Z,{tag:"i",className:"sf-dropdown-toggle fa fa-ellipsis-v ml-0",title:(0,u.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":this.state.isOpMenuOpen}),(0,g.jsxs)("div",{className:this.state.isOpMenuOpen?"":"d-none",onClick:this.toggleOpMenu,children:[(0,g.jsx)("div",{className:"mobile-operation-menu-bg-layer"}),(0,g.jsxs)("div",{className:"mobile-operation-menu",children:[!e.is_expired&&(0,g.jsx)(G.Z,{className:"mobile-menu-item",onClick:this.viewLink,children:(0,u.ih)("View")}),(0,g.jsx)(G.Z,{className:"mobile-menu-item",onClick:this.removeLink,children:(0,u.ih)("Remove")})]})]})]})})]});return(0,g.jsxs)(a.Fragment,{children:[this.props.isDesktop?h:p,i&&(0,g.jsx)(Te.Z,{link:e.link,toggleDialog:this.toggleLinkDialog})]})}}]),n}(a.Component),Ke=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onRemoveLink=function(e){w.I.deleteUploadLink(e.token).then((function(){var t=s.state.items.filter((function(t){return t.token!==e.token}));s.setState({items:t});var n=(0,u.ih)("Successfully deleted 1 item.");j.Z.success(n)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.toggleCleanInvalidUploadLinksDialog=function(){s.setState({isCleanInvalidUploadLinksDialogOpen:!s.state.isCleanInvalidUploadLinksDialogOpen})},s.cleanInvalidUploadLinks=function(){w.I.cleanInvalidUploadLinks().then((function(e){var t=s.state.items.filter((function(e){return""!==e.obj_id})).filter((function(e){return!e.is_expired}));s.setState({items:t}),j.Z.success((0,u.ih)("Successfully cleaned invalid upload links."))})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={isCleanInvalidUploadLinksDialogOpen:!1,loading:!0,errorMsg:"",items:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.listUserUploadLinks()}},{key:"listUserUploadLinks",value:function(){var e=this;w.I.listUserUploadLinks().then((function(t){var n=t.data.map((function(e){return new We.Z(e)}));e.setState({loading:!1,items:n})})).catch((function(t){e.setState({loading:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(Ue,{onShowSidePanel:this.props.onShowSidePanel,onSearchedClick:this.props.onSearchedClick,children:(0,g.jsx)($.Z,{className:"operation-item d-none d-md-block",onClick:this.toggleCleanInvalidUploadLinksDialog,children:(0,u.ih)("Clean invalid upload links")})}),(0,g.jsx)("div",{className:"main-panel-center",children:(0,g.jsxs)("div",{className:"cur-view-container",children:[(0,g.jsx)("div",{className:"cur-view-path share-upload-nav",children:(0,g.jsxs)("ul",{className:"nav",children:[u.Fl&&(0,g.jsx)("li",{className:"nav-item",children:(0,g.jsx)(c.rU,{to:"".concat(u.ze,"share-admin-share-links/"),className:"nav-link",children:(0,u.ih)("Share Links")})}),(0,g.jsx)("li",{className:"nav-item",children:(0,g.jsx)(c.rU,{to:"".concat(u.ze,"share-admin-upload-links/"),className:"nav-link active",children:(0,u.ih)("Upload Links")})})]})}),(0,g.jsx)("div",{className:"cur-view-content",children:(0,g.jsx)(Ve,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.items,onRemoveLink:this.onRemoveLink})})]})}),this.state.isCleanInvalidUploadLinksDialogOpen&&(0,g.jsx)(Re.Z,{title:(0,u.ih)("Clean invalid upload links"),message:(0,u.ih)("Are you sure you want to clean invalid upload links?"),executeOperation:this.cleanInvalidUploadLinks,confirmBtnText:(0,u.ih)("Clean"),toggleDialog:this.toggleCleanInvalidUploadLinksDialog})]})}}]),n}(a.Component),Ye=n(57808),Je=(0,s.Z)((function e(t){(0,i.Z)(this,e),this.repo_id=t.repo_id,this.repo_name=t.repo_name,this.permission=t.permission,this.size_original=t.size,this.size=m.c.bytesToSize(t.size),this.owner_name=t.owner_name,this.owner_email=t.owner_email,this.owner_contact_email=t.owner_contact_email,this.encrypted=t.encrypted,this.last_modified=t.last_modified,this.modifier_contact_email=t.modifier_contact_email,this.modifier_email=t.modifier_email,this.modifier_name=t.modifier_name,this.type=t.type,this.starred=t.starred,this.monitored=t.monitored,this.status=t.status,this.storage_name=t.storage_name,void 0!=t.is_admin&&(this.is_admin=t.is_admin)}));var Xe=function(){return(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"12%",children:(0,g.jsx)("span",{className:"sr-only",children:(0,u.ih)("Library Type")})}),(0,g.jsx)("th",{width:"80%"}),(0,g.jsx)("th",{width:"8%",children:(0,g.jsx)("span",{className:"sr-only",children:(0,u.ih)("Actions")})})]})})},Qe=n(65953),$e=n(98290),et=n(42309),tt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.repoID;return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("span",{id:"watching-".concat(e),className:"ml-1",children:(0,g.jsx)(et.Z,{symbol:"monitor"})}),(0,g.jsx)($e.Z,{placement:"bottom",target:"#watching-".concat(e),children:(0,u.ih)("You are watching file changes of this library.")})]})}}]),n}(a.Component),nt=tt,it=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).freezeItem=function(e){s.setState({isItemFreezed:e})},s.sortByName=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortItems("name",t)},s.sortByTime=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortItems("time",t)},s.sortBySize=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortItems("size",t)},s.state={isItemFreezed:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,s=t.items,r=t.sortBy,o=t.sortOrder,a=(0,g.jsxs)(O.Z,{children:[(0,g.jsx)("h2",{children:(0,u.ih)("No shared libraries")}),(0,g.jsx)("p",{children:(0,u.ih)("No libraries have been shared directly with you. A shared library can be shared with full or restricted permission. If you need access to a library owned by another user, ask the user to share the library with you.")})]});if(n)return(0,g.jsx)(R.Z,{});if(i)return(0,g.jsx)("p",{className:"error text-center",children:i});var l="name"==r,c="time"==r,h="size"==r,p="asc"==o?(0,g.jsx)("span",{className:"fas fa-caret-up"}):(0,g.jsx)("span",{className:"fas fa-caret-down"}),d=(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"4%"}),(0,g.jsx)("th",{width:"4%",children:(0,g.jsx)("span",{className:"sr-only",children:(0,u.ih)("Library Type")})}),(0,g.jsx)("th",{width:"34%",children:(0,g.jsxs)("a",{className:"d-block table-sort-op",href:"#",onClick:this.sortByName,children:[(0,u.ih)("Name")," ",l&&p]})}),(0,g.jsx)("th",{width:"10%",children:(0,g.jsx)("span",{className:"sr-only",children:(0,u.ih)("Actions")})}),(0,g.jsx)("th",{width:"14%",children:(0,g.jsxs)("a",{className:"d-block table-sort-op",href:"#",onClick:this.sortBySize,children:[(0,u.ih)("Size")," ",h&&p]})}),(0,g.jsx)("th",{width:"18%",children:(0,g.jsxs)("a",{className:"d-block table-sort-op",href:"#",onClick:this.sortByTime,children:[(0,u.ih)("Last Update")," ",c&&p]})}),(0,g.jsx)("th",{width:"16%",children:(0,u.ih)("Owner")})]})}),f=m.c.isDesktop(),v=(0,g.jsxs)("table",{className:f?"":"table-thead-hidden",children:[f?d:(0,g.jsx)(Xe,{}),(0,g.jsx)("tbody",{children:s.map((function(t,n){return(0,g.jsx)(st,{data:t,isDesktop:f,isItemFreezed:e.state.isItemFreezed,freezeItem:e.freezeItem,onMonitorRepo:e.props.onMonitorRepo},n)}))})]});return s.length?v:a}}]),n}(a.Component),st=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).toggleOpMenu=function(){s.setState({isOpMenuOpen:!s.state.isOpMenuOpen},(function(){s.props.freezeItem(s.state.isOpMenuOpen)}))},s.handleMouseOver=function(){s.props.isItemFreezed||s.setState({highlight:!0,showOpIcon:!0})},s.handleMouseOut=function(){s.props.isItemFreezed||s.setState({highlight:!1,showOpIcon:!1})},s.share=function(e){e.preventDefault(),s.setState({isShowSharedDialog:!0})},s.leaveShare=function(e){e.preventDefault();var t,n=s.props.data;if(-1==n.owner_email.indexOf("@seafile_group")){var i={share_type:"personal",from:n.owner_email};t=w.I.leaveShareRepo(n.repo_id,i)}else t=w.I.leaveShareGroupOwnedRepo(n.repo_id);t.then((function(e){s.setState({unshared:!0});var t=(0,u.ih)("Successfully unshared {name}").replace("{name}",n.repo_name);j.Z.success(t)})).catch((function(e){var t=m.c.getErrorMsg(e);t===(0,u.ih)("Error")&&(t=(0,u.ih)("Failed to unshare {name}").replace("{name}",n.repo_name)),(0,j.Z)(t)}))},s.toggleShareDialog=function(){s.setState({isShowSharedDialog:!1})},s.onToggleStarRepo=function(e){e.preventDefault();var t=s.props.data.repo_name;s.state.isStarred?w.I.unstarItem(s.props.data.repo_id,"/").then((function(){s.setState({isStarred:!s.state.isStarred});var e=(0,u.ih)("Successfully unstarred {library_name_placeholder}.").replace("{library_name_placeholder}",t);j.Z.success(e)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)})):w.I.starItem(s.props.data.repo_id,"/").then((function(){s.setState({isStarred:!s.state.isStarred});var e=(0,u.ih)("Successfully starred {library_name_placeholder}.").replace("{library_name_placeholder}",t);j.Z.success(e)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.visitRepo=function(){(0,c.c4)(s.repoURL)},s.watchFileChanges=function(){var e=s.props.data;w.I.monitorRepo(e.repo_id).then((function(){s.props.onMonitorRepo(e,!0)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.unwatchFileChanges=function(){var e=s.props.data;w.I.unMonitorRepo(e.repo_id).then((function(){s.props.onMonitorRepo(e,!1)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={highlight:!1,showOpIcon:!1,unshared:!1,isShowSharedDialog:!1,isStarred:s.props.data.starred,isOpMenuOpen:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){if(this.state.unshared)return null;var e=this.props.data;e.icon_url=m.c.getLibIconUrl(e),e.icon_title=m.c.getLibIconTitle(e);var t=this.state.showOpIcon?"":" invisible",n="op-icon sf2-icon-share repo-share-btn"+t,i="op-icon sf2-icon-x3"+t,s=this.repoURL="".concat(u.ze,"library/").concat(e.repo_id,"/").concat(m.c.encodePath(e.repo_name),"/"),r=u._y&&("r"==e.permission||"rw"==e.permission),o=(0,g.jsxs)(a.Fragment,{children:[(0,g.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,onFocus:this.handleMouseOver,children:[(0,g.jsx)("td",{className:"text-center",children:(0,g.jsx)("a",{href:"#",role:"button","aria-label":this.state.isStarred?(0,u.ih)("Unstar"):(0,u.ih)("Star"),onClick:this.onToggleStarRepo,children:(0,g.jsx)("i",{className:"fa-star ".concat(this.state.isStarred?"fas":"far star-empty")})})}),(0,g.jsx)("td",{children:(0,g.jsx)("img",{src:e.icon_url,title:e.icon_title,alt:e.icon_title,width:"24"})}),(0,g.jsx)("td",{children:(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(c.rU,{to:s,children:e.repo_name}),e.monitored&&(0,g.jsx)(nt,{repoID:e.repo_id})]})}),(0,g.jsxs)("td",{children:[u._y&&e.is_admin&&(0,g.jsx)("a",{href:"#",className:n,title:(0,u.ih)("Share"),role:"button","aria-label":(0,u.ih)("Share"),onClick:this.share}),(0,g.jsx)("a",{href:"#",className:i,title:(0,u.ih)("Leave Share"),role:"button","aria-label":(0,u.ih)("Leave Share"),onClick:this.leaveShare}),r&&(0,g.jsxs)(U.Z,{isOpen:this.state.isOpMenuOpen,toggle:this.toggleOpMenu,children:[(0,g.jsx)(z.Z,{tag:"i",role:"button",tabIndex:"0",className:"sf-dropdown-toggle sf2-icon-caret-down".concat(t),title:(0,u.ih)("More Operations"),"aria-label":(0,u.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":this.state.isOpMenuOpen}),(0,g.jsx)(B.Z,{children:(0,g.jsx)(G.Z,{onClick:e.monitored?this.unwatchFileChanges:this.watchFileChanges,children:e.monitored?(0,u.ih)("Unwatch File Changes"):(0,u.ih)("Watch File Changes")})})]})]}),(0,g.jsx)("td",{children:e.size}),(0,g.jsx)("td",{title:A()(e.last_modified).format("llll"),children:A()(e.last_modified).fromNow()}),(0,g.jsx)("td",{title:e.owner_contact_email,children:e.owner_name})]}),this.state.isShowSharedDialog&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Qe.Z,{itemType:"library",itemName:e.repo_name,itemPath:"/",repoID:e.repo_id,repoEncrypted:e.encrypted,enableDirPrivateShare:!0,userPerm:e.permission,isAdmin:!0,toggleDialog:this.toggleShareDialog})})]}),l=(0,g.jsxs)(a.Fragment,{children:[(0,g.jsxs)("tr",{onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,children:[(0,g.jsx)("td",{onClick:this.visitRepo,children:(0,g.jsx)("img",{src:e.icon_url,title:e.icon_title,alt:e.icon_title,width:"24"})}),(0,g.jsxs)("td",{onClick:this.visitRepo,children:[(0,g.jsx)(c.rU,{to:s,children:e.repo_name}),e.monitored&&(0,g.jsx)(nt,{repoID:e.repo_id}),(0,g.jsx)("br",{}),(0,g.jsx)("span",{className:"item-meta-info",title:e.owner_contact_email,children:e.owner_name}),(0,g.jsx)("span",{className:"item-meta-info",children:e.size}),(0,g.jsx)("span",{className:"item-meta-info",title:A()(e.last_modified).format("llll"),children:A()(e.last_modified).fromNow()})]}),(0,g.jsx)("td",{children:(0,g.jsxs)(U.Z,{isOpen:this.state.isOpMenuOpen,toggle:this.toggleOpMenu,children:[(0,g.jsx)(z.Z,{tag:"i",className:"sf-dropdown-toggle fa fa-ellipsis-v ml-0",title:(0,u.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":this.state.isOpMenuOpen}),(0,g.jsxs)("div",{className:this.state.isOpMenuOpen?"":"d-none",onClick:this.toggleOpMenu,children:[(0,g.jsx)("div",{className:"mobile-operation-menu-bg-layer"}),(0,g.jsxs)("div",{className:"mobile-operation-menu",children:[(0,g.jsx)(G.Z,{className:"mobile-menu-item",onClick:this.onToggleStarRepo,children:this.state.isStarred?(0,u.ih)("Unstar"):(0,u.ih)("Star")}),u._y&&e.is_admin&&(0,g.jsx)(G.Z,{className:"mobile-menu-item",onClick:this.share,children:(0,u.ih)("Share")}),(0,g.jsx)(G.Z,{className:"mobile-menu-item",onClick:this.leaveShare,children:(0,u.ih)("Leave Share")}),r&&(0,g.jsx)(G.Z,{className:"mobile-menu-item",onClick:e.monitored?this.unwatchFileChanges:this.watchFileChanges,children:e.monitored?(0,u.ih)("Unwatch File Changes"):(0,u.ih)("Watch File Changes")})]})]})]})})]}),this.state.isShowSharedDialog&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Qe.Z,{itemType:"library",itemName:e.repo_name,itemPath:"/",repoID:e.repo_id,repoEncrypted:e.encrypted,enableDirPrivateShare:!0,userPerm:e.permission,isAdmin:!0,toggleDialog:this.toggleShareDialog})})]});return this.props.isDesktop?o:l}}]),n}(a.Component),rt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).sortItems=function(e,t){Ye.ZP.save("seafile-repo-dir-sort-by",e),Ye.ZP.save("seafile-repo-dir-sort-order",t),s.setState({sortBy:e,sortOrder:t,items:m.c.sortRepos(s.state.items,e,t)})},s.toggleSortOptionsDialog=function(){s.setState({isSortOptionsDialogOpen:!s.state.isSortOptionsDialogOpen})},s.onMonitorRepo=function(e,t){var n=s.state.items.map((function(n){return n.repo_id===e.repo_id&&(n.monitored=t),n}));s.setState({items:n})},s.state={loading:!0,errorMsg:"",items:[],sortBy:Ye.ZP.load("seafile-repo-dir-sort-by")||"name",sortOrder:Ye.ZP.load("seafile-repo-dir-sort-order")||"asc",isSortOptionsDialogOpen:!1},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.listRepos({type:"shared"}).then((function(t){var n=t.data.repos.map((function(e){return new Je(e)}));e.setState({loading:!1,items:m.c.sortRepos(n,e.state.sortBy,e.state.sortOrder)})})).catch((function(t){e.setState({loading:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("div",{className:"main-panel-center",children:(0,g.jsxs)("div",{className:"cur-view-container",children:[(0,g.jsxs)("div",{className:"cur-view-path",children:[(0,g.jsx)("h3",{className:"sf-heading m-0",children:(0,u.ih)("Shared with me")}),!m.c.isDesktop()&&this.state.items.length>0&&(0,g.jsx)("span",{className:"sf3-font sf3-font-sort action-icon",onClick:this.toggleSortOptionsDialog})]}),(0,g.jsx)("div",{className:"cur-view-content",children:(0,g.jsx)(it,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.items,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortItems:this.sortItems,onMonitorRepo:this.onMonitorRepo})})]})}),this.state.isSortOptionsDialogOpen&&(0,g.jsx)(Oe,{toggleDialog:this.toggleSortOptionsDialog,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortItems:this.sortItems})]})}}]),n}(a.Component),ot=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,s=t.items,r=(0,g.jsxs)(O.Z,{children:[(0,g.jsx)("h2",{children:(0,u.ih)("No libraries have been shared with you")}),(0,g.jsx)("p",{children:(0,u.ih)("No libraries have been shared with you from other servers.")})]});if(n)return(0,g.jsx)(R.Z,{});if(i)return(0,g.jsx)("p",{className:"error text-center",children:i});var o=(0,g.jsxs)("table",{children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"4%"}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Name")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Shared by")}),(0,g.jsx)("th",{width:"26%",children:(0,u.ih)("At server")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Time")}),(0,g.jsx)("th",{width:"10%"})]})}),(0,g.jsx)("tbody",{children:s.map((function(t,n){return(0,g.jsx)(at,{item:t,leaveShare:e.props.leaveShare},n)}))})]});return s.length?o:r}}]),n}(a.Component),at=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleMouseOver=function(){s.setState({isOpIconShown:!0})},s.handleMouseOut=function(){s.setState({isOpIconShown:!1})},s.leaveShare=function(e){e.preventDefault(),s.props.leaveShare(s.props.item)},s.state={isOpIconShown:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state.isOpIconShown;e.icon_url=m.c.getLibIconUrl(e),e.icon_title=m.c.getLibIconTitle(e);var n="".concat(u.ze,"remote-library/").concat(this.props.item.provider_id,"/").concat(this.props.item.repo_id,"/").concat(m.c.encodePath(this.props.item.repo_name),"/");return(0,g.jsxs)("tr",{onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,onFocus:this.handleMouseOver,children:[(0,g.jsx)("td",{children:(0,g.jsx)("img",{src:e.icon_url,title:e.icon_title,alt:e.icon_title,width:"24"})}),(0,g.jsx)("td",{children:(0,g.jsx)(c.rU,{to:n,children:e.repo_name})}),(0,g.jsx)("td",{children:e.from_user}),(0,g.jsx)("td",{children:e.from_server_url}),(0,g.jsx)("td",{title:A()(e.last_modified).format("llll"),children:A()(e.ctime).fromNow()}),(0,g.jsx)("td",{children:(0,g.jsx)("a",{href:"#",role:"button",className:"action-icon sf2-icon-x3 ".concat(t?"":"invisible"),title:(0,u.ih)("Leave Share"),"aria-label":(0,u.ih)("Leave Share"),onClick:this.leaveShare})})]})}}]),n}(a.Component),lt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).leaveShare=function(e){var t=e.id,n=e.repo_name;w.I.deleteOCMShareReceived(t).then((function(e){var i=s.state.items.filter((function(e){return e.id!=t}));s.setState({items:i}),j.Z.success((0,u.ih)("Successfully unshared {name}").replace("{name}",n))})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={loading:!0,errorMsg:"",items:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.listOCMSharesReceived().then((function(t){e.setState({loading:!1,items:t.data.ocm_share_received_list})})).catch((function(t){e.setState({loading:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){return(0,g.jsx)(a.Fragment,{children:(0,g.jsx)("div",{className:"main-panel-center",children:(0,g.jsxs)("div",{className:"cur-view-container",children:[(0,g.jsx)("div",{className:"cur-view-path",children:(0,g.jsx)("h3",{className:"sf-heading m-0",children:(0,u.ih)("Shared from other servers")})}),(0,g.jsx)("div",{className:"cur-view-content",children:(0,g.jsx)(ot,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.items,leaveShare:this.leaveShare})})]})})})}}]),n}(a.Component),ct=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).getAllReceivedShares=function(){var e=w.I.server+"/ocm-via-webdav/received-shares/";w.I.req.get(e).then((function(e){s.setState({loading:!1,shareID:"",path:"",items:e.data.received_share_list})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.leaveShare=function(e){var t=e.id,n=e.name,i=w.I.server+"/ocm-via-webdav/received-shares/"+t+"/";w.I.req.delete(i).then((function(e){var i=s.state.items.filter((function(e){return e.id!=t}));s.setState({items:i}),j.Z.success((0,u.ih)("Successfully unshared {name}").replace("{name}",n))})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.openFolder=function(e){s.setState({loading:!0});var t=w.I.server+"/ocm-via-webdav/received-shares/"+e.id+"/?path="+e.path;w.I.req.get(t).then((function(t){s.setState({loading:!1,shareID:e.id,path:t.data.parent_dir,items:t.data.received_share_list})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onPathClick=function(e){s.setState({loading:!0});var t=w.I.server+"/ocm-via-webdav/received-shares/"+s.state.shareID+"/?path="+e;w.I.req.get(t).then((function(e){s.setState({loading:!1,items:e.data.received_share_list,path:e.data.parent_dir})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={loading:!0,shareID:"",path:"",items:[],errorMsg:""},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.getAllReceivedShares()}},{key:"render",value:function(){return(0,g.jsx)(a.Fragment,{children:(0,g.jsx)("div",{className:"main-panel-center",children:(0,g.jsxs)("div",{className:"cur-view-container",children:[(0,g.jsx)("div",{className:"cur-view-path align-items-center",children:(0,g.jsx)(dt,{shareID:this.state.shareID,currentPath:this.state.path,onPathClick:this.onPathClick,getAllReceivedShares:this.getAllReceivedShares})}),(0,g.jsx)("div",{className:"cur-view-content",children:(0,g.jsx)(ht,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.items,path:this.state.path,leaveShare:this.leaveShare,openFolder:this.openFolder})})]})})})}}]),n}(a.Component),ht=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,i.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,s=t.items,r=t.path,o=(0,g.jsxs)(O.Z,{children:[(0,g.jsx)("h2",{children:(0,u.ih)("No libraries have been shared with you")}),(0,g.jsx)("p",{children:(0,u.ih)("No libraries have been shared with you from other servers.")})]});if(n)return(0,g.jsx)(R.Z,{});if(i)return(0,g.jsx)("p",{className:"error text-center",children:i});var a=(0,g.jsxs)("table",{children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"5%"}),(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("Name")}),(0,g.jsx)("th",{width:"35%",children:(0,u.ih)("Shared By")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Time")}),(0,g.jsx)("th",{width:"5%"}),(0,g.jsx)("th",{width:"5%"})]})}),(0,g.jsx)("tbody",{children:s.map((function(t,n){return(0,g.jsx)(pt,{item:t,path:r,leaveShare:e.props.leaveShare,openFolder:e.props.openFolder},n)}))})]});return s.length?a:o}}]),n}(a.Component),pt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleMouseOver=function(){s.setState({isOpIconShown:!0})},s.handleMouseOut=function(){s.setState({isOpIconShown:!1})},s.downloadFile=function(){var e=u.ze+"ocm-via-webdav/download-received-file/?share_id="+s.props.item.id+"&path="+s.props.item.path;window.location.href=e},s.leaveShare=function(e){e.preventDefault(),s.props.leaveShare(s.props.item)},s.openFolder=function(e){e.preventDefault(),s.props.openFolder(s.props.item)},s.state={isOpIconShown:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state.isOpIconShown;return e.is_dir?e.icon_url=m.c.getFolderIconUrl():e.icon_url=m.c.getFileIconUrl(e.name),(0,g.jsxs)("tr",{onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,children:[(0,g.jsx)("td",{children:(0,g.jsx)("img",{src:e.icon_url,width:"24",alt:""})}),(0,g.jsx)("td",{children:e.is_dir?(0,g.jsx)("a",{href:"#",onClick:this.openFolder,children:e.name}):e.name}),(0,g.jsx)("td",{children:e.shared_by}),(0,g.jsx)("td",{title:A()(e.last_modified).format("llll"),children:A()(e.ctime).fromNow()}),(0,g.jsx)("td",{children:e.is_dir?"":(0,g.jsx)("a",{href:"#",className:"action-icon sf2-icon-download ".concat(t?"":"invisible"),title:(0,u.ih)("Download"),onClick:this.downloadFile})}),(0,g.jsx)("td",{children:this.props.path?"":(0,g.jsx)("a",{href:"#",className:"action-icon sf2-icon-x3 ".concat(t?"":"invisible"),title:(0,u.ih)("Leave Share"),onClick:this.leaveShare})})]})}}]),n}(a.Component),dt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onPathClick=function(e){var t=m.c.getEventData(e,"path");s.props.onPathClick(t)},s.turnPathToLink=function(e){var t=(e=e.slice(1,e.length-1)).split("/"),n="";return t.map((function(e,i){return i===t.length-1?(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("span",{className:"path-split",children:"/"}),(0,g.jsx)("span",{className:"path-file-name",children:e})]},i):(0===i?n="/":n+=e+"/",(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("span",{className:"path-split",children:"/"}),(0,g.jsx)("a",{className:"path-link","data-path":n,onClick:s.onPathClick,children:e})]},i))}))},s.state={},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.turnPathToLink(this.props.currentPath);return(0,g.jsxs)("div",{className:"path-container",children:[(0,g.jsx)("a",{href:"#",onClick:this.props.getAllReceivedShares,children:(0,u.ih)("All")}),e]})}}]),n}(a.Component),ut=ct,mt=n(55294),gt=n(55516),ft=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){return(0,g.jsxs)("div",{className:"main-panel-north ".concat(this.props.children?"border-left-show":""),children:[(0,g.jsxs)("div",{className:"cur-view-toolbar",children:[(0,g.jsx)("span",{className:"sf2-icon-menu side-nav-toggle hidden-md-up d-md-none",title:"Side Nav Menu"}),(0,g.jsx)("div",{className:"operation",children:this.props.children})]}),(0,g.jsx)("div",{className:"common-toolbar",children:(0,g.jsx)(gt.Z,{isAdminPanel:!1})})]})}}]),n}(a.Component),vt=ft,xt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o-1)return e=(0,u.ih)("Name should not include '/'."),this.setState({errMessage:e}),!1;if(this.state.encrypt){var n=this.state.password1.trim(),i=this.state.password2.trim();if(!n.length)return e=(0,u.ih)("Please enter password"),this.setState({errMessage:e}),!1;if(!i.length)return e=(0,u.ih)("Please enter the password again"),this.setState({errMessage:e}),!1;if(n.length0&&(0,g.jsxs)(ge.Z,{children:[(0,g.jsx)(fe.Z,{children:(0,u.ih)("Template")}),(0,g.jsx)(kt.ME,{defaultValue:this.templateOptions[0],options:this.templateOptions,onChange:this.handlelibraryTemplatesInputChange,value:this.templateOptions.find((function(t){return t.value===e.state.library_template}))||null})]}),u.al.length>0&&(0,g.jsxs)(ge.Z,{children:[(0,g.jsx)(fe.Z,{children:(0,u.ih)("Storage Backend")}),(0,g.jsx)(kt.ME,{defaultValue:this.storageOptions[0],options:this.storageOptions,onChange:this.handleStorageInputChange,value:this.storageOptions.find((function(t){return t.value===e.state.storage_id}))||null})]}),"group"===this.props.libraryType&&(0,g.jsxs)(ge.Z,{children:[(0,g.jsx)(fe.Z,{for:"exampleSelect",children:(0,u.ih)("Permission")}),(0,g.jsxs)(re.Z,{type:"select",name:"select",id:"exampleSelect",onChange:this.onPermissionChange,value:this.state.permission,children:[(0,g.jsx)("option",{value:"rw",children:(0,u.ih)("Read-Write")}),(0,g.jsx)("option",{value:"r",children:(0,u.ih)("Read-Only")})]})]}),u.l3&&(0,g.jsxs)("div",{children:[(0,g.jsxs)(ge.Z,{check:!0,children:[(0,g.jsx)(re.Z,{type:"checkbox",id:"encrypt",onChange:this.onEncrypted}),(0,g.jsx)(fe.Z,{for:"encrypt",children:(0,u.ih)("Encrypt")})]}),!this.state.disabled&&(0,g.jsxs)(ge.Z,{children:[(0,g.jsx)(fe.Z,{for:"passwd1",children:(0,u.ih)("Password")}),(0,g.jsxs)("span",{className:"tip",children:[" ",(0,u.ih)("(at least {placeholder} characters)").replace("{placeholder}",u.gl)]}),(0,g.jsx)(re.Z,{id:"passwd1",type:"password",disabled:this.state.disabled,value:this.state.password1,onChange:this.handlePassword1Change,autoComplete:"new-password"})]}),!this.state.disabled&&(0,g.jsxs)(ge.Z,{children:[(0,g.jsx)(fe.Z,{for:"passwd2",children:(0,u.ih)("Password again")}),(0,g.jsx)(re.Z,{id:"passwd2",type:"password",disabled:this.state.disabled,value:this.state.password2,onChange:this.handlePassword2Change,autoComplete:"new-password"})]})]})]}),this.state.errMessage&&(0,g.jsx)(bt.Z,{color:"danger",children:this.state.errMessage})]}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.toggle,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.handleSubmit,disabled:!this.state.isSubmitBtnActive,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),Nt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onCreateRepo=function(e){s.props.onCreateRepo(e),s.onCreateToggle()},s.onCreateToggle=function(){s.setState({isCreateRepoDialogShow:!s.state.isCreateRepoDialogShow})},s.toggleMore=function(){s.setState({isOpen:!s.state.isOpen})},s.onDropdownToggleKeyDown=function(e){"Enter"!=e.key&&"Space"!=e.key||s.toggleMore()},s.visitDeletedviaKey=function(e){"Enter"!=e.key&&"Space"!=e.key||(0,c.c4)("".concat(u.ze,"my-libs/deleted/"))},s.state={isCreateRepoDialogShow:!1,isOpen:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsxs)("div",{className:"cur-view-toolbar",children:[(0,g.jsx)("span",{className:"sf2-icon-menu side-nav-toggle hidden-md-up d-md-none",title:"Side Nav Menu",onClick:this.props.onShowSidePanel}),m.c.isDesktop()?(0,g.jsxs)("div",{className:"operation",children:[(0,g.jsxs)("button",{className:"btn btn-secondary operation-item",title:(0,u.ih)("New Library"),onClick:this.onCreateToggle,children:[(0,g.jsx)("i",{className:"fas fa-plus-square text-secondary mr-1"}),(0,u.ih)("New Library")]}),(0,g.jsxs)(U.Z,{isOpen:this.state.isOpen,toggle:this.toggleMore,children:[(0,g.jsx)(z.Z,{className:"btn btn-secondary operation-item",onKeyDown:this.onDropdownToggleKeyDown,children:(0,u.ih)("More")}),(0,g.jsx)(B.Z,{children:(0,g.jsx)(G.Z,{className:"link-dropdown-container",onKeyDown:this.visitDeletedviaKey,children:(0,g.jsx)(c.rU,{className:"link-dropdown-item",to:u.ze+"my-libs/deleted/",children:(0,u.ih)("Deleted Libraries")})})})]})]}):(0,g.jsx)("span",{className:"sf2-icon-plus mobile-toolbar-icon",title:(0,u.ih)("New Library"),onClick:this.onCreateToggle})]}),this.state.isCreateRepoDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(It,{libraryType:this.props.libraryType,onCreateRepo:this.onCreateRepo,onCreateToggle:this.onCreateToggle})})]})}}]),n}(a.Component),Mt=(n(90099),function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).getFileCounts=function(e){w.I.getRepoInfo(e.repo_id).then((function(e){s.setState({fileCount:e.data.file_count})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={fileCount:0},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this.props.currentRepo;this.getFileCounts(e)}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.currentRepo.repo_id!==this.props.currentRepo.repo_id&&this.getFileCounts(e.currentRepo)}},{key:"render",value:function(){var e=this.props.currentRepo,t=m.c.getLibIconUrl(e),n=m.c.getLibIconUrl(e,!0);return(0,g.jsxs)("div",{className:"detail-container",children:[(0,g.jsxs)("div",{className:"detail-header",children:[(0,g.jsx)("div",{className:"detail-control sf2-icon-x1",onClick:this.props.closeDetails}),(0,g.jsxs)("div",{className:"detail-title dirent-title",children:[(0,g.jsx)("img",{src:t,width:"24",height:"24",alt:""})," ",(0,g.jsx)("span",{className:"name ellipsis",title:e.repo_name,children:e.repo_name})]})]}),(0,g.jsxs)("div",{className:"detail-body dirent-info",children:[(0,g.jsx)("div",{className:"img",children:(0,g.jsx)("img",{src:n,height:"96",alt:""})}),(0,g.jsx)("div",{className:"dirent-table-container",children:(0,g.jsxs)("table",{className:"table-thead-hidden",children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"35%"}),(0,g.jsx)("th",{width:"65%"})]})}),(0,g.jsxs)("tbody",{children:[(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{children:(0,u.ih)("Files")}),(0,g.jsx)("td",{children:this.state.fileCount})]}),(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{children:(0,u.ih)("Size")}),(0,g.jsx)("td",{children:e.size})]}),(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{children:(0,u.ih)("Last Update")}),(0,g.jsx)("td",{children:A()(e.last_modified).fromNow()})]})]})]})})]})]})}}]),n}(a.Component)),Zt=n(7767),Pt=n(33028),Ft=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).submit=function(){var e=s.state.keepDays;s.state.autoHistory&&(e=s.state.expireDays);var t=s.props.repoID;if(/^-?\d+$/.test(e)){var n=(0,u.ih)("Successfully set library history.");w.I.setRepoHistoryLimit(t,e).then((function(e){j.Z.success(n),s.setState({keepDays:e.data.keep_days}),s.props.toggleDialog()})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))}else s.setState({errorInfo:(0,u.ih)("Please enter a non-negative integer")})},s.handleKeyDown=function(e){"Enter"===e.key&&(s.submit(),e.preventDefault())},s.onChange=function(e){var t=e.target.value;s.setState({keepDays:t,expireDays:t})},s.setLimitDays=function(e){"allHistory"===e?s.setState({keepDays:-1,disabled:!0}):"noHistory"===e?s.setState({keepDays:0,disabled:!0}):s.setState({disabled:!1}),s.setState({allHistory:"allHistory"===e,noHistory:"noHistory"===e,autoHistory:"autoHistory"===e})},s.state={keepDays:-1,expireDays:30,disabled:!0,allHistory:!0,noHistory:!1,autoHistory:!1,errorInfo:""},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.getRepoHistoryLimit(this.props.repoID).then((function(t){e.setState({keepDays:t.data.keep_days,allHistory:t.data.keep_days<0,noHistory:0===t.data.keep_days,autoHistory:t.data.keep_days>0,disabled:!(t.data.keep_days>0),expireDays:t.data.keep_days>0?t.data.keep_days:30})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))}},{key:"render",value:function(){var e=this,t=this.props.itemName;return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.props.toggleDialog,children:[(0,g.jsxs)(J.Z,{toggle:this.props.toggleDialog,children:[(0,g.jsx)("span",{className:"op-target",title:t,children:t})," ",(0,u.ih)("History Setting")]}),(0,g.jsx)(b.Z,{children:(0,g.jsxs)(Ct.Z,{children:[!u.Qo&&(0,g.jsx)(ge.Z,{children:(0,g.jsx)(fe.Z,{className:"error",children:(0,u.ih)("Setting library history is disabled by Admin.")})}),(0,g.jsxs)(ge.Z,{check:!0,children:[(0,g.jsx)(re.Z,{type:"radio",name:"radio1",checked:this.state.allHistory,disabled:!u.Qo,onChange:function(){e.setLimitDays("allHistory")}})," ",(0,g.jsx)(fe.Z,{children:(0,u.ih)("Keep full history")})]}),(0,g.jsxs)(ge.Z,{check:!0,children:[(0,g.jsx)(re.Z,{type:"radio",name:"radio1",checked:this.state.noHistory,disabled:!u.Qo,onChange:function(){e.setLimitDays("noHistory")}})," ",(0,g.jsx)(fe.Z,{children:(0,u.ih)("Don't keep history")})]}),(0,g.jsxs)(ge.Z,{check:!0,children:[(0,g.jsx)(re.Z,{type:"radio",name:"radio1",checked:this.state.autoHistory,disabled:!u.Qo,onChange:function(){e.setLimitDays("autoHistory")}})," ",(0,g.jsx)(fe.Z,{children:(0,u.ih)("Only keep a period of history:")}),(0,g.jsx)(re.Z,{type:"text",className:"expire-input",value:this.state.expireDays,onChange:this.onChange,disabled:this.state.disabled,onKeyDown:this.handleKeyDown})," ",(0,g.jsx)(fe.Z,{children:(0,g.jsx)("span",{children:(0,u.ih)("days")})})]}),this.state.errorInfo&&(0,g.jsx)(bt.Z,{color:"danger",children:this.state.errorInfo})]})}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.props.toggleDialog,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.submit,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),_t=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleOldPasswordInputChange=function(e){s.setState({oldPassword:e.target.value})},s.handleNewPasswordInputChange=function(e){s.setState({newPassword:e.target.value})},s.handleNewPasswordAgainInputChange=function(e){s.setState({newPasswordAgain:e.target.value})},s.formSubmit=function(e){var t=s.state,n=t.oldPassword,i=t.newPassword,r=t.newPasswordAgain;return n?i?i.length",t=(0,u.ih)("New password has been sent to your email {mail}. Please check your mailbox. If you don\u2019t receive the password, please check if your email address is properly configured.").replace("{mail}",e);return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.props.toggleDialog,children:[(0,g.jsx)(J.Z,{toggle:this.props.toggleDialog,children:(0,u.ih)("Reset library password")}),(0,g.jsxs)(b.Z,{children:[this.state.showLoading&&(0,g.jsx)("span",{children:(0,u.ih)("Sending new password...")}),this.state.showSuccess&&(0,g.jsx)("div",{dangerouslySetInnerHTML:{__html:t}}),this.state.showError&&(0,g.jsx)("span",{className:"err-message",children:this.state.errMessage})]})]})}}]),n}(a.Component),Lt=n(72233),Ot=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleInputChange=function(e){s.setState({inputValue:e})},s.formSubmit=function(){var e=s.state.inputValue;if(e&&e.length){s.setState({submitBtnDisabled:!0});var t=s.props,n=t.repoID,i=t.repoName,r=e.map((function(e,t){return e.value})).join(",");w.I.addNewRepoLabels(n,r).then((function(e){var t=(0,u.ih)("Successfully added label(s) for library {placeholder}").replace("{placeholder}",i);j.Z.success(t),s.props.toggleDialog()})).catch((function(e){var t=m.c.getErrorMsg(e);s.setState({formErrorMsg:t,submitBtnDisabled:!1})}))}else s.setState({formErrorMsg:(0,u.ih)("It is required.")})},s.state={isLoading:!0,existingLabels:null,errorMsg:"",submitBtnDisabled:!1},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.getAllRepoSnapshotLabels().then((function(t){e.setState({isLoading:!1,existingLabels:t.data,errorMsg:""})})).catch((function(t){var n=m.c.getErrorMsg(t);e.setState({isLoading:!1,errorMsg:n})}))}},{key:"render",value:function(){return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.props.toggleDialog,children:[(0,g.jsx)(J.Z,{toggle:this.props.toggleDialog,children:(0,u.ih)("Label Current State")}),(0,g.jsx)(b.Z,{children:(0,g.jsx)(Rt,{data:this.state,handleChange:this.handleInputChange})}),this.state.existingLabels&&(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)("button",{className:"btn btn-secondary",onClick:this.props.toggleDialog,children:(0,u.ih)("Cancel")}),(0,g.jsx)("button",{className:"btn btn-primary",disabled:this.state.submitBtnDisabled,onClick:this.formSubmit,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),Rt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.data,t=e.isLoading,n=e.errorMsg,i=e.existingLabels,s=e.formErrorMsg;return t?(0,g.jsx)(R.Z,{}):n?(0,g.jsx)("p",{className:"error mt-4 text-center",children:n}):(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(Lt.Z,{isMulti:!0,onChange:this.props.handleChange,placeholder:"",options:i.map((function(e,t){return{label:e,value:e}}))}),s&&(0,g.jsx)("p",{className:"error m-0 mt-2",children:s})]})}}]),n}(a.Component),Et=Ot,At=n(47976),Ut=n(55146),zt=n(13327),Bt=n(99574),Gt=n(71757),Ht=n(82377),Wt=n(51840),Vt=n(32487),qt=n(71218),Kt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.setState({isOperationShow:!0})},s.onMouseLeave=function(){s.setState({isOperationShow:!1})},s.deleteUserFolderPermission=function(){var e=s.props.item;s.props.deleteUserFolderPermission(e)},s.onChangeUserFolderPerm=function(e){var t=s.props.item;s.props.onChangeUserFolderPerm(t.repo_id,e,t.folder_path,t.user_email)},s.state={isOperationShow:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=e.permission;return(0,g.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onFocus:this.onMouseEnter,children:[(0,g.jsx)("td",{children:(0,g.jsx)("a",{href:"".concat(u.ze,"profile/").concat(encodeURIComponent(e.user_email),"/"),target:"_blank",rel:"noreferrer",children:e.user_name})}),this.props.showPath&&(0,g.jsx)("td",{children:(0,g.jsx)("a",{href:"".concat(u.ze,"library/").concat(e.repo_id,"/").concat(m.c.encodePath(this.props.repoName+e.folder_path)),children:e.folder_name})}),(0,g.jsx)("td",{children:(0,g.jsx)(je.Z,{isTextMode:!0,autoFocus:!0,isEditIconShow:this.state.isOperationShow,currentPermission:t,permissions:this.props.permissions,onPermissionChanged:this.onChangeUserFolderPerm})}),(0,g.jsx)("td",{children:(0,g.jsx)("span",{tabIndex:"0",role:"button",className:"sf2-icon-x3 action-icon ".concat(this.state.isOperationShow?"":"hide"),onClick:this.deleteUserFolderPermission,onKeyDown:m.c.onKeyDown,title:(0,u.ih)("Delete"),"aria-label":(0,u.ih)("Delete")})})]})}}]),n}(a.Component),Yt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleUserSelectChange=function(e){s.setState({selectedUsers:e})},s.setPermission=function(e){s.setState({permission:e})},s.addUserFolderPerm=function(){var e=s.state.selectedUsers,t=s.props.folderPath||s.state.folderPath;if(!e||!e.length||!t)return!1;var n=e.map((function(e,t){return e.email}));(s.props.isDepartmentRepo?w.I.addDepartmentRepoUserFolderPerm(s.props.repoID,s.state.permission,t,n):w.I.addUserFolderPerm(s.props.repoID,s.state.permission,t,n)).then((function(e){var t=[];if(e.data.failed.length>0)for(var n=0;n0&&this.state.errorMsg.map((function(e,t){var n="";return n=e.user_email?e.user_email+": "+e.error_msg:e,(0,g.jsx)("tr",{children:(0,g.jsx)("td",{colSpan:3,children:(0,g.jsx)("p",{className:"error",children:n})})},t)}))]})]}),(0,g.jsx)("div",{className:"share-list-container",children:(0,g.jsxs)("table",{className:"table-thead-hidden w-xs-250",children:[i,(0,g.jsx)("tbody",{children:n.map((function(n,i){return(0,g.jsx)(Kt,{item:n,permissions:e.permissions,deleteUserFolderPermission:e.deleteUserFolderPermItem,onChangeUserFolderPerm:e.onChangeUserFolderPerm,showPath:t,repoName:e.props.repoName},i)}))})]})})]})}}]),n}(a.Component),Jt=Yt,Xt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.setState({isOperationShow:!0})},s.onMouseLeave=function(){s.setState({isOperationShow:!1})},s.deleteGroupPermissionItem=function(){var e=s.props.item;s.props.deleteGroupPermissionItem(e)},s.onChangeGroupPermission=function(e){var t=s.props.item;s.props.onChangeGroupPermission(t,e)},s.state={isOperationShow:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item;return(0,g.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onFocus:this.onMouseEnter,children:[(0,g.jsx)("td",{children:(0,g.jsx)("a",{href:"".concat(u.ze,"group/").concat(e.group_id,"/"),target:"_blank",rel:"noreferrer",children:e.group_name})}),this.props.showPath&&(0,g.jsx)("td",{children:(0,g.jsx)("a",{href:"".concat(u.ze,"library/").concat(e.repo_id,"/").concat(m.c.encodePath(this.props.repoName+e.folder_path)),children:e.folder_name})}),(0,g.jsx)("td",{children:(0,g.jsx)(je.Z,{isTextMode:!0,autoFocus:!0,isEditIconShow:this.state.isOperationShow,currentPermission:e.permission,permissions:this.props.permissions,onPermissionChanged:this.onChangeGroupPermission})}),(0,g.jsx)("td",{children:(0,g.jsx)("span",{tabIndex:"0",role:"button",className:"sf2-icon-x3 action-icon ".concat(this.state.isOperationShow?"":"hide"),onClick:this.deleteGroupPermissionItem,onKeyDown:m.c.onKeyDown,title:(0,u.ih)("Delete"),"aria-label":(0,u.ih)("Delete")})})]})}}]),n}(a.Component),Qt=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleSelectChange=function(e){s.setState({selectedOption:e})},s.loadOptions=function(){w.I.shareableGroups().then((function(e){s.options=e.data.map((function(e,t){return{id:e.id,label:e.name,value:e.name}}))}))},s.listGroupPermissionItems=function(){var e=s.props,t=e.isDepartmentRepo,n=e.repoID,i=e.folderPath;(t?w.I.listDepartmentRepoGroupFolderPerm(n,i):w.I.listGroupFolderPerm(n,i)).then((function(e){0!==e.data.length&&s.setState({groupPermissionItems:e.data})}))},s.setPermission=function(e){s.setState({permission:e})},s.addGroupFolderPerm=function(){var e=s.state.selectedOption,t=s.props.folderPath||s.state.folderPath;if(!e||!t)return!1;(s.props.isDepartmentRepo?w.I.addDepartmentRepoGroupFolderPerm(s.props.repoID,s.state.permission,t,e.id):w.I.addGroupFolderPerm(s.props.repoID,s.state.permission,t,e.id)).then((function(e){var t=[];if(e.data.failed.length>0)for(var n=0;n0&&this.state.errorMsg.map((function(e,t){var n=e.group_id+": "+e.error_msg;return(0,g.jsx)("tr",{children:(0,g.jsx)("td",{colSpan:3,children:(0,g.jsx)("p",{className:"error",children:n})})},t)}))]})]}),(0,g.jsx)("div",{className:"share-list-container",children:(0,g.jsxs)("table",{className:"table-thead-hidden w-xs-250",children:[n,(0,g.jsx)("tbody",{children:this.state.groupPermissionItems.map((function(n,i){return(0,g.jsx)(Xt,{item:n,permissions:e.permissions,deleteGroupPermissionItem:e.deleteGroupPermissionItem,onChangeGroupPermission:e.onChangeGroupPermission,showPath:t,repoName:e.props.repoName},i)}))})]})})]})}}]),n}(a.Component),$t=Qt,en=(n(36491),function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).toggle=function(e){s.state.activeTab!==e&&s.setState({activeTab:e})},s.renderContent=function(){var e=s.state.activeTab;return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("div",{className:"share-dialog-side",children:(0,g.jsxs)(At.Z,{pills:!0,children:[(0,g.jsx)(Ut.Z,{role:"tab","aria-selected":"userPermission"===e,"aria-controls":"user-perm-panel",children:(0,g.jsx)(zt.Z,{className:"userPermission"===e?"active":"",onClick:s.toggle.bind((0,D.Z)(s),"userPermission"),tabIndex:"0",onKeyDown:m.c.onKeyDown,children:(0,u.ih)("User Permission")})}),(0,g.jsx)(Ut.Z,{role:"tab","aria-selected":"groupPermission"===e,"aria-controls":"group-perm-panel",children:(0,g.jsx)(zt.Z,{className:"groupPermission"===e?"active":"",onClick:s.toggle.bind((0,D.Z)(s),"groupPermission"),tabIndex:"0",onKeyDown:m.c.onKeyDown,children:(0,u.ih)("Group Permission")})})]})}),(0,g.jsx)("div",{className:"share-dialog-main",children:(0,g.jsxs)(Bt.Z,{activeTab:s.state.activeTab,children:[(0,g.jsx)(Gt.Z,{tabId:"userPermission",role:"tabpanel",id:"user-perm-panel",children:(0,g.jsx)(Jt,{repoID:s.props.repoID,repoName:s.props.repoName,folderPath:s.props.folderPath,isDepartmentRepo:s.props.isDepartmentRepo})}),(0,g.jsx)(Gt.Z,{tabId:"groupPermission",role:"tabpanel",id:"group-perm-panel",children:(0,g.jsx)($t,{repoID:s.props.repoID,repoName:s.props.repoName,folderPath:s.props.folderPath,isDepartmentRepo:s.props.isDepartmentRepo})})]})})]})},s.state={activeTab:"userPermission"},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.repoName,n=e.folderName;return(0,g.jsx)("div",{children:(0,g.jsxs)(d.Z,{isOpen:!0,style:{maxWidth:"980px"},className:"share-dialog",toggle:this.props.toggleDialog,children:[(0,g.jsx)(J.Z,{toggle:this.props.toggleDialog,children:(0,g.jsx)("span",{children:t?m.c.generateDialogTitle((0,u.ih)("{placeholder} Folder Permission"),t):m.c.generateDialogTitle((0,u.ih)("Set {placeholder}'s permission"),n)})}),(0,g.jsx)(b.Z,{className:"dialog-list-container share-dialog-content",role:"tablist",children:this.renderContent()})]})})}}]),n}(a.Component)),tn=n(67145),nn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMenuItemClick=function(e){var t=m.c.getEventData(e,"toggle");s.props.onMenuItemClick(t)},s.onMenuItemKeyDown=function(e){"Enter"!=e.key&&"Space"!=e.key||s.onMenuItemClick(e)},s.onDropdownToggleClick=function(e){s.toggleOperationMenu(e)},s.onDropdownToggleKeyDown=function(e){"Enter"!=e.key&&"Space"!=e.key||s.onDropdownToggleClick(e)},s.toggleOperationMenu=function(e){var t=e.target?e.target.dataset:null;t&&t.toggle&&"Rename"===t.toggle?s.setState({isItemMenuShow:!s.state.isItemMenuShow}):s.setState({isItemMenuShow:!s.state.isItemMenuShow},(function(){s.state.isItemMenuShow?s.props.onFreezedItem():s.props.onUnfreezedItem()}))},s.toggleAdvancedMenuShown=function(e){s.setState({isAdvancedMenuShown:!0})},s.toggleAdvancedMenu=function(e){e.stopPropagation(),s.setState({isAdvancedMenuShown:!s.state.isAdvancedMenuShown},(function(){s.toggleOperationMenu(e)}))},s.onDropDownMouseMove=function(e){s.state.isAdvancedMenuShown&&e.target&&"dropdown-item"===e.target.className&&s.setState({isAdvancedMenuShown:!1})},s.generatorOperations=function(){var e=s.props.repo,t=u._y&&e.encrypted&&u.yV&&u.aZ,n=["Rename","Transfer"];if(u.n_&&n.push("Folder Permission"),n.push("Share Admin","Divider"),e.encrypted&&n.push("Change Password"),t&&n.push("Reset Password"),u._y){var i=e.monitored?"Unwatch File Changes":"Watch File Changes";n.push(i)}n.push("Divider","History Setting","Advanced");for(var r=0;r'+m.c.HTMLescape(e.repo_name)+"",n=(0,u.ih)("{placeholder} API Token").replace("{placeholder}",t);return(0,g.jsxs)(d.Z,{isOpen:!0,style:{maxWidth:"800px"},toggle:this.props.onRepoAPITokenToggle,children:[(0,g.jsx)(J.Z,{toggle:this.props.onRepoAPITokenToggle,children:(0,g.jsx)("p",{dangerouslySetInnerHTML:{__html:n},className:"m-0"})}),(0,g.jsx)(b.Z,{children:(0,g.jsx)("div",{className:"o-auto",children:this.renderContent()})})]})}}]),n}(a.Component),pn=n(74165),dn=n(15861),un=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.accountName,n=e.closeDialog;return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:n,children:[(0,g.jsx)(J.Z,{toggle:n,children:(0,u.ih)("Delete SeaTable base")}),(0,g.jsx)(b.Z,{children:(0,g.jsx)("p",{className:"pb-6",children:(0,u.ih)("Are you sure to delete SeaTable {accountName}?").replace("{accountName}",t)})}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:n,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.props.onDeleteSeatables,children:(0,u.ih)("Delete")})]})]})}}]),n}(a.Component),mn=un,gn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).openDialog=function(){s.setState({isShowDialog:!0})},s.closeDialog=function(){s.setState({isShowDialog:!1})},s.onDeleteSeatables=function(){var e=s.props.setting;s.props.deleteStableAccountSetting(e,"seatable_account_manage"),s.closeDialog()},s.state={isShowDialog:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.isShowDialog,t=this.props,n=t.setting,i=t.t,s=t.index,r=n.base_api_token,o=n.base_name,a=n.seatable_server_url;return(0,g.jsxs)("tr",{children:[(0,g.jsx)("td",{width:"30%",className:"text-truncate",title:o,"aria-label":o,children:o}),(0,g.jsx)("td",{id:"abc-".concat(s),width:"55%",className:"text-truncate",title:a,"aria-label":a,children:a}),(0,g.jsxs)("td",{width:"15%",children:[(0,g.jsx)("span",{className:"account-operation-btn",onClick:this.props.editSeatableSettingAccount.bind(this,r),title:(0,u.ih)("Edit"),"aria-label":(0,u.ih)("Edit"),children:(0,g.jsx)("i",{className:"sf2-icon-edit",style:{color:"#999"}})}),(0,g.jsx)("span",{className:"account-operation-btn",onClick:this.openDialog,title:(0,u.ih)("Delete"),"aria-label":(0,u.ih)("Delete"),children:(0,g.jsx)("i",{className:"sf2-icon-delete",style:{color:"#999"}})})]}),e&&(0,g.jsx)(mn,{t:i,accountName:o,onDeleteSeatables:this.onDeleteSeatables,closeDialog:this.closeDialog})]},"account-".concat(r))}}]),n}(a.Component),fn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o'+m.c.HTMLescape(o.repo_name)+"",l=(0,u.ih)("{placeholder} SeaTable integration").replace("{placeholder}",a);return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:r,className:"account-dialog",children:[(0,g.jsx)(J.Z,{toggle:r,children:(0,g.jsx)("p",{dangerouslySetInnerHTML:{__html:l},className:"m-0"})}),(0,g.jsx)(b.Z,{className:"account-dialog-content",children:(0,g.jsxs)("div",{className:"account-dialog-main",children:[i===wn&&(0,g.jsx)(vn,{seatableSettings:n,changeStatus:function(){return e.changeStatus(jn)},editSeatableSettingAccount:this.editSeatableSettingAccount,deleteStableAccountSetting:this.deleteStableAccountSetting}),i===jn&&(0,g.jsx)(Dn,{changeStatus:function(){return e.changeStatus(wn)},onSubmit:this.onSubmit}),i===yn&&(0,g.jsx)(Dn,{currentDtableInfo:s,changeStatus:function(){return e.changeStatus(wn)},onSubmit:this.onSubmit})]})})]})}}]),n}(a.Component),Cn=Sn,bn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.setState({isOperationShow:!0})},s.onMouseLeave=function(){s.setState({isOperationShow:!1})},s.onDeleteLink=function(e){e.preventDefault(),s.props.deleteItem(s.props.item)},s.state={isOperationShow:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e,t=this.props.item,n="/"===t.path?"/":t.path.slice(0,t.path.length-1);return e=t.is_dir?"".concat(u.ze,"library/").concat(t.repo_id,"/").concat(encodeURIComponent(t.repo_name)).concat(m.c.encodePath(n)):"".concat(u.ze,"lib/").concat(t.repo_id,"/file").concat(m.c.encodePath(t.path)),(0,g.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onFocus:this.onMouseEnter,children:[(0,g.jsx)("td",{className:"name",children:t.creator_name}),(0,g.jsx)("td",{children:t.is_dir?(0,g.jsx)(c.rU,{to:e,children:t.obj_name}):(0,g.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",children:t.obj_name})}),(0,g.jsx)("td",{children:(0,g.jsx)("a",{href:t.link,target:"_blank",rel:"noreferrer",children:t.link})}),(0,g.jsx)("td",{children:(0,g.jsx)("span",{tabIndex:"0",role:"button",className:"sf2-icon-x3 action-icon ".concat(this.state.isOperationShow?"":"invisible"),onClick:this.onDeleteLink,onKeyDown:m.c.onKeyDown,title:(0,u.ih)("Delete"),"aria-label":(0,u.ih)("Delete")})})]})}}]),n}(a.Component),kn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).deleteItem=function(e){w.I.deleteRepoShareLink(s.props.repo.repo_id,e.token).then((function(){var t=s.state.items.filter((function(t){return t.token!==e.token}));s.setState({items:t});var n=(0,u.ih)("Successfully deleted 1 item");j.Z.success(n)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={loading:!0,errorMsg:"",items:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.listRepoShareLinks(this.props.repo.repo_id).then((function(t){e.setState({loading:!1,items:t.data})})).catch((function(t){e.setState({loading:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this,t=this.state,n=t.loading,i=t.errorMsg,s=t.items;return(0,g.jsxs)(a.Fragment,{children:[n&&(0,g.jsx)(R.Z,{}),!n&&i&&(0,g.jsx)("p",{className:"error text-center mt-8",children:i}),!n&&!i&&!s.length&&(0,g.jsx)(O.Z,{forDialog:!0,children:(0,g.jsx)("p",{className:"text-secondary",children:(0,u.ih)("No share links")})}),!n&&!i&&s.length>0&&(0,g.jsxs)("table",{className:"table-hover",children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"22%",children:(0,u.ih)("Creator")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Name")}),(0,g.jsx)("th",{width:"50%",children:(0,u.ih)("Link")}),(0,g.jsx)("th",{width:"8%"})]})}),(0,g.jsx)("tbody",{children:s.map((function(t,n){return(0,g.jsx)(bn,{item:t,deleteItem:e.deleteItem},n)}))})]})]})}}]),n}(a.Component),In=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.setState({isOperationShow:!0})},s.onMouseLeave=function(){s.setState({isOperationShow:!1})},s.onDeleteLink=function(e){e.preventDefault(),s.props.deleteItem(s.props.item)},s.state={isOperationShow:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t="/"===e.path?"/":e.path.slice(0,e.path.length-1),n="".concat(u.ze,"library/").concat(e.repo_id,"/").concat(encodeURIComponent(e.repo_name)).concat(m.c.encodePath(t));return(0,g.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onFocus:this.onMouseEnter,children:[(0,g.jsx)("td",{className:"name",children:e.creator_name}),(0,g.jsx)("td",{children:(0,g.jsx)(c.rU,{to:n,children:e.obj_name})}),(0,g.jsx)("td",{children:(0,g.jsx)("a",{href:e.link,target:"_blank",rel:"noreferrer",children:e.link})}),(0,g.jsx)("td",{children:(0,g.jsx)("span",{tabIndex:"0",role:"button",className:"sf2-icon-x3 action-icon ".concat(this.state.isOperationShow?"":"invisible"),onClick:this.onDeleteLink,onKeyDown:m.c.onKeyDown,title:(0,u.ih)("Delete"),"aria-label":(0,u.ih)("Delete")})})]})}}]),n}(a.Component),Nn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).deleteItem=function(e){w.I.deleteRepoUploadLink(s.props.repo.repo_id,e.token).then((function(){var t=s.state.items.filter((function(t){return t.token!==e.token}));s.setState({items:t});var n=(0,u.ih)("Successfully deleted 1 item");j.Z.success(n)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={loading:!0,errorMsg:"",items:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.listRepoUploadLinks(this.props.repo.repo_id).then((function(t){e.setState({loading:!1,items:t.data})})).catch((function(t){e.setState({loading:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this,t=this.state,n=t.loading,i=t.errorMsg,s=t.items;return(0,g.jsxs)(a.Fragment,{children:[n&&(0,g.jsx)(R.Z,{}),!n&&i&&(0,g.jsx)("p",{className:"error text-center mt-8",children:i}),!n&&!i&&!s.length&&(0,g.jsx)(O.Z,{forDialog:!0,children:(0,g.jsx)("p",{className:"text-secondary",children:(0,u.ih)("No upload links")})}),!n&&!i&&s.length>0&&(0,g.jsxs)("table",{className:"table-hover",children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"22%",children:(0,u.ih)("Creator")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Name")}),(0,g.jsx)("th",{width:"50%",children:(0,u.ih)("Link")}),(0,g.jsx)("th",{width:"8%"})]})}),(0,g.jsx)("tbody",{children:s.map((function(t,n){return(0,g.jsx)(In,{item:t,deleteItem:e.deleteItem},n)}))})]})]})}}]),n}(a.Component),Mn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.setState({isOperationShow:!0})},s.onMouseLeave=function(){s.setState({isOperationShow:!1})},s.onDeleteLink=function(e){e.preventDefault(),s.props.deleteItem(s.props.item)},s.changePerm=function(e){var t=s.props.item;w.I.updateShareToUserItemPermission(t.repo_id,t.path,"user",t.share_to,e).then((function(){s.setState({permission:e})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onEditPermission=function(e){e.nativeEvent.stopImmediatePropagation(),s.setState({isShowPermEditor:!0})},s.state={permission:s.props.item.permission,isOperationShow:!1,isShowPermEditor:!1},s.permissions=["rw","r"],u._y&&("/"===s.props.item.path&&s.props.isRepoOwner&&s.permissions.push("admin"),s.permissions.push("cloud-edit","preview")),s}return(0,s.Z)(n,[{key:"render",value:function(){var e,t=this.props.item,n="/"===t.path?"/":t.path.slice(0,t.path.length-1);return e="".concat(u.ze,"library/").concat(t.repo_id,"/").concat(encodeURIComponent(t.repo_name)).concat(m.c.encodePath(n)),(0,g.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onFocus:this.onMouseEnter,children:[(0,g.jsx)("td",{children:(0,g.jsx)(c.rU,{to:e,children:m.c.getFolderName(t.path)})}),(0,g.jsx)("td",{className:"name",children:t.share_to_name}),(0,g.jsxs)("td",{children:[!this.state.isShowPermEditor&&(0,g.jsxs)("div",{children:[(0,g.jsx)("span",{children:t.permission_name||m.c.sharePerms(this.state.permission)}),this.state.isOperationShow&&(0,g.jsx)("a",{href:"#",role:"button","aria-label":(0,u.ih)("Edit"),title:(0,u.ih)("Edit"),className:"fa fa-pencil-alt attr-action-icon",onClick:this.onEditPermission})]}),this.state.isShowPermEditor&&(0,g.jsx)(je.Z,{repoID:t.repo_id,isTextMode:!0,isEditIconShow:this.state.isOperationShow,isEditing:!0,currentPermission:this.state.permission,permissions:this.permissions,onPermissionChanged:this.changePerm})]}),(0,g.jsx)("td",{children:(0,g.jsx)("span",{tabIndex:"0",role:"button",className:"sf2-icon-x3 action-icon ".concat(this.state.isOperationShow?"":"invisible"),onClick:this.onDeleteLink,onKeyDown:m.c.onKeyDown,title:(0,u.ih)("Delete"),"aria-label":(0,u.ih)("Delete")})})]})}}]),n}(a.Component),Zn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).deleteItem=function(e){w.I.deleteShareToUserItem(e.repo_id,e.path,"user",e.share_to).then((function(t){var n=s.state.items.filter((function(t){return t.path+t.share_to!==e.path+e.share_to}));s.setState({items:n});var i=(0,u.ih)("Successfully deleted 1 item");j.Z.success(i)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={loading:!0,errorMsg:"",items:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.getAllRepoFolderShareInfo(this.props.repo.repo_id,"user").then((function(t){e.setState({loading:!1,items:t.data.share_info_list})})).catch((function(t){e.setState({loading:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this,t=this.state,n=t.loading,i=t.errorMsg,s=t.items,r=this.props.repo.owner_email===u.b6;return(0,g.jsxs)(a.Fragment,{children:[n&&(0,g.jsx)(R.Z,{}),!n&&i&&(0,g.jsx)("p",{className:"error text-center mt-8",children:i}),!n&&!i&&!s.length&&(0,g.jsx)(O.Z,{forDialog:!0,children:(0,g.jsx)("p",{className:"text-secondary",children:(0,u.ih)("No user shares")})}),!n&&!i&&s.length>0&&(0,g.jsxs)("table",{className:"table-hover",children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("Name")}),(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("User")}),(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("Permission")}),(0,g.jsx)("th",{width:"10%"})]})}),(0,g.jsx)("tbody",{children:s.map((function(t,n){return(0,g.jsx)(Mn,{item:t,deleteItem:e.deleteItem,isRepoOwner:r},n)}))})]})]})}}]),n}(a.Component),Pn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.setState({isOperationShow:!0})},s.onMouseLeave=function(){s.setState({isOperationShow:!1})},s.onDeleteLink=function(e){e.preventDefault(),s.props.deleteItem(s.props.item)},s.changePerm=function(e){var t=s.props.item;w.I.updateShareToGroupItemPermission(t.repo_id,t.path,"group",t.share_to,e).then((function(){s.setState({permission:e})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onEditPermission=function(e){e.nativeEvent.stopImmediatePropagation(),s.setState({isShowPermEditor:!0})},s.state={permission:s.props.item.permission,isOperationShow:!1,isShowPermEditor:!1},s.permissions=["rw","r"],u._y&&("/"===s.props.item.path&&s.props.isRepoOwner&&s.permissions.push("admin"),s.permissions.push("cloud-edit","preview")),s}return(0,s.Z)(n,[{key:"render",value:function(){var e,t=this.props.item,n="/"===t.path?"/":t.path.slice(0,t.path.length-1);return e="".concat(u.ze,"library/").concat(t.repo_id,"/").concat(encodeURIComponent(t.repo_name)).concat(m.c.encodePath(n)),(0,g.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onFocus:this.onMouseEnter,children:[(0,g.jsx)("td",{children:(0,g.jsx)(c.rU,{to:e,children:m.c.getFolderName(t.path)})}),(0,g.jsx)("td",{className:"name",children:t.share_to_name}),(0,g.jsxs)("td",{children:[!this.state.isShowPermEditor&&(0,g.jsxs)("div",{children:[(0,g.jsx)("span",{children:t.permission_name||m.c.sharePerms(this.state.permission)}),this.state.isOperationShow&&(0,g.jsx)("a",{href:"#",role:"button","aria-label":(0,u.ih)("Edit"),title:(0,u.ih)("Edit"),className:"fa fa-pencil-alt attr-action-icon",onClick:this.onEditPermission})]}),this.state.isShowPermEditor&&(0,g.jsx)(je.Z,{repoID:t.repo_id,isTextMode:!0,isEditIconShow:this.state.isOperationShow,isEditing:!0,currentPermission:this.state.permission,permissions:this.permissions,onPermissionChanged:this.changePerm})]}),(0,g.jsx)("td",{children:(0,g.jsx)("span",{tabIndex:"0",role:"button",className:"sf2-icon-x3 action-icon ".concat(this.state.isOperationShow?"":"invisible"),onClick:this.onDeleteLink,onKeyDown:m.c.onKeyDown,title:(0,u.ih)("Delete"),"aria-label":(0,u.ih)("Delete")})})]})}}]),n}(a.Component),Fn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).deleteItem=function(e){w.I.deleteShareToGroupItem(e.repo_id,e.path,"group",e.share_to).then((function(t){var n=s.state.items.filter((function(t){return t.path+t.share_to!==e.path+e.share_to}));s.setState({items:n});var i=(0,u.ih)("Successfully deleted 1 item");j.Z.success(i)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={loading:!0,errorMsg:"",items:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.getAllRepoFolderShareInfo(this.props.repo.repo_id,"group").then((function(t){e.setState({loading:!1,items:t.data.share_info_list})})).catch((function(t){e.setState({loading:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this,t=this.state,n=t.loading,i=t.errorMsg,s=t.items,r=this.props.repo.owner_email===u.b6;return(0,g.jsxs)(a.Fragment,{children:[n&&(0,g.jsx)(R.Z,{}),!n&&i&&(0,g.jsx)("p",{className:"error text-center mt-8",children:i}),!n&&!i&&!s.length&&(0,g.jsx)(O.Z,{forDialog:!0,children:(0,g.jsx)("p",{className:"text-secondary",children:(0,u.ih)("No group shares")})}),!n&&!i&&s.length>0&&(0,g.jsxs)("table",{className:"table-hover",children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("Name")}),(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("Group")}),(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("Permission")}),(0,g.jsx)("th",{width:"10%"})]})}),(0,g.jsx)("tbody",{children:s.map((function(t,n){return(0,g.jsx)(Pn,{item:t,deleteItem:e.deleteItem,isRepoOwner:r},n)}))})]})]})}}]),n}(a.Component),_n=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).getInitialActiveTab=function(){return s.enableShareLink?"shareLink":s.enableUploadLink?"uploadLink":"shareToUser"},s.toggle=function(e){s.state.activeTab!==e&&s.setState({activeTab:e})},s.onTabKeyDown=function(e){"Enter"!=e.key&&"Space"!=e.key||e.target.click()},s.enableShareLink=!s.props.repo.encrypted&&u.Fl,s.enableUploadLink=!s.props.repo.encrypted&&u.$g,s.state={activeTab:s.getInitialActiveTab()},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.activeTab,t=this.props.repo.repo_name;return(0,g.jsx)("div",{children:(0,g.jsxs)(d.Z,{isOpen:!0,style:{maxWidth:"760px"},className:"share-dialog",toggle:this.props.toggleDialog,children:[(0,g.jsxs)(J.Z,{toggle:this.props.toggleDialog,children:[(0,g.jsx)("span",{className:"op-target",title:t,children:t})," ",(0,u.ih)("Share Admin")]}),(0,g.jsx)(b.Z,{className:"dialog-list-container share-dialog-content",role:"tablist",children:(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("div",{className:"share-dialog-side",children:(0,g.jsxs)(At.Z,{pills:!0,children:[this.enableShareLink&&(0,g.jsx)(Ut.Z,{role:"tab","aria-selected":"shareLink"===e,"aria-controls":"share-link-panel",children:(0,g.jsx)(zt.Z,{className:"shareLink"===e?"active":"",onClick:this.toggle.bind(this,"shareLink"),tabIndex:"0",onKeyDown:this.onTabKeyDown,children:(0,u.ih)("Share Links")})}),this.enableUploadLink&&(0,g.jsx)(Ut.Z,{role:"tab","aria-selected":"uploadLink"===e,"aria-controls":"upload-link-panel",children:(0,g.jsx)(zt.Z,{className:"uploadLink"===e?"active":"",onClick:this.toggle.bind(this,"uploadLink"),tabIndex:"0",onKeyDown:this.onTabKeyDown,children:(0,u.ih)("Upload Links")})}),(0,g.jsx)(Ut.Z,{role:"tab","aria-selected":"shareToUser"===e,"aria-controls":"share-to-user-panel",children:(0,g.jsx)(zt.Z,{className:"shareToUser"===e?"active":"",onClick:this.toggle.bind(this,"shareToUser"),tabIndex:"0",onKeyDown:this.onTabKeyDown,children:(0,u.ih)("User Shares")})}),(0,g.jsx)(Ut.Z,{role:"tab","aria-selected":"shareToGroup"===e,"aria-controls":"share-to-group-panel",children:(0,g.jsx)(zt.Z,{className:"shareToGroup"===e?"active":"",onClick:this.toggle.bind(this,"shareToGroup"),tabIndex:"0",onKeyDown:this.onTabKeyDown,children:(0,u.ih)("Group Shares")})})]})}),(0,g.jsx)("div",{className:"share-dialog-main",children:(0,g.jsxs)(Bt.Z,{activeTab:this.state.activeTab,children:[this.enableShareLink&&"shareLink"===e&&(0,g.jsx)(Gt.Z,{tabId:"shareLink",role:"tabpanel",id:"share-link-panel",children:(0,g.jsx)(kn,{repo:this.props.repo})}),this.enableUploadLink&&"uploadLink"===e&&(0,g.jsx)(Gt.Z,{tabId:"uploadLink",role:"tabpanel",id:"upload-link-panel",children:(0,g.jsx)(Nn,{repo:this.props.repo})}),"shareToUser"===e&&(0,g.jsx)(Gt.Z,{tabId:"shareToUser",role:"tabpanel",id:"share-to-user-panel",children:(0,g.jsx)(Zn,{repo:this.props.repo})}),"shareToGroup"===e&&(0,g.jsx)(Gt.Z,{tabId:"shareToGroup",role:"tabpanel",id:"share-to-group-panel",children:(0,g.jsx)(Fn,{repo:this.props.repo})})]})})]})})]})})}}]),n}(a.Component),Tn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).submit=function(){var e;if(s.state.isAutoDel){e=s.state.autoDelDays;if(!/^-?\d+$/.test(e)||e<=0)return void s.setState({errorInfo:(0,u.ih)("Please enter a positive integer")})}else e=0;var t=s.props.repoID;w.I.setRepoOldFilesAutoDelDays(t,e).then((function(e){s.props.toggleDialog(),j.Z.success((0,u.ih)("Successfully set it."))})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.handleKeyDown=function(e){"Enter"===e.key&&(s.submit(),e.preventDefault())},s.onChange=function(e){var t=e.target.value;s.setState({autoDelDays:t})},s.updateRadioCheck=function(e){"noAutoDel"===e?s.setState({isAutoDel:!1}):"autoDel"===e&&s.setState({isAutoDel:!0})},s.state={autoDelDays:0,isAutoDel:!1,errorInfo:""},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.getRepoOldFilesAutoDelDays(this.props.repoID).then((function(t){e.setState({autoDelDays:t.data.auto_delete_days,isAutoDel:t.data.auto_delete_days>0})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))}},{key:"render",value:function(){var e=this;return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.props.toggleDialog,children:[(0,g.jsx)(J.Z,{toggle:this.props.toggleDialog,children:(0,u.ih)("Auto deletion")}),(0,g.jsx)(b.Z,{children:(0,g.jsxs)(Ct.Z,{children:[(0,g.jsxs)(ge.Z,{check:!0,children:[(0,g.jsx)(re.Z,{type:"radio",name:"radio1",checked:!this.state.isAutoDel,onChange:function(){e.updateRadioCheck("noAutoDel")}})," ",(0,g.jsx)(fe.Z,{children:(0,u.ih)("Do not automatically delete files")})]}),(0,g.jsxs)(ge.Z,{check:!0,children:[(0,g.jsx)(re.Z,{type:"radio",name:"radio1",checked:this.state.isAutoDel,onChange:function(){e.updateRadioCheck("autoDel")}})," ",(0,g.jsx)(fe.Z,{children:(0,u.ih)("Automatically delete files that are not modified within certain days:")}),(0,g.jsx)(re.Z,{type:"text",className:"expire-input",value:this.state.autoDelDays,disabled:!this.state.isAutoDel,onChange:this.onChange,onKeyDown:this.handleKeyDown})," ",(0,g.jsx)(fe.Z,{children:(0,g.jsx)("span",{children:(0,u.ih)("days")})})]}),this.state.errorInfo&&(0,g.jsx)(bt.Z,{color:"danger",children:this.state.errorInfo})]})}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.props.toggleDialog,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.submit,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),Ln=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onFocus=function(){s.props.isItemFreezed||s.setState({isOpIconShow:!0})},s.onMouseEnter=function(){s.props.isItemFreezed||s.setState({isOpIconShow:!0,highlight:!0})},s.onMouseLeave=function(){s.props.isItemFreezed||s.setState({isOpIconShow:!1,highlight:!1})},s.onMenuItemClick=function(e){switch(e){case"Star":case"Unstar":s.onToggleStarRepo();break;case"Share":s.onShareToggle();break;case"Delete":s.onDeleteToggle();break;case"Rename":s.onRenameToggle();break;case"Transfer":s.onTransferToggle();break;case"History Setting":s.onHistorySettingToggle();break;case"Change Password":s.onChangePasswordToggle();break;case"Reset Password":s.onResetPasswordToggle();break;case"Watch File Changes":s.watchFileChanges();break;case"Unwatch File Changes":s.unwatchFileChanges();break;case"Folder Permission":s.onFolderPermissionToggle();break;case"Label Current State":s.onLabelToggle();break;case"API Token":s.onAPITokenToggle();break;case"Share Admin":s.toggleRepoShareAdminDialog();break;case"Old Files Auto Delete":s.toggleOldFilesAutoDelDialog();break;case"SeaTable integration":s.onSeaTableIntegrationToggle()}},s.visitRepo=function(){!s.state.isRenaming&&s.props.repo.repo_name&&(0,c.c4)(s.repoURL)},s.onRepoClick=function(){s.props.onRepoClick(s.props.repo)},s.onToggleStarRepo=function(e){e.preventDefault();var t=s.props.repo.repo_name;s.state.isStarred?w.I.unstarItem(s.props.repo.repo_id,"/").then((function(){s.setState({isStarred:!s.state.isStarred});var e=(0,u.ih)("Successfully unstarred {library_name_placeholder}.").replace("{library_name_placeholder}",t);j.Z.success(e)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)})):w.I.starItem(s.props.repo.repo_id,"/").then((function(){s.setState({isStarred:!s.state.isStarred});var e=(0,u.ih)("Successfully starred {library_name_placeholder}.").replace("{library_name_placeholder}",t);j.Z.success(e)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.watchFileChanges=function(){var e=s.props.repo;w.I.monitorRepo(e.repo_id).then((function(){s.props.onMonitorRepo(e,!0)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.unwatchFileChanges=function(){var e=s.props.repo;w.I.unMonitorRepo(e.repo_id).then((function(){s.props.onMonitorRepo(e,!1)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onShareToggle=function(e){void 0!=e&&e.preventDefault(),s.setState({isShareDialogShow:!s.state.isShareDialogShow})},s.onDeleteToggle=function(e){e.preventDefault(),s.setState({isDeleteDialogShow:!s.state.isDeleteDialogShow})},s.onRenameToggle=function(){s.props.onFreezedItem(),s.setState({isRenaming:!s.state.isRenaming})},s.onTransferToggle=function(){s.setState({isTransferDialogShow:!s.state.isTransferDialogShow})},s.onHistorySettingToggle=function(){s.setState({isHistorySettingDialogShow:!s.state.isHistorySettingDialogShow})},s.onChangePasswordToggle=function(){s.setState({isChangePasswordDialogShow:!s.state.isChangePasswordDialogShow})},s.onResetPasswordToggle=function(){s.setState({isResetPasswordDialogShow:!s.state.isResetPasswordDialogShow})},s.onLabelToggle=function(){s.setState({isLabelRepoStateDialogOpen:!s.state.isLabelRepoStateDialogOpen})},s.onFolderPermissionToggle=function(){s.setState({isFolderPermissionDialogShow:!s.state.isFolderPermissionDialogShow})},s.onAPITokenToggle=function(){s.setState({isAPITokenDialogShow:!s.state.isAPITokenDialogShow})},s.onSeaTableIntegrationToggle=function(){s.setState({isSeaTableIntegrationShow:!s.state.isSeaTableIntegrationShow})},s.toggleRepoShareAdminDialog=function(){s.setState({isRepoShareAdminDialogOpen:!s.state.isRepoShareAdminDialogOpen})},s.toggleOldFilesAutoDelDialog=function(){s.setState({isOldFilesAutoDelDialogOpen:!s.state.isOldFilesAutoDelDialogOpen})},s.onUnfreezedItem=function(){s.setState({highlight:!1,isOpIconShow:!1}),s.props.onUnfreezedItem()},s.onRenameConfirm=function(e){var t=s.props.repo,n=t.repo_id;w.I.renameRepo(n,e).then((function(){s.props.onRenameRepo(t,e),s.onRenameCancel()})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onRenameCancel=function(){s.props.onUnfreezedItem(),s.setState({isRenaming:!s.state.isRenaming})},s.onTransferRepo=function(e){var t=s.props.repo.repo_id;w.I.transferRepo(t,e.email).then((function(e){s.props.onTransferRepo(t);var n=(0,u.ih)("Successfully transferred the library.");j.Z.success(n)})).catch((function(e){e.response?j.Z.danger(e.response.data.error_msg||(0,u.ih)("Error"),{duration:3}):j.Z.danger((0,u.ih)("Failed. Please check the network."),{duration:3})})),s.onTransferToggle()},s.onDeleteRepo=function(e){w.I.deleteRepo(e.repo_id).then((function(t){s.setState({isRepoDeleted:!0,isDeleteDialogShow:!1}),s.props.onDeleteRepo(e);var n=e.repo_name,i=(0,u.ih)("Successfully deleted {name}.").replace("{name}",n);j.Z.success(i)})).catch((function(t){var n=m.c.getErrorMsg(t);if(n===(0,u.ih)("Error")){var i=e.repo_name;n=(0,u.ih)("Failed to delete {name}.").replace("{name}",i)}j.Z.danger(n),s.setState({isRepoDeleted:!1})}))},s.renderPCUI=function(){var e=s.props.repo,t=m.c.getLibIconUrl(e),n=m.c.getLibIconTitle(e),i="".concat(u.ze,"library/").concat(e.repo_id,"/").concat(m.c.encodePath(e.repo_name),"/");return(0,g.jsxs)("tr",{className:s.state.highlight?"tr-highlight":"",onMouseEnter:s.onMouseEnter,onMouseLeave:s.onMouseLeave,onClick:s.onRepoClick,onFocus:s.onFocus,children:[(0,g.jsx)("td",{className:"text-center",children:(0,g.jsx)("a",{href:"#",role:"button","aria-label":s.state.isStarred?(0,u.ih)("Unstar"):(0,u.ih)("Star"),onClick:s.onToggleStarRepo,children:(0,g.jsx)("i",{className:"fa-star ".concat(s.state.isStarred?"fas":"far star-empty")})})}),(0,g.jsx)("td",{children:(0,g.jsx)("img",{src:t,title:n,alt:n,width:"24"})}),(0,g.jsxs)("td",{children:[s.state.isRenaming&&(0,g.jsx)(tn.Z,{name:e.repo_name,onRenameConfirm:s.onRenameConfirm,onRenameCancel:s.onRenameCancel}),!s.state.isRenaming&&e.repo_name&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(c.rU,{to:i,children:e.repo_name}),e.monitored&&(0,g.jsx)(nt,{repoID:e.repo_id})]}),!s.state.isRenaming&&!e.repo_name&&(0,u.ih)("Broken (please contact your administrator to fix this library)")]}),(0,g.jsx)("td",{children:e.repo_name&&s.state.isOpIconShow&&(0,g.jsxs)("div",{children:[(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-share",title:(0,u.ih)("Share"),role:"button","aria-label":(0,u.ih)("Share"),onClick:s.onShareToggle}),(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-delete",title:(0,u.ih)("Delete"),role:"button","aria-label":(0,u.ih)("Delete"),onClick:s.onDeleteToggle}),(0,g.jsx)(sn,{isPC:!0,repo:s.props.repo,onMenuItemClick:s.onMenuItemClick,onFreezedItem:s.props.onFreezedItem,onUnfreezedItem:s.onUnfreezedItem})]})}),(0,g.jsx)("td",{children:e.size}),u.al.length>0&&(0,g.jsx)("td",{children:e.storage_name}),(0,g.jsx)("td",{title:A()(e.last_modified).format("llll"),children:A()(e.last_modified).fromNow()})]})},s.renderMobileUI=function(){var e=s.props.repo,t=m.c.getLibIconUrl(e),n=m.c.getLibIconTitle(e),i=s.repoURL="".concat(u.ze,"library/").concat(e.repo_id,"/").concat(m.c.encodePath(e.repo_name),"/");return(0,g.jsxs)("tr",{className:s.state.highlight?"tr-highlight":"",onMouseEnter:s.onMouseEnter,onMouseLeave:s.onMouseLeave,onClick:s.onRepoClick,children:[(0,g.jsx)("td",{onClick:s.visitRepo,children:(0,g.jsx)("img",{src:t,title:n,alt:n,width:"24"})}),(0,g.jsxs)("td",{onClick:s.visitRepo,children:[s.state.isRenaming&&(0,g.jsx)(tn.Z,{name:e.repo_name,onRenameConfirm:s.onRenameConfirm,onRenameCancel:s.onRenameCancel}),!s.state.isRenaming&&e.repo_name&&(0,g.jsxs)("div",{children:[(0,g.jsx)(c.rU,{to:i,children:e.repo_name}),e.monitored&&(0,g.jsx)(nt,{repoID:e.repo_id})]}),!s.state.isRenaming&&!e.repo_name&&(0,g.jsx)("div",{children:"(gettext('Broken (please contact your administrator to fix this library)'))"}),(0,g.jsx)("span",{className:"item-meta-info",children:e.size}),(0,g.jsx)("span",{className:"item-meta-info",title:A()(e.last_modified).format("llll"),children:A()(e.last_modified).fromNow()})]}),(0,g.jsx)("td",{children:e.repo_name&&(0,g.jsx)(sn,{repo:s.props.repo,isStarred:s.state.isStarred,onMenuItemClick:s.onMenuItemClick,onFreezedItem:s.props.onFreezedItem,onUnfreezedItem:s.onUnfreezedItem})})]})},s.state={isOpIconShow:!1,isStarred:s.props.repo.starred,isRenaming:!1,isShareDialogShow:!1,isDeleteDialogShow:!1,isTransferDialogShow:!1,isHistorySettingDialogShow:!1,isChangePasswordDialogShow:!1,isResetPasswordDialogShow:!1,isLabelRepoStateDialogOpen:!1,isFolderPermissionDialogShow:!1,isAPITokenDialogShow:!1,isSeaTableIntegrationShow:!1,isRepoShareAdminDialogOpen:!1,isRepoDeleted:!1,isOldFilesAutoDelDialogOpen:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.repo;return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(p(),{query:"(min-width: 768px)",children:this.renderPCUI()}),(0,g.jsx)(p(),{query:"(max-width: 767.8px)",children:this.renderMobileUI()}),this.state.isShareDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Qe.Z,{itemType:"library",itemName:e.repo_name,itemPath:"/",repoID:e.repo_id,repoEncrypted:e.encrypted,enableDirPrivateShare:!0,userPerm:e.permission,toggleDialog:this.onShareToggle})}),this.state.isDeleteDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Zt.Z,{repo:e,isRepoDeleted:this.state.isRepoDeleted,onDeleteRepo:this.onDeleteRepo,toggle:this.onDeleteToggle})}),this.state.isTransferDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Pt.Z,{itemName:e.repo_name,submit:this.onTransferRepo,toggleDialog:this.onTransferToggle})}),this.state.isHistorySettingDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Ft,{repoID:e.repo_id,itemName:e.repo_name,toggleDialog:this.onHistorySettingToggle})}),this.state.isChangePasswordDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(_t,{repoID:e.repo_id,repoName:e.repo_name,toggleDialog:this.onChangePasswordToggle})}),this.state.isResetPasswordDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Tt,{repoID:e.repo_id,toggleDialog:this.onResetPasswordToggle})}),this.state.isLabelRepoStateDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Et,{repoID:e.repo_id,repoName:e.repo_name,toggleDialog:this.onLabelToggle})}),this.state.isFolderPermissionDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(en,{toggleDialog:this.onFolderPermissionToggle,repoID:e.repo_id,repoName:e.repo_name})}),this.state.isAPITokenDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(hn,{repo:e,onRepoAPITokenToggle:this.onAPITokenToggle})}),this.state.isSeaTableIntegrationShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Cn,{repo:e,onSeaTableIntegrationToggle:this.onSeaTableIntegrationToggle})}),this.state.isRepoShareAdminDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(_n,{repo:e,toggleDialog:this.toggleRepoShareAdminDialog})}),this.state.isOldFilesAutoDelDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Tn,{repoID:e.repo_id,toggleDialog:this.toggleOldFilesAutoDelDialog})})]})}}]),n}(a.Component),On=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onFreezedItem=function(){s.setState({isItemFreezed:!0})},s.onUnfreezedItem=function(){s.setState({isItemFreezed:!1})},s.sortByName=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortRepoList("name",t)},s.sortByTime=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortRepoList("time",t)},s.sortBySize=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortRepoList("size",t)},s.renderRepoListView=function(){return(0,g.jsx)(a.Fragment,{children:s.props.repoList.map((function(e){return(0,g.jsx)(Ln,{repo:e,isItemFreezed:s.state.isItemFreezed,onFreezedItem:s.onFreezedItem,onUnfreezedItem:s.onUnfreezedItem,onRenameRepo:s.props.onRenameRepo,onDeleteRepo:s.props.onDeleteRepo,onTransferRepo:s.props.onTransferRepo,onMonitorRepo:s.props.onMonitorRepo,onRepoClick:s.props.onRepoClick},e.repo_id)}))})},s.renderPCUI=function(){var e=u.al.length>0,t="asc"===s.props.sortOrder?(0,g.jsx)("span",{className:"fas fa-caret-up"}):(0,g.jsx)("span",{className:"fas fa-caret-down"});return(0,g.jsxs)("table",{children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"4%"}),(0,g.jsx)("th",{width:"4%",children:(0,g.jsx)("span",{className:"sr-only",children:(0,u.ih)("Library Type")})}),(0,g.jsx)("th",{width:e?"33%":"38%",children:(0,g.jsxs)("a",{className:"d-block table-sort-op",href:"#",onClick:s.sortByName,children:[(0,u.ih)("Name")," ","name"===s.props.sortBy&&t]})}),(0,g.jsx)("th",{width:"14%",children:(0,g.jsx)("span",{className:"sr-only",children:(0,u.ih)("Actions")})}),(0,g.jsx)("th",{width:e?"15%":"20%",children:(0,g.jsxs)("a",{className:"d-block table-sort-op",href:"#",onClick:s.sortBySize,children:[(0,u.ih)("Size")," ","size"===s.props.sortBy&&t]})}),e?(0,g.jsx)("th",{width:"15%",children:(0,u.ih)("Storage Backend")}):null,(0,g.jsx)("th",{width:e?"15%":"20%",children:(0,g.jsxs)("a",{className:"d-block table-sort-op",href:"#",onClick:s.sortByTime,children:[(0,u.ih)("Last Update")," ","time"===s.props.sortBy&&t]})})]})}),(0,g.jsx)("tbody",{children:s.renderRepoListView()})]})},s.renderMobileUI=function(){return(0,g.jsxs)("table",{className:"table-thead-hidden",children:[(0,g.jsx)(Xe,{}),(0,g.jsx)("tbody",{children:s.renderRepoListView()})]})},s.state={isItemFreezed:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(p(),{query:"(min-width: 768px)",children:this.renderPCUI()}),(0,g.jsx)(p(),{query:"(max-width: 767.8px)",children:this.renderMobileUI()})]})}}]),n}(a.Component),Rn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o0&&(0,g.jsx)("span",{className:"sf3-font sf3-font-sort action-icon",onClick:this.toggleSortOptionsDialog})]}),(0,g.jsxs)("div",{className:"cur-view-content",children:[this.state.isLoading&&(0,g.jsx)(R.Z,{}),!this.state.isLoading&&this.state.errorMsg&&(0,g.jsx)("p",{className:"error text-center mt-8",children:this.state.errorMsg}),!this.state.isLoading&&!this.state.errorMsg&&0===this.state.repoList.length&&this.emptyTip,!this.state.isLoading&&!this.state.errorMsg&&this.state.repoList.length>0&&(0,g.jsx)(On,{sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,repoList:this.state.repoList,onRenameRepo:this.onRenameRepo,onDeleteRepo:this.onDeleteRepo,onTransferRepo:this.onTransferRepo,onMonitorRepo:this.onMonitorRepo,onRepoClick:this.onRepoClick,sortRepoList:this.sortRepoList})]})]}),!this.state.isLoading&&!this.state.errorMsg&&this.state.isGuideForNewDialogOpen&&(0,g.jsx)(En,{toggleDialog:this.toggleGuideForNewDialog}),this.state.isSortOptionsDialogOpen&&(0,g.jsx)(Oe,{toggleDialog:this.toggleSortOptionsDialog,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortItems:this.sortRepoList}),this.state.isShowDetails&&(0,g.jsx)("div",{className:"cur-view-detail",children:(0,g.jsx)(Mt,{currentRepo:this.state.currentRepo,closeDetails:this.closeDetails})})]})]})}}]),n}(a.Component);A().locale(u.KQ);var Un=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).refreshDeletedRepoList=function(e){var t=s.state.deletedRepoList.filter((function(t){return t.repo_id!==e}));s.setState({deletedRepoList:t})},s.state={deletedRepoList:[],isLoading:!0},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.listDeletedRepo().then((function(t){e.setState({deletedRepoList:t.data,isLoading:!1})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))}},{key:"render",value:function(){return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("div",{className:"main-panel-north",children:(0,g.jsx)(Ee.Z,{onSearchedClick:this.props.onSearchedClick})}),(0,g.jsx)("div",{className:"main-panel-center",children:(0,g.jsxs)("div",{className:"cur-view-container",children:[(0,g.jsx)("div",{className:"cur-view-path",children:(0,g.jsxs)("div",{className:"path-container",children:[(0,g.jsx)(c.rU,{to:u.ze+"my-libs/",children:(0,u.ih)("My Libraries")}),(0,g.jsx)("span",{className:"path-split",children:"/"}),(0,g.jsx)("span",{children:(0,u.ih)("Deleted Libraries")})]})}),(0,g.jsxs)("div",{className:"cur-view-content",children:[this.state.isLoading&&(0,g.jsx)(R.Z,{}),!this.state.isLoading&&0===this.state.deletedRepoList.length&&(0,g.jsxs)(O.Z,{children:[(0,g.jsx)("h2",{children:(0,u.ih)("No deleted libraries")}),(0,g.jsx)("p",{children:(0,u.ih)("You have not deleted any libraries in the last {placeholder} days. A deleted library will be cleaned automatically after this period.").replace("{placeholder}",u.UR)})]}),0!==this.state.deletedRepoList.length&&(0,g.jsxs)("div",{children:[(0,g.jsx)("p",{className:"tip mt-2",children:(0,u.ih)("Tip: libraries deleted {placeholder} days ago will be cleaned automatically.").replace("{placeholder}",u.UR)}),(0,g.jsx)(zn,{deletedRepoList:this.state.deletedRepoList,refreshDeletedRepoList:this.refreshDeletedRepoList})]})]})]})})]})}}]),n}(a.Component),zn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props.deletedRepoList;return(0,g.jsxs)("table",{children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{style:{width:"4%"}}),(0,g.jsx)("th",{style:{width:"52%"},children:(0,u.ih)("Name")}),(0,g.jsx)("th",{style:{width:"30%"},children:(0,u.ih)("Deleted Time")}),(0,g.jsx)("th",{style:{width:"14%"}})]})}),(0,g.jsx)("tbody",{children:t&&t.map((function(t){return(0,g.jsx)(Bn,{repo:t,refreshDeletedRepoList:e.props.refreshDeletedRepoList},t.repo_id)}))})]})}}]),n}(a.Component),Bn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.props.isItemFreezed||s.setState({hideRestoreMenu:!1,highlight:!0})},s.onMouseLeave=function(){s.props.isItemFreezed||s.setState({hideRestoreMenu:!0,highlight:!1})},s.restoreDeletedRepo=function(e){e.preventDefault();var t=s.props.repo.repo_id,n=s.props.repo.repo_name;w.I.restoreDeletedRepo(t).then((function(e){var i=(0,u.ih)("Successfully restored the library.")+" "+n;j.Z.success(i),s.props.refreshDeletedRepoList(t)})).catch((function(e){var t=m.c.getErrorMsg(e);t===(0,u.ih)("Error")&&(t=(0,u.ih)("Failed. Please check the network.")),j.Z.danger(t)}))},s.state={hideRestoreMenu:!0,highlight:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=A().utc(this.props.repo.del_time).toDate();e=A()(e).fromNow();var t=m.c.getLibIconUrl(this.props.repo);return(0,g.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,tabIndex:"0",onFocus:this.onMouseEnter,children:[(0,g.jsx)("td",{className:"text-center",children:(0,g.jsx)("img",{src:t,alt:"",width:"24"})}),(0,g.jsx)("td",{className:"name",children:this.props.repo.repo_name}),(0,g.jsx)("td",{className:"update",children:e}),(0,g.jsx)("td",{children:(0,g.jsx)("a",{href:"#",onClick:this.restoreDeletedRepo,title:(0,u.ih)("Restore"),role:"button","aria-label":(0,u.ih)("Restore"),className:"sf2-icon-reply action-icon ".concat(this.state.highlight?"":"vh")})})]})}}]),n}(a.Component),Gn=Un,Hn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o-1,r=t.owner_email===u.b6,o=t.is_admin,a=[];if(u._y){if(-1!=t.owner_email.indexOf("@seafile_group")){if(i){if(t.owner_email==n.id+"@seafile_group"){if(s.isDeparementOnwerGroupMember=!0,a=["Rename"],u.n_&&a.push("Folder Permission"),a.push("Share Admin","Divider"),t.encrypted&&a.push("Change Password"),t.encrypted&&u.yV&&u.aZ&&a.push("Reset Password"),"r"==t.permission||"rw"==t.permission){var l=t.monitored?"Unwatch File Changes":"Watch File Changes";a.push(l)}return a.push("Divider","History Setting","Details"),m.c.isDesktop()&&a.push("Advanced"),a}a.push("Unshare")}}else(r||o)&&a.push("Share"),(i||r||o)&&a.push("Unshare");if("r"==t.permission||"rw"==t.permission){var c=t.monitored?"Unwatch File Changes":"Watch File Changes";a.push(c)}}else r&&a.push("Share"),(i||r)&&a.push("Unshare");return a},s.generatorMobileMenu=function(){var e=[];if(s.props.libraryType&&"public"===s.props.libraryType){var t=s.props.repo.owner_email===u.b6;(u.AU||t)&&e.push("Unshare")}else e=s.generatorOperations(),s.isDeparementOnwerGroupMember&&(e.unshift("Unshare"),e.unshift("Share"));return e.length?(0,g.jsxs)(U.Z,{isOpen:s.state.isItemMenuShow,toggle:s.toggleOperationMenu,children:[(0,g.jsx)(z.Z,{tag:"i",className:"sf-dropdown-toggle fa fa-ellipsis-v ml-0",title:(0,u.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":s.state.isItemMenuShow,onClick:s.clickOperationMenuToggle}),(0,g.jsxs)("div",{className:"".concat(s.state.isItemMenuShow?"":"d-none"),onClick:s.toggleOperationMenu,children:[(0,g.jsx)("div",{className:"mobile-operation-menu-bg-layer"}),(0,g.jsx)("div",{className:"mobile-operation-menu",children:e.map((function(e,t){return(0,g.jsx)(G.Z,{"data-toggle":e,onClick:s.onMenuItemClick,children:s.translateMenuItem(e)},t)}))})]})]}):null},s.generatorPCMenu=function(){var e=[];if(s.props.libraryType&&"public"===s.props.libraryType){var t=s.props.repo.owner_email===u.b6;(u.AU||t)&&e.push("Unshare")}else e=s.generatorOperations();var n=(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-share",title:(0,u.ih)("Share"),role:"button","aria-label":(0,u.ih)("Share"),onClick:s.onItemShare}),i=(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-x3",title:(0,u.ih)("Unshare"),role:"button","aria-label":(0,u.ih)("Unshare"),onClick:s.onItemUnshare}),r=(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-delete",title:(0,u.ih)("Delete"),role:"button","aria-label":(0,u.ih)("Delete"),onClick:s.onItemDeleteToggle});if(s.isDeparementOnwerGroupMember){var o=s.getAdvancedOperations();return(0,g.jsxs)(a.Fragment,{children:[n,r,(0,g.jsxs)(U.Z,{isOpen:s.state.isItemMenuShow,toggle:s.toggleOperationMenu,children:[(0,g.jsx)(z.Z,{className:"sf-dropdown-toggle sf2-icon-caret-down border-0 p-0",title:(0,u.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":s.state.isItemMenuShow,"aria-haspopup":!0,style:{minWidth:"0"},onClick:s.clickOperationMenuToggle,onKeyDown:s.onDropdownToggleKeyDown}),(0,g.jsx)(B.Z,{onMouseMove:s.onDropDownMouseMove,children:e.map((function(e,t){return"Divider"==e?(0,g.jsx)(G.Z,{divider:!0},t):"Advanced"==e?(0,g.jsxs)(U.Z,{direction:"right",className:"w-100",isOpen:s.state.isAdvancedMenuShown,toggle:s.toggleAdvancedMenu,onMouseMove:function(e){e.stopPropagation()},children:[(0,g.jsx)(z.Z,{caret:!0,className:"dropdown-item font-weight-normal rounded-0 d-flex justify-content-between align-items-center pr-2",onMouseEnter:s.toggleAdvancedMenuShown,children:s.translateMenuItem(e)}),(0,g.jsx)(B.Z,{children:o.map((function(e,t){return(0,g.jsx)(G.Z,{"data-toggle":e,onClick:s.onMenuItemClick,onKeyDown:s.onMenuItemKeyDown,children:s.translateMenuItem(e)},t)}))})]},t):(0,g.jsx)(G.Z,{"data-toggle":e,onClick:s.onMenuItemClick,onKeyDown:s.onMenuItemKeyDown,children:s.translateMenuItem(e)},t)}))})]})]})}return(0,g.jsx)(a.Fragment,{children:e.map((function(e){switch(e){case"Share":return(0,g.jsx)(a.Fragment,{children:n},e);case"Unshare":return(0,g.jsx)(a.Fragment,{children:i},e);case"Watch File Changes":case"Unwatch File Changes":return(0,g.jsxs)(U.Z,{isOpen:s.state.isItemMenuShow,toggle:s.toggleOperationMenu,children:[(0,g.jsx)(z.Z,{className:"sf-dropdown-toggle sf2-icon-caret-down border-0 p-0",title:(0,u.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":s.state.isItemMenuShow,"aria-haspopup":!0,style:{minWidth:"0"},onClick:s.clickOperationMenuToggle,onKeyDown:s.onDropdownToggleKeyDown}),(0,g.jsx)(B.Z,{children:[e].map((function(e,t){return(0,g.jsx)(G.Z,{"data-toggle":e,onClick:s.onMenuItemClick,onKeyDown:s.onMenuItemKeyDown,children:s.translateMenuItem(e)},t)}))})]},e);default:return null}}))})},s.onToggleStarRepo=function(e){e.preventDefault();var t=s.props.repo.repo_name;s.state.isStarred?w.I.unstarItem(s.props.repo.repo_id,"/").then((function(){s.setState({isStarred:!s.state.isStarred});var e=(0,u.ih)("Successfully unstarred {library_name_placeholder}.").replace("{library_name_placeholder}",t);j.Z.success(e)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)})):w.I.starItem(s.props.repo.repo_id,"/").then((function(){s.setState({isStarred:!s.state.isStarred});var e=(0,u.ih)("Successfully starred {library_name_placeholder}.").replace("{library_name_placeholder}",t);j.Z.success(e)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.renderPCUI=function(){var e=s.getRepoComputeParams(),t=e.iconUrl,n=e.iconTitle,i=e.libPath,r=s.props.repo;return(0,g.jsx)(a.Fragment,{children:(0,g.jsxs)("tr",{className:s.state.highlight?"tr-highlight":"",onMouseEnter:s.onMouseEnter,onMouseOver:s.onMouseOver,onMouseLeave:s.onMouseLeave,onFocus:s.onMouseEnter,children:[(0,g.jsx)("td",{className:"text-center",children:(0,g.jsx)("a",{href:"#",role:"button","aria-label":s.state.isStarred?(0,u.ih)("Unstar"):(0,u.ih)("Star"),onClick:s.onToggleStarRepo,children:(0,g.jsx)("i",{className:"fa-star ".concat(s.state.isStarred?"fas":"far star-empty")})})}),(0,g.jsx)("td",{children:(0,g.jsx)("img",{src:t,title:n,alt:n,width:"24"})}),(0,g.jsx)("td",{children:s.state.isRenaming?(0,g.jsx)(tn.Z,{name:r.repo_name,onRenameConfirm:s.onRenameConfirm,onRenameCancel:s.onRenameCancel}):(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(c.rU,{to:i,children:r.repo_name}),r.monitored&&(0,g.jsx)(nt,{repoID:r.repo_id})]})}),(0,g.jsx)("td",{children:s.state.isOperationShow&&s.generatorPCMenu()}),(0,g.jsx)("td",{children:r.size}),(0,g.jsx)("td",{title:A()(r.last_modified).format("llll"),children:A()(r.last_modified).fromNow()}),(0,g.jsx)("td",{title:r.owner_contact_email,children:r.owner_name})]})})},s.visitRepo=function(){s.state.isRenaming||(0,c.c4)(s.repoURL)},s.renderMobileUI=function(){var e=s.getRepoComputeParams(),t=e.iconUrl,n=e.iconTitle,i=e.libPath,r=s.props.repo;return s.repoURL=i,(0,g.jsx)(a.Fragment,{children:(0,g.jsxs)("tr",{className:s.state.highlight?"tr-highlight":"",onMouseEnter:s.onMouseEnter,onMouseOver:s.onMouseOver,onMouseLeave:s.onMouseLeave,children:[(0,g.jsx)("td",{onClick:s.visitRepo,children:(0,g.jsx)("img",{src:t,title:n,width:"24",alt:n})}),(0,g.jsxs)("td",{onClick:s.visitRepo,children:[s.state.isRenaming?(0,g.jsx)(tn.Z,{name:r.repo_name,onRenameConfirm:s.onRenameConfirm,onRenameCancel:s.onRenameCancel}):(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(c.rU,{to:i,children:r.repo_name}),r.monitored&&(0,g.jsx)(nt,{repoID:r.repo_id})]}),(0,g.jsx)("br",{}),(0,g.jsx)("span",{className:"item-meta-info",title:r.owner_contact_email,children:r.owner_name}),(0,g.jsx)("span",{className:"item-meta-info",children:r.size}),(0,g.jsx)("span",{className:"item-meta-info",title:A()(r.last_modified).format("llll"),children:A()(r.last_modified).fromNow()})]}),(0,g.jsx)("td",{children:s.generatorMobileMenu()})]})})},s.state={highlight:!1,isOperationShow:!1,isItemMenuShow:!1,isAdvancedMenuShown:!1,isShowSharedDialog:!1,isRenaming:!1,isStarred:s.props.repo.starred,isFolderPermissionDialogOpen:!1,isHistorySettingDialogShow:!1,isDeleteDialogShow:!1,isAPITokenDialogShow:!1,isRepoShareAdminDialogOpen:!1,isRepoDeleted:!1,isChangePasswordDialogShow:!1,isResetPasswordDialogShow:!1,isOldFilesAutoDelDialogOpen:!1},s.isDeparementOnwerGroupMember=!1,s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.repo,t=e.owner_email.indexOf("@seafile_group")>-1;return(0,g.jsxs)(a.Fragment,{children:[m.c.isDesktop()?this.renderPCUI():this.renderMobileUI(),this.state.isShowSharedDialog&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Qe.Z,{itemType:"library",itemName:e.repo_name,itemPath:"/",repoID:e.repo_id,repoEncrypted:e.encrypted,enableDirPrivateShare:!0,userPerm:e.permission,isAdmin:e.is_admin,isGroupOwnedRepo:t,toggleDialog:this.toggleShareDialog})}),this.state.isFolderPermissionDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(en,{toggleDialog:this.onItemFolderPermissionToggle,repoID:e.repo_id,repoName:e.repo_name,isDepartmentRepo:!0})}),this.state.isDeleteDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Zt.Z,{repo:this.props.repo,isRepoDeleted:this.state.isRepoDeleted,onDeleteRepo:this.onItemDelete,toggle:this.onItemDeleteToggle})}),this.state.isHistorySettingDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Ft,{repoID:e.repo_id,itemName:e.repo_name,toggleDialog:this.onHistorySettingToggle})}),this.state.isAPITokenDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(hn,{repo:e,onRepoAPITokenToggle:this.onAPITokenToggle})}),this.state.isRepoShareAdminDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(_n,{repo:e,toggleDialog:this.toggleRepoShareAdminDialog})}),this.state.isChangePasswordDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(_t,{repoID:e.repo_id,repoName:e.repo_name,toggleDialog:this.onChangePasswordToggle})}),this.state.isResetPasswordDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Tt,{repoID:e.repo_id,toggleDialog:this.onResetPasswordToggle})}),this.state.isOldFilesAutoDelDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Tn,{repoID:e.repo_id,toggleDialog:this.toggleOldFilesAutoDelDialog})})]})}}]),n}(a.Component),qn=Vn,Kn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).sortByName=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortItems("name",t)},s.sortByTime=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortItems("time",t)},s.sortBySize=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortItems("size",t)},s.getSortMetaData=function(){return{sortByName:"name"==s.props.sortBy,sortByTime:"time"==s.props.sortBy,sortBySize:"size"==s.props.sortBy,sortIcon:"asc"==s.props.sortOrder?(0,g.jsx)("span",{className:"fas fa-caret-up"}):(0,g.jsx)("span",{className:"fas fa-caret-down"})}},s.onFreezedItem=function(){s.setState({isItemFreezed:!0})},s.onUnfreezedItem=function(){s.setState({isItemFreezed:!1})},s.onItemRename=function(e,t){if(s.props.repoList.some((function(e){return e.name===t}))){var n=(0,u.ih)('The name "{name}" is already taken. Please choose a different name.');return n=n.replace("{name}",m.c.HTMLescape(t)),j.Z.danger(n),!1}s.props.onItemRename(e,t)},s.renderRepoListView=function(){return(0,g.jsx)(a.Fragment,{children:s.props.repoList.map((function(e){return(0,g.jsx)(qn,{repo:e,libraryType:s.props.libraryType,currentGroup:s.props.currentGroup,isItemFreezed:s.state.isItemFreezed,onFreezedItem:s.onFreezedItem,onUnfreezedItem:s.onUnfreezedItem,onItemUnshare:s.props.onItemUnshare,onItemDelete:s.props.onItemDelete,onItemDetails:s.props.onItemDetails,onItemRename:s.props.onItemRename,onMonitorRepo:s.props.onMonitorRepo},e.repo_id)}))})},s.renderPCUI=function(){var e=void 0===s.props.isShowTableThread||s.props.isShowTableThread,t=s.getSortMetaData(),n=t.sortByName,i=t.sortByTime,r=t.sortBySize,o=t.sortIcon;return(0,g.jsxs)("table",{className:e?"":"table-thead-hidden",children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"4%"}),(0,g.jsx)("th",{width:"4%",children:(0,g.jsx)("span",{className:"sr-only",children:(0,u.ih)("Library Type")})}),(0,g.jsx)("th",{width:"36%",children:(0,g.jsxs)("a",{className:"d-block table-sort-op",href:"#",onClick:s.sortByName,children:[(0,u.ih)("Name")," ",n&&o]})}),(0,g.jsx)("th",{width:"12%",children:(0,g.jsx)("span",{className:"sr-only",children:(0,u.ih)("Actions")})}),(0,g.jsx)("th",{width:"14%",children:(0,g.jsxs)("a",{className:"d-block table-sort-op",href:"#",onClick:s.sortBySize,children:[(0,u.ih)("Size")," ",r&&o]})}),(0,g.jsx)("th",{width:"14%",children:(0,g.jsxs)("a",{className:"d-block table-sort-op",href:"#",onClick:s.sortByTime,children:[(0,u.ih)("Last Update")," ",i&&o]})}),(0,g.jsx)("th",{width:"16%",children:(0,u.ih)("Owner")})]})}),(0,g.jsx)("tbody",{children:s.renderRepoListView()})]})},s.renderMobileUI=function(){return(0,g.jsxs)("table",{className:"table-thead-hidden",children:[(0,g.jsx)(Xe,{}),(0,g.jsx)("tbody",{children:s.renderRepoListView()})]})},s.state={isItemFreezed:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=m.c.isDesktop()?this.renderPCUI():this.renderMobileUI();return this.props.hasNextPage?(0,g.jsxs)(a.Fragment,{children:[e,(0,g.jsx)(R.Z,{})]}):e}}]),n}(a.Component),Yn=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onCreateRepo=function(e){w.I.createPublicRepo(e).then((function(e){var t={repo_id:e.data.id,repo_name:e.data.name,permission:e.data.permission,size:e.data.size,owner_name:e.data.owner_name,owner_email:e.data.owner,mtime:e.data.mtime,encrypted:e.data.encrypted},n=new Je(t),i=s.addRepoItem(n);s.setState({repoList:i}),s.onCreateRepoToggle()})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onRepoSelectedHandler=function(e){e.forEach((function(e){w.I.selectOwnedRepoToPublic(e.repo_id,{share_type:"public",permission:e.sharePermission}).then((function(){var t=s.addRepoItem(e);s.setState({repoList:t})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))}))},s.onItemUnshare=function(e){w.I.unshareRepo(e.repo_id,{share_type:"public"}).then((function(){var t=s.state.repoList.filter((function(t){return t.repo_id!==e.repo_id}));s.setState({repoList:t});var n=(0,u.ih)("Successfully unshared {name}").replace("{name}",e.repo_name);j.Z.success(n)})).catch((function(t){var n=m.c.getErrorMsg(t);n===(0,u.ih)("Error")&&(n=(0,u.ih)("Failed to unshare {name}").replace("{name}",e.repo_name)),(0,j.Z)(n)}))},s.onItemDelete=function(){},s.addRepoItem=function(e){for(var t=!1,n=0,i=s.state.repoList,r=0;r0&&(0,g.jsx)("span",{className:"sf3-font sf3-font-sort action-icon",onClick:this.toggleSortOptionsDialog})]}),(0,g.jsxs)("div",{className:"cur-view-content",children:[this.state.isLoading&&(0,g.jsx)(R.Z,{}),!this.state.isLoading&&e&&e,!this.state.isLoading&&0===this.state.repoList.length&&t,!this.state.isLoading&&this.state.repoList.length>0&&(0,g.jsx)(Kn,{libraryType:this.state.libraryType,repoList:this.state.repoList,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortItems:this.sortItems,onItemUnshare:this.onItemUnshare,onItemDelete:this.onItemDelete})]})]})}),this.state.isSortOptionsDialogOpen&&(0,g.jsx)(Oe,{toggleDialog:this.toggleSortOptionsDialog,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortItems:this.sortItems}),this.state.isCreateRepoDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(It,{libraryType:this.state.libraryType,onCreateToggle:this.onCreateRepoToggle,onCreateRepo:this.onCreateRepo})}),this.state.isSelectRepoDialpgShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Wn,{onRepoSelectedHandler:this.onRepoSelectedHandler,onShareRepoDialogClose:this.onSelectRepoToggle})})]})}}]),n}(a.Component),Jn=Yn,Xn=n(242),Qn=n.n(Xn),$n=""!==u.NZ?Qn()(u.NZ):void 0,ei=new(function(){function e(){(0,i.Z)(this,e)}return(0,s.Z)(e,[{key:"watchRepo",value:function(e,t){$n&&($n.emit("repo_update",{request:"watch_update",repo_id:e,user:{name:u.u2,username:u.b6,contact_email:u.Ru}}),$n.on("repo_update",t))}},{key:"unwatchRepo",value:function(e,t){$n&&($n.emit("repo_update",{request:"unwatch_update",repo_id:e,user:{name:u.u2,username:u.b6,contact_email:u.Ru}}),$n.off("repo_update",t))}}]),e}()),ti=n(52423),ni=n(57050),ii=n(25335),si=n(84385),ri=n(84690),oi=n(21761),ai=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleSubmit=function(e){var t=s.props.repoID,n=s.state.password;w.I.setRepoDecryptPassword(t,n).then((function(e){s.props.onLibDecryptDialog()})).catch((function(e){s.setState({showError:!0})})),e.preventDefault()},s.handleKeyDown=function(e){"Enter"==e.key&&s.handleSubmit(e)},s.handleChange=function(e){s.setState({password:e.target.value,showError:!1})},s.toggle=function(){window.location.href=u.ze},s.state={password:"",showError:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){return(0,g.jsx)(d.Z,{isOpen:!0,toggle:this.toggle,children:(0,g.jsxs)(b.Z,{children:[(0,g.jsx)("button",{type:"button",className:"close",onClick:this.toggle,children:(0,g.jsx)("span",{"aria-hidden":"true",children:"\xd7"})}),(0,g.jsxs)(Ct.Z,{className:"lib-decrypt-form text-center",children:[(0,g.jsx)("img",{src:"".concat(u.si,"img/lock.png"),alt:"","aria-hidden":"true"}),(0,g.jsx)("p",{className:"intro",children:(0,u.ih)("This library is password protected")}),this.state.showError&&(0,g.jsx)("p",{className:"error",children:(0,u.ih)("Wrong password")}),(0,g.jsx)("input",{type:"password",name:"password",className:"form-control password-input",autoComplete:"off",onKeyDown:this.handleKeyDown,placeholder:(0,u.ih)("Password"),onChange:this.handleChange}),(0,g.jsx)("button",{type:"submit",className:"btn btn-primary submit",onClick:this.handleSubmit,children:(0,u.ih)("Submit")}),(0,g.jsxs)("p",{className:"tip",children:["* ",(0,u.ih)("The password will be kept in the server for only 1 hour.")]})]})]})})}}]),n}(a.Component),li=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o0){var r=s.state.childName.substring(0,e),o=s.state.childName.substring(e);s.setState({childName:r+"(draft)"+o,isMarkdownDraft:!s.state.isMarkdownDraft})}else 0===e?s.setState({childName:"(draft)"+s.state.childName,isMarkdownDraft:!s.state.isMarkdownDraft}):s.setState({isMarkdownDraft:!s.state.isMarkdownDraft})},s.checkDuplicatedName=function(){return s.props.checkDuplicatedName(s.state.childName)},s.onAfterModelOpened=function(){s.newInput.current&&(s.newInput.current.focus(),s.newInput.current.setSelectionRange(0,0))},s.toggleMarkSdocDraft=function(e){s.setState({isSdocDraft:e.target.checked})},s.state={parentPath:"",childName:e.fileType||"",isMarkdownDraft:!1,isSdocDraft:!1,errMessage:"",isSubmitBtnActive:!1},s.newInput=a.createRef(),s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this.props.parentPath;"/"===e[e.length-1]?this.setState({parentPath:e}):this.setState({parentPath:e+"/"})}},{key:"render",value:function(){var e=this.props.toggleDialog;return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:e,onOpened:this.onAfterModelOpened,children:[(0,g.jsx)(J.Z,{toggle:e,children:(0,u.ih)("New File")}),(0,g.jsxs)(b.Z,{children:[(0,g.jsx)(Ct.Z,{children:(0,g.jsxs)(ge.Z,{children:[(0,g.jsx)(fe.Z,{for:"fileName",children:(0,u.ih)("Name")}),(0,g.jsx)(re.Z,{id:"fileName",onKeyDown:this.handleKeyDown,innerRef:this.newInput,value:this.state.childName,onChange:this.handleChange})]})}),this.state.errMessage&&(0,g.jsx)(bt.Z,{color:"danger",className:"mt-2",children:this.state.errMessage})]}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:e,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.handleSubmit,disabled:!this.state.isSubmitBtnActive,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),di=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).toggleMobileOpMenu=function(){s.setState({isMobileOpMenuOpen:!s.state.isMobileOpMenuOpen})},s.hideOperationMenu=function(){s.setState({isUploadMenuShow:!1,isCreateMenuShow:!1})},s.toggleOperationMenu=function(e){e.nativeEvent.stopImmediatePropagation();var t=e.target.getBoundingClientRect(),n={position:"fixed",display:"block",left:t.left,top:t.bottom};s.setState({operationMenuStyle:n})},s.onUploadClick=function(e){s.toggleOperationMenu(e),s.setState({isUploadMenuShow:!s.state.isUploadMenuShow,isCreateMenuShow:!1})},s.onUploadFile=function(e){s.setState({isUploadMenuShow:!1}),s.props.onUploadFile(e)},s.onUploadFolder=function(e){s.setState({isUploadMenuShow:!1}),s.props.onUploadFolder(e)},s.onCreateClick=function(e){s.toggleOperationMenu(e),s.setState({isCreateMenuShow:!s.state.isCreateMenuShow,isUploadMenuShow:!1})},s.onShareClick=function(){s.setState({isShareDialogShow:!s.state.isShareDialogShow})},s.onCreateFolderToggle=function(){s.setState({isCreateFolderDialogShow:!s.state.isCreateFolderDialogShow})},s.onCreateFileToggle=function(){s.setState({isCreateFileDialogShow:!s.state.isCreateFileDialogShow,fileType:""})},s.onCreateMarkdownToggle=function(){s.setState({isCreateFileDialogShow:!s.state.isCreateFileDialogShow,fileType:".md"})},s.onCreateExcelToggle=function(){s.setState({isCreateFileDialogShow:!s.state.isCreateFileDialogShow,fileType:".xlsx"})},s.onCreatePPTToggle=function(){s.setState({isCreateFileDialogShow:!s.state.isCreateFileDialogShow,fileType:".pptx"})},s.onCreateWordToggle=function(){s.setState({isCreateFileDialogShow:!s.state.isCreateFileDialogShow,fileType:".docx"})},s.onCreateSeaDocToggle=function(){s.setState({isCreateFileDialogShow:!s.state.isCreateFileDialogShow,fileType:".sdoc"})},s.onAddFolder=function(e){s.setState({isCreateFolderDialogShow:!1}),s.props.onAddFolder(e)},s.checkDuplicatedName=function(e){return s.props.direntList.some((function(t){return t.name===e}))},s.state={fileType:".md",isCreateFileDialogShow:!1,isCreateFolderDialogShow:!1,isUploadMenuShow:!1,isCreateMenuShow:!1,isShareDialogShow:!1,operationMenuStyle:"",isMobileOpMenuOpen:!1},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){document.addEventListener("click",this.hideOperationMenu)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.hideOperationMenu)}},{key:"render",value:function(){var e=this.props,t=e.path,n=e.repoName,i=e.userPerm,s="/"===t?"library":"dir",r="/"==t?n:m.c.getFolderName(t),o=m.c.getUserPermission(i),l=o.isCustomPermission,c=o.customPermission,h=!0,p=!0;if(l){var d=c.permission;h=d.upload,p=d.create}var f=null;if(m.c.isDesktop()){var v=this.props.showShareBtn;f=(0,g.jsxs)(a.Fragment,{children:[h&&(0,g.jsx)(a.Fragment,{children:m.c.isSupportUploadFolder()?(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("button",{className:"btn btn-secondary operation-item",onClick:this.onUploadClick,"aria-haspopup":"true","aria-expanded":this.state.isUploadMenuShow,"aria-controls":"upload-menu",children:(0,u.ih)("Upload")}),this.state.isUploadMenuShow&&(0,g.jsxs)("div",{className:"menu dropdown-menu",style:this.state.operationMenuStyle,role:"menu",id:"upload-menu",children:[(0,g.jsx)("button",{type:"button",className:"dropdown-item",onClick:this.onUploadFile,role:"menuitem",children:(0,u.ih)("Upload Files")}),(0,g.jsx)("button",{type:"button",className:"dropdown-item",onClick:this.onUploadFolder,role:"menuitem",children:(0,u.ih)("Upload Folder")})]})]}):(0,g.jsx)("button",{className:"btn btn-secondary operation-item",title:(0,u.ih)("Upload"),onClick:this.onUploadFile,children:(0,u.ih)("Upload")})}),p&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("button",{className:"btn btn-secondary operation-item",onClick:this.onCreateClick,"aria-haspopup":"true","aria-expanded":this.state.isUploadMenuShow,"aria-controls":"new-menu",children:(0,u.ih)("New")}),this.state.isCreateMenuShow&&(0,g.jsxs)("div",{className:"menu dropdown-menu",style:this.state.operationMenuStyle,role:"menu",id:"new-menu",children:[(0,g.jsx)("button",{className:"dropdown-item",onClick:this.onCreateFolderToggle,role:"menuitem",children:(0,u.ih)("New Folder")}),(0,g.jsx)("button",{className:"dropdown-item",onClick:this.onCreateFileToggle,children:(0,u.ih)("New File")}),(0,g.jsx)("div",{className:"dropdown-divider"}),(0,g.jsx)("button",{className:"dropdown-item",onClick:this.onCreateMarkdownToggle,role:"menuitem",children:(0,u.ih)("New Markdown File")}),(0,g.jsx)("button",{className:"dropdown-item",onClick:this.onCreateExcelToggle,role:"menuitem",children:(0,u.ih)("New Excel File")}),(0,g.jsx)("button",{className:"dropdown-item",onClick:this.onCreatePPTToggle,role:"menuitem",children:(0,u.ih)("New PowerPoint File")}),(0,g.jsx)("button",{className:"dropdown-item",onClick:this.onCreateWordToggle,role:"menuitem",children:(0,u.ih)("New Word File")}),u.np&&(0,g.jsxs)("button",{className:"dropdown-item",onClick:this.onCreateSeaDocToggle,role:"menuitem",children:[(0,u.ih)("New SeaDoc File")," (beta)"]})]})]}),v&&(0,g.jsx)("button",{className:"btn btn-secondary operation-item",title:(0,u.ih)("Share"),onClick:this.onShareClick,children:(0,u.ih)("Share")})]})}else f=(0,g.jsxs)(U.Z,{isOpen:this.state.isMobileOpMenuOpen,toggle:this.toggleMobileOpMenu,children:[(0,g.jsx)(z.Z,{tag:"span",className:"sf2-icon-plus mobile-toolbar-icon"}),(0,g.jsxs)(B.Z,{children:[h&&(0,g.jsx)(G.Z,{onClick:this.onUploadFile,children:(0,u.ih)("Upload")}),p&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(G.Z,{onClick:this.onCreateFolderToggle,children:(0,u.ih)("New Folder")}),(0,g.jsx)(G.Z,{onClick:this.onCreateFileToggle,children:(0,u.ih)("New File")})]})]})]});return(0,g.jsxs)(a.Fragment,{children:[("rw"===i||"admin"===i||"cloud-edit"===i||l)&&(0,g.jsx)("div",{className:"dir-operation",children:f}),m.c.isDesktop()&&(0,g.jsx)(ci,{currentMode:this.props.currentMode,switchViewMode:this.props.switchViewMode,isCustomPermission:l}),this.state.isCreateFileDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(pi,{parentPath:this.props.path,fileType:this.state.fileType,onAddFile:this.props.onAddFile,checkDuplicatedName:this.checkDuplicatedName,toggleDialog:this.onCreateFileToggle})}),this.state.isCreateFolderDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(hi.Z,{parentPath:this.props.path,onAddFolder:this.onAddFolder,checkDuplicatedName:this.checkDuplicatedName,addFolderCancel:this.onCreateFolderToggle})}),this.state.isShareDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Qe.Z,{itemType:s,itemName:r,itemPath:this.props.path,repoID:this.props.repoID,repoEncrypted:this.props.repoEncrypted,enableDirPrivateShare:this.props.enableDirPrivateShare,userPerm:this.props.userPerm,isGroupOwnedRepo:this.props.isGroupOwnedRepo,toggleDialog:this.onShareClick})})]})}}]),n}(a.Component),ui=di,mi=n(3888),gi=n(69498),fi=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleSubmit=function(){s.props.isMutipleOperation?s.moveItems():s.moveItem()},s.moveItems=function(){var e=s.props.repoID,t=s.state,n=t.repo,i=t.selectedPath,r=(0,u.ih)("Invalid destination path");if(n&&""!==i){var o=s.props.selectedDirentList,a=[];if(o.forEach((function(e){var t=m.c.joinPath(s.props.path,e.name);a.push(t)})),a.some((function(e){return e===i})))s.setState({errMessage:r});else if(i&&i===s.props.path&&n.repo_id===e)s.setState({errMessage:r});else{var l="";if(a.some((function(e){var t=i.length>e.length&&i.indexOf(e)>-1;return t&&(l=e),t})))return r=(r=(r=(0,u.ih)("Can not move directory %(src)s to its subdirectory %(des)s")).replace("%(src)s",l)).replace("%(des)s",i),void s.setState({errMessage:r});s.props.onItemsMove(n,i),s.toggle()}}else s.setState({errMessage:r})},s.moveItem=function(){var e=s.props.repoID,t=s.state,n=t.repo,i=t.selectedPath,r=m.c.joinPath(s.props.path,s.props.dirent.name),o=(0,u.ih)("Invalid destination path");if(!n||n.repo_id===e&&""===i)s.setState({errMessage:o});else if(i&&r===i)s.setState({errMessage:o});else if(i&&s.props.path===i&&n.repo_id===e)s.setState({errMessage:o});else{if(i&&i.length>r.length&&i.indexOf(r)>-1)return o=(o=(o=(0,u.ih)("Can not move directory %(src)s to its subdirectory %(des)s")).replace("%(src)s",r)).replace("%(des)s",i),void s.setState({errMessage:o});s.props.onItemMove(n,s.props.dirent,i,s.props.path),s.toggle()}},s.toggle=function(){s.props.onCancelMove()},s.onDirentItemClick=function(e,t){s.setState({repo:e,selectedPath:t,errMessage:""})},s.onRepoItemClick=function(e){s.setState({repo:e,selectedPath:"/",errMessage:""})},s.state={repo:{repo_id:s.props.repoID},selectedPath:s.props.path,errMessage:""},s}return(0,s.Z)(n,[{key:"shouldComponentUpdate",value:function(e,t){return this.state.errMessage!==t.errMessage}},{key:"render",value:function(){var e=(0,u.ih)("Move {placeholder} to");e=this.props.isMutipleOperation?(0,u.ih)("Move selected item(s) to:"):e.replace("{placeholder}",''+m.c.HTMLescape(this.props.dirent.name)+"");var t=this.props.repoEncrypted?"only_current_library":"current_repo_and_other_repos",n=this.props,i=n.dirent,s=n.selectedDirentList,r=(i||s[0]).permission;return m.c.getUserPermission(r).isCustomPermission&&(t="only_current_library"),(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.toggle,children:[(0,g.jsx)(J.Z,{toggle:this.toggle,children:(0,g.jsx)("div",{dangerouslySetInnerHTML:{__html:e}})}),(0,g.jsxs)(b.Z,{children:[(0,g.jsx)(qt.Z,{repoID:this.props.repoID,currentPath:this.props.path,onDirentItemClick:this.onDirentItemClick,onRepoItemClick:this.onRepoItemClick,mode:t}),this.state.errMessage&&(0,g.jsx)(bt.Z,{color:"danger",className:"mt-2",children:this.state.errMessage})]}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.toggle,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.handleSubmit,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),vi=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleSubmit=function(){s.props.isMutipleOperation?s.copyItems():s.copyItem()},s.copyItems=function(){var e=s.state,t=e.repo,n=e.selectedPath,i=(0,u.ih)("Invalid destination path");if(t&&""!==n){var r=s.props.selectedDirentList,o=[];if(r.forEach((function(e){var t=m.c.joinPath(s.props.path,e.name);o.push(t)})),o.some((function(e){return e===n})))s.setState({errMessage:i});else{var a="";if(o.some((function(e){var t=n.length>e.length&&n.indexOf(e)>-1;return t&&(a=e),t})))return i=(i=(i=(0,u.ih)("Can not move directory %(src)s to its subdirectory %(des)s")).replace("%(src)s",a)).replace("%(des)s",n),void s.setState({errMessage:i});s.props.onItemsCopy(t,n),s.toggle()}}else s.setState({errMessage:i})},s.copyItem=function(){var e=s.state,t=e.repo,n=e.repoID,i=e.selectedPath,r=m.c.joinPath(s.props.path,s.props.dirent.name),o=(0,u.ih)("Invalid destination path");if(!t||t.repo_id===n&&""===i)s.setState({errMessage:o});else if(i&&r===i)s.setState({errMessage:o});else{if(i&&i.length>r.length&&i.indexOf(r)>-1)return o=(o=(o=(0,u.ih)("Can not copy directory %(src)s to its subdirectory %(des)s")).replace("%(src)s",r)).replace("%(des)s",i),void s.setState({errMessage:o});s.props.onItemCopy(t,s.props.dirent,i,s.props.path),s.toggle()}},s.toggle=function(){s.props.onCancelCopy()},s.onDirentItemClick=function(e,t){s.setState({repo:e,selectedPath:t,errMessage:""})},s.onRepoItemClick=function(e){s.setState({repo:e,selectedPath:"/",errMessage:""})},s.state={repo:{repo_id:s.props.repoID},selectedPath:s.props.path,errMessage:""},s}return(0,s.Z)(n,[{key:"shouldComponentUpdate",value:function(e,t){return this.state.errMessage!==t.errMessage}},{key:"render",value:function(){var e=(0,u.ih)("Copy {placeholder} to");e=this.props.isMutipleOperation?(0,u.ih)("Copy selected item(s) to:"):e.replace("{placeholder}",''+m.c.HTMLescape(this.props.dirent.name)+"");var t=this.props.repoEncrypted?"only_current_library":"current_repo_and_other_repos";return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.toggle,children:[(0,g.jsx)(J.Z,{toggle:this.toggle,children:(0,g.jsx)("div",{dangerouslySetInnerHTML:{__html:e}})}),(0,g.jsxs)(b.Z,{children:[(0,g.jsx)(qt.Z,{repoID:this.props.repoID,currentPath:this.props.path,onDirentItemClick:this.onDirentItemClick,onRepoItemClick:this.onRepoItemClick,mode:t}),this.state.errMessage&&(0,g.jsx)(bt.Z,{color:"danger",className:"mt-2",children:this.state.errMessage})]}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.toggle,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.handleSubmit,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),xi=n(22642),Di=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).inputNewName=function(e){s.setState({tagName:e.target.value}),s.state.errorMsg&&s.setState({errorMsg:""})},s.selectTagcolor=function(e){s.setState({tagColor:e.target.value})},s.createTag=function(){var e=s.state.tagName,t=s.state.tagColor,n=s.props.repoID;w.I.createRepoTag(n,e,t).then((function(e){var t=e.data.repo_tag.repo_tag_id;s.props.onRepoTagCreated&&s.props.onRepoTagCreated(t),s.props.toggleCancel()})).catch((function(t){var n;500===t.response.status?n=(0,u.ih)("Internal Server Error"):400===t.response.status&&(n=(n=(0,u.ih)('Tag "{name}" already exists.')).replace("{name}",m.c.HTMLescape(e))),s.setState({errorMsg:n})}))},s.handleKeyDown=function(e){"Enter"===e.key&&s.createTag()},s.state={tagName:"",tagColor:xi.QQ[0],newTag:{},errorMsg:""},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=!!this.state.tagName.trim();return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsxs)(J.Z,{toggle:this.props.onClose,children:[(0,g.jsx)("span",{className:"tag-dialog-back fas fa-sm fa-arrow-left",onClick:this.props.toggleCancel,"aria-label":(0,u.ih)("Back")}),(0,u.ih)("New Tag")]}),(0,g.jsx)(b.Z,{children:(0,g.jsxs)("div",{role:"form",className:"tag-create",children:[(0,g.jsxs)("div",{className:"form-group",children:[(0,g.jsx)("label",{className:"form-label",children:(0,u.ih)("Name")}),(0,g.jsx)(re.Z,{onKeyDown:this.handleKeyDown,autoFocus:!0,value:this.state.tagName,onChange:this.inputNewName}),(0,g.jsx)("div",{className:"mt-2",children:(0,g.jsx)("span",{className:"error",children:this.state.errorMsg})})]}),(0,g.jsxs)("div",{className:"form-group",children:[(0,g.jsx)("label",{className:"form-label",children:(0,u.ih)("Select a color")}),(0,g.jsx)("div",{className:"d-flex justify-content-between",children:xi.QQ.map((function(t,n){return(0,g.jsx)("div",{className:"tag-color-option",onChange:e.selectTagcolor,children:(0,g.jsxs)("label",{className:"colorinput",children:[0===n?(0,g.jsx)("input",{name:"color",type:"radio",value:t,className:"colorinput-input",defaultChecked:!0,onClick:e.selectTagcolor}):(0,g.jsx)("input",{name:"color",type:"radio",value:t,className:"colorinput-input",onClick:e.selectTagcolor}),(0,g.jsx)("span",{className:"colorinput-color rounded-circle d-flex align-items-center justify-content-center",style:{backgroundColor:t},children:(0,g.jsx)("i",{className:"fas fa-check color-selected"})})]})},n)}))})]})]})}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.props.toggleCancel,children:(0,u.ih)("Cancel")}),t?(0,g.jsx)($.Z,{color:"primary",onClick:this.createTag,children:(0,u.ih)("Save")}):(0,g.jsx)($.Z,{color:"primary",disabled:!0,children:(0,u.ih)("Save")})]})]})}}]),n}(a.Component);n(39849);var wi,ji=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.setState({isTagHighlighted:!0})},s.onMouseLeave=function(){s.setState({isTagHighlighted:!1})},s.getRepoTagIdList=function(){return(s.props.fileTagList||[]).map((function(e){return e.repo_tag_id}))},s.onEditFileTag=function(){var e=s.props,t=e.repoID,n=e.repoTag,i=e.filePath,r=s.getRepoTagIdList();if(-1===r.indexOf(n.id)){var o=n.id;w.I.addFileTag(t,i,o).then((function(){r=s.getRepoTagIdList(),s.props.onFileTagChanged()})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))}else{for(var a=null,l=s.props.fileTagList,c=0;c-1?{isValid:t=!1,errMessage:n=(0,u.ih)("Name should not include '/'.")}:{isValid:t,errMessage:n}:{isValid:t=!1,errMessage:n=(0,u.ih)("Name is required.")}},s.checkDuplicatedName=function(){return s.props.checkDuplicatedName(s.state.newName)},s.onAfterModelOpened=function(){if(s.newInput.current){s.newInput.current.focus();var e=s.props.dirent;if("file"===e.type){var t=e.name.lastIndexOf(".md");s.newInput.current.setSelectionRange(0,t,"forward")}else s.newInput.current.setSelectionRange(0,-1)}},s.state={newName:"",errMessage:"",isSubmitBtnActive:!1},s.newInput=a.createRef(),s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillMount",value:function(){this.setState({newName:this.props.dirent.name})}},{key:"componentDidMount",value:function(){var e=this.props.dirent;this.changeState(e)}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.changeState(e.dirent)}},{key:"render",value:function(){var e=this.props.dirent.type;return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.toggle,onOpened:this.onAfterModelOpened,children:[(0,g.jsx)(J.Z,{toggle:this.toggle,children:"file"===e?(0,u.ih)("Rename File"):(0,u.ih)("Rename Folder")}),(0,g.jsxs)(b.Z,{children:[(0,g.jsx)("p",{children:"file"===e?(0,u.ih)("New file name"):(0,u.ih)("New folder name")}),(0,g.jsx)(re.Z,{onKeyDown:this.handleKeyDown,innerRef:this.newInput,value:this.state.newName,onChange:this.handleChange}),this.state.errMessage&&(0,g.jsx)(bt.Z,{color:"danger",className:"mt-2",children:this.state.errMessage})]}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.toggle,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.handleSubmit,disabled:!this.state.isSubmitBtnActive,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),ki=n(2169),Ii=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMoveToggle=function(){s.setState({isMoveDialogShow:!s.state.isMoveDialogShow})},s.onCopyToggle=function(){s.setState({isCopyDialogShow:!s.state.isCopyDialogShow})},s.onItemsDelete=function(){s.props.onItemsDelete()},s.onItemsDownload=function(){var e=s.props,t=e.path,n=e.repoID,i=e.selectedDirentList;if(i.length){if(1===i.length&&!i[0].isDir()){var r=m.c.joinPath(t,i[0].name),o=gi.Z.getUrl({type:"download_file_url",repoID:n,filePath:r});return void(location.href=o)}if(u.Zb){var a=s.props.selectedDirentList.map((function(e){return e.name}));w.I.zipDownload(n,t,a).then((function(e){var t=e.data.zip_token;location.href="".concat(u.gc,"zip/").concat(t)})).catch((function(e){var t=m.c.getErrorMsg(e);s.setState({isLoading:!1,errorMsg:t})}))}else s.setState({isZipDialogOpen:!0})}},s.closeZipDialog=function(){s.setState({isZipDialogOpen:!1})},s.checkDuplicatedName=function(e){return m.c.checkDuplicatedNameInList(s.props.direntList,e)},s.onItemRename=function(e){var t=s.props.selectedDirentList[0];s.props.onItemRename(t,e)},s.onPermissionItem=function(){s.setState({showLibContentViewDialogs:!s.state.showLibContentViewDialogs,isPermissionDialogOpen:!s.state.isPermissionDialogOpen})},s.onMarkAsDraft=function(e){var t=s.props.repoID,n=s.getDirentPath(e);w.I.sdocMarkAsDraft(t,n).then((function(t){s.props.updateDirent(e,"is_sdoc_draft",!0)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onUnmarkAsDraft=function(e){var t=s.props.repoID,n=s.getDirentPath(e);w.I.sdocUnmarkAsDraft(t,n).then((function(t){s.props.updateDirent(e,"is_sdoc_draft",!1)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onStartRevise=function(e){var t=s.props.repoID,n=s.getDirentPath(e);w.I.sdocStartRevise(t,n).then((function(e){var n=u.ze+"lib/"+t+"/file"+m.c.encodePath(e.data.file_path);window.open(n)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.getDirentMenuList=function(e){var t=s.props.isRepoOwner,n=s.props.currentRepoInfo,i=m.c.getDirentOperationList(t,n,e,!0),r=["Move","Copy","Delete","Download"];return i="dir"==e.type?i.filter((function(e,t){return-1==r.indexOf(e.key)&&"Divider"!=e})):i.filter((function(e,t){return-1==r.indexOf(e.key)}))},s.onMenuItemClick=function(e){var t=s.props.selectedDirentList[0];switch(e){case"Share":s.setState({showLibContentViewDialogs:!0,showShareDialog:!0});break;case"Rename":s.setState({showLibContentViewDialogs:!0,isRenameDialogOpen:!0});break;case"Permission":s.onPermissionItem();break;case"Tags":s.listFileTags(t);break;case"Lock":s.lockFile(t);break;case"Unlock":s.unlockFile(t);break;case"Mark as draft":s.onMarkAsDraft(t);break;case"Unmark as draft":s.onUnmarkAsDraft(t);break;case"History":s.onHistory(t);break;case"Access Log":s.onAccessLog(t);break;case"Properties":s.props.showDirentDetail("info");break;case"Open via Client":s.onOpenViaClient(t)}},s.lockFile=function(e){var t=s.getDirentPath(e);w.I.lockfile(s.props.repoID,t).then((function(t){t.data.is_locked&&(s.props.updateDirent(e,"is_locked",!0),s.props.updateDirent(e,"locked_by_me",!0),s.props.updateDirent(e,"lock_owner_name",u.u2),s.props.unSelectDirent())})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.unlockFile=function(e){var t=s.getDirentPath(e);w.I.unlockfile(s.props.repoID,t).then((function(t){t.data.is_locked||(s.props.updateDirent(e,"is_locked",!1),s.props.updateDirent(e,"locked_by_me",!1),s.props.updateDirent(e,"lock_owner_name",""),s.props.unSelectDirent())})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onOpenViaClient=function(e){var t=s.getDirentPath(e),n=gi.Z.getUrl({type:"open_via_client",repoID:s.props.repoID,filePath:t});location.href=n},s.onHistory=function(e){var t=s.getDirentPath(e),n=gi.Z.getUrl({type:"file_revisions",repoID:s.props.repoID,filePath:t});location.href=n},s.onAccessLog=function(e){var t=s.getDirentPath(e),n=u.ze+"repo/file-access/"+s.props.repoID+"/?p="+encodeURIComponent(t);window.open(n)},s.toggleCancel=function(){s.setState({showLibContentViewDialogs:!1,showShareDialog:!1,showEditFileTagDialog:!1,isRenameDialogOpen:!1,isPermissionDialogOpen:!1})},s.listFileTags=function(e){var t=s.getDirentPath(e);w.I.listFileTags(s.props.repoID,t).then((function(e){for(var t=e.data.file_tags,n=0,i=t.length;n0&&s.forEach((function(e){o+=e.name+" "})),(0,g.jsxs)("div",{className:"path-container",children:[this.props.pathPrefix&&this.props.pathPrefix.map((function(t,n){return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(c.rU,{to:t.url,className:"normal",onClick:function(n){return e.onTabNavClick(n,t.name,t.id)},children:(0,u.ih)(t.showName)}),(0,g.jsx)("span",{className:"path-split",children:"/"})]},n)})),this.props.pathPrefix&&0===this.props.pathPrefix.length&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(c.rU,{to:u.ze+"my-libs/",className:"normal",onClick:function(t){return e.onTabNavClick(t,"my-libs")},children:(0,u.ih)("Libraries")}),(0,g.jsx)("span",{className:"path-split",children:"/"})]}),!this.props.pathPrefix&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(c.rU,{href:u.ze+"my-libs/",className:"normal",onClick:function(t){return e.onTabNavClick(t,"my-libs")},children:(0,u.ih)("Libraries")}),(0,g.jsx)("span",{className:"path-split",children:"/"})]}),"/"===n||""===n?(0,g.jsx)("span",{className:"path-repo-name",children:i}):(0,g.jsx)("a",{className:"path-link","data-path":"/",onClick:this.onPathClick,children:i}),r,this.props.isViewFile&&(0,g.jsx)(_i.O,{repoID:this.props.repoID,path:this.props.currentPath}),this.props.isViewFile&&0!==s.length&&(0,g.jsxs)("span",{id:"column-mode-file-tags",className:"tag-list tag-list-stacked align-middle ml-1 d-flex align-items-center",children:[s.map((function(e,t){return(0,g.jsx)("span",{className:"file-tag",style:{zIndex:t,backgroundColor:e.color}},e.id)})),(0,g.jsx)($e.Z,{target:"column-mode-file-tags",placement:"bottom",children:o})]})]})}}]),n}(a.Component),Li=Ti,Oi={randomUUID:"undefined"!==typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)},Ri=new Uint8Array(16);function Ei(){if(!wi&&!(wi="undefined"!==typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return wi(Ri)}for(var Ai=[],Ui=0;Ui<256;++Ui)Ai.push((Ui+256).toString(16).slice(1));function zi(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return Ai[e[t+0]]+Ai[e[t+1]]+Ai[e[t+2]]+Ai[e[t+3]]+"-"+Ai[e[t+4]]+Ai[e[t+5]]+"-"+Ai[e[t+6]]+Ai[e[t+7]]+"-"+Ai[e[t+8]]+Ai[e[t+9]]+"-"+Ai[e[t+10]]+Ai[e[t+11]]+Ai[e[t+12]]+Ai[e[t+13]]+Ai[e[t+14]]+Ai[e[t+15]]}var Bi=function(e,t,n){if(Oi.randomUUID&&!t&&!e)return Oi.randomUUID();var i=(e=e||{}).random||(e.rng||Ei)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){n=n||0;for(var s=0;s<16;++s)t[n+s]=i[s];return t}return zi(i)},Gi=n(23727),Hi=n(58579),Wi=n(44260),Vi=(n(39849),function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).togglePopover=function(){s.setState({isPopoverOpen:!s.state.isPopoverOpen})},s.selectTagColor=function(e){var t=e.target.value,n=s.props,i=n.repoID,r=n.tag,o=r.id,a=r.name;w.I.updateRepoTag(i,o,a,t).then((function(){s.setState({tagColor:t,isPopoverOpen:!s.state.isPopoverOpen})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.state={tagColor:s.props.tag.color,isPopoverOpen:!1},s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.tag.color!==this.props.tag.color&&this.setState({tagColor:e.tag.color})}},{key:"render",value:function(){var e=this,t=this.state,n=t.isPopoverOpen,i=t.tagColor,s=this.props.tag,r=s.id,o=s.color,a=(0,K.Z)(xi.QQ);return-1==a.indexOf(o)&&a.unshift(o),(0,g.jsxs)("div",{children:[(0,g.jsx)("span",{id:"tag-".concat(r,"-color"),className:"tag-color cursor-pointer rounded-circle d-flex align-items-center justify-content-center",style:{backgroundColor:i},onClick:this.togglePopover,children:(0,g.jsx)("i",{className:"fas fa-caret-down text-white"})}),(0,g.jsx)(Hi.Z,{target:"tag-".concat(r,"-color"),isOpen:n,placement:"bottom",toggle:this.togglePopover,className:"tag-color-popover mw-100",children:(0,g.jsx)(Wi.Z,{className:"p-2",children:(0,g.jsx)("div",{className:"d-flex justify-content-between",children:a.map((function(t,n){return(0,g.jsx)("div",{className:"tag-color-option mx-1",children:(0,g.jsxs)("label",{className:"colorinput",children:[(0,g.jsx)("input",{name:"color",type:"radio",value:t,className:"colorinput-input",defaultChecked:t==i,onClick:e.selectTagColor}),(0,g.jsx)("span",{className:"colorinput-color rounded-circle d-flex align-items-center justify-content-center",style:{backgroundColor:t},children:(0,g.jsx)("i",{className:"fas fa-check color-selected"})})]})},n)}))})})})]})}}]),n}(a.Component)),qi=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).toggleMode=function(){s.setState({isEditing:!s.state.isEditing},(function(){s.state.isEditing&&s.input.current.focus()}))},s.updateTagName=function(e){var t=e.target.value,n=s.props,i=n.repoID,r=n.tag,o=r.id,a=r.color;w.I.updateRepoTag(i,o,t,a).then((function(){s.setState({tagName:t})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onInputKeyDown=function(e){"Enter"==e.key?(s.toggleMode(),s.updateTagName(e)):"Escape"==e.key&&(e.nativeEvent.stopImmediatePropagation(),s.toggleMode())},s.onInputBlur=function(e){s.toggleMode(),s.updateTagName(e)},s.state={tagName:s.props.tag.name,isEditing:!1},s.input=a.createRef(),s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.tag.name!==this.props.tag.name&&this.setState({tagName:e.tag.name})}},{key:"render",value:function(){var e=this.state,t=e.isEditing,n=e.tagName;return(0,g.jsx)("div",{className:"mx-2 flex-fill d-flex",children:t?(0,g.jsx)("input",{type:"text",ref:this.input,defaultValue:n,onBlur:this.onInputBlur,onKeyDown:this.onInputKeyDown,className:"flex-fill form-control-sm form-control"}):(0,g.jsx)("span",{onClick:this.toggleMode,className:"cursor-pointer flex-fill",children:n})})}}]),n}(a.Component),Ki=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseOver=function(){s.setState({isTagHighlighted:!0})},s.onMouseOut=function(){s.setState({isTagHighlighted:!1})},s.deleteTag=function(){s.props.onDeleteTag(s.props.item)},s.state={isTagHighlighted:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.isTagHighlighted,t=this.props,n=t.item,i=t.repoID;return(0,g.jsxs)("li",{className:"tag-list-item px-4 d-flex justify-content-between align-items-center ".concat(e?"hl":""),onMouseOver:this.onMouseOver,onMouseOut:this.onMouseOut,children:[(0,g.jsx)(Vi,{repoID:i,tag:n}),(0,g.jsx)(qi,{repoID:i,tag:n}),(0,g.jsx)("button",{className:"tag-delete-icon sf2-icon-delete border-0 px-0 bg-transparent cursor-pointer ".concat(e?"":"invisible"),onClick:this.deleteTag,"aria-label":(0,u.ih)("Delete"),title:(0,u.ih)("Delete")})]})}}]),n}(a.Component),Yi=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).togglePopover=function(){s.setState({isPopoverOpen:!s.state.isPopoverOpen})},s.selectTagColor=function(e){var t=e.target.value;s.props.updateVirtualTag(s.props.tag,{color:t}),s.setState({tagColor:t,isPopoverOpen:!s.state.isPopoverOpen})},s.state={tagColor:s.props.tag.color,isPopoverOpen:!1},s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.tag.color!==this.props.tag.color&&this.setState({tagColor:e.tag.color})}},{key:"render",value:function(){var e=this,t=this.state,n=t.isPopoverOpen,i=t.tagColor,s=this.props.tag,r=s.id,o=s.color,a=(0,K.Z)(xi.QQ);return-1==a.indexOf(o)&&a.unshift(o),(0,g.jsxs)("div",{children:[(0,g.jsx)("span",{id:"tag-".concat(r,"-color"),className:"tag-color cursor-pointer rounded-circle d-flex align-items-center justify-content-center",style:{backgroundColor:i},onClick:this.togglePopover,children:(0,g.jsx)("i",{className:"fas fa-caret-down text-white"})}),(0,g.jsx)(Hi.Z,{target:"tag-".concat(r,"-color"),isOpen:n,placement:"bottom",toggle:this.togglePopover,className:"tag-color-popover mw-100",children:(0,g.jsx)(Wi.Z,{className:"p-2",children:(0,g.jsx)("div",{className:"d-flex justify-content-between",children:a.map((function(t,n){return(0,g.jsx)("div",{className:"tag-color-option mx-1",children:(0,g.jsxs)("label",{className:"colorinput",children:[(0,g.jsx)("input",{name:"color",type:"radio",value:t,className:"colorinput-input",defaultChecked:t==i,onClick:e.selectTagColor}),(0,g.jsx)("span",{className:"colorinput-color rounded-circle d-flex align-items-center justify-content-center",style:{backgroundColor:t},children:(0,g.jsx)("i",{className:"fas fa-check color-selected"})})]})},n)}))})})})]})}}]),n}(a.Component),Ji=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).toggleMode=function(){s.setState({isEditing:!s.state.isEditing})},s.updateTagName=function(e){var t=e.target.value;s.props.updateVirtualTag(s.props.tag,{name:t}),s.setState({tagName:t})},s.onInputKeyDown=function(e){"Enter"==e.key?(s.toggleMode(),s.updateTagName(e)):"Escape"==e.key&&(e.nativeEvent.stopImmediatePropagation(),s.toggleMode())},s.onInputBlur=function(e){s.toggleMode(),s.updateTagName(e)},s.state={tagName:s.props.tag.name,isEditing:!0},s.input=a.createRef(),s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.tag.name!==this.props.tag.name&&this.setState({tagName:e.tag.name})}},{key:"componentDidMount",value:function(){var e=this;setTimeout((function(){e.input.current.focus()}),1)}},{key:"render",value:function(){var e=this.state,t=e.isEditing,n=e.tagName;return(0,g.jsx)("div",{className:"mx-2 flex-fill d-flex",children:t?(0,g.jsx)("input",{type:"text",ref:this.input,defaultValue:n,onBlur:this.onInputBlur,onKeyDown:this.onInputKeyDown,className:"flex-fill form-control-sm form-control"}):(0,g.jsx)("span",{onClick:this.toggleMode,className:"cursor-pointer flex-fill",style:{width:100,height:20},children:n})})}}]),n}(a.Component),Xi=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseOver=function(){s.setState({isTagHighlighted:!0})},s.onMouseOut=function(){s.setState({isTagHighlighted:!1})},s.deleteVirtualTag=function(){s.props.deleteVirtualTag(s.props.item)},s.state={isTagHighlighted:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.isTagHighlighted,t=this.props,n=t.item,i=t.repoID;return(0,g.jsxs)("li",{className:"tag-list-item px-4 d-flex justify-content-between align-items-center ".concat(e?"hl":""),onMouseOver:this.onMouseOver,onMouseOut:this.onMouseOut,children:[(0,g.jsx)(Yi,{repoID:i,tag:n,updateVirtualTag:this.props.updateVirtualTag}),(0,g.jsx)(Ji,{repoID:i,tag:n,updateVirtualTag:this.props.updateVirtualTag}),(0,g.jsx)("button",{className:"tag-delete-icon sf2-icon-delete border-0 px-0 bg-transparent cursor-pointer ".concat(e?"":"invisible"),onClick:this.deleteVirtualTag,"aria-label":(0,u.ih)("Delete"),title:(0,u.ih)("Delete")})]})}}]),n}(a.Component),Qi=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).toggleTooltip=function(){s.setState({showTooltip:!s.state.showTooltip})},s.onClickImport=function(){s.importOptionsInput.click()},s.importTagsInputChange=function(){if(s.importOptionsInput.files&&s.importOptionsInput.files.length){var e=new FileReader;e.onload=s.onImportTags.bind((0,D.Z)(s)),e.onerror=s.onImportTagsError.bind((0,D.Z)(s)),e.readAsText(s.importOptionsInput.files[0])}else j.Z.warning((0,u.ih)("Please select a file"))},s.getValidTags=function(e){var t=[],n={};s.props.repotagList.forEach((function(e){return n[e.name]=!0}));for(var i=0;i0){var o=e.color,a=t.name;w.I.createRepoTag(n,a,o).then((function(e){i[r]=new ii.Z(e.data.repo_tag),s.setState({repotagList:i})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))}},s.state={repotagList:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.loadTags()}},{key:"render",value:function(){var e=this;return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("ul",{className:"tag-list tag-list-container my-2",children:this.state.repotagList.map((function(t,n){return t.is_virtual?(0,g.jsx)(Xi,{item:t,repoID:e.props.repoID,deleteVirtualTag:e.deleteVirtualTag,updateVirtualTag:e.updateVirtualTag},n):(0,g.jsx)(Ki,{item:t,repoID:e.props.repoID,onDeleteTag:e.onDeleteTag},n)}))}),(0,g.jsxs)("div",{className:"add-tag-link px-4 py-2 d-flex align-items-center",onClick:this.createVirtualTag,children:[(0,g.jsx)("span",{className:"sf2-icon-plus mr-2"}),(0,u.ih)("Create a new tag")]}),(0,g.jsx)(Qi,{toggle:this.props.onListTagCancel,repotagList:this.state.repotagList,updateTags:this.updateTags,repoID:this.props.repoID})]})}}]),n}(a.Component),es=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseDown=function(e){e.stopPropagation()},s.toggleRepoTag=function(e){e.stopPropagation(),s.setState({isListRepoTagShow:!s.state.isListRepoTagShow})},s.hidePopover=function(e){if(e)for(var t=e.target;t;){if("string"===typeof t.className&&t.className.includes("tag-color-popover"))return;t=t.parentNode}s.setState({isListRepoTagShow:!1})},s.toggleCancel=function(){s.setState({isListRepoTagShow:!1})},s.state={isListRepoTagShow:!1},s.tagsIconID="tags-icon-".concat(Bi()),s}return(0,s.Z)(n,[{key:"isMarkdownFile",value:function(e){return m.c.getFileName(e).includes(".md")}},{key:"render",value:function(){var e=this.props,t=e.repoID,n=e.userPerm,i=e.currentPath;if("rw"!==n)return"";if(this.isMarkdownFile(i))return"";var s=null;if(m.c.getFileName(i)){var r=u.ze+"repo/"+t+"/trash/?path="+encodeURIComponent(i);s=(0,g.jsxs)("ul",{className:"path-toolbar",children:[(0,g.jsx)("li",{className:"toolbar-item",children:(0,g.jsx)("a",{className:"op-link sf2-icon-tag",href:"#",id:this.tagsIconID,role:"button",onClick:this.toggleRepoTag,onMouseDown:this.onMouseDown,title:(0,u.ih)("Tags"),"aria-label":(0,u.ih)("Tags")})}),(0,g.jsx)("li",{className:"toolbar-item",children:(0,g.jsx)("a",{className:"op-link sf2-icon-recycle",href:r,title:(0,u.ih)("Trash"),"aria-label":(0,u.ih)("Trash")})})]})}else{var o=u.ze+"repo/"+t+"/trash/",a=u.ze+"repo/history/"+t+"/";s=(0,g.jsxs)("ul",{className:"path-toolbar",children:[(0,g.jsx)("li",{className:"toolbar-item",children:(0,g.jsx)("a",{className:"op-link sf2-icon-tag",href:"#",id:this.tagsIconID,role:"button",onClick:this.toggleRepoTag,onMouseDown:this.onMouseDown,title:(0,u.ih)("Tags"),"aria-label":(0,u.ih)("Tags")})}),(0,g.jsx)("li",{className:"toolbar-item",children:(0,g.jsx)("a",{className:"op-link sf2-icon-recycle",href:o,title:(0,u.ih)("Trash"),"aria-label":(0,u.ih)("Trash")})}),(0,g.jsx)("li",{className:"toolbar-item",children:(0,g.jsx)("a",{className:"op-link sf2-icon-history",href:a,title:(0,u.ih)("History"),"aria-label":(0,u.ih)("History")})})]})}return(0,g.jsxs)(g.Fragment,{children:[s,this.state.isListRepoTagShow&&(0,g.jsx)(Gi.Z,{popoverClassName:"list-tag-popover",target:this.tagsIconID,hideSeahubPopover:this.hidePopover,hideSeahubPopoverWithEsc:this.hidePopover,canHideSeahubPopover:!0,boundariesElement:document.body,placement:"bottom-end",children:(0,g.jsx)($i,{repoID:t,onListTagCancel:this.toggleCancel})})]})}}]),n}(a.Component),ts=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).toggleSortOptionsDialog=function(){s.setState({isSortOptionsDialogOpen:!s.state.isSortOptionsDialogOpen})},s.state={isSortOptionsDialogOpen:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=m.c.isDesktop();return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(Li,{repoName:this.props.repoName,pathPrefix:this.props.pathPrefix,currentPath:this.props.currentPath,onPathClick:this.props.onPathClick,onTabNavClick:this.props.onTabNavClick,repoID:this.props.repoID,isViewFile:this.props.isViewFile,fileTags:this.props.fileTags}),e&&(0,g.jsx)(es,{repoID:this.props.repoID,repoName:this.props.repoName,userPerm:this.props.userPerm,currentPath:this.props.currentPath,updateUsedRepoTags:this.props.updateUsedRepoTags,onDeleteRepoTag:this.props.onDeleteRepoTag}),!e&&this.props.direntList.length>0&&(0,g.jsx)("span",{className:"sf3-font sf3-font-sort action-icon",onClick:this.toggleSortOptionsDialog}),this.state.isSortOptionsDialogOpen&&(0,g.jsx)(Oe,{toggleDialog:this.toggleSortOptionsDialog,sortBy:this.props.sortBy,sortOrder:this.props.sortOrder,sortItems:this.props.sortItems})]})}}]),n}(a.Component),ns=n(62139),is=n(1413),ss=n(70366),rs=n(45526),os=n(27988);var as=function(e){var t=e.column.name;return(0,g.jsx)(os.Z,{md:3,className:"d-flex column-name",children:(0,g.jsx)("div",{className:"w-100 text-truncate",children:t||""})})},ls=n(4942),cs=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).blurInput=function(){setTimeout((function(){s.inputRef.current&&s.inputRef.current.blur()}),1)},s.onBlur=function(){var e=s.props,t=e.column,n=e.onCommit,i={};i[t.key]=s.state.value.trim(),n(i,t)},s.onChange=function(e){var t=e.target.value;t!==s.state.value&&s.setState({value:t})},s.onCut=function(e){e.stopPropagation()},s.onPaste=function(e){e.stopPropagation()},s.onKeyDown=function(e){if(e.keyCode===xi.mW.Esc)return e.stopPropagation(),void s.blurInput();var t=e.currentTarget,n=t.selectionStart,i=t.selectionEnd,r=t.value;(e.keyCode===xi.mW.ChineseInputMethod||e.keyCode===xi.mW.LeftArrow&&0===n||e.keyCode===xi.mW.RightArrow&&i===r.length)&&e.stopPropagation()},s.state={value:e.row[e.column.key]||""},s.inputRef=a.createRef(),s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=e.row[e.column.key];t!==this.state.value&&this.setState({value:t})}},{key:"render",value:function(){var e=this.props.column,t=this.state.value;return(0,g.jsx)("input",{type:"text",onBlur:this.onBlur,onCut:this.onCut,onPaste:this.onPaste,onChange:this.onChange,className:"form-control",value:t||"",onKeyDown:this.onKeyDown,disabled:!e.editable,ref:this.inputRef})}}]),n}(a.Component),hs=cs;var ps=function(e){var t=e.column,n=e.row[t.key],i=t.data||{},s=i.result_type,r=i.format;return s===xi.HC.DATE?(0,g.jsx)("div",{className:"form-control disabled",children:(0,rs.n4)(n,r)}):s===xi.HC.STRING?n:"object"===typeof n?null:(0,g.jsx)(g.Fragment,{})},ds=n(81694),us=n.n(ds),ms=n(44115),gs=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onCompositionStart=function(){s.isInputtingChinese=!0},s.onChange=function(e){s.timer&&clearTimeout(s.timer);var t=s.props,n=t.onChange,i=t.wait,r=e.target.value;s.setState({searchValue:r||""},(function(){s.isInputtingChinese||(s.timer=setTimeout((function(){n&&n(s.state.searchValue.trim())}),i))}))},s.onCompositionEnd=function(e){s.isInputtingChinese=!1,s.onChange(e)},s.setFocus=function(e){if(s.inputRef!==document.activeElement&&(s.inputRef.focus(),e)){var t=s.state.searchValue.length;s.inputRef.setSelectionRange(0,t)}},s.state={searchValue:e.value},s.isInputtingChinese=!1,s.timer=null,s.inputRef=null,s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;this.props.autoFocus&&this.inputRef&&this.inputRef!==document.activeElement&&setTimeout((function(){e.inputRef.focus()}),0)}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.value!==this.props.value&&this.setState({searchValue:e.value})}},{key:"componentWillUnmount",value:function(){this.timer&&clearTimeout(this.timer),this.timer=null,this.inputRef=null}},{key:"render",value:function(){var e=this,t=this.props,n=t.placeholder,i=t.autoFocus,s=t.className,r=t.onKeyDown,o=t.disabled,a=t.style,l=this.state.searchValue;return(0,g.jsx)("input",{type:"text",value:l,className:us()("form-control",s),onChange:this.onChange,autoFocus:i,placeholder:n,onCompositionStart:this.onCompositionStart,onCompositionEnd:this.onCompositionEnd,onKeyDown:r,disabled:o,style:a,ref:function(t){return e.inputRef=t}})}}]),n}(a.Component);gs.defaultProps={wait:100,disabled:!1,value:""};var fs,vs=gs,xs=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;(0,i.Z)(this,n),(s=t.call(this,e)).getCascadeColumnValue=function(e){var t=e.column,n=e.row,i=e.columns,s=(t.data||{}).cascade_column_key;return s&&i.find((function(e){return e.key===s}))?n[s]:""},s.getSelectColumnOptions=function(e){var t=e.column,n=e.row,i=e.columns,s=(0,rs.T8)(t),r=t.data||{},o=r.cascade_column_key,a=r.cascade_settings;if(o&&i.find((function(e){return e.key===o}))){var l=n[o];if(!l)return[];var c=a[l];return c&&Array.isArray(c)&&0!==c.length?s.filter((function(e){return c.includes(e.id)})):[]}return s},s.toggle=function(){s.ref.toggle(),s.props.onUpdateState()},s.onChangeSearch=function(e){if(s.state.searchVal!==e){var t=e.toLowerCase(),n=t?s.options.filter((function(e){return e.name&&e.name.toLowerCase().indexOf(t)>-1})):s.options;s.setState({searchVal:e,filteredOptions:n})}},s.onSelectOption=function(e){var t=s.props.column;s.setState({value:e},(function(){s.props.onCommit((0,ls.Z)({},t.key,e),t),s.toggle()}))};var r=s.getSelectColumnOptions(e);return s.state={value:e.row[e.column.key],searchVal:"",highlightIndex:-1,maxItemNum:0,itemHeight:0,filteredOptions:r},s.options=r,s.timer=null,s.editorKey="single-select-editor-".concat(e.column.key),s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.getCascadeColumnValue(this.props)!==this.getCascadeColumnValue(e)&&(this.options=this.getSelectColumnOptions(e),this.setState({filteredOptions:this.options}))}},{key:"render",value:function(){var e=this,t=this.state,n=t.value,i=t.filteredOptions,s=this.props.column;return(0,g.jsx)(ms.Z,{target:this.editorKey,className:"single-select-editor-popover",trigger:"legacy",placement:"bottom-start",hideArrow:!0,toggle:this.toggle,ref:function(t){return e.ref=t},children:(0,g.jsxs)("div",{className:"single-select-editor-container",children:[(0,g.jsx)("div",{className:"search-single-selects",children:(0,g.jsx)(vs,{placeholder:(0,u.ih)("Find an option"),onKeyDown:this.onKeyDown,onChange:this.onChangeSearch,autoFocus:!0})}),(0,g.jsx)("div",{className:"single-select-editor-content",children:i.map((function(t){var i=n===t.id,r={backgroundColor:t.color,color:t.textColor||null,maxWidth:Math.max(138,s.width?s.width-62:0)};return(0,g.jsxs)("div",{className:"single-select-option-container",onClick:e.onSelectOption.bind(e,i?null:t.id),children:[(0,g.jsx)("div",{className:"single-select-option",style:r,children:t.name}),(0,g.jsx)("div",{className:"single-select-option-selected",children:i&&(0,g.jsx)("i",{})})]},t.id)}))})]})})}}]),n}(a.Component),Ds=xs,ws=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;(0,i.Z)(this,n),(s=t.call(this,e)).updateState=function(){s.setState({isShowSingleSelect:!s.state.isShowSingleSelect})},s.onCommit=function(e,t){s.props.onCommit(e,t)};var r=e.column;return s.options=(0,rs.T8)(r),s.state={isShowSingleSelect:!1},s.editorKey="single-select-editor-".concat(r.key),s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.isShowSingleSelect,t=this.props,n=t.column,i=t.row[n.key],s=this.options.find((function(e){return e.id===i})),r=s?{backgroundColor:s.color,color:s.textColor||null}:{backgroundColor:xi.yR},o=s?s.name:(0,u.ih)(xi.sL);return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)("div",{id:this.editorKey,className:us()("selected-single-select-container",{disable:!n.editable,focus:e}),children:(0,g.jsxs)("div",{className:"single-select-inner w-100 h-100 d-flex align-items-center justify-content-between",children:[(0,g.jsx)("div",{children:i&&(0,g.jsx)("div",{className:"single-select-option",style:r,title:o,children:o})}),n.editable&&(0,g.jsx)("i",{className:"fas fa-caret-down"})]})}),n.editable&&(0,g.jsx)(Ds,{column:n,row:this.props.row,columns:this.props.columns,onCommit:this.onCommit,onUpdateState:this.updateState})]})}}]),n}(a.Component),js=ws,ys=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;(0,i.Z)(this,n),(s=t.call(this,e)).onChange=function(e){var t=s.props.column.data,n=t&&t.format?t.format:xi.Ul,i=null;t&&"custom_currency"===t.format&&(i=t.currency_symbol);var r=e.target.value.trim();if((0,rs.V5)()||!(r.indexOf(".\u3002")>-1)){var o=(0,rs.MS)(r,n,i);o!==s.state.value&&s.setState({value:o})}},s.onKeyDown=function(e){var t=e.currentTarget,n=t.selectionStart,i=t.selectionEnd,r=t.value;e.keyCode===xi.mW.Enter||e.keyCode===xi.mW.Esc?(e.preventDefault(),s.input.blur()):(e.keyCode===xi.mW.LeftArrow&&0===n||e.keyCode===xi.mW.RightArrow&&i===r.length)&&e.stopPropagation()},s.onBlur=function(){var e=s.state.value,t=s.props.column;s.props.onCommit((0,ls.Z)({},t.key,(0,rs.ap)(e,t.data)),t)},s.setInputRef=function(e){return s.input=e,s.input},s.onPaste=function(e){e.stopPropagation()},s.onCut=function(e){e.stopPropagation()};var r=e.row,o=e.column,a=r[o.key];return s.state={value:(0,rs.d8)(a,o.data)},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.column;return(0,g.jsx)("input",{ref:this.setInputRef,type:"text",className:"form-control",value:this.state.value,onBlur:this.onBlur,onPaste:this.onPaste,onCut:this.onCut,onKeyDown:this.onKeyDown,onChange:this.onChange,disabled:!e.editable})}}]),n}(a.Component),Ss=ys,Cs=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.column,n=e.row,i=t.data,s=t.key,r=(0,rs.n4)(n[s],i?i.format:"");return(0,g.jsx)("input",{type:"text",className:"form-control",value:r,disabled:!0})}}]),n}(a.Component),bs=Cs,ks=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.column,n=e.row,i=t.key,s=(0,rs.n4)(n[i],"YYYY-MM-DD HH:mm:ss")||"";return(0,g.jsx)("div",{className:"form-control",style:{width:320},children:s})}}]),n}(a.Component),Is=ks,Ns=(fs={},(0,ls.Z)(fs,xi.EM.TEXT,hs),(0,ls.Z)(fs,xi.EM.FORMULA,ps),(0,ls.Z)(fs,xi.EM.SINGLE_SELECT,js),(0,ls.Z)(fs,xi.EM.NUMBER,Ss),(0,ls.Z)(fs,xi.EM.DATE,bs),(0,ls.Z)(fs,xi.EM.CTIME,Is),(0,ls.Z)(fs,xi.EM.MTIME,Is),fs),Ms=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.column,n=e.row,i=e.columns,s=Ns[t.type]||Ns.text;return(0,g.jsxs)("div",{className:"pb-4 row column-item",children:[(0,g.jsx)(as,{column:t}),(0,g.jsx)(os.Z,{md:9,className:"d-flex align-items-center extra-attribute-item-info",children:(0,g.jsx)(s,{column:t,row:n,columns:i,onCommit:this.props.onCommit})})]})}}]),n}(a.Component),Zs=Ms,Ps=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;(0,i.Z)(this,n),(s=t.call(this,e)).startAnimation=function(e){!0===s.state.animationEnd&&e&&e(),setTimeout((function(){var t=s.modalRef.current.firstChild,n=s.getDialogStyle(),i=n.width,r=n.maxWidth,o=n.marginLeft,a=n.height;t.style.width="".concat(i,"px"),t.style.maxWidth="".concat(r,"px"),t.style.marginLeft="".concat(o,"px"),t.style.height="".concat(a,"px"),t.style.marginRight="unset",t.style.marginTop="28px",setTimeout((function(){s.setState({animationEnd:!0},(function(){t.style.transition="none",e&&e()}))}),280)}),1)},s.getFormatUpdateData=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=s.state.columns,n={},i=function(i){var s=t.find((function(e){return e.key===i}));if(s&&s.editable){var r=s.type,o=s.name,a=e[i];if(r===xi.EM.SINGLE_SELECT){var l=(0,rs.T8)(s).find((function(e){return e.id===a}));n[o]=l?l.name:""}else n[s.name]=e[i]}};for(var r in e)i(r);return n},s.getData=function(){var e=s.props,t=e.repoID,n=e.filePath;w.I.getFileExtendedProperties(t,n).then((function(e){var t=e.data,n=t.row,i=t.metadata,r=t.editable_columns;s.isExist=Boolean(n._id),s.setState({row:n,columns:(0,rs.s2)(i,r,s.isEmptyFile),isLoading:!1,errorMsg:""})})).catch((function(e){var t=m.c.getErrorMsg(e);s.setState({isLoading:!1,errorMsg:t})}))},s.createData=function(e){var t=s.props,n=t.repoID,i=t.filePath;w.I.newFileExtendedProperties(n,i,e).then((function(e){s.isExist=!0;var t=e.data.row;s.setState({row:t,isLoading:!1,errorMsg:""})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger((0,u.ih)(t))}))},s.updateData=function(e,t){var n=(0,is.Z)((0,is.Z)({},s.state.row),e);s.setState({row:n},(function(){var t=s.getFormatUpdateData(e),n=s.props,i=n.repoID,r=n.filePath;s.isExist?w.I.updateFileExtendedProperties(i,r,t).then((function(e){s.setState({update:{},row:e.data.row})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger((0,u.ih)(t))})):s.createData(t)}))},s.onHotKey=function(e){(0,ss.ZP)("esc",e)&&s.onToggle()},s.onToggle=function(){s.props.onToggle()},s.getDialogStyle=function(){return{width:800,maxWidth:800,marginLeft:(window.innerWidth-800)/2,height:xi.KF}},s.getInitStyle=function(){var e=window.innerWidth;return{width:"".concat(e-80,"px"),maxWidth:"".concat(e-80,"px"),marginLeft:"".concat(80,"px"),height:"".concat(100,"px"),marginRight:"".concat(80,"px"),marginTop:"30%",transition:"all .3s"}},s.renderColumns=function(){var e=s.state,t=e.isLoading,n=e.errorMsg,i=e.columns,r=e.row,o=e.update;if(t)return(0,g.jsx)("div",{className:"w-100 h-100 d-flex align-items-center justify-content-center",children:(0,g.jsx)(R.Z,{})});if(n)return(0,g.jsx)("div",{className:"w-100 h-100 d-flex align-items-center justify-content-center error-message",children:(0,u.ih)(n)});var a=(0,is.Z)((0,is.Z)({},r),o);return(0,g.jsx)(g.Fragment,{children:i.map((function(e){return(0,g.jsx)(Zs,{column:e,row:a,columns:i,onCommit:s.updateData},e.key)}))})},s.renderContent=function(){return s.state.animationEnd?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(J.Z,{toggle:s.onToggle,children:(0,u.ih)("Edit extra properties")}),(0,g.jsx)(b.Z,{children:s.renderColumns()})]}):null};var r=e.direntDetail,o=e.direntType;if(s.state={animationEnd:!1,isLoading:!0,update:{},row:{},columns:[],errorMsg:""},"dir"===o)s.isEmptyFile=!1;else{var l=(null===r||void 0===r?void 0:r.id)||"";s.isEmptyFile=l==="0".repeat(l.length)}return s.isExist=!1,s.modalRef=a.createRef(),s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.startAnimation(this.getData),window.addEventListener("keydown",this.onHotKey)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("keydown",this.onHotKey)}},{key:"render",value:function(){var e=this.state.animationEnd;return(0,g.jsx)(d.Z,{isOpen:!0,className:"extra-attributes-dialog",style:e?this.getDialogStyle():this.getInitStyle(),zIndex:xi.Ue.f,contentClassName:"extra-attributes-content-container",modalClassName:"extra-attributes-modal",wrapClassName:"extra-attributes",fade:!1,innerRef:this.modalRef,toggle:this.onToggle,children:this.renderContent()})}}]),n}(a.Component),Fs=Ps,_s=n(44031),Ts=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).submit=function(){var e=s.props,t=e.repoID,n=e.path;s.setState({submitting:!0}),w.I.applyFolderExtendedProperties(t,n).then((function(){j.Z.success((0,u.ih)("Successfully applied the properties.")),s.props.toggle()})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t),s.setState({submitting:!1})}))},s.state={submitting:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.submitting;return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.props.toggle,className:"apply-properties-dialog",children:[(0,g.jsx)(J.Z,{toggle:this.props.toggle,children:(0,u.ih)("Apply properties")}),(0,g.jsx)(b.Z,{children:(0,g.jsx)("p",{children:(0,u.ih)("Are you sure you want to apply the properties to all the files inside the folder?")})}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.props.toggle,disabled:e,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",className:"flex-shrink-0 apply-properties",disabled:e,onClick:this.submit,children:e?(0,g.jsx)(R.Z,{}):(0,g.jsx)(g.Fragment,{children:(0,u.ih)("Submit")})})]})]})}}]),n}(a.Component),Ls=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).getDirentPosition=function(){var e=s.props.repoInfo,t=s.getDirentPath(),n=e.repo_name;if("/"!==t){var i=t.lastIndexOf("/");n+=t.slice(0,i)}return n},s.onEditFileTagToggle=function(){s.setState({isEditFileTagShow:!s.state.isEditFileTagShow})},s.onFileTagChanged=function(){var e=s.getDirentPath();s.props.onFileTagChanged(s.props.dirent,e)},s.getDirentPath=function(){if(m.c.isMarkdownFile(s.props.path))return s.props.path;var e=s.props,t=e.dirent,n=e.path;return m.c.joinPath(n,t.name)},s.toggleExtraPropertiesDialog=function(){s.setState({isShowExtraProperties:!s.state.isShowExtraProperties})},s.toggleApplyPropertiesDialog=function(){s.setState({isShowApplyProperties:!s.state.isShowApplyProperties})},s.renderTags=function(){var e=s.props,t=e.direntType,n=e.direntDetail,i=s.getDirentPosition();return"dir"===t?(0,g.jsxs)("table",{className:"table-thead-hidden",children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"35%"}),(0,g.jsx)("th",{width:"65%"})]})}),(0,g.jsxs)("tbody",{children:[(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{children:(0,u.ih)("Location")}),(0,g.jsx)("td",{children:i})]}),(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{children:(0,u.ih)("Last Update")}),(0,g.jsx)("td",{children:A()(n.mtime).format("YYYY-MM-DD")})]}),"rw"===n.permission&&u.EG&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("tr",{className:"file-extra-attributes",children:(0,g.jsx)("th",{colSpan:2,children:(0,g.jsx)("div",{className:"edit-file-extra-attributes-btn",onClick:s.toggleExtraPropertiesDialog,children:(0,u.ih)("Edit extra properties")})})}),(0,g.jsx)("tr",{className:"file-extra-attributes",children:(0,g.jsx)("th",{colSpan:2,children:(0,g.jsx)("div",{className:"edit-file-extra-attributes-btn text-truncate",onClick:s.toggleApplyPropertiesDialog,title:(0,u.ih)("Apply properties to files inside the folder"),children:(0,u.ih)("Apply properties to files inside the folder")})})})]})]})]}):(0,g.jsxs)("table",{className:"table-thead-hidden",children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"35%"}),(0,g.jsx)("th",{width:"65%"})]})}),(0,g.jsxs)("tbody",{children:[(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{children:(0,u.ih)("Size")}),(0,g.jsx)("td",{children:m.c.bytesToSize(n.size)})]}),(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{children:(0,u.ih)("Location")}),(0,g.jsx)("td",{children:i})]}),(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{children:(0,u.ih)("Last Update")}),(0,g.jsx)("td",{children:A()(n.last_modified).fromNow()})]}),(0,g.jsxs)("tr",{className:"file-tag-container",children:[(0,g.jsx)("th",{children:(0,u.ih)("Tags")}),(0,g.jsxs)("td",{children:[(0,g.jsx)(_s.Z,{fileTagList:s.props.fileTagList}),(0,g.jsx)("span",{onClick:s.onEditFileTagToggle,id:s.tagListTitleID,children:(0,g.jsx)(et.Z,{symbol:"tag"})})]})]}),"rw"===n.permission&&u.EG&&(0,g.jsx)("tr",{className:"file-extra-attributes",children:(0,g.jsx)("th",{colSpan:2,children:(0,g.jsx)("div",{className:"edit-file-extra-attributes-btn",onClick:s.toggleExtraPropertiesDialog,children:(0,u.ih)("Edit extra properties")})})})]})]})},s.state={isEditFileTagShow:!1,isShowExtraProperties:!1,isShowApplyProperties:!1},s.tagListTitleID="detail-list-view-tags-".concat(Bi()),s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.direntType,n=e.direntDetail,i=e.fileTagList,s=this.getDirentPath();return(0,g.jsxs)(a.Fragment,{children:[this.renderTags(),this.state.isEditFileTagShow&&(0,g.jsx)(ns.Z,{repoID:this.props.repoID,filePath:s,fileTagList:i,toggleCancel:this.onEditFileTagToggle,onFileTagChanged:this.onFileTagChanged,target:this.tagListTitleID,isEditFileTagShow:this.state.isEditFileTagShow}),this.state.isShowExtraProperties&&(0,g.jsx)(Fs,{repoID:this.props.repoID,filePath:s,direntType:t,direntDetail:n,onToggle:this.toggleExtraPropertiesDialog}),this.state.isShowApplyProperties&&(0,g.jsx)(Ts,{toggle:this.toggleApplyPropertiesDialog,repoID:this.props.repoID,path:s})]})}}]),n}(a.Component);Ls.defaultProps={fileTagList:[]};var Os=Ls,Rs=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).loadDirentInfo=function(e,t,n){if(e){var i=m.c.joinPath(t,e.name);s.updateDetailView(e,i)}else{var r=m.c.getDirName(t);w.I.listDir(n,r).then((function(e){for(var n=e.data.dirent_list,i=null,r=0;r0&&t.includes(s.props.dirent)){s.props.onShowDirentsDraggablePreview(),e.dataTransfer.setDragImage(s.refs.empty_content,0,0);var n=t.map((function(e){var t=s.getDirentPath(e);return{nodeDirent:e,nodeParentPath:s.props.path,nodeRootPath:t}}));return n=JSON.stringify(n),void e.dataTransfer.setData("applicaiton/drag-item-info",n)}e.dataTransfer&&e.dataTransfer.setDragImage&&e.dataTransfer.setDragImage(s.refs.drag_icon,15,15);var i=s.getDirentPath(s.props.dirent),r={nodeDirent:s.props.dirent,nodeParentPath:s.props.path,nodeRootPath:i};r=JSON.stringify(r),e.dataTransfer.setData("applicaiton/drag-item-info",r)},s.onItemDragEnter=function(e){if(m.c.isIEBrower()||!s.state.canDrag)return!1;"dir"===s.props.dirent.type&&(e.stopPropagation(),s.setState({isDropTipshow:!0}))},s.onItemDragOver=function(e){if(m.c.isIEBrower()||!s.state.canDrag)return!1;"copy"!==e.dataTransfer.dropEffect&&(e.preventDefault(),e.dataTransfer.dropEffect="move")},s.onItemDragLeave=function(e){if(m.c.isIEBrower()||!s.state.canDrag)return!1;"dir"===s.props.dirent.type&&e.stopPropagation(),s.setState({isDropTipshow:!1})},s.onItemDragDrop=function(e){if(m.c.isIEBrower()||!s.state.canDrag)return!1;if(s.setState({isDropTipshow:!1}),!e.dataTransfer.files.length&&"dir"===s.props.dirent.type){e.stopPropagation();var t=e.dataTransfer.getData("applicaiton/drag-item-info");if(t=JSON.parse(t),Array.isArray(t)){var n=t.map((function(e){return e.nodeRootPath})),i=m.c.joinPath(s.props.path,s.props.dirent.name);if(n.some((function(e){return e===i})))return;s.props.onItemsMove(s.props.currentRepoInfo,i)}else{var r=t,o=r.nodeDirent,a=r.nodeParentPath,l=r.nodeRootPath,c=s.props.dirent;if(o.name!==c.name&&("dir"!==c.type||"dir"!==o.type||a===s.props.path||-1===s.props.path.indexOf(l))){var h=m.c.joinPath(s.props.path,s.props.dirent.name);s.onItemMove(s.props.currentRepoInfo,o,h,a)}}}},s.onItemMouseDown=function(e){s.props.onItemMouseDown(e)},s.onItemContextMenu=function(e){var t=s.props.dirent;s.props.onItemContextMenu(e,t)},s.renderItemOperation=function(){var e=s.props,t=e.dirent,n=e.currentRepoInfo,i=e.selectedDirentList,r=!0,o=!0,l=(0,D.Z)(s),c=l.isCustomPermission,h=l.customPermission;if(c){var p=h.permission;r=p.download,o=p.delete}var d=m.c.isHasPermissionToShare(n,t.permission,t);return(0,g.jsx)(a.Fragment,{children:i.length>1?(0,g.jsx)(a.Fragment,{children:s.state.isOperationShow&&!t.isSelected&&(0,g.jsxs)("div",{className:"operations",children:[("rw"===t.permission||"r"===t.permission||c&&r)&&(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-download",title:(0,u.ih)("Download"),role:"button","aria-label":(0,u.ih)("Download"),onClick:s.onItemDownload}),d&&(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-share",title:(0,u.ih)("Share"),role:"button","aria-label":(0,u.ih)("Share"),onClick:s.onItemShare}),("rw"===t.permission||"cloud-edit"===t.permission||c&&o)&&(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-delete",title:(0,u.ih)("Delete"),role:"button","aria-label":(0,u.ih)("Delete"),onClick:s.onItemDelete}),(0,g.jsx)(ki.Z,{item:s.props.dirent,toggleClass:"sf2-icon-caret-down",isHandleContextMenuEvent:!0,getMenuList:s.props.getDirentItemMenuList,onMenuItemClick:s.onMenuItemClick,unfreezeItem:s.unfreezeItem,freezeItem:s.props.freezeItem})]})}):(0,g.jsx)(a.Fragment,{children:s.state.isOperationShow&&(0,g.jsxs)("div",{className:"operations",children:[("rw"===t.permission||"r"===t.permission||c&&r)&&(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-download",title:(0,u.ih)("Download"),role:"button","aria-label":(0,u.ih)("Download"),onClick:s.onItemDownload}),d&&(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-share",title:(0,u.ih)("Share"),role:"button","aria-label":(0,u.ih)("Share"),onClick:s.onItemShare}),("rw"===t.permission||"cloud-edit"===t.permission||c&&o)&&(0,g.jsx)("a",{href:"#",className:"op-icon sf2-icon-delete",title:(0,u.ih)("Delete"),role:"button","aria-label":(0,u.ih)("Delete"),onClick:s.onItemDelete}),(0,g.jsx)(ki.Z,{item:s.props.dirent,toggleClass:"sf2-icon-caret-down",isHandleContextMenuEvent:!0,getMenuList:s.props.getDirentItemMenuList,onMenuItemClick:s.onMenuItemClick,unfreezeItem:s.unfreezeItem,freezeItem:s.props.freezeItem})]})})})};var r=s.props.dirent,o=m.c.getUserPermission(r.permission),l=o.isCustomPermission,c=o.customPermission;if(s.isCustomPermission=l,s.customPermission=c,s.canPreview=!0,s.canDrag="rw"===r.permission,l){var h=c.permission,p=h.preview,d=h.modify;s.canPreview=p||d,s.canDrag=d}return s.state={isOperationShow:!1,highlight:!1,isZipDialogOpen:!1,isMoveDialogShow:!1,isCopyDialogShow:!1,isShareDialogShow:!1,isMutipleOperation:!1,canDrag:s.canDrag,isShowTagTooltip:!1,isDragTipShow:!1,isDropTipshow:!1,isEditFileTagShow:!1,isPermissionDialogOpen:!1,isOpMenuOpen:!1},s.tagListTitleID="tag-list-title-".concat(Bi()),s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=this;e.isItemFreezed===this.props.isItemFreezed||e.isItemFreezed||this.setState({highlight:!1,isOperationShow:!1},(function(){e.activeDirent&&e.activeDirent.name===e.dirent.name&&t.setState({isOperationShow:!0})}))}},{key:"render",value:function(){var e=this,t=this.props,n=t.path,i=t.dirent,s=t.activeDirent,r=m.c.joinPath(n,i.name),o="";this.props.currentRepoInfo&&(o=u.ze+"library/"+this.props.repoID+"/"+this.props.currentRepoInfo.repo_name+m.c.encodePath(r));var l=u.ze+"lib/"+this.props.repoID+"/file"+m.c.encodePath(r);i.is_sdoc_revision&&i.revision_id&&(l=u.ze+"lib/"+this.props.repoID+"/revisions/"+i.revision_id+"/");var c=m.c.getDirentIcon(i),h=this.state.highlight?"tr-highlight ":"";h+=this.state.isDropTipshow?"tr-drop-effect":"",h+=s&&s.name===i.name?"tr-active":"",h+=i.isSelected?"tr-active":"";var d=i.is_freezed?(0,u.ih)("Frozen by {name}"):(0,u.ih)("locked by {name}");d=d.replace("{name}",i.lock_owner_name);var f=m.c.isDesktop(),v=this.state.canDrag,x="".concat(u.si,"img/file-").concat(i.is_freezed?"freezed":"locked","-32.png"),D=i.is_freezed?(0,u.ih)("freezed"):(0,u.ih)("locked"),w=(0,g.jsxs)("tr",{className:h,draggable:v,onFocus:this.onMouseEnter,onMouseEnter:this.onMouseEnter,onMouseOver:this.onMouseOver,onMouseLeave:this.onMouseLeave,onClick:this.onDirentClick,onDragStart:this.onItemDragStart,onDragEnter:this.onItemDragEnter,onDragOver:this.onItemDragOver,onDragLeave:this.onItemDragLeave,onDrop:this.onItemDragDrop,onMouseDown:this.onItemMouseDown,onContextMenu:this.onItemContextMenu,children:[(0,g.jsx)("td",{className:"pl10 ".concat(this.state.isDragTipShow?"tr-drag-effect":""),children:(0,g.jsx)("input",{type:"checkbox",className:"vam",onChange:this.onItemSelected,checked:i.isSelected})}),(0,g.jsx)("td",{className:"pl10",children:void 0!==i.starred&&(0,g.jsx)("a",{href:"#",role:"button","aria-label":i.starred?(0,u.ih)("Unstar"):(0,u.ih)("Star"),onClick:this.onItemStarred,children:(0,g.jsx)("i",{className:"fa-star ".concat(i.starred?"fas":"far star-empty")})})}),(0,g.jsx)("td",{className:"pl10",children:(0,g.jsxs)("div",{className:"dir-icon",children:[this.canPreview&&i.encoded_thumbnail_src?(0,g.jsx)("img",{ref:"drag_icon",src:"".concat(u.ze).concat(i.encoded_thumbnail_src),className:"thumbnail cursor-pointer",onClick:this.onItemClick,alt:""}):(0,g.jsx)("img",{ref:"drag_icon",src:c,width:"24",alt:""}),i.is_locked&&(0,g.jsx)("img",{className:"locked",src:x,alt:D,title:d}),(0,g.jsx)("div",{ref:"empty_content",style:{position:"absolute",width:"1px",height:"1px"}})]})}),(0,g.jsxs)("td",{className:"name",children:[this.state.isRenameing&&(0,g.jsx)(tn.Z,{hasSuffix:"dir"!==i.type,name:i.name,onRenameConfirm:this.onRenameConfirm,onRenameCancel:this.onRenameCancel}),!this.state.isRenameing&&(0,g.jsx)(a.Fragment,{children:i.isDir()||this.canPreview?(0,g.jsx)("a",{href:"dir"===i.type?o:l,onClick:this.onItemClick,children:i.name}):(0,g.jsx)("a",{className:"sf-link",onClick:this.onItemClick,children:i.name})})]}),(0,g.jsxs)("td",{className:"tag-list-title",children:["dir"!==i.type&&i.file_tags&&i.file_tags.length>0&&(0,g.jsx)("div",{id:this.tagListTitleID,className:"dirent-item tag-list tag-list-stacked",children:i.file_tags.map((function(e,t){return(0,g.jsx)(Gs,{fileTag:e,length:i.file_tags.length,index:t},t)}))}),"dir"!==i.type&&(!i.file_tags||0==i.file_tags.length)&&(0,g.jsx)("div",{id:this.tagListTitleID,className:"dirent-item tag-list tag-list-stacked"})]}),(0,g.jsx)("td",{className:"operation",children:this.renderItemOperation()}),(0,g.jsx)("td",{className:"file-size",children:i.size&&i.size}),(0,g.jsx)("td",{className:"last-update",title:A().unix(i.mtime).format("llll"),children:i.mtime_relative})]}),j=(0,g.jsxs)("tr",{children:[(0,g.jsx)("td",{onClick:this.onItemClick,children:(0,g.jsxs)("div",{className:"dir-icon",children:[this.canPreview&&i.encoded_thumbnail_src?(0,g.jsx)("img",{src:"".concat(u.ze).concat(i.encoded_thumbnail_src),className:"thumbnail cursor-pointer",alt:""}):(0,g.jsx)("img",{src:c,width:"24",alt:""}),i.is_locked&&(0,g.jsx)("img",{className:"locked",src:x,alt:D,title:d})]})}),(0,g.jsxs)("td",{onClick:this.onItemClick,children:[this.state.isRenameing&&(0,g.jsx)(tn.Z,{hasSuffix:"dir"!==i.type,name:i.name,onRenameConfirm:this.onRenameConfirm,onRenameCancel:this.onRenameCancel}),!this.state.isRenameing&&(0,g.jsx)(a.Fragment,{children:i.isDir()||this.canPreview?(0,g.jsx)("a",{href:"dir"===i.type?o:l,children:i.name}):(0,g.jsx)("a",{className:"sf-link",children:i.name})}),(0,g.jsx)("br",{}),i.size&&(0,g.jsx)("span",{className:"item-meta-info",children:i.size}),(0,g.jsx)("span",{className:"item-meta-info",children:i.mtime_relative})]}),(0,g.jsx)("td",{children:(0,g.jsxs)(U.Z,{isOpen:this.state.isOpMenuOpen,toggle:this.toggleOpMenu,children:[(0,g.jsx)(z.Z,{tag:"i",className:"sf-dropdown-toggle fa fa-ellipsis-v ml-0",title:(0,u.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":this.state.isOpMenuOpen}),(0,g.jsxs)("div",{className:this.state.isOpMenuOpen?"":"d-none",onClick:this.toggleOpMenu,children:[(0,g.jsx)("div",{className:"mobile-operation-menu-bg-layer"}),(0,g.jsxs)("div",{className:"mobile-operation-menu",children:[void 0!==i.starred&&(0,g.jsx)(G.Z,{className:"mobile-menu-item",onClick:this.onItemStarred,children:i.starred?(0,u.ih)("Unstar"):(0,u.ih)("Star")}),this.props.getDirentItemMenuList(i,!0).map((function(t,n){return"Divider"!=t&&"Open via Client"!=t.key?(0,g.jsx)(G.Z,{className:"mobile-menu-item","data-op":t.key,onClick:e.onMobileMenuItemClick,children:t.value},n):null}))]})]})]})})]});return(0,g.jsxs)(a.Fragment,{children:[f?w:j,this.state.isMoveDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(fi,{path:this.props.path,repoID:this.props.repoID,dirent:this.props.dirent,isMutipleOperation:this.state.isMutipleOperation,onItemMove:this.props.onItemMove,onCancelMove:this.onItemMoveToggle,repoEncrypted:this.props.repoEncrypted})}),this.state.isCopyDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(vi,{path:this.props.path,repoID:this.props.repoID,dirent:this.props.dirent,isMutipleOperation:this.state.isMutipleOperation,onItemCopy:this.props.onItemCopy,onCancelCopy:this.onItemCopyToggle,repoEncrypted:this.props.repoEncrypted})}),(0,g.jsx)(p(),{query:"(min-width: 768px)",children:this.state.isEditFileTagShow&&(0,g.jsx)(ns.Z,{repoID:this.props.repoID,fileTagList:i.file_tags,filePath:r,toggleCancel:this.onEditFileTagToggle,onFileTagChanged:this.onFileTagChanged,target:this.tagListTitleID,isEditFileTagShow:this.state.isEditFileTagShow})}),(0,g.jsx)(p(),{query:"(max-width: 767.8px)",children:this.state.isEditFileTagShow&&(0,g.jsx)(Si,{repoID:this.props.repoID,fileTagList:i.file_tags,filePath:r,toggleCancel:this.onEditFileTagToggle,onFileTagChanged:this.onFileTagChanged})}),this.state.isZipDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Ci.Z,{repoID:this.props.repoID,path:this.props.path,target:this.props.dirent.name,toggleDialog:this.closeZipDialog})}),this.state.isShareDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Qe.Z,{itemType:i.type,itemName:i.name,itemPath:r,userPerm:i.permission,repoID:this.props.repoID,repoEncrypted:this.props.repoEncrypted,enableDirPrivateShare:this.props.enableDirPrivateShare,isGroupOwnedRepo:this.props.isGroupOwnedRepo,toggleDialog:this.closeSharedDialog})}),this.state.isPermissionDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(en,{toggleDialog:this.onPermissionItem,repoID:this.props.repoID,folderPath:r,folderName:i.name,isDepartmentRepo:this.props.isGroupOwnedRepo})})]})}}]),n}(a.Component),Ws=n(99832),Vs=n(60925),qs=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o0&&!s.state.activeDirent||(s.setState({activeDirent:e}),s.props.onDirentClick(e))},s.sortByName=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortItems("name",t)},s.sortByTime=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortItems("time",t)},s.sortBySize=function(e){e.preventDefault();var t="asc"==s.props.sortOrder?"desc":"asc";s.props.sortItems("size",t)},s.prepareImageItem=function(e){var t=e.name,n=s.props.repoID,i=m.c.encodePath(m.c.joinPath(s.props.path,t)),r="".concat(u.ze,"repo/").concat(n,"/raw").concat(i);return{name:t,url:"".concat(u.ze,"lib/").concat(n,"/file").concat(i),src:r}},s.showImagePopup=function(e){var t=s.props.fullDirentList.filter((function(e){return m.c.imageCheck(e.name)})),n=t.map((function(e){return s.prepareImageItem(e)}));s.setState({isImagePopupOpen:!0,imageItems:n,imageIndex:t.indexOf(e)})},s.moveToPrevImage=function(){var e=s.state.imageItems.length;s.setState((function(t){return{imageIndex:(t.imageIndex+e-1)%e}}))},s.moveToNextImage=function(){var e=s.state.imageItems.length;s.setState((function(t){return{imageIndex:(t.imageIndex+1)%e}}))},s.closeImagePopup=function(){s.setState({isImagePopupOpen:!1})},s.onCreateFileToggle=function(e){s.setState({isCreateFileDialogShow:!s.state.isCreateFileDialogShow,fileType:e||""})},s.onCreateFolderToggle=function(){s.setState({isCreateFolderDialogShow:!s.state.isCreateFolderDialogShow})},s.onAddFolder=function(e){s.setState({isCreateFolderDialogShow:!1}),s.props.onAddFolder(e)},s.checkDuplicatedName=function(e){return s.props.direntList.some((function(t){return t.name===e}))},s.onMoveToggle=function(){s.setState({isMoveDialogShow:!s.state.isMoveDialogShow})},s.onCopyToggle=function(){s.setState({isCopyDialogShow:!s.state.isCopyDialogShow})},s.onItemsDownload=function(){var e=s.props,t=e.path,n=e.repoID,i=e.selectedDirentList;if(i.length){if(1===i.length&&!i[0].isDir()){var r=m.c.joinPath(t,i[0].name),o=gi.Z.getUrl({type:"download_file_url",repoID:n,filePath:r});return void(location.href=o)}var a=i.map((function(e){return e.name}));s.setState({isProgressDialogShow:!0,downloadItems:a})}},s.onCloseZipDownloadDialog=function(){s.setState({isProgressDialogShow:!1})},s.onMouseDown=function(e){e.stopPropagation(),e.button},s.handleContextClick=function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;e.preventDefault(),e.stopPropagation();var r=e.clientX||e.touches&&e.touches[0].pageX,o=e.clientY||e.touches&&e.touches[0].pageY;s.props.posX&&(r-=s.props.posX),s.props.posY&&(o-=s.props.posY),(0,Vs.SC)();var a={id:t,position:{x:r,y:o},target:e.target,currentObject:i,menuList:n};0!==n.length&&(0,Vs.AE)(a)},s.onContainerClick=function(){(0,Vs.SC)(),s.state.activeDirent&&s.onDirentClick(null)},s.onContainerMouseDown=function(e){s.onMouseDown(e)},s.onContainerContextMenu=function(e){e.preventDefault();var t=s.props.userPerm,n=m.c.getUserPermission(s.props.userPerm),i=n.isCustomPermission,r=n.customPermission;if("admin"===t||"rw"===t||i){var o=zs.Z.NEW_FOLDER,a=zs.Z.NEW_FILE,l=zs.Z.NEW_MARKDOWN_FILE,c=zs.Z.NEW_EXCEL_FILE,h=zs.Z.NEW_POWERPOINT_FILE,p=zs.Z.NEW_WORD_FILE,d=zs.Z.NEW_SEADOC_FILE,g=[o,a,"Divider",l,c,h,p];if(u.np&&g.push(d),0===s.props.selectedDirentList.length){if(i)if(!r.permission.create)return;var f=g;s.handleContextClick(e,"dirent-container-menu",f)}else if(1===s.props.selectedDirentList.length)if(s.state.activeDirent){if(s.onDirentClick(null),e.preventDefault(),e.persist(),i)if(!r.permission.modify)return;setTimeout((function(){var t=g;s.handleContextClick(e,"dirent-container-menu",t)}),0)}else{var v=s.props.selectedDirentList[0],x=s.getDirentItemMenuList(v,!0);s.handleContextClick(e,"dirent-item-menu",x,v)}else{var D=[];if(i){var w=r.permission,j=w.modify,y=w.copy,S=w.download,C=w.delete;j&&D.push(zs.Z.MOVE),y&&D.push(zs.Z.COPY),S&&D.push(zs.Z.DOWNLOAD),C&&D.push(zs.Z.DELETE)}else D=[zs.Z.MOVE,zs.Z.COPY,zs.Z.DOWNLOAD,zs.Z.DELETE];s.handleContextClick(e,"dirents-menu",D)}}},s.onContainerMenuItemClick=function(e){switch(e){case"New Folder":s.onCreateFolderToggle();break;case"New File":s.onCreateFileToggle();break;case"New Markdown File":s.onCreateFileToggle(".md");break;case"New Excel File":s.onCreateFileToggle(".xlsx");break;case"New PowerPoint File":s.onCreateFileToggle(".pptx");break;case"New Word File":s.onCreateFileToggle(".docx");break;case"New SeaDoc File":s.onCreateFileToggle(".sdoc")}(0,Vs.SC)()},s.onDirentsMenuItemClick=function(e){switch(e){case"Move":s.onMoveToggle();break;case"Copy":s.onCopyToggle();break;case"Download":s.onItemsDownload();break;case"Delete":s.props.onItemsDelete()}(0,Vs.SC)()},s.onThreadMouseDown=function(e){s.onMouseDown(e)},s.onThreadContextMenu=function(e){e.stopPropagation()},s.onItemMouseDown=function(e){s.onMouseDown(e)},s.onItemContextMenu=function(e,t){if(!(s.props.selectedDirentList.length>1)){s.onDirentClick(t);var n=s.getDirentItemMenuList(t,!0);s.handleContextClick(e,"dirent-item-menu",n,t)}},s.setDirentItemRef=function(e){return function(t){s.direntItems[e]=t}},s.onMenuItemClick=function(e,t,n){var i=s.getDirentIndex(t);s.direntItems[i].onMenuItemClick(e,n),(0,Vs.SC)()},s.onShowMenu=function(e){s.freezeItem()},s.onHideMenu=function(e){s.unfreezeItem()},s.getDirentIndex=function(e){for(var t=s.props.direntList,n=0,i=0;i0&&(o=er()(t.name).slice(0,7),l=t.file_tags.map((function(e){return e.name})).join(" "));var c="";this.props.currentRepoInfo&&(c=u.ze+"library/"+this.props.repoID+"/"+this.props.currentRepoInfo.repo_name+m.c.encodePath(i));var h=u.ze+"lib/"+this.props.repoID+"/file"+m.c.encodePath(i);t.is_sdoc_revision&&t.revision_id&&(h=u.ze+"lib/"+this.props.repoID+"/revisions/"+t.revision_id+"/");var p="grid-file-img-link cursor-pointer";p+=this.state.isGridSelected?" grid-selected-active":" ",p+=this.state.isGridDropTipShow?" grid-drop-show":" ";var d=t.is_freezed?(0,u.ih)("Frozen by {name}"):(0,u.ih)("locked by {name}");d=d.replace("{name}",t.lock_owner_name);var f="".concat(u.si,"img/file-").concat(t.is_freezed?"freezed":"locked","-32.png"),v=t.is_freezed?(0,u.ih)("freezed"):(0,u.ih)("locked");return(0,g.jsx)(a.Fragment,{children:(0,g.jsxs)("li",{className:"grid-item",onContextMenu:this.onGridItemContextMenu,onMouseDown:this.onGridItemMouseDown,children:[(0,g.jsxs)("div",{className:p,draggable:this.canDrag,onClick:this.onItemClick,onDragStart:this.onGridItemDragStart,onDragEnter:this.onGridItemDragEnter,onDragOver:this.onGridItemDragOver,onDragLeave:this.onGridItemDragLeave,onDrop:this.onGridItemDragDrop,children:[this.canPreview&&t.encoded_thumbnail_src?(0,g.jsx)("img",{src:"".concat(u.ze).concat(r),ref:this.gridIcon,className:"thumbnail",onClick:this.onItemClick,alt:""}):(0,g.jsx)("img",{src:s,ref:this.gridIcon,width:"96",alt:""}),t.is_locked&&(0,g.jsx)("img",{className:"grid-file-locked-icon",src:f,alt:v,title:d})]}),(0,g.jsxs)("div",{className:"grid-file-name",onDragStart:this.onGridItemDragStart,draggable:this.canDrag,children:["dir"!==t.type&&t.file_tags&&t.file_tags.length>0&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("div",{id:"tag-list-title-".concat(o),className:"dirent-item tag-list tag-list-stacked d-inline-block align-middle",children:t.file_tags.map((function(e,n){var i=t.file_tags.length;return(0,g.jsx)("span",{className:"file-tag",style:{zIndex:i-n,backgroundColor:e.color}},e.id)}))}),(0,g.jsx)($e.Z,{target:"tag-list-title-".concat(o),placement:"bottom",children:l})]}),t.isDir()||this.canPreview?(0,g.jsx)("a",{className:"grid-file-name-link ".concat(this.state.isGridSelected?"grid-link-selected-active":""),href:"dir"===t.type?c:h,onClick:this.onItemLinkClick,children:t.name}):(0,g.jsx)("a",{className:"sf-link grid-file-name-link ".concat(this.state.isGridSelected?"grid-link-selected-active":""),onClick:this.onItemLinkClick,children:t.name})]})]})})}}]),n}(a.Component),nr=(n(12188),function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onCreateFileToggle=function(e){s.setState({isCreateFileDialogShow:!s.state.isCreateFileDialogShow,fileType:e||""})},s.onGridItemClick=function(e){(0,Vs.SC)(),s.setState({activeDirent:e}),s.props.onGridItemClick(e)},s.onMoveToggle=function(){s.setState({isMoveDialogShow:!s.state.isMoveDialogShow})},s.onCopyToggle=function(){s.setState({isCopyDialogShow:!s.state.isCopyDialogShow})},s.onAddFolder=function(e){s.setState({isCreateFolderDialogShow:!1}),s.props.onAddFolder(e)},s.onItemShare=function(e){e.nativeEvent.stopImmediatePropagation(),s.setState({isShareDialogShow:!s.state.isShareDialogShow})},s.closeSharedDialog=function(){s.setState({isShareDialogShow:!s.state.isShareDialogShow})},s.onItemDelete=function(e,t){t.nativeEvent.stopImmediatePropagation(),s.props.onItemDelete(e)},s.onItemConvert=function(e,t,n){t.nativeEvent.stopImmediatePropagation(),s.props.onItemConvert(e,n)},s.onMenuItemClick=function(e,t,n){switch((0,Vs.SC)(),e){case"Download":s.onItemDownload(t,n);break;case"Share":s.onItemShare(n);break;case"Delete":s.onItemDelete(t,n);break;case"Rename":s.onItemRenameToggle();break;case"Move":s.onItemMoveToggle();break;case"Copy":s.onItemCopyToggle();break;case"Freeze Document":s.onFreezeDocument(t);break;case"Convert to Markdown":s.onItemConvert(t,n,"markdown");break;case"Convert to sdoc":s.onItemConvert(t,n,"sdoc");break;case"Tags":s.onEditFileTagToggle();break;case"Permission":s.onPermissionItem();break;case"Unlock":s.onUnlockItem(t);break;case"Lock":s.onLockItem(t);break;case"Mark as draft":s.onMarkAsDraft(t);break;case"Unmark as draft":s.onUnmarkAsDraft(t);break;case"History":s.onHistory(t);break;case"New Folder":s.onCreateFolderToggle(t);break;case"New File":s.onCreateFileToggle("");break;case"New Markdown File":s.onCreateFileToggle(".md");break;case"New Excel File":s.onCreateFileToggle(".xlsx");break;case"New PowerPoint File":s.onCreateFileToggle(".pptx");break;case"New Word File":s.onCreateFileToggle(".docx");break;case"New SeaDoc File":s.onCreateFileToggle(".sdoc");break;case"Access Log":s.onAccessLog(t);break;case"Properties":s.props.showDirentDetail("info");break;case"Open via Client":s.onOpenViaClient(t)}},s.onEditFileTagToggle=function(){s.setState({isEditFileTagShow:!s.state.isEditFileTagShow})},s.onFileTagChanged=function(){var e=s.state.activeDirent?s.state.activeDirent:"",t=m.c.joinPath(s.props.path,e.name);s.props.onFileTagChanged(e,t)},s.getDirentPath=function(e){var t=s.props.path;return"/"===t?t+e.name:t+"/"+e.name},s.closeZipDialog=function(){s.setState({isZipDialogOpen:!1})},s.onItemDownload=function(e,t){t.nativeEvent.stopImmediatePropagation();var n=e,i=s.props.repoID,r=s.getDirentPath(n);if("dir"===n.type)s.setState({isZipDialogOpen:!0});else{var o=gi.Z.getUrl({type:"download_file_url",repoID:i,filePath:r});location.href=o}},s.onCreateFolderToggle=function(){s.setState({isCreateFolderDialogShow:!s.state.isCreateFolderDialogShow})},s.onItemRenameToggle=function(){s.setState({isRenameDialogShow:!s.state.isRenameDialogShow})},s.onItemMoveToggle=function(){s.setState({isMoveDialogShow:!s.state.isMoveDialogShow})},s.onItemCopyToggle=function(){s.setState({isCopyDialogShow:!s.state.isCopyDialogShow})},s.onPermissionItem=function(){s.setState({isPermissionDialogOpen:!s.state.isPermissionDialogOpen})},s.onLockItem=function(e){var t=s.props.repoID,n=s.getDirentPath(e);w.I.lockfile(t,n).then((function(){s.props.updateDirent(e,"is_locked",!0),s.props.updateDirent(e,"locked_by_me",!0);var t=u.b6.split("@");s.props.updateDirent(e,"lock_owner_name",t[0])})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onFreezeDocument=function(e){var t=s.props.repoID,n=s.getDirentPath(e);w.I.lockfile(t,n,-1).then((function(){s.props.updateDirent(e,"is_freezed",!0),s.props.updateDirent(e,"is_locked",!0),s.props.updateDirent(e,"locked_by_me",!0);var t=u.b6.split("@");s.props.updateDirent(e,"lock_owner_name",t[0])})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onUnlockItem=function(e){var t=s.props.repoID,n=s.getDirentPath(e);w.I.unlockfile(t,n).then((function(){s.props.updateDirent(e,"is_locked",!1),s.props.updateDirent(e,"locked_by_me",!1),s.props.updateDirent(e,"lock_owner_name","")})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onMarkAsDraft=function(e){var t=s.props.repoID,n=s.getDirentPath(e);w.I.sdocMarkAsDraft(t,n).then((function(t){s.props.updateDirent(e,"is_sdoc_draft",!0)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onUnmarkAsDraft=function(e){var t=s.props.repoID,n=s.getDirentPath(e);w.I.sdocUnmarkAsDraft(t,n).then((function(t){s.props.updateDirent(e,"is_sdoc_draft",!1)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onHistory=function(e){var t=s.props.repoID,n=s.getDirentPath(e),i=gi.Z.getUrl({type:"file_revisions",repoID:t,filePath:n});location.href=i},s.onAccessLog=function(e){var t=s.getDirentPath(e),n=u.ze+"repo/file-access/"+s.props.repoID+"/?p="+encodeURIComponent(t);window.open(n)},s.onOpenViaClient=function(e){var t=s.props.repoID,n=s.getDirentPath(e),i=gi.Z.getUrl({type:"open_via_client",repoID:t,filePath:n});location.href=i},s.onItemRename=function(e){s.props.onItemRename(s.state.activeDirent,e)},s.prepareImageItem=function(e){var t=e.name,n=s.props.repoID,i=m.c.encodePath(m.c.joinPath(s.props.path,t)),r="".concat(u.ze,"repo/").concat(n,"/raw").concat(i);return{name:t,url:"".concat(u.ze,"lib/").concat(n,"/file").concat(i),src:r}},s.showImagePopup=function(e){var t=s.props.fullDirentList.filter((function(e){return m.c.imageCheck(e.name)})),n=t.map((function(e){return s.prepareImageItem(e)}));s.setState({isImagePopupOpen:!0,imageItems:n,imageIndex:t.indexOf(e)})},s.closeImagePopup=function(){s.setState({isImagePopupOpen:!1})},s.moveToPrevImage=function(){var e=s.state.imageItems.length;s.setState((function(t){return{imageIndex:(t.imageIndex+e-1)%e}}))},s.moveToNextImage=function(){var e=s.state.imageItems.length;s.setState((function(t){return{imageIndex:(t.imageIndex+1)%e}}))},s.checkDuplicatedName=function(e){return m.c.checkDuplicatedNameInList(s.props.direntList,e)},s.onMouseDown=function(e){e.stopPropagation(),e.button},s.onGridContainerMouseDown=function(e){s.onMouseDown(e)},s.onGridItemMouseDown=function(e){s.onMouseDown(e)},s.gridContainerClick=function(){(0,Vs.SC)(),s.props.isDirentDetailShow||s.onGridItemClick(null)},s.onGridContainerContextMenu=function(e){e.preventDefault();var t=s.props.userPerm;if("admin"===t||"rw"===t){var n=zs.Z.NEW_FOLDER,i=zs.Z.NEW_FILE,r=zs.Z.NEW_MARKDOWN_FILE,o=zs.Z.NEW_EXCEL_FILE,a=zs.Z.NEW_POWERPOINT_FILE,l=zs.Z.NEW_WORD_FILE,c=zs.Z.NEW_SEADOC_FILE,h=[n,i,"Divider",r,o,a,l];u.np&&h.push(c),s.handleContextClick(e,"dirent-grid-container-menu",h)}},s.onGridItemContextMenu=function(e,t){var n=s.getDirentItemMenuList(t,!0);s.handleContextClick(e,"grid-item-contextmenu",n,t),s.props.onGridItemClick&&s.props.onGridItemClick(t)},s.handleContextClick=function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;e.preventDefault(),e.stopPropagation();var r=e.clientX||e.touches&&e.touches[0].pageX,o=e.clientY||e.touches&&e.touches[0].pageY;s.props.posX&&(r-=s.props.posX),s.props.posY&&(o-=s.props.posY),(0,Vs.SC)(),s.setState({activeDirent:i});var a={id:t,position:{x:r,y:o},target:e.target,currentObject:i,menuList:n};0!==n.length&&(0,Vs.AE)(a)},s.getDirentItemMenuList=function(e,t){var n=s.isRepoOwner,i=s.props.currentRepoInfo;return m.c.getDirentOperationList(n,i,e,t)},s.state={isImagePopupOpen:!1,imageItems:[],imageIndex:0,isShareDialogShow:!1,isMoveDialogShow:!1,isCopyDialogShow:!1,isEditFileTagShow:!1,isZipDialogOpen:!1,isRenameDialogShow:!1,isCreateFolderDialogShow:!1,isCreateFileDialogShow:!1,fileType:"",isPermissionDialogOpen:!1,isMutipleOperation:!1,isGridItemFreezed:!1,activeDirent:null},s.isRepoOwner=e.currentRepoInfo.owner_email===u.b6,s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.direntList,i=t.path,s=this.state.activeDirent?this.state.activeDirent:"",r=m.c.joinPath(i,s.name);return this.props.isDirentListLoading?(0,g.jsx)(R.Z,{}):(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("ul",{className:"grid-view",onClick:this.gridContainerClick,onContextMenu:this.onGridContainerContextMenu,onMouseDown:this.onGridContainerMouseDown,children:0!==n.length&&n.map((function(t,n){return(0,g.jsx)(tr,{dirent:t,repoID:e.props.repoID,path:e.props.path,onItemClick:e.props.onItemClick,currentRepoInfo:e.props.currentRepoInfo,showImagePopup:e.showImagePopup,onGridItemContextMenu:e.onGridItemContextMenu,onItemMove:e.props.onItemMove,onGridItemMouseDown:e.onGridItemMouseDown,onGridItemClick:e.onGridItemClick,activeDirent:e.state.activeDirent},n)}))}),(0,g.jsx)(Ws.Z,{id:"grid-item-contextmenu",onMenuItemClick:this.onMenuItemClick}),(0,g.jsx)(Ws.Z,{id:"dirent-grid-container-menu",onMenuItemClick:this.onMenuItemClick}),this.state.isCreateFolderDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(hi.Z,{parentPath:this.props.path,onAddFolder:this.onAddFolder,checkDuplicatedName:this.checkDuplicatedName,addFolderCancel:this.onCreateFolderToggle})}),this.state.isCreateFileDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(pi,{parentPath:this.props.path,fileType:this.state.fileType,onAddFile:this.props.onAddFile,checkDuplicatedName:this.checkDuplicatedName,toggleDialog:this.onCreateFileToggle})}),this.state.isMoveDialogShow&&(0,g.jsx)(fi,{path:this.props.path,repoID:this.props.repoID,repoEncrypted:this.props.currentRepoInfo.encrypted,isMutipleOperation:this.state.isMutipleOperation,onItemMove:this.props.onItemMove,onCancelMove:this.onMoveToggle,dirent:this.state.activeDirent}),this.state.isZipDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Ci.Z,{repoID:this.props.repoID,path:this.props.path,target:s.name,toggleDialog:this.closeZipDialog})}),this.state.isCopyDialogShow&&(0,g.jsx)(vi,{path:this.props.path,repoID:this.props.repoID,repoEncrypted:this.props.currentRepoInfo.encrypted,isMutipleOperation:this.state.isMutipleOperation,onItemCopy:this.props.onItemCopy,onCancelCopy:this.onCopyToggle,dirent:this.state.activeDirent}),this.state.isEditFileTagShow&&(0,g.jsx)(Si,{repoID:this.props.repoID,fileTagList:s.file_tags,filePath:r,toggleCancel:this.onEditFileTagToggle,onFileTagChanged:this.onFileTagChanged}),this.state.isShareDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Qe.Z,{itemType:s.type,itemName:s.name,itemPath:r,userPerm:s.permission,repoID:this.props.repoID,repoEncrypted:!1,enableDirPrivateShare:this.props.enableDirPrivateShare,isGroupOwnedRepo:this.props.isGroupOwnedRepo,toggleDialog:this.closeSharedDialog})}),this.state.isRenameDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(bi,{dirent:this.state.activeDirent,onRename:this.onItemRename,checkDuplicatedName:this.checkDuplicatedName,toggleCancel:this.onItemRenameToggle})}),this.state.isPermissionDialogOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(en,{toggleDialog:this.onPermissionItem,repoID:this.props.repoID,folderPath:r,folderName:s.name,isDepartmentRepo:this.props.isGroupOwnedRepo})}),this.state.isImagePopupOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Bs.Z,{imageItems:this.state.imageItems,imageIndex:this.state.imageIndex,closeImagePopup:this.closeImagePopup,moveToPrevImage:this.moveToPrevImage,moveToNextImage:this.moveToNextImage})})]})}}]),n}(a.Component)),ir=nr,sr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){return"/"===this.props.path&&0===this.props.direntList.length?(0,g.jsx)(As,{path:this.props.path,isDirentListLoading:this.props.isDirentListLoading,onAddFile:this.props.onAddFile}):(0,g.jsxs)(a.Fragment,{children:[this.props.isRepoInfoBarShow&&(0,g.jsx)(Us.Z,{repoID:this.props.repoID,currentPath:this.props.path,draftCounts:this.props.draftCounts,usedRepoTags:this.props.usedRepoTags,updateUsedRepoTags:this.props.updateUsedRepoTags,onFileTagChanged:this.props.onFileTagChanged}),(0,g.jsx)(ir,{path:this.props.path,repoID:this.props.repoID,currentRepoInfo:this.props.currentRepoInfo,isGroupOwnedRepo:this.props.isGroupOwnedRepo,userPerm:this.props.userPerm,enableDirPrivateShare:this.props.enableDirPrivateShare,direntList:this.props.direntList,fullDirentList:this.props.fullDirentList,onAddFile:this.props.onAddFile,onItemClick:this.props.onItemClick,onItemDelete:this.props.onItemDelete,onItemMove:this.props.onItemMove,onItemCopy:this.props.onItemCopy,onItemConvert:this.props.onItemConvert,isDirentListLoading:this.props.isDirentListLoading,updateDirent:this.props.updateDirent,onRenameNode:this.props.onRenameNode,showDirentDetail:this.props.showDirentDetail,onGridItemClick:this.props.onGridItemClick,isDirentDetailShow:this.props.isDirentDetailShow,onItemRename:this.props.onItemRename,onAddFolder:this.props.onAddFolder,onFileTagChanged:this.props.onFileTagChanged})]})}}]),n}(a.Component),rr=sr,or=n(95046),ar=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleChange=function(e){e.target.value.trim()?s.setState({isSubmitBtnActive:!0}):s.setState({isSubmitBtnActive:!1}),s.setState({newName:e.target.value})},s.handleSubmit=function(){var e=s.validateInput(),t=e.isValid,n=e.errMessage;if(t)if(s.checkDuplicatedName()){var i=(0,u.ih)('The name "{name}" is already taken. Please choose a different name.');i=i.replace("{name}",m.c.HTMLescape(s.state.newName)),s.setState({errMessage:i})}else s.props.onRename(s.state.newName);else s.setState({errMessage:n})},s.handleKeyDown=function(e){"Enter"===e.key&&s.handleSubmit()},s.toggle=function(){s.props.toggleCancel()},s.changeState=function(e){var t=e.object.name;s.setState({newName:t})},s.validateInput=function(){var e=s.state.newName.trim(),t=!0,n="";return e?e.indexOf("/")>-1?{isValid:t=!1,errMessage:n=(0,u.ih)("Name should not include '/'.")}:{isValid:t,errMessage:n}:{isValid:t=!1,errMessage:n=(0,u.ih)("Name is required.")}},s.checkDuplicatedName=function(){return s.props.checkDuplicatedName(s.state.newName)},s.onAfterModelOpened=function(){if(s.newInput.current){var e=s.props.currentNode,t=e.object.type;if(s.newInput.current.focus(),"file"===t){var n=e.object.name.lastIndexOf(".md");s.newInput.current.setSelectionRange(0,n,"forward")}else s.newInput.current.setSelectionRange(0,-1)}},s.state={newName:"",errMessage:"",isSubmitBtnActive:!1},s.newInput=a.createRef(),s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillMount",value:function(){this.setState({newName:this.props.currentNode.object.name})}},{key:"componentDidMount",value:function(){var e=this.props.currentNode;this.changeState(e)}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.changeState(e.currentNode)}},{key:"render",value:function(){var e=this.props.currentNode.object.type;return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.toggle,onOpened:this.onAfterModelOpened,children:[(0,g.jsx)(J.Z,{toggle:this.toggle,children:"file"===e?(0,u.ih)("Rename File"):(0,u.ih)("Rename Folder")}),(0,g.jsxs)(b.Z,{children:[(0,g.jsx)("p",{children:"file"===e?(0,u.ih)("New file name"):(0,u.ih)("New folder name")}),(0,g.jsx)(re.Z,{onKeyDown:this.handleKeyDown,innerRef:this.newInput,placeholder:"newName",value:this.state.newName,onChange:this.handleChange}),this.state.errMessage&&(0,g.jsx)(bt.Z,{color:"danger",className:"mt-2",children:this.state.errMessage})]}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.toggle,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.handleSubmit,disabled:!this.state.isSubmitBtnActive,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),lr=ar,cr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onNodeClick=function(e){s.setState({opNode:e}),m.c.imageCheck(e.object.name)?s.showNodeImagePopup(e):s.props.onNodeClick(e)},s.onMenuItemClick=function(e,t){switch(s.setState({opNode:t}),e){case"New Folder":t?s.onAddFolderToggle():s.onAddFolderToggle("root");break;case"New File":t?s.onAddFileToggle():s.onAddFileToggle("root");break;case"Rename":s.onRenameToggle();break;case"Delete":s.onDeleteNode(t);break;case"Copy":s.onCopyToggle();break;case"Move":s.onMoveToggle();break;case"Open in New Tab":s.onOpenFile(t)}},s.onAddFileToggle=function(e){if("root"===e){var t=s.props.treeData.root;s.setState({isAddFileDialogShow:!s.state.isAddFileDialogShow,opNode:t})}else s.setState({isAddFileDialogShow:!s.state.isAddFileDialogShow})},s.onAddFolderToggle=function(e){if("root"===e){var t=s.props.treeData.root;s.setState({isAddFolderDialogShow:!s.state.isAddFolderDialogShow,opNode:t})}else s.setState({isAddFolderDialogShow:!s.state.isAddFolderDialogShow})},s.onRenameToggle=function(){s.setState({isRenameDialogShow:!s.state.isRenameDialogShow})},s.onCopyToggle=function(){s.setState({isCopyDialogShow:!s.state.isCopyDialogShow})},s.onMoveToggle=function(){s.setState({isMoveDialogShow:!s.state.isMoveDialogShow})},s.onAddFolderNode=function(e){s.setState({isAddFolderDialogShow:!s.state.isAddFolderDialogShow}),s.props.onAddFolderNode(e)},s.onRenameNode=function(e){s.setState({isRenameDialogShow:!s.state.isRenameDialogShow});var t=s.state.opNode;s.props.onRenameNode(t,e)},s.onDeleteNode=function(e){s.props.onDeleteNode(e)},s.onOpenFile=function(e){var t=u.ze+"lib/"+s.props.repoID+"/file"+m.c.encodePath(e.path);window.open(t,"_blank")},s.checkDuplicatedName=function(e){var t=s.state.opNode;return(t.parentNode?t.parentNode:t).children.map((function(e){return e.object})).some((function(t){return t.name===e}))},s.showNodeImagePopup=function(e){var t=e.parentNode.children.filter((function(e){return m.c.imageCheck(e.object.name)})).map((function(e){return e.object.name}));s.setState({isNodeImagePopupOpen:!0,imageNodeItems:s.prepareImageItems(e),imageIndex:t.indexOf(e.object.name)})},s.prepareImageItems=function(e){var t=e.parentNode.children.filter((function(e){return m.c.imageCheck(e.object.name)})),n=!s.props.currentRepoInfo.encrypted;return t.map((function(t){return function(t){var i=t.object.name,r=m.c.encodePath(m.c.joinPath(e.parentNode.path,i)),o="gif"===i.substr(i.lastIndexOf(".")+1).toLowerCase(),a=s.props.repoID,l="";return l=n&&!o?"".concat(u.ze,"thumbnail/").concat(a,"/").concat(u.fp).concat(r):"".concat(u.ze,"repo/").concat(a,"/raw").concat(r),{name:i,url:"".concat(u.ze,"lib/").concat(a,"/file").concat(r),src:l}}(t)}))},s.closeNodeImagePopup=function(){s.setState({isNodeImagePopupOpen:!1})},s.moveToPrevImage=function(){var e=s.state.imageNodeItems.length;s.setState((function(t){return{imageIndex:(t.imageIndex+e-1)%e}}))},s.moveToNextImage=function(){var e=s.state.imageNodeItems.length;s.setState((function(t){return{imageIndex:(t.imageIndex+1)%e}}))},s.stopTreeScrollPropagation=function(e){e.stopPropagation()},s.state={opNode:null,isAddFileDialogShow:!1,isAddFolderDialogShow:!1,isRenameDialogShow:!1,isNodeImagePopupOpen:!1,imageNodeItems:[],imageIndex:0,isCopyDialogShow:!1,isMoveDialogShow:!1,isMutipleOperation:!1},s.isNodeMenuShow=!0,s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.setState({opNode:e.currentNode})}},{key:"render",value:function(){var e=this.props.navRate?"0 0 "+100*this.props.navRate+"%":"0 0 25%",t=this.props.inResizing?"none":"";return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("div",{className:"dir-content-nav",role:"navigation",style:{flex:e,userSelect:t},onScroll:this.stopTreeScrollPropagation,children:this.props.isTreeDataLoading?(0,g.jsx)(R.Z,{}):(0,g.jsx)(or.Z,{userPerm:this.props.userPerm,isNodeMenuShow:this.isNodeMenuShow,treeData:this.props.treeData,currentPath:this.props.currentPath,onNodeClick:this.onNodeClick,onNodeExpanded:this.props.onNodeExpanded,onNodeCollapse:this.props.onNodeCollapse,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.onFreezedItem,onUnFreezedItem:this.onUnFreezedItem,onItemMove:this.props.onItemMove,currentRepoInfo:this.props.currentRepoInfo,selectedDirentList:this.props.selectedDirentList,onItemsMove:this.props.onItemsMove})}),this.state.isAddFolderDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(hi.Z,{parentPath:this.state.opNode.path,onAddFolder:this.onAddFolderNode,checkDuplicatedName:this.checkDuplicatedName,addFolderCancel:this.onAddFolderToggle})}),this.state.isAddFileDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(pi,{parentPath:this.state.opNode.path,onAddFile:this.props.onAddFileNode,checkDuplicatedName:this.checkDuplicatedName,toggleDialog:this.onAddFileToggle})}),this.state.isRenameDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(lr,{currentNode:this.state.opNode,onRename:this.onRenameNode,checkDuplicatedName:this.checkDuplicatedName,toggleCancel:this.onRenameToggle})}),this.state.isCopyDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(vi,{path:this.state.opNode.parentNode.path,repoID:this.props.repoID,dirent:this.state.opNode.object,onItemCopy:this.props.onItemCopy,repoEncrypted:this.props.currentRepoInfo.encrypted,onCancelCopy:this.onCopyToggle,isMutipleOperation:this.state.isMutipleOperation})}),this.state.isMoveDialogShow&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(fi,{path:this.state.opNode.parentNode.path,repoID:this.props.repoID,dirent:this.state.opNode.object,onItemMove:this.props.onItemMove,repoEncrypted:this.props.currentRepoInfo.encrypted,onCancelMove:this.onMoveToggle,isMutipleOperation:this.state.isMutipleOperation})}),this.state.isNodeImagePopupOpen&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(Bs.Z,{imageItems:this.state.imageNodeItems,imageIndex:this.state.imageIndex,closeImagePopup:this.closeNodeImagePopup,moveToPrevImage:this.moveToPrevImage,moveToNextImage:this.moveToNextImage})})]})}}]),n}(a.Component);cr.defaultProps={navRate:.25};var hr=cr,pr=n(50699),dr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o.4?s.setState({inResizing:!1,navRate:.38}):s.setState({navRate:n})},s.setCookie=function(e,t){var n=e+"="+t+";";document.cookie=n},s.getCookie=function(e){for(var t=e+"=",n=document.cookie.split(";"),i=0,s=n.length;i=t.scrollHeight&&s.props.onListContainerScroll()},s.state={currentDirent:null},s.errMessage=(0,g.jsx)("div",{className:"message err-tip",children:(0,u.ih)("Folder does not exist.")}),s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.path===this.props.path&&e.updateDetail===this.props.updateDetail||this.setState({currentDirent:null})}},{key:"render",value:function(){var e=this.props,t=e.path,n=e.repoID,i=e.usedRepoTags,s=e.draftCounts,r=!1;return"/"===t&&(0===i.length&&0===s||(r=!0)),(0,g.jsxs)(a.Fragment,{children:[(0,g.jsxs)("div",{className:"cur-view-container",children:["read-only"===this.props.currentRepoInfo.status&&(0,g.jsx)("div",{className:"readonly-tip-message",children:(0,u.ih)("This library has been set to read-only by admin and cannot be updated.")}),(0,g.jsx)("div",{className:"cur-view-path",children:(0,g.jsx)(ts,{repoID:n,repoName:this.props.currentRepoInfo.repo_name,pathPrefix:this.props.pathPrefix,currentPath:this.props.path,userPerm:this.props.userPerm,isViewFile:this.props.isViewFile,onTabNavClick:this.props.onTabNavClick,onPathClick:this.onPathClick,updateUsedRepoTags:this.props.updateUsedRepoTags,fileTags:this.props.fileTags,onDeleteRepoTag:this.props.onDeleteRepoTag,direntList:this.props.direntList,sortBy:this.props.sortBy,sortOrder:this.props.sortOrder,sortItems:this.props.sortItems})}),(0,g.jsxs)("div",{className:"cur-view-content lib-content-container ".concat("column"===this.props.currentMode?"view-mode-container":""),onScroll:this.onItemsScroll,children:[!this.props.pathExist&&this.errMessage,this.props.pathExist&&(0,g.jsxs)(a.Fragment,{children:["list"===this.props.currentMode&&(0,g.jsx)(Qs,{path:this.props.path,repoID:n,currentRepoInfo:this.props.currentRepoInfo,isGroupOwnedRepo:this.props.isGroupOwnedRepo,userPerm:this.props.userPerm,enableDirPrivateShare:this.props.enableDirPrivateShare,isRepoInfoBarShow:r,usedRepoTags:this.props.usedRepoTags,draftCounts:this.props.draftCounts,updateUsedRepoTags:this.props.updateUsedRepoTags,isDirentListLoading:this.props.isDirentListLoading,direntList:this.props.direntList,fullDirentList:this.props.fullDirentList,sortBy:this.props.sortBy,sortOrder:this.props.sortOrder,sortItems:this.props.sortItems,onAddFolder:this.props.onAddFolder,onAddFile:this.props.onAddFile,onItemClick:this.onItemClick,onItemSelected:this.onItemSelected,onItemDelete:this.onItemDelete,onItemRename:this.props.onItemRename,onItemMove:this.onItemMove,onItemCopy:this.props.onItemCopy,onItemConvert:this.props.onItemConvert,onDirentClick:this.onDirentClick,updateDirent:this.props.updateDirent,isAllItemSelected:this.props.isAllDirentSelected,onAllItemSelected:this.props.onAllDirentSelected,selectedDirentList:this.props.selectedDirentList,onItemsMove:this.props.onItemsMove,onItemsCopy:this.props.onItemsCopy,onItemsDelete:this.props.onItemsDelete,onFileTagChanged:this.props.onFileTagChanged,showDirentDetail:this.props.showDirentDetail,loadDirentList:this.props.loadDirentList}),"grid"===this.props.currentMode&&(0,g.jsx)(rr,{path:this.props.path,repoID:n,currentRepoInfo:this.props.currentRepoInfo,isGroupOwnedRepo:this.props.isGroupOwnedRepo,userPerm:this.props.userPerm,enableDirPrivateShare:this.props.enableDirPrivateShare,onRenameNode:this.props.onRenameNode,isRepoInfoBarShow:r,usedRepoTags:this.props.usedRepoTags,draftCounts:this.props.draftCounts,updateUsedRepoTags:this.props.updateUsedRepoTags,isDirentListLoading:this.props.isDirentListLoading,direntList:this.props.direntList,fullDirentList:this.props.fullDirentList,onAddFile:this.props.onAddFile,onItemClick:this.onItemClick,onItemDelete:this.props.onItemDelete,onItemMove:this.onItemMove,onItemCopy:this.props.onItemCopy,onItemConvert:this.props.onItemConvert,updateDirent:this.props.updateDirent,onAddFolder:this.props.onAddFolder,showDirentDetail:this.props.showDirentDetail,onGridItemClick:this.onGridItemClick,isDirentDetailShow:this.props.isDirentDetailShow,onItemRename:this.props.onItemRename,onFileTagChanged:this.props.onFileTagChanged}),"column"===this.props.currentMode&&(0,g.jsx)(gr,{path:this.props.path,repoID:n,currentRepoInfo:this.props.currentRepoInfo,isGroupOwnedRepo:this.props.isGroupOwnedRepo,userPerm:this.props.userPerm,enableDirPrivateShare:this.props.enableDirPrivateShare,isTreeDataLoading:this.props.isTreeDataLoading,treeData:this.props.treeData,currentNode:this.props.currentNode,onNodeClick:this.props.onNodeClick,onNodeCollapse:this.props.onNodeCollapse,onNodeExpanded:this.props.onNodeExpanded,onAddFolderNode:this.props.onAddFolder,onAddFileNode:this.props.onAddFile,onRenameNode:this.props.onRenameNode,onDeleteNode:this.props.onDeleteNode,isViewFile:this.props.isViewFile,isFileLoading:this.props.isFileLoading,isFileLoadedErr:this.props.isFileLoadedErr,hash:this.props.hash,isDraft:this.props.isDraft,hasDraft:this.props.hasDraft,goDraftPage:this.props.goDraftPage,filePermission:this.props.filePermission,content:this.props.content,lastModified:this.props.lastModified,latestContributor:this.props.latestContributor,onLinkClick:this.props.onLinkClick,isRepoInfoBarShow:r,usedRepoTags:this.props.usedRepoTags,draftCounts:this.props.draftCounts,updateUsedRepoTags:this.props.updateUsedRepoTags,isDirentListLoading:this.props.isDirentListLoading,direntList:this.props.direntList,fullDirentList:this.props.fullDirentList,sortBy:this.props.sortBy,sortOrder:this.props.sortOrder,sortItems:this.props.sortItems,onAddFolder:this.props.onAddFolder,onAddFile:this.props.onAddFile,onItemClick:this.onItemClick,onItemSelected:this.onItemSelected,onItemDelete:this.onItemDelete,onItemRename:this.props.onItemRename,onItemMove:this.onItemMove,onItemCopy:this.props.onItemCopy,onItemConvert:this.props.onItemConvert,onDirentClick:this.onDirentClick,updateDirent:this.props.updateDirent,isAllItemSelected:this.props.isAllDirentSelected,onAllItemSelected:this.props.onAllDirentSelected,selectedDirentList:this.props.selectedDirentList,onItemsMove:this.props.onItemsMove,onItemsCopy:this.props.onItemsCopy,onItemsDelete:this.props.onItemsDelete,onFileTagChanged:this.props.onFileTagChanged,showDirentDetail:this.props.showDirentDetail})]})]})]}),this.props.isDirentDetailShow&&(0,g.jsx)(a.Fragment,{children:(0,g.jsx)("div",{className:"cur-view-detail",children:"/"!==this.props.path||this.state.currentDirent?(0,g.jsx)(Es,{repoID:n,path:this.props.path,dirent:this.state.currentDirent,currentRepoInfo:this.props.currentRepoInfo,fileTags:this.props.isViewFile?this.props.fileTags:[],onFileTagChanged:this.props.onFileTagChanged,onItemDetailsClose:this.props.closeDirentDetail,direntDetailPanelTab:this.props.direntDetailPanelTab}):(0,g.jsx)(Mt,{currentRepo:this.props.currentRepoInfo,closeDetails:this.props.closeDirentDetail})})})]})}}]),n}(a.Component),vr=n(53008),xr=n.n(vr),Dr="uploading",wr="error",jr="isSaving",yr="uploaded",Sr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onUploadCancel=function(e){e.preventDefault(),s.props.onUploadCancel(s.props.resumableFile)},s.onUploadRetry=function(e){e.preventDefault(),s.props.onUploadRetry(s.props.resumableFile)},s.formatFileSize=function(e){return"number"!==typeof e?"":e>=1e9?(e/1e9).toFixed(1)+" G":e>=1e6?(e/1e6).toFixed(1)+" M":e>=1e3?(e/1e3).toFixed(1)+" K":e.toFixed(1)+" B"},s.state={uploadState:Dr},s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=e.resumableFile,n=Dr;t.error?n=wr:(0!==t.remainingTime||t.isSaved||(n=jr),t.isSaved&&(n=yr)),this.setState({uploadState:n})}},{key:"render",value:function(){var e=this.props.resumableFile,t=Math.round(100*e.progress()),n=e.error,i=e.newFileName,s=this.formatFileSize(e.size);return(0,g.jsxs)("tr",{className:"file-upload-item",children:[(0,g.jsx)("td",{className:"upload-name",children:(0,g.jsx)("div",{className:"ellipsis",title:i,children:i})}),(0,g.jsx)("td",{className:"ellipsis",children:(0,g.jsx)("span",{className:"file-size",title:s,children:s})}),(0,g.jsxs)("td",{className:"upload-progress ellipsis",children:[(this.state.uploadState===Dr||this.state.uploadState===jr)&&(0,g.jsxs)(a.Fragment,{children:[e.size>=1e8&&(0,g.jsxs)(a.Fragment,{children:[e.isUploading()&&(0,g.jsxs)("div",{className:"progress-container",children:[(0,g.jsx)("div",{className:"progress",children:(0,g.jsx)("div",{className:"progress-bar",role:"progressbar",style:{width:"".concat(t,"%")},"aria-valuenow":t,"aria-valuemin":"0","aria-valuemax":"100"})}),-1===e.remainingTime&&(0,g.jsx)("div",{className:"progress-text",children:(0,u.ih)("Preparing to upload...")}),e.remainingTime>0&&(0,g.jsxs)("div",{className:"progress-text",children:[(0,u.ih)("Remaining")," ",m.c.formatTime(e.remainingTime)]}),0===e.remainingTime&&(0,g.jsx)("div",{className:"progress-text",children:(0,u.ih)("Indexing...")})]}),!e.isUploading()&&(0,g.jsx)("div",{className:"progress-container d-flex align-items-center",children:(0,g.jsx)("div",{className:"progress",children:(0,g.jsx)("div",{className:"progress-bar",role:"progressbar",style:{width:"".concat(t,"%")},"aria-valuenow":t,"aria-valuemin":"0","aria-valuemax":"100"})})})]}),e.size<1e8&&(0,g.jsx)("div",{className:"progress-container d-flex align-items-center",children:(0,g.jsx)("div",{className:"progress",children:(0,g.jsx)("div",{className:"progress-bar",role:"progressbar",style:{width:"".concat(t,"%")},"aria-valuenow":t,"aria-valuemin":"0","aria-valuemax":"100"})})})]}),this.state.uploadState===wr&&(0,g.jsx)("div",{className:"message err-message ml-0",dangerouslySetInnerHTML:{__html:n}})]}),(0,g.jsx)("td",{className:"upload-operation ellipsis",children:(0,g.jsxs)(a.Fragment,{children:[this.state.uploadState===Dr&&(0,g.jsx)("a",{href:"#",onClick:this.onUploadCancel,children:(0,u.ih)("Cancel")}),this.state.uploadState===wr&&(0,g.jsx)("a",{href:"#",onClick:this.onUploadRetry,children:(0,u.ih)("Retry")}),this.state.uploadState===jr&&(0,g.jsx)("span",{className:"saving",children:(0,u.ih)("Saving...")}),this.state.uploadState===yr&&(0,g.jsx)("span",{className:"uploaded",children:(0,u.ih)("Uploaded")})]})})]})}}]),n}(a.Component),Cr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.file,t=(0,u.ih)("Please upload files less than {placeholder}M").replace("{placeholder}",u.Og);return(0,g.jsxs)("tr",{className:"file-upload-item",children:[(0,g.jsx)("td",{className:"upload-name",children:(0,g.jsx)("div",{className:"ellipsis",title:e.name,children:e.name})}),(0,g.jsx)("td",{colSpan:3,className:"error",children:t})]})}}]),n}(a.Component),br=Cr,kr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onCancelAllUploading=function(){s.props.onCancelAllUploading()},s.onMinimizeUpload=function(e){e.nativeEvent.stopImmediatePropagation(),s.setState({isMinimized:!s.state.isMinimized})},s.onCloseUpload=function(e){e.nativeEvent.stopImmediatePropagation(),s.props.onCloseUploadDialog()},s.state={isMinimized:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=m.c.formatBitRate(this.props.uploadBitrate),n=(0,u.ih)("File Upload"),i=(0,u.ih)("File Uploading...")+" "+this.props.totalProgress+"% ("+t+")",s=(0,g.jsx)("span",{className:"sf2-icon-minus",onClick:this.onMinimizeUpload}),r=(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("span",{className:"sf2-icon-minus",onClick:this.onMinimizeUpload}),(0,g.jsx)("span",{className:"sf2-icon-x1",onClick:this.onCloseUpload})]}),o=this.props,l=o.totalProgress,c=o.allFilesUploaded,h=o.retryFileList;return(0,g.jsxs)("div",{className:"uploader-list-view mw-100",style:{height:this.state.isMinimized?"2.25rem":"20rem"},children:[(0,g.jsxs)("div",{className:"uploader-list-header",children:[(0,g.jsx)("div",{className:"title",children:100===l?n:i}),(0,g.jsx)("div",{className:"uploader-options",children:100===l||c?r:s})]}),(0,g.jsxs)("div",{className:"uploader-list-content",children:[(0,g.jsxs)("div",{className:"text-right mt-2",children:[h.length>0?(0,g.jsx)("span",{className:"cursor-pointer",onClick:this.props.onUploadRetryAll,children:(0,u.ih)("Retry All")}):(0,g.jsx)("span",{className:"cursor-pointer disabled-link",children:(0,u.ih)("Retry All")}),c?(0,g.jsx)("span",{className:"cursor-pointer ml-3 disabled-link",children:(0,u.ih)("Cancel All")}):(0,g.jsx)("span",{className:"cursor-pointer ml-3",onClick:this.onCancelAllUploading,children:(0,u.ih)("Cancel All")})]}),(0,g.jsxs)("table",{className:"table-thead-hidden",children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("name")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("size")}),(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("progress")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("state")})]})}),(0,g.jsxs)("tbody",{children:[this.props.forbidUploadFileList.map((function(e,t){return(0,g.jsx)(br,{file:e},t)})),this.props.uploadFileList.map((function(t,n){return(0,g.jsx)(Sr,{resumableFile:t,onUploadCancel:e.props.onUploadCancel,onUploadRetry:e.props.onUploadRetry},n)}))]})]})]})]})}}]),n}(a.Component),Ir=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o0&&0===t.length&&s.setState({isUploadProgressDialogShow:!0,totalProgress:100})},s.setUploadFileList=function(){var e=s.resumable.files;s.setState({uploadFileList:e,isUploadProgressDialogShow:!0}),m.c.registerGlobalVariable("uploader","isUploadProgressDialogShow",!0)},s.onFileProgress=function(e){var t=s.getBitrate(),n=s.state.uploadFileList.map((function(n){if(n.uniqueIdentifier===e.uniqueIdentifier&&t){var i=8*(n.size-n.size*n.progress()),s=Math.floor(i/t);n.remainingTime=s}return n}));s.setState({uploadBitrate:t,uploadFileList:n})},s.getBitrate=function(){var e=0,t=0,n=(new Date).getTime();if(s.resumable.files.forEach((function(t){e+=t.progress()*t.size})),s.timestamp){var i=n-s.timestamp;if(i'+m.c.HTMLescape(o)+"",l=(0,u.ih)("Are you sure you want to delete %s ?").replace("%s",a),c="";return(t>0||n>0)&&(c=(0,u.ih)("This folder has been shared to {user_amount} user(s) and {group_amount} group(s).").replace("{user_amount}",t).replace("{group_amount}",n)),(0,g.jsxs)(d.Z,{isOpen:!0,toggle:r,children:[(0,g.jsx)(J.Z,{toggle:r,children:(0,u.ih)("Delete Folder")}),(0,g.jsxs)(b.Z,{children:[(0,g.jsx)("p",{dangerouslySetInnerHTML:{__html:l}}),c&&(0,g.jsx)("p",{className:"error",children:c})]}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:r,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.deleteFolder,children:(0,u.ih)("Delete")})]})]})}}]),n}(a.Component),_r=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).showDirentDetail=function(e){e?s.setState({direntDetailPanelTab:e},(function(){s.setState({isDirentDetailShow:!0})})):s.setState({direntDetailPanelTab:"",isDirentDetailShow:!0})},s.toggleDirentDetail=function(){s.setState({direntDetailPanelTab:"",isDirentDetailShow:!s.state.isDirentDetailShow})},s.closeDirentDetail=function(){s.setState({isDirentDetailShow:!1,direntDetailPanelTab:""})},s.onpopstate=function(e){if(e.state&&e.state.key){if("/"===s.state.path)return;s.loadDirentList("/"),s.setState({path:"/",isViewFile:!1})}else if(e.state&&e.state.path){var t=e.state.path;if("column"===s.state.currentMode&&m.c.isMarkdownFile(t))return void s.showFile(t);s.loadDirentList(t),s.setState({path:t,isViewFile:!1})}},s.onRepoUpdateEvent=function(){var e=new Date;if(!(parseFloat(e-s.lastModifyTime)/1e3<=5)){var t=s.props.repoID,n=s.state,i=n.path,r=n.dirID;"column"===s.state.currentMode?s.state.isViewFile?s.updateColumnMarkdownData(i):w.I.dirMetaData(t,i).then((function(e){e.data.id!==r&&s.loadDirentList(i)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)})):w.I.dirMetaData(t,i).then((function(e){e.data.id!==r&&s.loadDirentList(i)})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))}},s.updateUsedRepoTags=function(){var e=s.props.repoID;w.I.listRepoTags(e).then((function(e){var t=[];e.data.repo_tags.forEach((function(e){var n=new ii.Z(e);n.fileCount>0&&t.push(n)})),s.setState({usedRepoTags:t})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.updateColumnMarkdownData=function(e){var t=s.props.repoID;s.setState({path:e,isViewFile:!0}),w.I.getFileInfo(t,e).then((function(n){var i=n.data,r=i.mtime,o=i.permission,a=i.last_modifier_name,l=i.is_draft,c=i.has_draft,h=i.draft_id;w.I.getFileDownloadLink(t,e).then((function(e){w.I.getFileContent(e.data).then((function(e){s.state.content!==e.data&&s.setState({isFileLoading:!0}),s.setState({content:e.data,filePermission:o,latestContributor:a,lastModified:A().unix(r).fromNow(),isFileLoading:!1,isFileLoadedErr:!1,isDraft:l,hasDraft:c,draftID:h})}))}))})).catch((function(){s.setState({isFileLoading:!1,isFileLoadedErr:!0})}))},s.loadDirData=function(e){var t=s.props.repoID;ei.watchRepo(t,s.onRepoUpdateEvent),s.updateUsedRepoTags(),u.NT&&w.I.getRepoDraftCounts(t).then((function(e){s.setState({draftCounts:e.data.draft_counts})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)})),m.c.isMarkdownFile(e)?w.I.getFileInfo(s.props.repoID,e).then((function(){"column"!==s.state.currentMode&&(Ye.ZP.save("seafile_view_mode","column"),s.setState({currentMode:"column"})),s.loadSidePanel(e),s.showFile(e)})).catch((function(){"column"===s.state.currentMode?(s.loadSidePanel(e),s.showDir(e)):s.showDir(e)})):"column"===s.state.currentMode?(s.loadSidePanel(e),s.showDir(e)):s.showDir(e)},s.loadSidePanel=function(e){var t=s.props.repoID;"/"===e?w.I.listDir(t,"/").then((function(e){var t=e.data,n=t.dirent_list,i=t.user_perm,r=s.state.treeData;s.addResponseListToNode(n,r.root),s.setState({isTreeDataLoading:!1,treeData:r,userPerm:i})})).catch((function(){s.setState({isTreeDataLoading:!1})})):s.loadNodeAndParentsByPath(e)},s.showDir=function(e){var t=s.props.repoID;if(s.state.isSessionExpired||s.setState({isDirentListLoading:!0,isViewFile:!1,selectedDirentList:[]}),s.loadDirentList(e),s.resetShowLength(),s.isNeedUpdateHistoryState){var n=s.state.currentRepoInfo,i=u.ze+"library/"+t+"/"+encodeURIComponent(n.repo_name)+m.c.encodePath(e);window.history.pushState({url:i,path:e},e,i)}else s.isNeedUpdateHistoryState=!0},s.showFile=function(e){var t=s.props.repoID;"column"===s.state.currentMode&&w.I.listFileTags(t,e).then((function(e){var t=e.data.file_tags.map((function(e){return new ni.Z(e)}));s.setState({fileTags:t})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)})),s.setState({isFileLoading:!0,path:e,isViewFile:!0}),w.I.getFileInfo(t,e).then((function(n){var i=n.data,r=i.mtime,o=i.permission,a=i.last_modifier_name,l=i.is_draft,c=i.has_draft,h=i.draft_id;w.I.getFileDownloadLink(t,e).then((function(e){w.I.getFileContent(e.data).then((function(e){s.setState({content:e.data,filePermission:o,latestContributor:a,lastModified:A().unix(r).fromNow(),isFileLoading:!1,isFileLoadedErr:!1,isDraft:l,hasDraft:c,draftID:h})}))}))})).catch((function(e){var t=m.c.getErrorMsg(e,!0);e.response&&403===e.response.status||j.Z.danger(t),s.setState({isFileLoading:!1,isFileLoadedErr:!0})}));var n=s.state.currentRepoInfo,i=u.ze+"library/"+t+"/"+encodeURIComponent(n.repo_name)+m.c.encodePath(e);window.history.pushState({url:i,path:e},e,i)},s.loadDirentList=function(e){var t=s.props.repoID;w.I.listDir(t,e,{with_thumbnail:!0}).then((function(n){var i=[];n.data.dirent_list.forEach((function(e){var t=new ti.Z(e);i.push(t)})),s.setState({pathExist:!0,userPerm:n.data.user_perm,isDirentListLoading:!1,direntList:m.c.sortDirents(i,s.state.sortBy,s.state.sortOrder),dirID:n.data.dir_id,path:e,isSessionExpired:!1}),!s.state.repoEncrypted&&i.length&&s.getThumbnails(t,e,s.state.direntList),s.state.currentRepoInfo.is_admin&&(s.foldersSharedOut?s.identifyFoldersSharedOut():(s.foldersSharedOut=[],w.I.getAllRepoFolderShareInfo(t).then((function(e){e.data.share_info_list.forEach((function(e){-1===s.foldersSharedOut.indexOf(e.path)&&s.foldersSharedOut.push(e.path)})),s.identifyFoldersSharedOut()}))))})).catch((function(e){m.c.getErrorMsg(e,!0),e.response&&403===e.response.status?s.setState({isDirentListLoading:!1}):s.setState({isDirentListLoading:!1,pathExist:!1})}))},s.identifyFoldersSharedOut=function(){var e=s.state,t=e.path,n=e.direntList;0!=s.foldersSharedOut.length&&(n.forEach((function(e){"dir"==e.type&&-1!==s.foldersSharedOut.indexOf(m.c.joinPath(t,e.name)+"/")&&(e.has_been_shared_out=!0)})),s.setState({direntList:n}))},s.onListContainerScroll=function(){var e=s.state.itemsShowLength+100;s.setState({itemsShowLength:e})},s.resetShowLength=function(){s.setState({itemsShowLength:100})},s.getThumbnails=function(e,t,n){var i=n.filter((function(e){return(m.c.imageCheck(e.name)||u.eA&&m.c.videoCheck(e.name))&&!e.encoded_thumbnail_src}));if(0!=i.length){var r=(0,D.Z)(s),o=i.length;!function s(a){var l=i[a],c=[t,l.name].join("/");w.I.createThumbnail(e,c,48).then((function(e){l.encoded_thumbnail_src=e.data.encoded_thumbnail_src})).catch((function(e){})).then((function(){a1?(0,u.ih)("Restored {name} and {n} other items"):(0,u.ih)("Restored {name}");r=r.replace("{name}",n[0].path.split("/").pop()).replace("{n}",n.length-1),j.Z.success(r)}if(i.length){var o=i.length>1?(0,u.ih)("Failed to restore {name} and {n} other items"):(0,u.ih)("Failed to restore {name}");o=o.replace("{name}",i[0].path.split("/").pop()).replace("{n}",i.length-1),j.Z.danger(o)}})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onDeleteItems=function(){var e=s.props.repoID,t=s.getSelectedDirentPaths(),n=s.getSelectedDirentNames();s.setState({updateDetail:!s.state.updateDetail}),w.I.deleteMutipleDirents(e,s.state.path,n).then((function(e){"column"===s.state.currentMode&&s.deleteTreeNodes(t),s.deleteDirents(n);var i="";i=t.length>1?(i=(i=(0,u.ih)("Successfully deleted {name} and {n} other items.")).replace("{name}",n[0])).replace("{n}",n.length-1):(i=(0,u.ih)("Successfully deleted {name}.")).replace("{name}",n[0]);var r=(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)("span",{children:i}),(0,g.jsx)("a",{className:"action-link p-0 ml-1",href:"#",onClick:s.restoreDeletedDirents.bind((0,D.Z)(s),e.data.commit_id,t),children:(0,u.ih)("Undo")})]});j.Z.success(r,{duration:5})})).catch((function(e){var t=m.c.getErrorMsg(e);t===(0,u.ih)("Error")&&(t=(t=(t=(0,u.ih)("Failed to delete {name} and {n} other items.")).replace("{name}",n[0])).replace("{n}",n.length-1)),j.Z.danger(t)}))},s.onAddFolder=function(e){var t=s.props.repoID;w.I.createDir(t,e).then((function(){var t=m.c.getFileName(e),n=m.c.getDirName(e);"column"===s.state.currentMode&&s.addNodeToTree(t,n,"dir"),n!==s.state.path||s.state.isViewFile||s.addDirent(t,"dir")})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onAddFile=function(e,t,n){var i=s.props.repoID;w.I.createFile(i,e,t).then((function(t){var r=m.c.getFileName(e),o=m.c.getDirName(e);if("column"===s.state.currentMode&&s.addNodeToTree(r,o,"file"),o===s.state.path&&!s.state.isViewFile){if(n)return void w.I.sdocMarkAsDraft(i,e).then((function(e){s.addDirent(r,"file",e.data.size,n)})).catch((function(e){var n=m.c.getErrorMsg(e);j.Z.danger(n),s.addDirent(r,"file",t.data.size)}));s.addDirent(r,"file",t.data.size)}})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.switchViewMode=function(e){if(e!==s.state.currentMode)if("detail"!==e){Ye.ZP.save("seafile_view_mode",e);var t=s.state.path;if("column"===s.state.currentMode&&s.state.isViewFile){t=m.c.getDirName(t),s.setState({path:t,isViewFile:!1});var n=s.state.currentRepoInfo,i=u.ze+"library/"+n.repo_id+"/"+encodeURIComponent(n.repo_name)+m.c.encodePath(t);window.history.pushState({url:i,path:t},t,i)}"column"===e&&s.loadSidePanel(s.state.path),s.isNeedUpdateHistoryState=!1,s.setState({currentMode:e}),s.showDir(t)}else s.toggleDirentDetail()},s.onSearchedClick=function(e){var t=e.is_dir?e.path.slice(0,e.path.length-1):e.path;if(s.state.currentPath!==t)if("column"===s.state.currentMode){for(var n=-1,i=m.c.getPaths(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:null,n=m.c.getFileName(e);if(t!==s.state.path){var i=s.state.direntList.filter((function(e){return e.name!==n}));s.recaculateSelectedStateAfterDirentDeleted(n,i),s.setState({direntList:i})}else s.loadDirentList(s.state.path)},s.moveDirents=function(e){var t=s.state.direntList.filter((function(t){return-1===e.indexOf(t.name)}));s.setState({direntList:t,selectedDirentList:[],isDirentSelected:!1,isAllDirentSelected:!1})},s.updateDirent=function(e,t,n){var i=s.state.direntList.map((function(i){return i.name===e.name&&(i[t]=n),i}));s.setState({direntList:i})},s.loadTreeNodeByPath=function(e){var t=s.props.repoID,n=s.state.treeData.clone(),i=n.getNodeByPath(e);i.isLoaded?(n.getNodeByPath(i.parentNode.path).isExpanded=!0,s.setState({treeData:n,currentNode:i})):w.I.listDir(t,i.path).then((function(e){s.addResponseListToNode(e.data.dirent_list,i),n.getNodeByPath(i.parentNode.path).isExpanded=!0,s.setState({treeData:n,currentNode:i})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.loadNodeAndParentsByPath=function(e){var t=s.props.repoID,n=s.state.treeData.clone();m.c.isMarkdownFile(e)&&(e=m.c.getDirName(e)),w.I.listDir(t,e,{with_parents:!0}).then((function(e){for(var t=e.data,i=t.dirent_list,r=t.user_perm,o={},a=0;a0&&(n=n.filter((function(t){return t.name!==e}))),s.setState({selectedDirentList:n,isDirentSelected:n.length>0,isAllDirentSelected:n.length===t.length})},s.onLibDecryptDialog=function(){s.setState({libNeedDecrypt:!1}),s.loadDirData(s.state.path)},s.goDraftPage=function(){window.open(u.ze+"drafts/"+s.state.draftID+"/")},s.sortItems=function(e,t){Ye.ZP.save("seafile-repo-dir-sort-by",e),Ye.ZP.save("seafile-repo-dir-sort-order",t),s.setState({sortBy:e,sortOrder:t,items:m.c.sortDirents(s.state.direntList,e,t)})},s.onUploadFile=function(e){e.nativeEvent.stopImmediatePropagation(),s.uploader.onFileUpload()},s.onUploadFolder=function(e){e.nativeEvent.stopImmediatePropagation(),s.uploader.onFolderUpload()},s.onToolbarFileTagChanged=function(){var e=s.props.repoID,t=s.state.path;w.I.listFileTags(e,t).then((function(e){var t=e.data.file_tags.map((function(e){return new ni.Z(e)}));s.setState({fileTags:t})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.unSelectDirent=function(){s.setState({isDirentSelected:!1,selectedDirentList:[]});s.onDirentSelected({})},s.onDeleteRepoTag=function(e){var t=s.state.direntList.map((function(t){if(t.file_tags){var n=t.file_tags.filter((function(t){return t.repo_tag_id!==e}));t.file_tags=n}return t}));s.setState({direntList:t}),s.updateUsedRepoTags()},s.handleSubmit=function(e){var t={share_type:"personal",from:s.state.currentRepoInfo.owner_email};w.I.leaveShareRepo(s.props.repoID,t).then((function(e){(0,c.c4)(u.ze+"shared-libs/")})).catch((function(e){var t=m.c.getErrorMsg(e,!0);j.Z.danger(t)})),e.preventDefault()},s.state={currentMode:Ye.ZP.load("seafile_view_mode")||"list",path:"",pathExist:!0,isViewFile:!1,hash:"",currentRepoInfo:null,repoName:"",repoEncrypted:!1,libNeedDecrypt:!1,isGroupOwnedRepo:!1,userPerm:"",selectedDirentList:[],isDraft:!1,hasDraft:!1,fileTags:[],draftID:"",draftCounts:0,usedRepoTags:[],isTreeDataLoading:!0,treeData:oi.Z.buildTree(),currentNode:null,isFileLoading:!0,isFileLoadedErr:!1,filePermission:"",content:"",lastModified:"",latestContributor:"",isDirentListLoading:!0,direntList:[],isDirentSelected:!1,sortBy:Ye.ZP.load("seafile-repo-dir-sort-by")||"name",sortOrder:Ye.ZP.load("seafile-repo-dir-sort-order")||"asc",isAllDirentSelected:!1,dirID:"",errorMsg:"",isDirentDetailShow:!1,direntDetailPanelTab:"",updateDetail:!1,itemsShowLength:100,isSessionExpired:!1,isCopyMoveProgressDialogShow:!1,isDeleteFolderDialogOpen:!1,asyncCopyMoveTaskId:"",asyncOperationType:"move",asyncOperationProgress:0,asyncOperatedFilesLength:0},s.oldonpopstate=window.onpopstate,window.onpopstate=s.onpopstate,s.lastModifyTime=new Date,s.isNeedUpdateHistoryState=!0,s.currentMoveItemName="",s.currentMoveItemPath="",s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillMount",value:function(){var e=window.location.hash;"#"===e.slice(0,1)&&this.setState({hash:e})}},{key:"componentDidMount",value:function(){var e=(0,dn.Z)((0,pn.Z)().mark((function e(){var t,n,i,s,r,o,a,l,c;return(0,pn.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this.props.repoID,n=window.location.href.split("#")[0],n=decodeURIComponent(n),(i=(i=n.slice(n.indexOf(t)+t.length+1)).slice(i.indexOf("/"))).length>1&&"/"===i[i.length-1]&&(i=i.slice(0,i.length-1)),e.prev=6,e.next=9,w.I.getRepoInfo(t);case 9:if(s=e.sent,r=new si.Z(s.data),o=r.owner_email.indexOf("@seafile_group")>-1,this.setState({currentRepoInfo:r}),!r.permission.startsWith("custom-")){e.next=19;break}return a=r.permission.split("-")[1],e.next=17,w.I.getCustomPermission(t,a);case 17:l=e.sent,window.custom_permission=l.data.permission;case 19:this.isNeedUpdateHistoryState=!1,this.setState({repoName:r.repo_name,libNeedDecrypt:r.lib_need_decrypt,repoEncrypted:r.encrypted,isGroupOwnedRepo:o,path:i}),r.lib_need_decrypt||this.loadDirData(i),e.next=27;break;case 24:e.prev=24,e.t0=e.catch(6),e.t0.response?403==e.t0.response.status?(this.setState({isDirentListLoading:!1,errorMsg:(0,u.ih)("Permission denied")}),c=(0,u.ih)("Permission denied"),j.Z.danger(c)):404==e.t0.response.status?this.setState({isDirentListLoading:!1,errorMsg:(0,u.ih)("Library share permission not found.")}):this.setState({isDirentListLoading:!1,errorMsg:(0,u.ih)("Error")}):this.setState({isDirentListLoading:!1,errorMsg:(0,u.ih)("Please check the network.")});case 27:case"end":return e.stop()}}),e,this,[[6,24]])})));return function(){return e.apply(this,arguments)}}()},{key:"componentWillUnmount",value:function(){window.onpopstate=this.oldonpopstate,ei.unwatchRepo(this.props.repoID,this.onRepoUpdateEvent)}},{key:"componentDidUpdate",value:function(){this.lastModifyTime=new Date}},{key:"getAsyncCopyMoveProgress",value:function(){var e=(0,dn.Z)((0,pn.Z)().mark((function e(){var t,n,i,s,r,o,a,l,c,h;return(0,pn.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this.state,n=t.asyncOperationType,i=t.asyncCopyMoveTaskId,e.prev=1,e.next=4,w.I.queryAsyncOperationProgress(i);case 4:if(s=e.sent,!(r=s.data).failed){e.next=12;break}return o=(0,u.ih)("Failed to move files to another library."),"copy"===n&&(o=(0,u.ih)("Failed to copy files to another library.")),j.Z.danger(o),this.setState({asyncOperationProgress:0,isCopyMoveProgressDialogShow:!1}),e.abrupt("return");case 12:if(!r.successful){e.next=19;break}return"move"===n&&(this.currentMoveItemName&&this.currentMoveItemPath?("column"===this.state.currentMode&&this.deleteTreeNode(this.currentMoveItemPath),this.moveDirent(this.currentMoveItemName),this.currentMoveItemName="",this.currentMoveItemPath=""):("column"===this.state.currentMode&&(a=this.getSelectedDirentPaths(),this.deleteTreeNodes(a)),l=this.getSelectedDirentNames(),this.moveDirents(l))),this.setState({isCopyMoveProgressDialogShow:!1}),c=(0,u.ih)("Successfully moved files to another library."),"copy"===n&&(c=(0,u.ih)("Successfully copied files to another library.")),j.Z.success(c),e.abrupt("return");case 19:h=r.total?parseInt((r.done/r.total*100).toFixed(2)):0,this.getAsyncCopyMoveProgress(),this.setState({asyncOperationProgress:h}),e.next=27;break;case 24:e.prev=24,e.t0=e.catch(1),this.setState({asyncOperationProgress:0,isCopyMoveProgressDialogShow:!1});case 27:case"end":return e.stop()}}),e,this,[[1,24]])})));return function(){return e.apply(this,arguments)}}()},{key:"renameItemAjaxCallback",value:function(e,t){"column"===this.state.currentMode&&this.renameTreeNode(e,t),this.renameDirent(e,t)}},{key:"deleteItem",value:function(e,t){var n=this,i=this.props.repoID;t?this.setState({folderToDelete:e},(function(){n.toggleDeleteFolderDialog()})):w.I.deleteFile(i,e).then((function(i){n.deleteItemAjaxCallback(e,t);var s=m.c.getFileName(e),r=(0,u.ih)("Successfully deleted {name}").replace("{name}",s),o=(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)("span",{children:r}),(0,g.jsx)("a",{className:"action-link p-0 ml-1",href:"#",onClick:n.restoreDeletedDirents.bind(n,i.data.commit_id,[e]),children:(0,u.ih)("Undo")})]});j.Z.success(o,{duration:5})})).catch((function(t){var n=m.c.getErrorMsg(t);if(n===(0,u.ih)("Error")){var i=m.c.getFileName(e);n=(0,u.ih)("Failed to delete {name}").replace("{name}",i)}j.Z.danger(n)}))}},{key:"deleteItemAjaxCallback",value:function(e){"column"===this.state.currentMode&&this.deleteTreeNode(e),this.deleteDirent(e)}},{key:"deleteDirent",value:function(e){if(e===this.state.path){var t=m.c.getDirName(e);this.showDir(t)}else if(m.c.isChildPath(e,this.state.path)){var n=m.c.getFileName(e),i=this.state.direntList.filter((function(e){return e.name!==n}));this.recaculateSelectedStateAfterDirentDeleted(n,i),this.setState({direntList:i})}else if(m.c.isAncestorPath(e,this.state.path)){var s=m.c.getDirName(e);this.showDir(s)}}},{key:"createTreeNode",value:function(e,t){var n=this.createDirent(e,t);return new ri.Z({object:n})}},{key:"createDirent",value:function(e,t,n,i){var s=this.state.userPerm,r={name:e,type:t,mtime:(new Date).getTime()/1e3,size:n,permission:s};return i&&(r.is_sdoc_draft=i),new ti.Z(r)}},{key:"render",value:function(){var e=this;if(this.state.libNeedDecrypt)return(0,g.jsx)(C.Z,{children:(0,g.jsx)(ai,{repoID:this.props.repoID,onLibDecryptDialog:this.onLibDecryptDialog})});if(this.state.errorMsg)return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("p",{className:"error mt-6 text-center",children:this.state.errorMsg}),(0,g.jsx)("button",{type:"submit",className:"btn btn-primary submit",onClick:this.handleSubmit,children:(0,u.ih)("Leave Share")})]});if(!this.state.currentRepoInfo)return"";var t=!1,n=this.state,i=n.currentRepoInfo,s=n.userPerm,r=n.isCopyMoveProgressDialogShow,o=n.isDeleteFolderDialogOpen,l=m.c.isHasPermissionToShare(i,s),c=i.owner_email===u.b6,h=i.is_virtual,p=i.is_admin;h||!c&&!p||(t=!0);var d=this.state.direntList.filter((function(t,n){return n0&&s.setState({errMessage:e.data.failed})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.toggleItemFreezed=function(e){s.setState({isItemFreezed:e})},s.handleScroll=function(e){var t=s.state,n=t.page,i=t.hasNextPage,r=t.isLoadingMore;if(i&&!r){var o=e.target.clientHeight,a=e.target.scrollHeight;o+e.target.scrollTop+1>=a&&s.setState({isLoadingMore:!0},(function(){s.listGroupMembers(n+1)}))}},s.changeMember=function(e){s.setState({groupMembers:s.state.groupMembers.map((function(t){return t.email==e.email&&(t=e),t}))})},s.deleteMember=function(e){var t=s.state.groupMembers;t.splice(t.indexOf(e),1),s.setState({groupMembers:t})},s.searchMembers=function(e){var t=s.state.groupMembers,n=e.target.value,i=n.trim().toLowerCase(),r=t.filter((function(e){return e.name.toLowerCase().indexOf(i)>-1}));s.setState({keyword:n,membersFound:r})},s.clearSearch=function(){s.setState({keyword:"",membersFound:[]})},s.onSearchInputFocus=function(){s.setState({searchActive:!0})},s.onSearchInputBlur=function(){s.setState({searchActive:!1})},s.state={isLoading:!0,isLoadingMore:!1,groupMembers:[],page:1,perPage:100,hasNextPage:!1,selectedOption:null,errMessage:[],isItemFreezed:!1,searchActive:!1,keyword:"",membersFound:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.listGroupMembers(this.state.page)}},{key:"render",value:function(){var e=this.state,t=e.isLoading,n=e.hasNextPage,i=e.groupMembers,s=e.keyword,r=e.membersFound,o=e.searchActive;return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("p",{className:"mb-2",children:(0,u.ih)("Add group member")}),(0,g.jsxs)("div",{className:"add-members",children:[(0,g.jsx)(Vt.Z,{placeholder:(0,u.ih)("Search users"),onSelectChange:this.onSelectChange,ref:"userSelect",isMulti:!0,className:"add-members-select"}),this.state.selectedOption?(0,g.jsx)($.Z,{color:"secondary",onClick:this.addGroupMember,children:(0,u.ih)("Submit")}):(0,g.jsx)($.Z,{color:"secondary",disabled:!0,children:(0,u.ih)("Submit")})]}),this.state.errMessage.length>0&&this.state.errMessage.map((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(0,g.jsx)("div",{className:"group-error error",children:e.error_msg},t)})),i.length>10&&(0,g.jsxs)(Ht.Z,{className:"search-group-members rounded ".concat(o?"active":""),children:[(0,g.jsx)(xn.Z,{children:(0,g.jsx)("i",{className:"fas fa-search","aria-hidden":!0})}),(0,g.jsx)(re.Z,{type:"text",className:"input-group-input px-0",placeholder:(0,u.ih)("Search group members"),value:s,onChange:this.searchMembers,onFocus:this.onSearchInputFocus,onBlur:this.onSearchInputBlur}),s&&(0,g.jsx)(xn.Z,{children:(0,g.jsx)("i",{className:"sf2-icon-x1","aria-hidden":!0,onClick:this.clearSearch})})]}),(0,g.jsx)("div",{className:"manage-members",onScroll:s.trim()?function(){}:this.handleScroll,children:t?(0,g.jsx)(R.Z,{}):(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(zr,{groupMembers:s.trim()?r:i,changeMember:this.changeMember,deleteMember:this.deleteMember,groupID:this.props.groupID,isOwner:this.props.isOwner,isItemFreezed:this.state.isItemFreezed,toggleItemFreezed:this.toggleItemFreezed}),!s.trim()&&n&&(0,g.jsx)(R.Z,{})]})})]})}}]),n}(a.Component),Gr=Br,Hr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.groupID,n=e.isOwner,i=e.toggleManageMembersDialog;return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:i,className:"group-manage-members-dialog",children:[(0,g.jsx)(J.Z,{toggle:i,children:(0,u.ih)("Manage group members")}),(0,g.jsx)(b.Z,{className:"pb-0",children:(0,g.jsx)(Gr,{groupID:t,isOwner:n})})]})}}]),n}(a.Component),Wr=Hr,Vr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).leaveGroup=function(){w.I.quitGroup(s.props.groupID,u.b6).then((function(e){s.props.onGroupChanged()})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s}return(0,s.Z)(n,[{key:"render",value:function(){return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.props.toggleLeaveGroupDialog,children:[(0,g.jsx)(J.Z,{toggle:this.props.toggleLeaveGroupDialog,children:(0,u.ih)("Leave Group")}),(0,g.jsx)(b.Z,{children:(0,g.jsx)("p",{children:(0,u.ih)("Really want to leave this group?")})}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.props.toggleLeaveGroupDialog,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.leaveGroup,children:(0,u.ih)("Leave")})]})]})}}]),n}(a.Component),qr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).loadGroup=function(e){w.I.getGroup(e).then((function(e){var t=new y(e.data),n=s.getEmptyTip(t),i=t.admins.indexOf(u.b6)>-1,r=t.owner===u.b6,o=0!==t.parent_group_id;s.setState({emptyTip:n,currentGroup:t,isStaff:i,isDepartmentGroup:o,isOwner:r,currentPage:1,repoList:[]},(function(){s.loadRepos(s.state.currentPage)}))})).catch((function(e){s.setState({isLoading:!1,errMessage:m.c.getErrorMsg(e,!0)})}))},s.loadRepos=function(e){var t=s.state.perPage;w.I.listGroupRepos(s.props.groupID,e,t).then((function(n){var i=!0;n.data.length=a&&s.setState({isLoadingMore:!0},(function(){s.loadRepos(n+1)}))}},s.state={isLoading:!0,isLoadingMore:!1,errMessage:"",emptyTip:null,currentGroup:null,currentRepo:null,isStaff:!1,isOwner:!1,sortBy:Ye.ZP.load("seafile-repo-dir-sort-by")||"name",sortOrder:Ye.ZP.load("seafile-repo-dir-sort-order")||"asc",isSortOptionsDialogOpen:!1,repoList:[],currentPage:1,perPage:300,hasNextPage:!1,libraryType:"group",isCreateRepoDialogShow:!1,isDepartmentGroup:!1,showGroupDropdown:!1,showGroupMembersPopover:!1,showRenameGroupDialog:!1,showDismissGroupDialog:!1,showTransferGroupDialog:!1,showImportMembersDialog:!1,showManageMembersDialog:!1,groupMembers:[],isShowDetails:!1,isLeaveGroupDialogOpen:!1},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this.props.groupID;this.loadGroup(e)}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.groupID!==this.props.groupID&&this.loadGroup(e.groupID)}},{key:"render",value:function(){var e=this,t=this.state,n=t.errMessage,i=t.emptyTip,s=t.currentGroup,r=t.isDepartmentGroup,o=t.isStaff,l=!1;s&&(0===s.parent_group_id||s.admins.indexOf(u.b6)>-1)&&(l=!0);var h=0;return r&&s.group_quota&&(h=s.group_quota_usage/s.group_quota*100+"%"),(0,g.jsxs)(a.Fragment,{children:[(0,g.jsxs)("div",{className:"main-panel-north border-left-show",children:[(0,g.jsxs)("div",{className:"cur-view-toolbar",children:[(0,g.jsx)("span",{className:"sf2-icon-menu side-nav-toggle hidden-md-up d-md-none",title:"Side Nav Menu",onClick:this.props.onShowSidePanel}),(0,g.jsx)("div",{className:"operation",children:(!r&&u.cA||r&&o)&&(m.c.isDesktop()?(0,g.jsxs)("button",{className:"btn btn-secondary operation-item",title:(0,u.ih)("New Library"),onClick:this.onCreateRepoToggle,children:[(0,g.jsx)("i",{className:"fas fa-plus-square text-secondary mr-1"}),(0,u.ih)("New Library")]}):(0,g.jsx)("span",{className:"sf2-icon-plus mobile-toolbar-icon",title:(0,u.ih)("New Library"),onClick:this.onCreateRepoToggle}))})]}),(0,g.jsx)(Ee.Z,{onSearchedClick:this.props.onSearchedClick})]}),(0,g.jsxs)("div",{className:"main-panel-center flex-row",children:[(0,g.jsxs)("div",{className:"cur-view-container",children:[(0,g.jsx)("div",{className:"cur-view-path",children:s&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsxs)("div",{className:"path-container",children:[(0,g.jsx)(c.rU,{to:"".concat(u.ze,"groups/"),onClick:function(){return e.onTabNavClick("groups")},children:(0,u.ih)("Groups")}),(0,g.jsx)("span",{className:"path-split",children:"/"}),(0,g.jsx)("span",{children:s.name}),r&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("span",{className:"department-group-icon fas fa-building",title:(0,u.ih)("This is a special group representing a department.")}),s.group_quota>0&&(0,g.jsx)("span",{className:"department-usage-container",children:(0,g.jsxs)("div",{className:"department-usage",children:[(0,g.jsx)("span",{id:"quota-bar",className:"department-quota-bar",children:(0,g.jsx)("span",{id:"quota-usage",className:"usage",style:{width:h}})}),(0,g.jsxs)("span",{className:"department-quota-info",children:[m.c.bytesToSize(s.group_quota_usage)," / ",m.c.bytesToSize(s.group_quota)]})]})})]})]}),(0,g.jsxs)("div",{className:"path-tool",children:[l&&(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(rn.Z,{className:"sf2-icon-cog1 action-icon group-top-action-icon",title:(0,u.ih)("Settings"),op:this.toggleGroupDropdown}),this.state.showGroupDropdown&&(0,g.jsxs)("div",{className:"sf-popover",id:"group-setting-popover",children:[(0,g.jsxs)("div",{className:"sf-popover-hd sf-popover-title",children:[(0,g.jsx)("span",{children:(0,u.ih)("Settings")}),(0,g.jsx)("a",{href:"#",className:"sf-popover-close js-close sf2-icon-x1 action-icon",role:"button","aria-label":(0,u.ih)("Close"),onClick:this.toggleGroupDropdown})]}),(0,g.jsxs)("div",{className:"sf-popover-con",children:[(this.state.isStaff||this.state.isOwner)&&(0,g.jsxs)("ul",{className:"sf-popover-list",children:[(0,g.jsx)("li",{children:(0,g.jsx)("a",{href:"#",className:"sf-popover-item",onClick:this.toggleRenameGroupDialog,children:(0,u.ih)("Rename")})}),this.state.isOwner&&(0,g.jsx)("li",{children:(0,g.jsx)("a",{href:"#",className:"sf-popover-item",onClick:this.toggleTransferGroupDialog,children:(0,u.ih)("Transfer")})})]}),(this.state.isStaff||this.state.isOwner)&&(0,g.jsxs)("ul",{className:"sf-popover-list",children:[(0,g.jsx)("li",{children:(0,g.jsx)("a",{href:"#",className:"sf-popover-item",onClick:this.toggleImportMembersDialog,children:(0,u.ih)("Import Members")})}),(0,g.jsx)("li",{children:(0,g.jsx)("a",{href:"#",className:"sf-popover-item",onClick:this.toggleManageMembersDialog,children:(0,u.ih)("Manage Members")})})]}),this.state.isOwner&&(0,g.jsx)("ul",{className:"sf-popover-list",children:(0,g.jsx)("li",{children:(0,g.jsx)("a",{href:"#",className:"sf-popover-item",onClick:this.toggleDismissGroupDialog,children:(0,u.ih)("Delete Group")})})}),!this.state.isOwner&&!r&&(0,g.jsx)("ul",{className:"sf-popover-list",children:(0,g.jsx)("li",{children:(0,g.jsx)("a",{href:"#",className:"sf-popover-item",onClick:this.toggleLeaveGroupDialog,children:(0,u.ih)("Leave Group")})})})]})]})]}),(0,g.jsx)("a",{href:"#",className:"sf2-icon-user2 action-icon group-top-action-icon",title:(0,u.ih)("Members"),id:"groupMembers",onClick:function(){return e.toggleGroupMembersPopover("open")}}),this.state.showGroupMembersPopover&&(0,g.jsxs)("div",{className:"sf-popover",id:"group-members-popover",children:[(0,g.jsxs)("div",{className:"sf-popover-hd sf-popover-title group-member-list-header",children:[(0,g.jsx)("span",{children:(0,u.ih)("Members")}),(0,g.jsx)("a",{href:"#",className:"sf-popover-close js-close sf2-icon-x1 action-icon",onClick:this.toggleGroupMembersPopover})]}),(0,g.jsx)("div",{className:"sf-popover-con",children:(0,g.jsx)("ul",{className:"sf-popover-list group-member-list",children:this.state.groupMembers.map((function(t,n){return(0,g.jsx)("li",{children:(0,g.jsxs)("a",{href:"#",className:"sf-popover-item user-item d-flex",children:[(0,g.jsx)("img",{src:t.avatar_url,alt:"",className:"group-member-avatar avatar"}),(0,g.jsxs)("span",{className:"txt-item ellipsis d-flex",children:[(0,g.jsx)("span",{className:"group-member-name ellipsis",children:t.name}),(0,g.jsx)("span",{className:"group-member-admin",children:e.translateRole(t.role)})]})]})},n)}))})})]}),!m.c.isDesktop()&&this.state.repoList.length>0&&(0,g.jsx)("span",{className:"sf3-font sf3-font-sort action-icon",onClick:this.toggleSortOptionsDialog}),this.state.isSortOptionsDialogOpen&&(0,g.jsx)(Oe,{toggleDialog:this.toggleSortOptionsDialog,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortItems:this.sortItems})]})]})}),(0,g.jsxs)("div",{className:"cur-view-content d-block",onScroll:this.handleScroll,children:[this.state.isLoading&&(0,g.jsx)(R.Z,{}),!this.state.isLoading&&n&&(0,g.jsx)("div",{className:"error text-center mt-2",children:n}),!this.state.isLoading&&0===this.state.repoList.length&&i,!this.state.isLoading&&this.state.repoList.length>0&&(0,g.jsx)(Kn,{repoList:this.state.repoList,hasNextPage:this.state.hasNextPage,currentGroup:this.state.currentGroup,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortItems:this.sortItems,onItemUnshare:this.onItemUnshare,onItemDelete:this.onItemDelete,onItemDetails:this.onItemDetails,onItemRename:this.onItemRename,onMonitorRepo:this.onMonitorRepo})]})]}),this.state.isShowDetails&&(0,g.jsx)("div",{className:"cur-view-detail",children:(0,g.jsx)(Mt,{currentRepo:this.state.currentRepo,closeDetails:this.closeDetails})})]}),this.state.isCreateRepoDialogShow&&!this.state.isDepartmentGroup&&(0,g.jsx)(C.Z,{children:(0,g.jsx)(It,{libraryType:this.state.libraryType,onCreateToggle:this.onCreateRepoToggle,onCreateRepo:this.onCreateRepo})}),this.state.isCreateRepoDialogShow&&this.state.isDepartmentGroup&&(0,g.jsx)(It,{isAdmin:this.state.isAdmin,onCreateToggle:this.onCreateRepoToggle,onCreateRepo:this.onCreateRepo,libraryType:"department"}),this.state.showRenameGroupDialog&&(0,g.jsx)(Or,{showRenameGroupDialog:this.state.showRenameGroupDialog,toggleRenameGroupDialog:this.toggleRenameGroupDialog,loadGroup:this.loadGroup,groupID:this.props.groupID,onGroupChanged:this.props.onGroupChanged,currentGroupName:s.name}),this.state.showDismissGroupDialog&&(0,g.jsx)(Lr,{showDismissGroupDialog:this.state.showDismissGroupDialog,toggleDismissGroupDialog:this.toggleDismissGroupDialog,loadGroup:this.loadGroup,groupID:this.props.groupID,onGroupChanged:this.props.onGroupChanged}),this.state.showTransferGroupDialog&&(0,g.jsx)(Rr,{toggleTransferGroupDialog:this.toggleTransferGroupDialog,groupID:this.props.groupID,onGroupChanged:this.props.onGroupChanged}),this.state.showImportMembersDialog&&(0,g.jsx)(Er,{toggleImportMembersDialog:this.toggleImportMembersDialog,importMembersInBatch:this.importMembersInBatch}),this.state.showManageMembersDialog&&(0,g.jsx)(Wr,{toggleManageMembersDialog:this.toggleManageMembersDialog,groupID:this.props.groupID,onGroupChanged:this.props.onGroupChanged,isOwner:this.state.isOwner}),this.state.isLeaveGroupDialogOpen&&(0,g.jsx)(Vr,{toggleLeaveGroupDialog:this.toggleLeaveGroupDialog,groupID:this.props.groupID,onGroupChanged:this.props.onGroupChanged})]})}}]),n}(a.Component),Kr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,i.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.onShowSidePanel,n=e.onSearchedClick;return(0,g.jsxs)("div",{className:"main-panel-north border-left-show",children:[(0,g.jsxs)("div",{className:"cur-view-toolbar",children:[(0,g.jsx)("span",{title:"Side Nav Menu",onClick:t,className:"sf2-icon-menu side-nav-toggle hidden-md-up d-md-none"}),u.Wz&&(0,g.jsxs)("div",{className:"operation",children:[(0,g.jsx)(p(),{query:"(min-width: 768px)",children:(0,g.jsxs)($.Z,{color:"btn btn-secondary operation-item",onClick:this.props.toggleAddGroupModal,children:[(0,g.jsx)("i",{className:"fas fa-plus-square text-secondary mr-1"}),(0,u.ih)("New Group")]})}),(0,g.jsx)(p(),{query:"(max-width: 767.8px)",children:(0,g.jsx)("span",{className:"sf2-icon-plus mobile-toolbar-icon",title:(0,u.ih)("New Group"),onClick:this.props.toggleAddGroupModal})})]})]}),(0,g.jsx)(Ee.Z,{searchPlaceholder:this.props.searchPlaceholder,onSearchedClick:n})]})}}]),n}(a.Component),Yr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).handleGroupChange=function(e){var t=e.target.value;t.trim()?s.setState({isSubmitBtnActive:!0}):s.setState({isSubmitBtnActive:!1}),s.setState({groupName:t}),s.state.errorMsg&&s.setState({errorMsg:""})},s.handleSubmitGroup=function(){var e=s.state.groupName.trim();if(e){var t=(0,D.Z)(s);w.I.createGroup(e).then((function(e){t.props.onCreateGroup()})).catch((function(e){var t=m.c.getErrorMsg(e);s.setState({errorMsg:t})}))}else s.setState({errorMsg:(0,u.ih)("Name is required")});s.setState({groupName:""})},s.handleKeyDown=function(e){13===e.keyCode&&(s.handleSubmitGroup(),e.preventDefault())},s.state={groupName:"",errorMsg:"",isSubmitBtnActive:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){return(0,g.jsxs)(d.Z,{isOpen:this.props.showAddGroupModal,toggle:this.props.toggleAddGroupModal,autoFocus:!1,children:[(0,g.jsx)(J.Z,{toggle:this.props.toggleAddGroupModal,children:(0,u.ih)("New Group")}),(0,g.jsxs)(b.Z,{children:[(0,g.jsx)("label",{htmlFor:"groupName",children:(0,u.ih)("Name")}),(0,g.jsx)(re.Z,{type:"text",id:"groupName",value:this.state.groupName,onChange:this.handleGroupChange,onKeyDown:this.handleKeyDown,autoFocus:!0}),(0,g.jsx)("span",{className:"error",children:this.state.errorMsg})]}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.props.toggleAddGroupModal,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.handleSubmitGroup,disabled:!this.state.isSubmitBtnActive,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),Jr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onItemUnshare=function(e){var t=s.props.group;w.I.unshareRepoToGroup(e.repo_id,t.id).then((function(){var t=s.state.repoList.filter((function(t){return t.repo_id!==e.repo_id}));s.setState({repoList:t})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onItemDelete=function(e){var t=s.state.repoList.filter((function(t){return t.repo_id!==e.repo_id}));s.setState({repoList:t})},s.onItemRename=function(e,t){var n=s.props.group;w.I.renameGroupOwnedLibrary(n.id,e.repo_id,t).then((function(n){var i=s.state.repoList.map((function(n){return n.repo_id===e.repo_id&&(n.repo_name=t),n}));s.setState({repoList:i})})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t)}))},s.onMonitorRepo=function(e,t){var n=s.state.repoList.map((function(n){return n.repo_id===e.repo_id&&(n.monitored=t),n}));s.setState({repoList:n})},s.state={repoList:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this.props.group.repos.map((function(e){return new Je(e)}));this.setState({repoList:e})}},{key:"render",value:function(){var e=this.props.group,t=(0,g.jsx)("p",{className:"group-item-empty-tip",children:(0,u.ih)("No libraries")});return(0,g.jsxs)("div",{className:"group-list-panel",children:[(0,g.jsx)("h4",{className:"group-item-heading ellipsis",children:(0,g.jsx)("a",{href:"".concat(u.ze,"group/").concat(e.id,"/"),title:e.name,children:e.name})}),0===this.state.repoList.length?t:(0,g.jsx)(Kn,{isShowTableThread:!1,isShowRepoOwner:!1,currentGroup:this.props.group,repoList:this.state.repoList,onItemUnshare:this.onItemUnshare,onItemDelete:this.onItemDelete,onItemDetails:this.props.onItemDetails,onItemRename:this.onItemRename,onMonitorRepo:this.onMonitorRepo})]})}}]),n}(a.Component),Xr=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).listGroups=function(){w.I.listGroups(!0).then((function(e){var t=e.data.map((function(e){return new y(e)}));s.setState({isLoading:!1,groupList:t.sort((function(e,t){return e.name.toLowerCase()'+m.c.HTMLescape(this.props.accepter)+"",i=(0,u.ih)("Are you sure to revoke access of user {placeholder} ?").replace("{placeholder}",n);return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:e,children:[(0,g.jsx)(J.Z,{toggle:e,children:(0,u.ih)("Revoke Access")}),(0,g.jsx)(b.Z,{children:(0,g.jsx)("p",{dangerouslySetInnerHTML:{__html:i}})}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:e,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{className:"submit-btn",color:"primary",onClick:this.onRevokeInvitation,disabled:t,children:t?(0,g.jsx)(R.Z,{}):(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),no=to,io=(n(61515),function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).toggleOpMenu=function(){s.setState({isOpMenuOpen:!s.state.isOpMenuOpen})},s.onMouseEnter=function(){s.setState({isOpIconShown:!0})},s.onMouseLeave=function(){s.setState({isOpIconShown:!1})},s.deleteItem=function(e){e.preventDefault(),s.setState({isOpIconShown:!1});var t=s.props.invitation.token;w.I.deleteInvitation(t).then((function(e){s.setState({deleted:!0}),j.Z.success((0,u.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=m.c.getErrorMsg(e);j.Z.danger(t),s.setState({isOpIconShown:!0})}))},s.revokeItem=function(){s.setState({deleted:!0})},s.toggleRevokeDialog=function(e){e.preventDefault(),s.setState({isRevokeDialogOpen:!s.state.isRevokeDialogOpen})},s.state={isOpIconShown:!1,isOpMenuOpen:!1,isRevokeDialogOpen:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.isOpIconShown,n=e.deleted,i=e.isRevokeDialogOpen;if(n)return null;var s=this.props.invitation,r=(0,g.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onFocus:this.onMouseEnter,tabIndex:"0",children:[(0,g.jsx)("td",{children:s.accepter}),(0,g.jsx)("td",{children:A()(s.invite_time).format("YYYY-MM-DD")}),(0,g.jsx)("td",{children:A()(s.expire_time).format("YYYY-MM-DD")}),(0,g.jsx)("td",{children:s.accept_time&&(0,g.jsx)("i",{className:"sf2-icon-tick invite-accept-icon"})}),(0,g.jsx)("td",{children:t&&(s.accept_time?(0,g.jsx)("a",{href:"#",role:"button",className:"action-icon sf3-font sf3-font-cancel-invitation",title:(0,u.ih)("Revoke Access"),"aria-label":(0,u.ih)("Revoke Access"),onClick:this.toggleRevokeDialog}):(0,g.jsx)("a",{href:"#",role:"button",className:"action-icon sf2-icon-x3",title:(0,u.ih)("Delete"),"aria-label":(0,u.ih)("Delete"),onClick:this.deleteItem}))})]}),o=(0,g.jsxs)("tr",{children:[(0,g.jsxs)("td",{children:[s.accepter,(0,g.jsx)("br",{}),(0,g.jsxs)("span",{className:"item-meta-info",children:[A()(s.invite_time).format("YYYY-MM-DD"),(0,g.jsxs)("span",{className:"small",children:["(",(0,u.ih)("Invite Time"),")"]})]}),(0,g.jsxs)("span",{className:"item-meta-info",children:[A()(s.expire_time).format("YYYY-MM-DD"),(0,g.jsxs)("span",{className:"small",children:["(",(0,u.ih)("Expiration"),")"]})]}),(0,g.jsx)("span",{className:"item-meta-info",children:s.accept_time&&(0,u.ih)("Accepted")})]}),(0,g.jsx)("td",{children:(0,g.jsxs)(U.Z,{isOpen:this.state.isOpMenuOpen,toggle:this.toggleOpMenu,children:[(0,g.jsx)(z.Z,{tag:"i",className:"sf-dropdown-toggle fa fa-ellipsis-v ml-0",title:(0,u.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":this.state.isOpMenuOpen}),(0,g.jsxs)("div",{className:this.state.isOpMenuOpen?"":"d-none",onClick:this.toggleOpMenu,children:[(0,g.jsx)("div",{className:"mobile-operation-menu-bg-layer"}),(0,g.jsx)("div",{className:"mobile-operation-menu",children:s.accept_time?(0,g.jsx)(G.Z,{className:"mobile-menu-item",onClick:this.toggleRevokeDialog,children:(0,u.ih)("Revoke Access")}):(0,g.jsx)(G.Z,{className:"mobile-menu-item",onClick:this.deleteItem,children:(0,u.ih)("Delete")})})]})]})})]});return(0,g.jsxs)(a.Fragment,{children:[this.props.isDesktop?r:o,i&&(0,g.jsx)(no,{accepter:s.accepter,token:s.token,revokeInvitation:this.revokeItem,toggleDialog:this.toggleRevokeDialog})]})}}]),n}(a.Component)),so=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,i.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.data,t=e.loading,n=e.errorMsg,i=e.invitationsList;if(t)return(0,g.jsx)(R.Z,{});if(n)return(0,g.jsx)("p",{className:"error text-center mt-2",children:n});if(!i.length)return(0,g.jsxs)(O.Z,{children:[(0,g.jsx)("h2",{children:(0,u.ih)("No guest invitations")}),(0,g.jsx)("p",{children:(0,u.ih)('You have not invited any guests yet. A guest can access shared libraries through the web interface allowing more efficient ways to collaborate than through links. You can invite a guest by clicking the "Invite Guest" button in the menu bar.')})]});var s=m.c.isDesktop();return(0,g.jsxs)("table",{className:"table-hover".concat(s?"":" table-thead-hidden"),children:[(0,g.jsx)("thead",{children:s?(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"25%",children:(0,u.ih)("Email")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Invite Time")}),(0,g.jsx)("th",{width:"20%",children:(0,u.ih)("Expiration")}),(0,g.jsx)("th",{width:"18%",children:(0,u.ih)("Accepted")}),(0,g.jsx)("th",{width:"7%"})]}):(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"92%"}),(0,g.jsx)("th",{width:"8%"})]})}),(0,g.jsx)("tbody",{children:i.map((function(e,t){return(0,g.jsx)(io,{isDesktop:s,invitation:e},t)}))})]})}}]),n}(a.Component),ro=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onInvitePeople=function(e){e.push.apply(e,s.state.invitationsList),s.setState({invitationsList:e})},s.toggleInvitePeopleDialog=function(){s.setState({isInvitePeopleDialogOpen:!s.state.isInvitePeopleDialogOpen})},s.state={loading:!0,errorMsg:"",invitationsList:[],isInvitePeopleDialogOpen:!1},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.listInvitations().then((function(t){e.setState({invitationsList:t.data,loading:!1})})).catch((function(t){e.setState({loading:!1,errorMsg:m.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(Qr,{onShowSidePanel:this.props.onShowSidePanel,onSearchedClick:this.props.onSearchedClick,toggleInvitePeopleDialog:this.toggleInvitePeopleDialog}),(0,g.jsx)("div",{className:"main-panel-center flex-row",children:(0,g.jsxs)("div",{className:"cur-view-container",children:[(0,g.jsx)("div",{className:"cur-view-path",children:(0,g.jsx)("h3",{className:"sf-heading",children:(0,u.ih)("Invite Guest")})}),(0,g.jsx)("div",{className:"cur-view-content",children:(0,g.jsx)(so,{data:this.state})})]})}),this.state.isInvitePeopleDialogOpen&&(0,g.jsx)(eo,{onInvitePeople:this.onInvitePeople,toggleDialog:this.toggleInvitePeopleDialog})]})}}]),n}(a.Component),oo=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).inputNewName=function(e){event.target.value.trim()?s.setState({isSubmitBtnActive:!0}):s.setState({isSubmitBtnActive:!1}),s.setState({name:e.target.value})},s.handleKeyDown=function(e){"Enter"===e.key&&s.handleSubmit()},s.handleSubmit=function(){var e=s.state,t=e.isExist,n=e.name,i=e.repoID;s.props.addWiki(t,n,i),s.props.toggleCancel()},s.toggle=function(){s.props.toggleCancel()},s.state={isExist:!1,name:"",repoID:"",isSubmitBtnActive:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){return(0,g.jsxs)(d.Z,{isOpen:!0,autoFocus:!1,toggle:this.toggle,children:[(0,g.jsx)(J.Z,{toggle:this.toggle,children:(0,u.ih)("New Wiki")}),(0,g.jsxs)(b.Z,{children:[(0,g.jsx)("label",{className:"form-label",children:(0,u.ih)("Name")}),(0,g.jsx)(re.Z,{onKeyDown:this.handleKeyDown,autoFocus:!0,value:this.state.name,onChange:this.inputNewName})]}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.toggle,children:(0,u.ih)("Cancel")}),(0,g.jsx)($.Z,{color:"primary",onClick:this.handleSubmit,disabled:!this.state.isSubmitBtnActive,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),ao=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onChange=function(e){s.setState({repoID:e.repo_id})},s.handleSubmit=function(){var e=s.state.repoID;s.props.addWiki(e),s.props.toggleCancel()},s.toggle=function(){s.props.toggleCancel()},s.state={repos:[],repoID:""},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;w.I.listRepos().then((function(t){var n=t.data.repos.filter((function(e){switch(e.type){case"mine":return!e.encrypted;case"shared":return!e.encrypted&&e.is_admin;default:return!e.encrypted&&!t.data.repos.some((function(t){return t.type!=e.type&&t.repo_id==e.repo_id}))}})).map((function(e){return new Je(e)}));n=m.c.sortRepos(n,"name","asc"),e.setState({repos:n})}))}},{key:"render",value:function(){var e=this;return(0,g.jsxs)(d.Z,{isOpen:!0,toggle:this.toggle,children:[(0,g.jsx)(J.Z,{toggle:this.toggle,children:(0,u.ih)("Publish a Library")}),(0,g.jsx)(b.Z,{className:"dialog-list-container",children:(0,g.jsxs)("table",{children:[(0,g.jsx)("thead",{children:(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{width:"6%"}),(0,g.jsx)("th",{width:"9%"}),(0,g.jsx)("th",{width:"55%",children:(0,u.ih)("Name")}),(0,g.jsx)("th",{width:"30%",children:(0,u.ih)("Last Update")})]})}),(0,g.jsx)("tbody",{children:this.state.repos.map((function(t,n){return(0,g.jsxs)("tr",{children:[(0,g.jsx)("td",{className:"text-center",children:(0,g.jsx)("input",{type:"radio",className:"vam",name:"repo",value:t.repo_id,onChange:e.onChange.bind(e,t)})}),(0,g.jsx)("td",{className:"text-center",children:(0,g.jsx)("img",{src:m.c.getLibIconUrl(t,!1),width:"24",title:m.c.getLibIconTitle(t),alt:m.c.getLibIconTitle(t)})}),(0,g.jsx)("td",{children:t.repo_name}),(0,g.jsx)("td",{children:A()(t.last_modified).fromNow()})]},n)}))})]})}),(0,g.jsxs)(Q.Z,{children:[(0,g.jsx)($.Z,{color:"secondary",onClick:this.toggle,children:(0,u.ih)("Cancel")}),this.state.repoID?(0,g.jsx)($.Z,{color:"primary",onClick:this.handleSubmit,children:(0,u.ih)("Submit")}):(0,g.jsx)($.Z,{color:"primary",disabled:!0,children:(0,u.ih)("Submit")})]})]})}}]),n}(a.Component),lo=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var s=arguments.length,r=new Array(s),o=0;o-1)&&(n=s.generatorPrefix(e,t)),s.setState({currentTab:e,pathPrefix:n},(function(){var e=s.state,t=e.currentTab,n=e.pathPrefix;window.history.replaceState({currentTab:t,pathPrefix:n},null)})),m.c.isDesktop()||s.state.isSidePanelClosed||s.setState({isSidePanelClosed:!0})},s.generatorPrefix=function(e,t){var n=[];if(t){var i={url:u.ze+"groups/",showName:"Groups",name:"groups",id:null},r={url:u.ze+"group/"+t+"/",showName:e,name:e,id:t};n.push(i),n.push(r)}else{var o={url:u.ze+e+"/",showName:s.getTabShowName(e),name:e,id:null};n.push(o)}return n},s.getTabShowName=function(e){return"my-libs"===e?"Libraries":"shared-libs"===e?"Shared with me":"org"===e?"Shared with all":void 0},s.toggleSidePanel=function(){s.setState({isSidePanelClosed:!s.state.isSidePanelClosed})},s.state={isOpen:!1,isSidePanelClosed:!1,draftCounts:0,draftList:[],isLoadingDraft:!0,currentTab:"/",pathPrefix:[]},s.dirViewPanels=["my-libs","shared-libs","org"],window.onpopstate=s.onpopstate,s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillMount",value:function(){m.c.isDesktop()||this.setState({isSidePanelClosed:!0})}},{key:"componentDidMount",value:function(){this.navigateClientUrlToLib();var e=window.location.href.split("/");u.NT&&this.getDrafts(),this.setState({currentTab:e[e.length-2]})}},{key:"render",value:function(){var e=this.state,t=e.currentTab,n=e.isSidePanelClosed,i=u.cA?(0,g.jsx)(An,{path:u.ze,onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}):(0,g.jsx)(Co,{path:u.ze,onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick});return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(v,{}),(0,g.jsxs)("div",{id:"main",children:[(0,g.jsx)(Z,{isSidePanelClosed:this.state.isSidePanelClosed,onCloseSidePanel:this.onCloseSidePanel,currentTab:t,tabItemClick:this.tabItemClick,draftCounts:this.state.draftCounts}),(0,g.jsx)(F,{children:(0,g.jsxs)(c.F0,{className:"reach-router",children:[i,(0,g.jsx)(Do,{path:u.ze+"dashboard",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(wo,{path:u.ze+"my-activities",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(jo,{path:u.ze+"drafts",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick,children:(0,g.jsx)(q,{path:"/",getDrafts:this.getDrafts,isLoadingDraft:this.state.isLoadingDraft,draftList:this.state.draftList,updateDraftsList:this.updateDraftsList})}),(0,g.jsx)(yo,{path:u.ze+"starred",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(So,{path:u.ze+"linked-devices",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(Io,{path:u.ze+"share-admin-libs",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(No,{path:u.ze+"share-admin-folders",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(He,{path:u.ze+"share-admin-share-links",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(Ke,{path:u.ze+"share-admin-upload-links",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(Co,{path:u.ze+"shared-libs",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(bo,{path:u.ze+"shared-with-ocm",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(ko,{path:u.ze+"ocm-via-webdav",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(An,{path:u.ze+"my-libs",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(Gn,{path:u.ze+"my-libs/deleted/",onSearchedClick:this.onSearchedClick}),(0,g.jsx)(Tr,{path:u.ze+"library/:repoID/*",pathPrefix:this.state.pathPrefix,onMenuClick:this.onShowSidePanel,onTabNavClick:this.tabItemClick}),(0,g.jsx)(St,{path:u.ze+"remote-library/:providerID/:repoID/*",pathPrefix:this.state.pathPrefix,onMenuClick:this.onShowSidePanel,onTabNavClick:this.tabItemClick}),(0,g.jsx)(Xr,{path:u.ze+"groups",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(qr,{path:u.ze+"group/:groupID",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick,onTabNavClick:this.tabItemClick,onGroupChanged:this.onGroupChanged}),(0,g.jsx)(go,{path:u.ze+"published",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick}),(0,g.jsx)(Jn,{path:u.ze+"org/",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick,onTabNavClick:this.tabItemClick}),(0,g.jsx)(ro,{path:u.ze+"invitations/",onShowSidePanel:this.onShowSidePanel,onSearchedClick:this.onSearchedClick})]})}),(0,g.jsx)(p(),{query:"(max-width: 767.8px)",children:(0,g.jsx)(d.Z,{zIndex:"1030",isOpen:!n,toggle:this.toggleSidePanel,contentClassName:"d-none"})})]})]})}}]),n}(a.Component);l.render((0,g.jsx)(Mo,{}),document.getElementById("wrapper"))},23727:function(e,t,n){"use strict";var i=n(1413),s=n(15671),r=n(43144),o=n(60136),a=n(29388),l=n(72791),c=n(58579),h=n(22642),p=n(80184),d=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(){var e;(0,s.Z)(this,n);for(var i=arguments.length,r=new Array(i),o=0;o2&&void 0!==arguments[2]?arguments[2]:window;"function"===typeof window.CustomEvent?n=new window.CustomEvent(e,{detail:t}):(n=document.createEvent("CustomEvent")).initCustomEvent(e,!1,!0,t),i&&(i.dispatchEvent(n),s()(r.h,t))}function c(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;l(o,s()({},e,{type:o}),t)}function h(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;l(a,s()({},e,{type:a}),t)}},99832:function(e,t,n){"use strict";var i=n(15671),s=n(43144),r=n(60136),o=n(29388),a=n(72791),l=n(17650),c=n(60925),h=n(77338),p=n(95996),d=n(80184),u=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).registerHandlers=function(){document.addEventListener("mousedown",s.handleOutsideClick),document.addEventListener("touchstart",s.handleOutsideClick),document.addEventListener("scroll",s.handleHide),document.addEventListener("contextmenu",s.handleHide),document.addEventListener("keydown",s.handleKeyNavigation),window.addEventListener("resize",s.handleHide)},s.unregisterHandlers=function(){document.removeEventListener("mousedown",s.handleOutsideClick),document.removeEventListener("touchstart",s.handleOutsideClick),document.removeEventListener("scroll",s.handleHide),document.removeEventListener("contextmenu",s.handleHide),document.removeEventListener("keydown",s.handleKeyNavigation),window.removeEventListener("resize",s.handleHide)},s.handleShow=function(e){if(e.detail.id===s.props.id){var t=e.detail.position,n=t.x,i=t.y,r=e.detail,o=r.currentObject,a=r.menuList;s.setState({isVisible:!0,x:n,y:i,currentObject:o,menuList:a}),s.registerHandlers(),(0,h._N)(s.props.onShowMenu,e)}},s.handleHide=function(e){!s.state.isVisible||e.detail&&e.detail.id&&e.detail.id!==s.props.id||(s.unregisterHandlers(),s.setState({isVisible:!1}),(0,h._N)(s.props.onHideMenu,e))},s.handleOutsideClick=function(e){s.menu.contains(e.target)||(0,c.SC)()},s.handleMouseLeave=function(e){e.preventDefault(),s.props.hideOnLeave&&(0,c.SC)()},s.handleContextMenu=function(e){s.handleHide(e)},s.handleKeyNavigation=function(e){!1!==s.state.isVisible&&(e.preventDefault(),s.hideMenu(e))},s.hideMenu=function(e){27!==e.keyCode&&13!==e.keyCode||(0,c.SC)()},s.getMenuPosition=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n={top:t,left:e};if(!s.menu)return n;var i=window,r=i.innerWidth,o=i.innerHeight,a=s.menu.getBoundingClientRect();return t+a.height>o&&(n.top-=a.height),e+a.width>r&&(n.left-=a.width),n.top<0&&(n.top=a.height0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n={top:t,left:e};if(!s.menu)return n;var i=window,r=i.innerWidth,o=i.innerHeight,a=s.menu.getBoundingClientRect();return n.left=e-a.width,t+a.height>o&&(n.top-=a.height),n.left<0&&(n.left+=a.width),n.top<0&&(n.top=a.heightr&&(n.left=a.width1?t-1:0),i=1;i-1&&s.setHighlightIndex(s.state.highlightIndex-1);else if(e.keyCode===y.mW.DownArrow){var i=s.state.searchVal.trim(),r=s.state.repotagList.filter((function(e){return e.name.includes(i)}));s.state.highlightIndex0&&n.map((function(t,n){return(0,u.jsx)(j,{index:n,highlightIndex:e.state.highlightIndex,setHighlightIndex:e.setHighlightIndex,repoTag:t,repoID:e.props.repoID,filePath:e.props.filePath,fileTagList:e.props.fileTagList,onFileTagChanged:e.props.onFileTagChanged},t.id)}))]}),i&&(0,u.jsx)(m,{callBack:this.createNewTag,footerName:"".concat((0,l.ih)("Create a new tag")," '").concat(t,"'")})]})}}]),n}(a.Component))},67145:function(e,t,n){"use strict";var i=n(15671),s=n(43144),r=n(60136),o=n(29388),a=n(72791),l=n(53585),c=n(95996),h=n(51832),p=n(80184),d=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onClick=function(e){s.inputRef.current.contains(e.target)||s.onRenameConfirm()},s.onChange=function(e){s.setState({name:e.target.value})},s.onKeyDown=function(e){e.keyCode===c.c.keyCodes.enter?s.onRenameConfirm(e):e.keyCode===c.c.keyCodes.esc&&s.onRenameCancel(e),e.nativeEvent.stopImmediatePropagation()},s.onRenameConfirm=function(e){e&&e.nativeEvent.stopImmediatePropagation();var t=s.state.name.trim();if(t!==s.props.name){var n=s.validateInput(),i=n.isValid,r=n.errMessage;i?s.props.onRenameConfirm(t):(h.Z.danger(r),s.props.onRenameCancel())}else s.props.onRenameCancel()},s.onRenameCancel=function(e){e.nativeEvent.stopImmediatePropagation(),s.props.onRenameCancel()},s.validateInput=function(){var e=s.state.name.trim(),t=!0,n="";return e?e.indexOf("/")>-1?{isValid:t=!1,errMessage:n=(0,l.ih)("Name should not include '/'.")}:{isValid:t,errMessage:n}:{isValid:t=!1,errMessage:n=(0,l.ih)("Name is required.")}},s.state={name:e.name},s.inputRef=a.createRef(),s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;if(this.inputRef.current.focus(),this.props.hasSuffix){var t=this.props.name.lastIndexOf(".");this.inputRef.current.setSelectionRange(0,t,"forward")}else this.inputRef.current.setSelectionRange(0,-1);setTimeout((function(){document.addEventListener("click",e.onClick)}),1)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.onClick)}},{key:"render",value:function(){return(0,p.jsx)("div",{className:"rename-container",children:(0,p.jsx)("input",{ref:this.inputRef,value:this.state.name,onChange:this.onChange,onKeyDown:this.onKeyDown})})}}]),n}(a.Component);t.Z=d},1652:function(e,t,n){"use strict";n.d(t,{Z:function(){return I}});var i=n(15671),s=n(43144),r=n(60136),o=n(29388),a=n(72791),l=n(53885),c=n(62298),h=n(4292),p=n(95234),d=n(95060),u=n(81815),m=n(72426),g=n.n(m),f=n(53585),v=n(22228),x=n(95996),D=n(51832),w=n(80184),j=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onFileTagChanged=function(e){var t=e.parent_path,n={name:e.filename},i="/"===t?t+e.filename:t+"/"+e.filename;s.props.onFileTagChanged(n,i)},s.onDeleteTaggedFile=function(e){var t=s.props.repoID,n=e.file_tag_id;v.I.deleteFileTag(t,n).then((function(t){s.getTaggedFiles(),s.props.updateUsedRepoTags(),s.props.onFileTagChanged&&!e.file_deleted&&s.onFileTagChanged(e)})).catch((function(e){var t=x.c.getErrorMsg(e);D.Z.danger(t)}))},s.getTaggedFiles=function(){var e=s.props,t=e.repoID,n=e.currentTag,i=e.shareLinkToken;(i?v.I.getShareLinkTaggedFiles(i,n.id):v.I.listTaggedFiles(t,n.id)).then((function(e){var t=[];void 0!==e.data.tagged_files&&e.data.tagged_files.forEach((function(e){var n=e;t.push(n)})),s.setState({taggedFileList:t})})).catch((function(e){var t=x.c.getErrorMsg(e);D.Z.danger(t)}))},s.state={taggedFileList:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.getTaggedFiles()}},{key:"render",value:function(){var e=this,t=this.state.taggedFileList;return(0,w.jsxs)(c.Z,{isOpen:!0,style:{maxWidth:"678px"},children:[(0,w.jsx)(h.Z,{toggle:this.props.onClose,children:(0,f.ih)("Tagged Files")}),(0,w.jsx)(p.Z,{className:"dialog-list-container",children:(0,w.jsxs)("table",{children:[(0,w.jsx)("thead",{children:(0,w.jsxs)("tr",{children:[(0,w.jsx)("th",{width:"50%",className:"ellipsis",children:(0,f.ih)("Name")}),(0,w.jsx)("th",{width:"20%",children:(0,f.ih)("Size")}),(0,w.jsx)("th",{width:"22%",children:(0,f.ih)("Last Update")}),(0,w.jsx)("th",{width:"8%"})]})}),(0,w.jsx)("tbody",{children:t.map((function(t,n){return(0,w.jsx)(y,{repoID:e.props.repoID,taggedFile:t,onDeleteTaggedFile:e.onDeleteTaggedFile,shareLinkToken:e.props.shareLinkToken,enableFileDownload:e.props.enableFileDownload},n)}))})]})}),(0,w.jsx)(d.Z,{children:(0,w.jsx)(u.Z,{color:"secondary",onClick:this.props.toggleCancel,children:(0,f.ih)("Close")})})]})}}]),n}(a.Component),y=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.setState({active:!0})},s.onMouseLeave=function(){s.setState({active:!1})},s.deleteFile=function(e){e.preventDefault(),s.props.onDeleteTaggedFile(s.props.taggedFile)},s.state={active:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.taggedFile,n=e.shareLinkToken,i=e.enableFileDownload,s=t.parent_path?x.c.joinPath(t.parent_path,t.filename):"",r=n?f.ze+"d/"+n+"/files/?p="+x.c.encodePath(s):f.ze+"lib/"+this.props.repoID+"/file"+x.c.encodePath(s);return(0,w.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onFocus:this.onMouseEnter,children:[t.file_deleted?(0,w.jsx)(a.Fragment,{children:(0,w.jsxs)("td",{colSpan:"3",className:"name",children:[t.filename," ",(0,w.jsx)("span",{style:{color:"red"},children:(0,f.ih)("deleted")})]})}):(0,w.jsxs)(a.Fragment,{children:[(0,w.jsx)("td",{children:(0,w.jsx)("a",{href:r,target:"_blank",className:"d-inline-block w-100 ellipsis",title:t.filename,rel:"noreferrer",children:t.filename})}),(0,w.jsx)("td",{children:x.c.bytesToSize(t.size)}),(0,w.jsx)("td",{children:g().unix(t.mtime).fromNow()})]}),(0,w.jsxs)("td",{children:[!n&&(0,w.jsx)("a",{href:"#",role:"button","aria-label":(0,f.ih)("Delete"),title:(0,f.ih)("Delete"),className:"action-icon sf2-icon-x3".concat(this.state.active?"":" invisible"),onClick:this.deleteFile}),n&&i&&(0,w.jsx)("a",{className:"action-icon sf2-icon-download".concat(this.state.active?"":" invisible"),href:"".concat(r,"&dl=1"),title:(0,f.ih)("Download"),"aria-label":(0,f.ih)("Download")})]})]})}}]),n}(a.Component),S=n(39571),C=(0,s.Z)((function e(t){(0,i.Z)(this,e),this.created=t.created_at,this.createdStr=g()(new Date(t.created_at).getTime()).format("YYYY-MM-DD HH:mm"),this.id=t.id,this.ownerNickname=t.owner_nickname,this.originRepoID=t.origin_repo_id,this.draftFilePath=t.draft_file_path})),b=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onDeleteDraftItem=function(e){S.Z.deleteDraft(e.id).then((function(){var t=s.state.drafts.filter((function(t){return t.id!==e.id}));s.setState({drafts:t});var n=(0,f.ih)("Successfully deleted draft %(draft)s.");n=n.replace("%(draft)s",e.draftFilePath),D.Z.success(n)})).catch((function(){var t=(0,f.ih)("Failed to delete draft %(draft)s.");t=t.replace("%(draft)s",e.draftFilePath),D.Z.danger(t)}))},s.toggle=function(){s.props.toggle()},s.state={drafts:[]},s}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;v.I.listRepoDrafts(this.props.repoID).then((function(t){var n=t.data.drafts.map((function(e){return new C(e)}));e.setState({drafts:n})}))}},{key:"render",value:function(){var e=this;return(0,w.jsxs)(c.Z,{isOpen:!0,toggle:this.toggle,children:[(0,w.jsx)(h.Z,{toggle:this.toggle,children:(0,f.ih)("Drafts")}),(0,w.jsx)(p.Z,{className:"dialog-list-container",children:(0,w.jsxs)("table",{children:[(0,w.jsx)("thead",{children:(0,w.jsxs)("tr",{children:[(0,w.jsx)("th",{width:"50%",className:"ellipsis",children:(0,f.ih)("Name")}),(0,w.jsx)("th",{width:"20%",children:(0,f.ih)("Owner")}),(0,w.jsx)("th",{width:"20%",children:(0,f.ih)("Last Update")}),(0,w.jsx)("th",{width:"10%"})]})}),(0,w.jsx)("tbody",{children:this.state.drafts.map((function(t,n){return(0,w.jsx)(k,{draftItem:t,onDeleteDraftItem:e.onDeleteDraftItem},n)}))})]})}),(0,w.jsx)(d.Z,{children:(0,w.jsx)(u.Z,{color:"secondary",onClick:this.toggle,children:(0,f.ih)("Close")})})]})}}]),n}(a.Component),k=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.setState({active:!0})},s.onMouseLeave=function(){s.setState({active:!1})},s.state={active:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.draftItem,t=f.ze+"drafts/"+e.id+"/",n=this.state.active?"action-icon sf2-icon-x3":"action-icon vh sf2-icon-x3";return(0,w.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,children:[(0,w.jsx)("td",{className:"name",children:(0,w.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",children:x.c.getFileName(e.draftFilePath)})}),(0,w.jsx)("td",{children:e.ownerNickname}),(0,w.jsx)("td",{children:g()(e.createdStr).fromNow()}),(0,w.jsx)("td",{children:(0,w.jsx)("i",{className:n,onClick:this.props.onDeleteDraftItem.bind(this,e)})})]})}}]),n}(a.Component),I=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;return(0,i.Z)(this,n),(s=t.call(this,e)).onListTaggedFiles=function(e){s.setState({currentTag:e,isListTaggedFileShow:!s.state.isListTaggedFileShow})},s.onCloseDialog=function(){s.setState({isListTaggedFileShow:!1})},s.toggleDrafts=function(){s.setState({showRepoDrafts:!s.state.showRepoDrafts})},s.state={currentTag:null,isListTaggedFileShow:!1,showRepoDrafts:!1},s}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.repoID,i=t.usedRepoTags,s=t.draftCounts,r=t.className;return void 0===s&&(s=0),(0,w.jsxs)("div",{className:"repo-info-bar ".concat(r||""),children:[i.length>0&&(0,w.jsx)("ul",{className:"used-tag-list",children:i.map((function(t){return(0,w.jsxs)("li",{className:"used-tag-item",children:[(0,w.jsx)("span",{className:"used-tag",style:{backgroundColor:t.color}}),(0,w.jsx)("span",{className:"used-tag-name",title:t.name,children:t.name}),(0,w.jsx)("button",{type:"button",className:"used-tag-files border-0 bg-transparent",onClick:e.onListTaggedFiles.bind(e,t),children:t.fileCount>1?t.fileCount+" files":t.fileCount+" file"})]},t.id)}))}),this.state.isListTaggedFileShow&&(0,w.jsx)(l.Z,{children:(0,w.jsx)(j,{repoID:n,currentTag:this.state.currentTag,onClose:this.onCloseDialog,toggleCancel:this.onListTaggedFiles,updateUsedRepoTags:this.props.updateUsedRepoTags,onFileTagChanged:this.props.onFileTagChanged,shareLinkToken:this.props.shareLinkToken,enableFileDownload:this.props.enableFileDownload})}),this.state.showRepoDrafts&&(0,w.jsx)(l.Z,{children:(0,w.jsx)(b,{toggle:this.toggleDrafts,repoID:this.props.repoID})})]})}}]),n}(a.Component)},95046:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var i=n(15671),s=n(43144),r=n(60136),o=n(29388),a=n(72791),l=n(93191),c=n(53585),h=n(2169),p=n(95996),d=n(80184),u=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;(0,i.Z)(this,n),(s=t.call(this,e)).onMouseEnter=function(){s.props.isItemFreezed||s.setState({isShowOperationMenu:!0,isHighlight:!0})},s.onMouseOver=function(){s.props.isItemFreezed||s.setState({isShowOperationMenu:!0,isHighlight:!0})},s.onMouseLeave=function(){s.props.isItemFreezed||s.setState({isShowOperationMenu:!1,isHighlight:!1})},s.onNodeClick=function(){var e=s.props.node.object;if(e.isDir())s.props.onNodeClick(s.props.node);else{var t=p.c.getUserPermission(e.permission),n=t.isCustomPermission,i=t.customPermission;if(n){var r=i.permission,o=r.preview,a=r.modify;if(!o&&!a)return}s.props.onNodeClick(s.props.node)}},s.onLoadToggle=function(e){e.stopPropagation();var t=s.props.node;t.isExpanded?s.props.onNodeCollapse(t):s.props.onNodeExpanded(t)},s.onNodeDragStart=function(e){if(p.c.isIEBrower()||!s.canDrag)return!1;s.props.onNodeDragStart(e,s.props.node)},s.onNodeDragEnter=function(e){if(p.c.isIEBrower()||!s.canDrag)return!1;"dir"===s.props.node.object.type&&s.setState({isNodeDropShow:!0}),s.props.onNodeDragEnter(e,s.props.node)},s.onNodeDragMove=function(e){if(p.c.isIEBrower()||!s.canDrag)return!1;s.props.onNodeDragMove(e)},s.onNodeDragLeave=function(e){if(p.c.isIEBrower()||!s.canDrag)return!1;s.setState({isNodeDropShow:!1}),s.props.onNodeDragLeave(e,s.props.node)},s.onNodeDrop=function(e){if(p.c.isIEBrower()||!s.canDrag)return!1;e.stopPropagation(),s.setState({isNodeDropShow:!1}),s.props.onNodeDrop(e,s.props.node)},s.unfreezeItem=function(){s.setState({isShowOperationMenu:!1}),s.props.unfreezeItem()},s.onMenuItemClick=function(e,t,n){s.props.onMenuItemClick(e,n)},s.onItemMouseDown=function(e){e.stopPropagation(),e.button},s.onItemContextMenu=function(e){s.handleContextClick(e)},s.handleContextClick=function(e){s.props.handleContextClick(e,s.props.node),s.setState({isShowOperationMenu:!1})},s.getNodeTypeAndIcon=function(){var e=s.props.node,t="",n="";if("dir"===e.object.type)t=(0,d.jsx)("i",{className:"far fa-folder"}),n="dir";else{var i=e.object.name.lastIndexOf(".");if(-1===i)t=(0,d.jsx)("i",{className:"far fa-file"}),n="file";else{var r=e.object.name.slice(i).toLowerCase();".png"===r||".jpg"===r||".jpeg"===r||".gif"===r||".bmp"===r?(t=(0,d.jsx)("i",{className:"far fa-image"}),n="image"):".md"===r||".markdown"===r?(t=(0,d.jsx)("i",{className:"far fa-file-alt"}),n="file"):(t=(0,d.jsx)("i",{className:"far fa-file"}),n="file")}}return{icon:t,type:n}},s.calculateMenuList=function(e){var t=l.Z.NEW_FOLDER,n=l.Z.NEW_FILE,i=l.Z.COPY,r=l.Z.MOVE,o=l.Z.RENAME,a=l.Z.DELETE,c=l.Z.OPEN_VIA_CLIENT,h=[o,a,i,r,c];"dir"===e.object.type&&(h=[t,n,i,r,o,a]);var d=s.props.userPerm,u=p.c.getUserPermission(d),m=u.isCustomPermission,g=u.customPermission;if(!m)return h;h=[];var f=g.permission,v=f.create,x=f.modify,D=f.delete,w=f.copy;return"dir"===e.object.type&&v&&h.push(t,n),w&&h.push(i),x&&h.push(r,o),D&&h.push(a),"dir"!==e.object.type&&h.push(c),h},s.renderChildren=function(){var e=s.props,t=e.node,i=e.paddingLeft;return t.hasChildren()?(0,d.jsx)("div",{className:"children",style:{paddingLeft:i},children:t.children.map((function(e){return(0,d.jsx)(n,{node:e,paddingLeft:i,userPerm:s.props.userPerm,currentPath:s.props.currentPath,isNodeMenuShow:s.props.isNodeMenuShow,isItemFreezed:s.props.isItemFreezed,onNodeClick:s.props.onNodeClick,onNodeCollapse:s.props.onNodeCollapse,onNodeExpanded:s.props.onNodeExpanded,freezeItem:s.props.freezeItem,onMenuItemClick:s.props.onMenuItemClick,unfreezeItem:s.unfreezeItem,onNodeDragStart:s.props.onNodeDragStart,onNodeDragMove:s.props.onNodeDragMove,onNodeDrop:s.props.onNodeDrop,onNodeDragEnter:s.props.onNodeDragEnter,onNodeDragLeave:s.props.onNodeDragLeave,handleContextClick:s.props.handleContextClick},e.path)}))}):""},s.state={isHighlight:!1,isShowOperationMenu:!1,isNodeDropShow:!1};var r=e.userPerm;s.canDrag="rw"===r;var o=p.c.getUserPermission(r),a=o.isCustomPermission,c=o.customPermission;if(a){var h=c.permission.modify;s.canDrag=h}return s}return(0,s.Z)(n,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.isItemFreezed||this.setState({isShowOperationMenu:!1,isHighlight:!1})}},{key:"render",value:function(){var e=this.props,t=e.currentPath,n=e.node,i=e.isNodeMenuShow,s=e.userPerm,r=this.getNodeTypeAndIcon(),o=r.type,a=r.icon,l=this.state.isHighlight?"tree-node-inner-hover ":"";n.path===t&&(l="tree-node-hight-light");var u=p.c.getUserPermission(s).isCustomPermission;return(0,d.jsxs)("div",{className:"tree-node",children:[(0,d.jsxs)("div",{type:o,className:"tree-node-inner text-nowrap ".concat(l," ").concat("/"===n.path?"hide":""," ").concat(this.state.isNodeDropShow?"tree-node-drop":""),title:n.object.name,onMouseEnter:this.onMouseEnter,onMouseOver:this.onMouseOver,onMouseLeave:this.onMouseLeave,onMouseDown:this.onItemMouseDown,onContextMenu:this.onItemContextMenu,onClick:this.onNodeClick,children:[(0,d.jsx)("div",{className:"tree-node-text",draggable:this.canDrag,onDragStart:this.onNodeDragStart,onDragEnter:this.onNodeDragEnter,onDragLeave:this.onNodeDragLeave,onDragOver:this.onNodeDragMove,onDrop:this.onNodeDrop,children:n.object.name}),(0,d.jsxs)("div",{className:"left-icon",children:["dir"===o&&(!n.isLoaded||n.isLoaded&&n.hasChildren())&&(0,d.jsx)("i",{className:"folder-toggle-icon fa ".concat(n.isExpanded?"fa-caret-down":"fa-caret-right"),onMouseDown:function(e){return e.stopPropagation()},onClick:this.onLoadToggle}),(0,d.jsx)("i",{className:"tree-node-icon",children:a})]}),i&&(0,d.jsx)("div",{className:"right-icon",children:("rw"===s||c.rd||u)&&this.state.isShowOperationMenu&&(0,d.jsx)(h.Z,{item:this.props.node,toggleClass:"fas fa-ellipsis-v",getMenuList:this.calculateMenuList,onMenuItemClick:this.onMenuItemClick,freezeItem:this.props.freezeItem,unfreezeItem:this.unfreezeItem})})]}),n.isExpanded&&this.renderChildren()]})}}]),n}(a.Component),m=n(99832),g=n(60925),f=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var s;(0,i.Z)(this,n),(s=t.call(this,e)).onItemMove=function(e,t,n,i){s.props.onItemMove(e,t,n,i)},s.onNodeDragStart=function(e,t){if(p.c.isIEBrower())return!1;var n={nodeDirent:t.object,nodeParentPath:t.parentNode.path,nodeRootPath:t.path};n=JSON.stringify(n),e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("applicaiton/drag-item-info",n)},s.onNodeDragEnter=function(e,t){if(p.c.isIEBrower()||!s.canDrop)return!1;e.persist(),"tree-view tree "===e.target.className&&s.setState({isTreeViewDropTipShow:!0})},s.onNodeDragMove=function(e){if(p.c.isIEBrower()||!s.canDrop)return!1;e.preventDefault(),e.dataTransfer.dropEffect="move"},s.onNodeDragLeave=function(e,t){if(p.c.isIEBrower()||!s.canDrop)return!1;"tree-view tree tree-view-drop"===e.target.className&&s.setState({isTreeViewDropTipShow:!1})},s.onContainerClick=function(e){(0,g.SC)()},s.onNodeClick=function(e){(0,g.SC)(),s.props.onNodeClick(e)},s.onNodeDrop=function(e,t){if(p.c.isIEBrower()||!s.canDrop)return!1;if(!e.dataTransfer.files.length){var n=e.dataTransfer.getData("applicaiton/drag-item-info"),i=n=JSON.parse(n),r=i.nodeDirent,o=i.nodeParentPath,a=i.nodeRootPath,l=t;if(Array.isArray(n))return l?void s.onMoveItems(n,l,s.props.currentRepoInfo,l.path):("/"===n[0].nodeParentPath||s.props.onItemsMove(s.props.currentRepoInfo,"/"),void s.setState({isTreeViewDropTipShow:!1}));if(!l)return"/"===o||s.onItemMove(s.props.currentRepoInfo,r,"/",o),void s.setState({isTreeViewDropTipShow:!1});if("dir"===l.object.type&&o!==l.path&&(o!==l.parentNode.path||l.object.name!==r.name)){if("dir"===l.object.type&&"dir"===r.type)if(l.parentNode.path!==o)if(p.c.getPaths(l.path).includes(a))return;s.onItemMove(s.props.currentRepoInfo,r,l.path,o)}}},s.onMoveItems=function(e,t,n,i){var r=[],o=p.c.getPaths(i);(e.forEach((function(e){var t=e.nodeRootPath;r.push(t)})),"dir"===t.object.type)&&(r.some((function(e){return e===i}))||e[0].nodeParentPath&&e[0].nodeParentPath===t.path||r.some((function(e){return o.includes(e)}))||s.props.onItemsMove(n,i))},s.freezeItem=function(){s.setState({isItemFreezed:!0})},s.unfreezeItem=function(){s.setState({isItemFreezed:!1})},s.onMenuItemClick=function(e,t){s.props.onMenuItemClick(e,t),(0,g.SC)()},s.onMouseDown=function(e){e.stopPropagation(),e.button},s.onContextMenu=function(e){e.preventDefault();var t=s.props.currentRepoInfo;if("admin"!==t.permission&&"rw"!==t.permission)return"";s.handleContextClick(e)},s.handleContextClick=function(e,t){if(e.preventDefault(),e.stopPropagation(),s.props.isNodeMenuShow){var n=e.clientX||e.touches&&e.touches[0].pageX,i=e.clientY||e.touches&&e.touches[0].pageY;s.props.posX&&(n-=s.props.posX),s.props.posY&&(i-=s.props.posY),(0,g.SC)();var r=s.getMenuList(t),o={id:"tree-node-contextmenu",position:{x:n,y:i},target:e.target,currentObject:t,menuList:r};(0,g.AE)(o)}},s.getMenuList=function(e){var t=[],n=l.Z.NEW_FOLDER,i=l.Z.NEW_FILE,r=l.Z.COPY,o=l.Z.MOVE,a=l.Z.RENAME,c=l.Z.DELETE,h=l.Z.OPEN_VIA_CLIENT;if(!e)return[n,i];t="dir"===e.object.type?[n,i,r,o,a,c]:[a,c,r,o,h];var d=s.props.userPerm,u=p.c.getUserPermission(d),m=u.isCustomPermission,g=u.customPermission;if(!m)return t;t=[];var f=g.permission,v=f.create,x=f.modify,D=f.delete,w=f.copy;return e?("dir"===e.object.type&&v&&t.push(n,i),w&&t.push(r),x&&t.push(o,a),D&&t.push(c),"dir"!==e.object.type&&t.push(h),t):(v&&t.push(n,i),t)},s.onShowMenu=function(){s.freezeItem()},s.onHideMenu=function(){s.unfreezeItem()},s.state={isItemFreezed:!1,isTreeViewDropTipShow:!1};var r=e.userPerm;s.canDrop="rw"===r;var o=p.c.getUserPermission(r),a=o.isCustomPermission,c=o.customPermission;if(a){var h=c.permission.modify;s.canDrop=h}return s}return(0,s.Z)(n,[{key:"render",value:function(){return(0,d.jsxs)("div",{className:"tree-view tree ".concat(this.state.isTreeViewDropTipShow&&this.canDrop?"tree-view-drop":""),onDrop:this.onNodeDrop,onDragEnter:this.onNodeDragEnter,onDragLeave:this.onNodeDragLeave,onMouseDown:this.onMouseDown,onContextMenu:this.onContextMenu,onClick:this.onContainerClick,children:[(0,d.jsx)(u,{userPerm:this.props.userPerm,node:this.props.treeData.root,currentPath:this.props.currentPath,paddingLeft:20,isNodeMenuShow:this.props.isNodeMenuShow,isItemFreezed:this.state.isItemFreezed,onNodeClick:this.onNodeClick,onMenuItemClick:this.props.onMenuItemClick,onNodeExpanded:this.props.onNodeExpanded,onNodeCollapse:this.props.onNodeCollapse,onNodeDragStart:this.onNodeDragStart,freezeItem:this.freezeItem,unfreezeItem:this.unfreezeItem,onNodeDragMove:this.onNodeDragMove,onNodeDrop:this.onNodeDrop,onNodeDragEnter:this.onNodeDragEnter,onNodeDragLeave:this.onNodeDragLeave,handleContextClick:this.handleContextClick}),(0,d.jsx)(m.Z,{id:"tree-node-contextmenu",onMenuItemClick:this.onMenuItemClick,onHideMenu:this.onHideMenu,onShowMenu:this.onShowMenu})]})}}]),n}(a.Component)},50699:function(e,t,n){"use strict";var i=n(1413),s=n(15671),r=n(43144),o=n(60136),a=n(29388),l=n(72791),c=n(4788),h=n(53585),p=n(63446),d=n(95996),u=n(80184),m="wiki-page-content",g=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e){var r;return(0,s.Z)(this,n),(r=t.call(this,e)).onLinkClick=function(e){e.preventDefault(),e.stopPropagation();for(var t,n=e.target;!n.dataset||!n.dataset.url;)n=n.parentNode;n&&(t=n.dataset.url,r.props.onLinkClick(t))},r.changeInlineNode=function(e){var t,n;if("image"==e.type&&h.O6){if(t=e.data.src,new RegExp(h.xx+"/lib/"+h.Jv+"/file.*raw=1").test(t)){var i=t.indexOf("/file"),s=t.indexOf("?");n=t.substring(i+5,s)}else{if(!/^\.\.\/*/.test(t)&&!/^\.\/*/.test(t))return;var o=r.props.path,a=o.slice(0,o.lastIndexOf("/"))+"/"+t;n=d.c.pathNormalize(a)}e.data.src=h.xx+"/view-image-via-public-wiki/?slug="+h.oF+"&path="+n}else if("link"==e.type)if(t=e.url,d.c.isInternalFileLink(t,h.Jv))if(d.c.isInternalMarkdownLink(t,h.Jv)){var l=d.c.getPathFromInternalMarkdownLink(t,h.Jv);e.url=h.xx+"/published/"+h.oF+l}else e.url=t.replace(/(.*)lib\/([-0-9a-f]{36})\/file(.*)/g,(function(e,t,n,i){return"".concat(t,"d/").concat(h.lI,"/files/?p=").concat(i,"&dl=1")}));else if(d.c.isInternalDirLink(t,h.Jv)){var c=d.c.getPathFromInternalDirLink(t,h.Jv);e.url=h.xx+"/published/"+h.oF+c}return e},r.modifyValueBeforeRender=function(e){return d.c.changeMarkdownNodes(e,r.changeInlineNode)},r.renderMarkdown=function(){var e=r.props,t=e.isTOCShow,n=void 0===t||t,s=e.isWiki,o=e.markdownContent,a=(0,i.Z)({isShowOutline:n,mathJaxSource:"".concat(h.si,"js/mathjax/tex-svg.js"),value:o,scrollRef:r.scrollRef},s&&{beforeRenderCallback:r.modifyValueBeforeRender});return(0,u.jsx)(c.av,(0,i.Z)({},a))},r.scrollRef=l.createRef(),r}return(0,r.Z)(n,[{key:"componentDidMount",value:function(){var e=c.Nd.getInstance();this.unsubscribeLinkClick=e.subscribe(c.rj.ON_LINK_CLICK,this.onLinkClick)}},{key:"componentWillUnmount",value:function(){this.unsubscribeLinkClick()}},{key:"render",value:function(){if(this.props.isFileLoading)return(0,u.jsx)(p.Z,{});var e="".concat(this.props.repoID?m+" w-100":m);return(0,u.jsx)("div",{ref:this.scrollRef,className:"wiki-page-container",children:(0,u.jsxs)("div",{className:e,children:[this.props.children,this.renderMarkdown(),(0,u.jsxs)("p",{id:"wiki-page-last-modified",children:[(0,h.ih)("Last modified by")," ",this.props.latestContributor,", ",(0,u.jsx)("span",{children:this.props.lastModified})]})]})})}}]),n}(l.Component);c.av.defaultProps={isWiki:!1},t.Z=g},57186:function(e){function t(){}e.exports=function(e,n,i){var s=!1;return i=i||t,r.count=e,0===e?n():r;function r(e,t){if(r.count<=0)throw new Error("after called too many times");--r.count,e?(s=!0,n(e),n=i):0!==r.count||s||n(null,t)}}},59873:function(e){e.exports=function(e,t,n){var i=e.byteLength;if(t=t||0,n=n||i,e.slice)return e.slice(t,n);if(t<0&&(t+=i),n<0&&(n+=i),n>i&&(n=i),t>=i||t>=n||0===i)return new ArrayBuffer(0);for(var s=new Uint8Array(e),r=new Uint8Array(n-t),o=t,a=0;o0&&e.jitter<=1?e.jitter:0,this.attempts=0}e.exports=t,t.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-n:e+n}return 0|Math.min(e,this.max)},t.prototype.reset=function(){this.attempts=0},t.prototype.setMin=function(e){this.ms=e},t.prototype.setMax=function(e){this.max=e},t.prototype.setJitter=function(e){this.jitter=e}},60934:function(e,t){!function(e){"use strict";t.encode=function(t){var n,i=new Uint8Array(t),s=i.length,r="";for(n=0;n>2],r+=e[(3&i[n])<<4|i[n+1]>>4],r+=e[(15&i[n+1])<<2|i[n+2]>>6],r+=e[63&i[n+2]];return s%3===2?r=r.substring(0,r.length-1)+"=":s%3===1&&(r=r.substring(0,r.length-2)+"=="),r},t.decode=function(t){var n,i,s,r,o,a=.75*t.length,l=t.length,c=0;"="===t[t.length-1]&&(a--,"="===t[t.length-2]&&a--);var h=new ArrayBuffer(a),p=new Uint8Array(h);for(n=0;n>4,p[c++]=(15&s)<<4|r>>2,p[c++]=(3&r)<<6|63&o;return h}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")},15665:function(e){var t="undefined"!==typeof t?t:"undefined"!==typeof WebKitBlobBuilder?WebKitBlobBuilder:"undefined"!==typeof MSBlobBuilder?MSBlobBuilder:"undefined"!==typeof MozBlobBuilder&&MozBlobBuilder,n=function(){try{return 2===new Blob(["hi"]).size}catch(e){return!1}}(),i=n&&function(){try{return 2===new Blob([new Uint8Array([1,2])]).size}catch(e){return!1}}(),s=t&&t.prototype.append&&t.prototype.getBlob;function r(e){return e.map((function(e){if(e.buffer instanceof ArrayBuffer){var t=e.buffer;if(e.byteLength!==t.byteLength){var n=new Uint8Array(e.byteLength);n.set(new Uint8Array(t,e.byteOffset,e.byteLength)),t=n.buffer}return t}return e}))}function o(e,n){n=n||{};var i=new t;return r(e).forEach((function(e){i.append(e)})),n.type?i.getBlob(n.type):i.getBlob()}function a(e,t){return new Blob(r(e),t||{})}"undefined"!==typeof Blob&&(o.prototype=Blob.prototype,a.prototype=Blob.prototype),e.exports=n?i?Blob:a:s?o:void 0},94870:function(e){var t=[].slice;e.exports=function(e,n){if("string"==typeof n&&(n=e[n]),"function"!=typeof n)throw new Error("bind() requires a function");var i=t.call(arguments,2);return function(){return n.apply(e,i.concat(t.call(arguments)))}}},79773:function(e){function t(e){if(e)return function(e){for(var n in t.prototype)e[n]=t.prototype[n];return e}(e)}e.exports=t,t.prototype.on=t.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},t.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s0&&(this.extraHeaders=t.extraHeaders),t.localAddress&&(this.localAddress=t.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}e.exports=h,h.priorWebsocketSuccess=!1,s(h.prototype),h.protocol=a.protocol,h.Socket=h,h.Transport=n(11221),h.transports=n(36624),h.parser=n(92103),h.prototype.createTransport=function(e){r('creating transport "%s"',e);var t=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}(this.query);t.EIO=a.protocol,t.transport=e;var n=this.transportOptions[e]||{};return this.id&&(t.sid=this.id),new i[e]({query:t,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,withCredentials:n.withCredentials||this.withCredentials,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0,isReactNative:this.isReactNative})},h.prototype.open=function(){var e;if(this.rememberUpgrade&&h.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length){var t=this;return void setTimeout((function(){t.emit("error","No transports available")}),0)}e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(n){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)},h.prototype.setTransport=function(e){r("setting transport %s",e.name);var t=this;this.transport&&(r("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=e,e.on("drain",(function(){t.onDrain()})).on("packet",(function(e){t.onPacket(e)})).on("error",(function(e){t.onError(e)})).on("close",(function(){t.onClose("transport close")}))},h.prototype.probe=function(e){r('probing transport "%s"',e);var t=this.createTransport(e,{probe:1}),n=!1,i=this;function s(){if(i.onlyBinaryUpgrades){var s=!this.supportsBinary&&i.transport.supportsBinary;n=n||s}n||(r('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(function(s){if(!n)if("pong"===s.type&&"probe"===s.data){if(r('probe transport "%s" pong',e),i.upgrading=!0,i.emit("upgrading",t),!t)return;h.priorWebsocketSuccess="websocket"===t.name,r('pausing current transport "%s"',i.transport.name),i.transport.pause((function(){n||"closed"!==i.readyState&&(r("changing transport and sending upgrade packet"),d(),i.setTransport(t),t.send([{type:"upgrade"}]),i.emit("upgrade",t),t=null,i.upgrading=!1,i.flush())}))}else{r('probe transport "%s" failed',e);var o=new Error("probe error");o.transport=t.name,i.emit("upgradeError",o)}})))}function o(){n||(n=!0,d(),t.close(),t=null)}function a(n){var s=new Error("probe error: "+n);s.transport=t.name,o(),r('probe transport "%s" failed because of error: %s',e,n),i.emit("upgradeError",s)}function l(){a("transport closed")}function c(){a("socket closed")}function p(e){t&&e.name!==t.name&&(r('"%s" works - aborting "%s"',e.name,t.name),o())}function d(){t.removeListener("open",s),t.removeListener("error",a),t.removeListener("close",l),i.removeListener("close",c),i.removeListener("upgrading",p)}h.priorWebsocketSuccess=!1,t.once("open",s),t.once("error",a),t.once("close",l),this.once("close",c),this.once("upgrading",p),t.open()},h.prototype.onOpen=function(){if(r("socket open"),this.readyState="open",h.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause){r("starting upgrade probes");for(var e=0,t=this.upgrades.length;e';i=document.createElement(e)}catch(t){(i=document.createElement("iframe")).name=n.iframeId,i.src="javascript:0"}i.id=n.iframeId,n.form.appendChild(i),n.iframe=i}this.form.action=this.uri(),h(),e=e.replace(l,"\\\n"),this.area.value=e.replace(a,"\\n");try{this.form.submit()}catch(p){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===n.iframe.readyState&&c()}:this.iframe.onload=c}},59812:function(e,t,n){var i=n(96537),s=n(1857),r=n(79773),o=n(10993),a=n(36693)("engine.io-client:polling-xhr"),l=n(80888);function c(){}function h(e){if(s.call(this,e),this.requestTimeout=e.requestTimeout,this.extraHeaders=e.extraHeaders,"undefined"!==typeof location){var t="https:"===location.protocol,n=location.port;n||(n=t?443:80),this.xd="undefined"!==typeof location&&e.hostname!==location.hostname||n!==e.port,this.xs=e.secure!==t}}function p(e){this.method=e.method||"GET",this.uri=e.uri,this.xd=!!e.xd,this.xs=!!e.xs,this.async=!1!==e.async,this.data=void 0!==e.data?e.data:null,this.agent=e.agent,this.isBinary=e.isBinary,this.supportsBinary=e.supportsBinary,this.enablesXDR=e.enablesXDR,this.withCredentials=e.withCredentials,this.requestTimeout=e.requestTimeout,this.pfx=e.pfx,this.key=e.key,this.passphrase=e.passphrase,this.cert=e.cert,this.ca=e.ca,this.ciphers=e.ciphers,this.rejectUnauthorized=e.rejectUnauthorized,this.extraHeaders=e.extraHeaders,this.create()}if(e.exports=h,e.exports.Request=p,o(h,s),h.prototype.supportsBinary=!0,h.prototype.request=function(e){return(e=e||{}).uri=this.uri(),e.xd=this.xd,e.xs=this.xs,e.agent=this.agent||!1,e.supportsBinary=this.supportsBinary,e.enablesXDR=this.enablesXDR,e.withCredentials=this.withCredentials,e.pfx=this.pfx,e.key=this.key,e.passphrase=this.passphrase,e.cert=this.cert,e.ca=this.ca,e.ciphers=this.ciphers,e.rejectUnauthorized=this.rejectUnauthorized,e.requestTimeout=this.requestTimeout,e.extraHeaders=this.extraHeaders,new p(e)},h.prototype.doWrite=function(e,t){var n="string"!==typeof e&&void 0!==e,i=this.request({method:"POST",data:e,isBinary:n}),s=this;i.on("success",t),i.on("error",(function(e){s.onError("xhr post error",e)})),this.sendXhr=i},h.prototype.doPoll=function(){a("xhr poll");var e=this.request(),t=this;e.on("data",(function(e){t.onData(e)})),e.on("error",(function(e){t.onError("xhr poll error",e)})),this.pollXhr=e},r(p.prototype),p.prototype.create=function(){var e={agent:this.agent,xdomain:this.xd,xscheme:this.xs,enablesXDR:this.enablesXDR};e.pfx=this.pfx,e.key=this.key,e.passphrase=this.passphrase,e.cert=this.cert,e.ca=this.ca,e.ciphers=this.ciphers,e.rejectUnauthorized=this.rejectUnauthorized;var t=this.xhr=new i(e),n=this;try{a("xhr open %s: %s",this.method,this.uri),t.open(this.method,this.uri,this.async);try{if(this.extraHeaders)for(var s in t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0),this.extraHeaders)this.extraHeaders.hasOwnProperty(s)&&t.setRequestHeader(s,this.extraHeaders[s])}catch(r){}if("POST"===this.method)try{this.isBinary?t.setRequestHeader("Content-type","application/octet-stream"):t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(r){}try{t.setRequestHeader("Accept","*/*")}catch(r){}"withCredentials"in t&&(t.withCredentials=this.withCredentials),this.requestTimeout&&(t.timeout=this.requestTimeout),this.hasXDR()?(t.onload=function(){n.onLoad()},t.onerror=function(){n.onError(t.responseText)}):t.onreadystatechange=function(){if(2===t.readyState)try{var e=t.getResponseHeader("Content-Type");(n.supportsBinary&&"application/octet-stream"===e||"application/octet-stream; charset=UTF-8"===e)&&(t.responseType="arraybuffer")}catch(r){}4===t.readyState&&(200===t.status||1223===t.status?n.onLoad():setTimeout((function(){n.onError("number"===typeof t.status?t.status:0)}),0))},a("xhr data %s",this.data),t.send(this.data)}catch(r){return void setTimeout((function(){n.onError(r)}),0)}"undefined"!==typeof document&&(this.index=p.requestsCount++,p.requests[this.index]=this)},p.prototype.onSuccess=function(){this.emit("success"),this.cleanup()},p.prototype.onData=function(e){this.emit("data",e),this.onSuccess()},p.prototype.onError=function(e){this.emit("error",e),this.cleanup(!0)},p.prototype.cleanup=function(e){if("undefined"!==typeof this.xhr&&null!==this.xhr){if(this.hasXDR()?this.xhr.onload=this.xhr.onerror=c:this.xhr.onreadystatechange=c,e)try{this.xhr.abort()}catch(t){}"undefined"!==typeof document&&delete p.requests[this.index],this.xhr=null}},p.prototype.onLoad=function(){var e;try{var t;try{t=this.xhr.getResponseHeader("Content-Type")}catch(n){}e=("application/octet-stream"===t||"application/octet-stream; charset=UTF-8"===t)&&this.xhr.response||this.xhr.responseText}catch(n){this.onError(n)}null!=e&&this.onData(e)},p.prototype.hasXDR=function(){return"undefined"!==typeof XDomainRequest&&!this.xs&&this.enablesXDR},p.prototype.abort=function(){this.cleanup()},p.requestsCount=0,p.requests={},"undefined"!==typeof document)if("function"===typeof attachEvent)attachEvent("onunload",d);else if("function"===typeof addEventListener){addEventListener("onpagehide"in l?"pagehide":"unload",d,!1)}function d(){for(var e in p.requests)p.requests.hasOwnProperty(e)&&p.requests[e].abort()}},1857:function(e,t,n){var i=n(11221),s=n(55988),r=n(92103),o=n(10993),a=n(65590),l=n(36693)("engine.io-client:polling");e.exports=h;var c=null!=new(n(96537))({xdomain:!1}).responseType;function h(e){var t=e&&e.forceBase64;c&&!t||(this.supportsBinary=!1),i.call(this,e)}o(h,i),h.prototype.name="polling",h.prototype.doOpen=function(){this.poll()},h.prototype.pause=function(e){var t=this;function n(){l("paused"),t.readyState="paused",e()}if(this.readyState="pausing",this.polling||!this.writable){var i=0;this.polling&&(l("we are currently polling - waiting to pause"),i++,this.once("pollComplete",(function(){l("pre-pause polling complete"),--i||n()}))),this.writable||(l("we are currently writing - waiting to pause"),i++,this.once("drain",(function(){l("pre-pause writing complete"),--i||n()})))}else n()},h.prototype.poll=function(){l("polling"),this.polling=!0,this.doPoll(),this.emit("poll")},h.prototype.onData=function(e){var t=this;l("polling got data %s",e);r.decodePayload(e,this.socket.binaryType,(function(e,n,i){if("opening"===t.readyState&&"open"===e.type&&t.onOpen(),"close"===e.type)return t.onClose(),!1;t.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState?this.poll():l('ignoring poll - transport state "%s"',this.readyState))},h.prototype.doClose=function(){var e=this;function t(){l("writing close packet"),e.write([{type:"close"}])}"open"===this.readyState?(l("transport open - closing"),t()):(l("transport not open - deferring close"),this.once("open",t))},h.prototype.write=function(e){var t=this;this.writable=!1;var n=function(){t.writable=!0,t.emit("drain")};r.encodePayload(e,this.supportsBinary,(function(e){t.doWrite(e,n)}))},h.prototype.uri=function(){var e=this.query||{},t=this.secure?"https":"http",n="";return!1!==this.timestampRequests&&(e[this.timestampParam]=a()),this.supportsBinary||e.sid||(e.b64=1),e=s.encode(e),this.port&&("https"===t&&443!==Number(this.port)||"http"===t&&80!==Number(this.port))&&(n=":"+this.port),e.length&&(e="?"+e),t+"://"+(-1!==this.hostname.indexOf(":")?"["+this.hostname+"]":this.hostname)+n+this.path+e}},9747:function(e,t,n){var i,s,r=n(19778).lW,o=n(11221),a=n(92103),l=n(55988),c=n(10993),h=n(65590),p=n(36693)("engine.io-client:websocket");if("undefined"!==typeof WebSocket?i=WebSocket:"undefined"!==typeof self&&(i=self.WebSocket||self.MozWebSocket),"undefined"===typeof window)try{s=n(77020)}catch(m){}var d=i||s;function u(e){e&&e.forceBase64&&(this.supportsBinary=!1),this.perMessageDeflate=e.perMessageDeflate,this.usingBrowserWebSocket=i&&!e.forceNode,this.protocols=e.protocols,this.usingBrowserWebSocket||(d=s),o.call(this,e)}e.exports=u,c(u,o),u.prototype.name="websocket",u.prototype.supportsBinary=!0,u.prototype.doOpen=function(){if(this.check()){var e=this.uri(),t=this.protocols,n={};this.isReactNative||(n.agent=this.agent,n.perMessageDeflate=this.perMessageDeflate,n.pfx=this.pfx,n.key=this.key,n.passphrase=this.passphrase,n.cert=this.cert,n.ca=this.ca,n.ciphers=this.ciphers,n.rejectUnauthorized=this.rejectUnauthorized),this.extraHeaders&&(n.headers=this.extraHeaders),this.localAddress&&(n.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?t?new d(e,t):new d(e):new d(e,t,n)}catch(i){return this.emit("error",i)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},u.prototype.addEventListeners=function(){var e=this;this.ws.onopen=function(){e.onOpen()},this.ws.onclose=function(){e.onClose()},this.ws.onmessage=function(t){e.onData(t.data)},this.ws.onerror=function(t){e.onError("websocket error",t)}},u.prototype.write=function(e){var t=this;this.writable=!1;for(var n=e.length,i=0,s=n;i=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},t.enable(s())},49707:function(e,t,n){function i(e){var n;function i(){if(i.enabled){var e=i,s=+new Date,r=s-(n||s);e.diff=r,e.prev=n,e.curr=s,n=s;for(var o=new Array(arguments.length),a=0;a0)return function(e){if((e=String(e)).length>100)return;var o=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!o)return;var a=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return a*r;case"days":case"day":case"d":return a*s;case"hours":case"hour":case"hrs":case"hr":case"h":return a*i;case"minutes":case"minute":case"mins":case"min":case"m":return a*n;case"seconds":case"second":case"secs":case"sec":case"s":return a*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}(e);if("number"===c&&!1===isNaN(e))return a.long?o(l=e,s,"day")||o(l,i,"hour")||o(l,n,"minute")||o(l,t,"second")||l+" ms":function(e){if(e>=s)return Math.round(e/s)+"d";if(e>=i)return Math.round(e/i)+"h";if(e>=n)return Math.round(e/n)+"m";if(e>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},92103:function(e,t,n){var i,s=n(57660),r=n(98801),o=n(59873),a=n(57186),l=n(66397);"undefined"!==typeof ArrayBuffer&&(i=n(60934));var c="undefined"!==typeof navigator&&/Android/i.test(navigator.userAgent),h="undefined"!==typeof navigator&&/PhantomJS/i.test(navigator.userAgent),p=c||h;t.protocol=3;var d=t.packets={open:0,close:1,ping:2,pong:3,message:4,upgrade:5,noop:6},u=s(d),m={type:"error",data:"parser error"},g=n(15665);function f(e,t,n){for(var i=new Array(e.length),s=a(e.length,n),r=function(e,n,s){t(n,(function(t,n){i[e]=n,s(t,i)}))},o=0;o1?{type:u[s],data:e.substring(1)}:{type:u[s]}:m}s=new Uint8Array(e)[0];var r=o(e,1);return g&&"blob"===n&&(r=new g([r])),{type:u[s],data:r}},t.decodeBase64Packet=function(e,t){var n=u[e.charAt(0)];if(!i)return{type:n,data:{base64:!0,data:e.substr(1)}};var s=i.decode(e.substr(1));return"blob"===t&&g&&(s=new g([s])),{type:n,data:s}},t.encodePayload=function(e,n,i){"function"===typeof n&&(i=n,n=null);var s=r(e);if(n&&s)return g&&!p?t.encodePayloadAsBlob(e,i):t.encodePayloadAsArrayBuffer(e,i);if(!e.length)return i("0:");f(e,(function(e,i){t.encodePacket(e,!!s&&n,!1,(function(e){i(null,function(e){return e.length+":"+e}(e))}))}),(function(e,t){return i(t.join(""))}))},t.decodePayload=function(e,n,i){if("string"!==typeof e)return t.decodePayloadAsBinary(e,n,i);var s;if("function"===typeof n&&(i=n,n=null),""===e)return i(m,0,1);for(var r,o,a="",l=0,c=e.length;l0;){for(var a=new Uint8Array(s),l=0===a[0],c="",h=1;255!==a[h];h++){if(c.length>310)return i(m,0,1);c+=a[h]}s=o(s,2+c.length),c=parseInt(c);var p=o(s,0,c);if(l)try{p=String.fromCharCode.apply(null,new Uint8Array(p))}catch(g){var d=new Uint8Array(p);p="";for(h=0;h=55296&&t<=56319&&s=55296&&e<=57343){if(t)throw Error("Lone surrogate U+"+e.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function a(e,t){return s(e>>t&63|128)}function l(e,t){if(0==(4294967168&e))return s(e);var n="";return 0==(4294965248&e)?n=s(e>>6&31|192):0==(4294901760&e)?(o(e,t)||(e=65533),n=s(e>>12&15|224),n+=a(e,6)):0==(4292870144&e)&&(n=s(e>>18&7|240),n+=a(e,12),n+=a(e,6)),n+=s(63&e|128)}function c(){if(i>=n)throw Error("Invalid byte index");var e=255&t[i];if(i++,128==(192&e))return 63&e;throw Error("Invalid continuation byte")}function h(e){var s,r;if(i>n)throw Error("Invalid byte index");if(i==n)return!1;if(s=255&t[i],i++,0==(128&s))return s;if(192==(224&s)){if((r=(31&s)<<6|c())>=128)return r;throw Error("Invalid continuation byte")}if(224==(240&s)){if((r=(15&s)<<12|c()<<6|c())>=2048)return o(r,e)?r:65533;throw Error("Invalid continuation byte")}if(240==(248&s)&&(r=(7&s)<<18|c()<<12|c()<<6|c())>=65536&&r<=1114111)return r;throw Error("Invalid UTF-8 detected")}e.exports={version:"2.1.2",encode:function(e,t){for(var n=!1!==(t=t||{}).strict,i=r(e),s=i.length,o=-1,a="";++o65535&&(r+=s((t-=65536)>>>10&1023|55296),t=56320|1023&t),r+=s(t);return r}(c)}}},98801:function(e,t,n){var i=n(19778).lW,s=n(89588),r=Object.prototype.toString,o="function"===typeof Blob||"undefined"!==typeof Blob&&"[object BlobConstructor]"===r.call(Blob),a="function"===typeof File||"undefined"!==typeof File&&"[object FileConstructor]"===r.call(File);e.exports=function e(t){if(!t||"object"!==typeof t)return!1;if(s(t)){for(var n=0,r=t.length;n0&&!this.encoding){var e=this.packetBuffer.shift();this.packet(e)}},u.prototype.cleanup=function(){c("cleanup");for(var e=this.subs.length,t=0;t=this._reconnectionAttempts)c("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var t=this.backoff.duration();c("will wait %dms before reconnect attempt",t),this.reconnecting=!0;var n=setTimeout((function(){e.skipReconnect||(c("attempting reconnect"),e.emitAll("reconnect_attempt",e.backoff.attempts),e.emitAll("reconnecting",e.backoff.attempts),e.skipReconnect||e.open((function(t){t?(c("reconnect attempt error"),e.reconnecting=!1,e.reconnect(),e.emitAll("reconnect_error",t.data)):(c("reconnect success"),e.onreconnect())})))}),t);this.subs.push({destroy:function(){clearTimeout(n)}})}},u.prototype.onreconnect=function(){var e=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",e)}},91457:function(e){e.exports=function(e,t,n){return e.on(t,n),{destroy:function(){e.removeListener(t,n)}}}},11927:function(e,t,n){var i=n(99512),s=n(79773),r=n(21364),o=n(91457),a=n(94870),l=n(60918)("socket.io-client:socket"),c=n(55988),h=n(98801);e.exports=u;var p={connect:1,connect_error:1,connect_timeout:1,connecting:1,disconnect:1,error:1,reconnect:1,reconnect_attempt:1,reconnect_failed:1,reconnect_error:1,reconnecting:1,ping:1,pong:1},d=s.prototype.emit;function u(e,t,n){this.io=e,this.nsp=t,this.json=this,this.ids=0,this.acks={},this.receiveBuffer=[],this.sendBuffer=[],this.connected=!1,this.disconnected=!0,this.flags={},n&&n.query&&(this.query=n.query),this.io.autoConnect&&this.open()}s(u.prototype),u.prototype.subEvents=function(){if(!this.subs){var e=this.io;this.subs=[o(e,"open",a(this,"onopen")),o(e,"packet",a(this,"onpacket")),o(e,"close",a(this,"onclose"))]}},u.prototype.open=u.prototype.connect=function(){return this.connected||(this.subEvents(),this.io.reconnecting||this.io.open(),"open"===this.io.readyState&&this.onopen(),this.emit("connecting")),this},u.prototype.send=function(){var e=r(arguments);return e.unshift("message"),this.emit.apply(this,e),this},u.prototype.emit=function(e){if(p.hasOwnProperty(e))return d.apply(this,arguments),this;var t=r(arguments),n={type:(void 0!==this.flags.binary?this.flags.binary:h(t))?i.BINARY_EVENT:i.EVENT,data:t,options:{}};return n.options.compress=!this.flags||!1!==this.flags.compress,"function"===typeof t[t.length-1]&&(l("emitting packet with ack id %d",this.ids),this.acks[this.ids]=t.pop(),n.id=this.ids++),this.connected?this.packet(n):this.sendBuffer.push(n),this.flags={},this},u.prototype.packet=function(e){e.nsp=this.nsp,this.io.packet(e)},u.prototype.onopen=function(){if(l("transport is open - connecting"),"/"!==this.nsp)if(this.query){var e="object"===typeof this.query?c.encode(this.query):this.query;l("sending connect packet with query %s",e),this.packet({type:i.CONNECT,query:e})}else this.packet({type:i.CONNECT})},u.prototype.onclose=function(e){l("close (%s)",e),this.connected=!1,this.disconnected=!0,delete this.id,this.emit("disconnect",e)},u.prototype.onpacket=function(e){var t=e.nsp===this.nsp,n=e.type===i.ERROR&&"/"===e.nsp;if(t||n)switch(e.type){case i.CONNECT:this.onconnect();break;case i.EVENT:case i.BINARY_EVENT:this.onevent(e);break;case i.ACK:case i.BINARY_ACK:this.onack(e);break;case i.DISCONNECT:this.ondisconnect();break;case i.ERROR:this.emit("error",e.data)}},u.prototype.onevent=function(e){var t=e.data||[];l("emitting event %j",t),null!=e.id&&(l("attaching ack callback to event"),t.push(this.ack(e.id))),this.connected?d.apply(this,t):this.receiveBuffer.push(t)},u.prototype.ack=function(e){var t=this,n=!1;return function(){if(!n){n=!0;var s=r(arguments);l("sending ack %j",s),t.packet({type:h(s)?i.BINARY_ACK:i.ACK,id:e,data:s})}}},u.prototype.onack=function(e){var t=this.acks[e.id];"function"===typeof t?(l("calling ack %s with %j",e.id,e.data),t.apply(this,e.data),delete this.acks[e.id]):l("bad ack %s",e.id)},u.prototype.onconnect=function(){this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emit("connect")},u.prototype.emitBuffered=function(){var e;for(e=0;e=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},t.enable(s())},12701:function(e,t,n){function i(e){var n;function i(){if(i.enabled){var e=i,s=+new Date,r=s-(n||s);e.diff=r,e.prev=n,e.curr=s,n=s;for(var o=new Array(arguments.length),a=0;a0)return function(e){if((e=String(e)).length>100)return;var o=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!o)return;var a=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return a*r;case"days":case"day":case"d":return a*s;case"hours":case"hour":case"hrs":case"hr":case"h":return a*i;case"minutes":case"minute":case"mins":case"min":case"m":return a*n;case"seconds":case"second":case"secs":case"sec":case"s":return a*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}(e);if("number"===c&&!1===isNaN(e))return a.long?o(l=e,s,"day")||o(l,i,"hour")||o(l,n,"minute")||o(l,t,"second")||l+" ms":function(e){if(e>=s)return Math.round(e/s)+"d";if(e>=i)return Math.round(e/i)+"h";if(e>=n)return Math.round(e/n)+"m";if(e>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},88252:function(e,t,n){var i=n(36085),s=n(55052),r=Object.prototype.toString,o="function"===typeof Blob||"undefined"!==typeof Blob&&"[object BlobConstructor]"===r.call(Blob),a="function"===typeof File||"undefined"!==typeof File&&"[object FileConstructor]"===r.call(File);function l(e,t){if(!e)return e;if(s(e)){var n={_placeholder:!0,num:t.length};return t.push(e),n}if(i(e)){for(var r=new Array(e.length),o=0;o=0&&e.num=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},t.enable(s())},28178:function(e,t,n){function i(e){var n;function i(){if(i.enabled){var e=i,s=+new Date,r=s-(n||s);e.diff=r,e.prev=n,e.curr=s,n=s;for(var o=new Array(arguments.length),a=0;a0)return function(e){if((e=String(e)).length>100)return;var o=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!o)return;var a=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return a*r;case"days":case"day":case"d":return a*s;case"hours":case"hour":case"hrs":case"hr":case"h":return a*i;case"minutes":case"minute":case"mins":case"min":case"m":return a*n;case"seconds":case"second":case"secs":case"sec":case"s":return a*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}(e);if("number"===c&&!1===isNaN(e))return a.long?o(l=e,s,"day")||o(l,i,"hour")||o(l,n,"minute")||o(l,t,"second")||l+" ms":function(e){if(e>=s)return Math.round(e/s)+"d";if(e>=i)return Math.round(e/i)+"h";if(e>=n)return Math.round(e/n)+"m";if(e>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},21364:function(e){e.exports=function(e,t){for(var n=[],i=(t=t||0)||0;i0);return t}function l(){var e=a(+new Date);return e!==t?(r=0,t=e):e+"."+a(r++)}for(;o {\n this.setState({isClosed: true});\n\n if (navigator.cookieEnabled) {\n let date = new Date(),\n cookies = document.cookie.split('; '),\n infoIDExist = false,\n newInfoID = curNoteID + '_';\n date.setTime(date.getTime() + 14*24*60*60*1000);\n newInfoID += '; expires=' + date.toGMTString() + '; path=' + siteRoot;\n for (var i = 0, len = cookies.length; i < len; i++) {\n if (cookies[i].split('=')[0] == 'info_id') {\n infoIDExist = true;\n document.cookie = 'info_id=' + cookies[i].split('=')[1] + newInfoID;\n break;\n }\n }\n if (!infoIDExist) {\n document.cookie = 'info_id=' + newInfoID;\n }\n }\n };\n\n render() {\n if (!curNoteMsg || this.state.isClosed) {\n return null;\n }\n\n return (\n
    \n

    \n \n
    \n );\n }\n}\n\nexport default SystemNotification;\n","class Group {\n constructor(object) {\n this.id= object.id;\n this.name = object.name;\n this.owner = object.owner;\n this.admins = object.admins || [];\n this.avatar_url = object.avatar_url;\n this.created_at = object.created_at;\n this.parent_group_id = object.parent_group_id;\n this.wiki_enabled = object.wiki_enabled;\n this.repos = object.repos || [];\n this.group_quota = object.group_quota;\n this.group_quota_usage = object.group_quota_usage;\n }\n}\n\nexport default Group;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { gettext, siteRoot, canAddRepo, canGenerateShareLink, canGenerateUploadLink, canInvitePeople, dtableWebServer, enableOCM, enableOCMViaWebdav } from '../utils/constants';\nimport { seafileAPI } from '../utils/seafile-api';\nimport { Utils } from '../utils/utils';\nimport toaster from './toast';\nimport Group from '../models/group';\n\nimport { canViewOrg, isDocs, isPro, isDBSqlite3, customNavItems } from '../utils/constants';\n\nconst propTypes = {\n currentTab: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n tabItemClick: PropTypes.func.isRequired,\n draftCounts: PropTypes.number,\n};\n\nclass MainSideNav extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n groupsExtended: false,\n sharedExtended: false,\n closeSideBar:false,\n groupItems: [],\n };\n\n this.listHeight = 24; //for caculate tabheight\n this.groupsHeight = 0;\n this.adminHeight = 0;\n }\n\n grpsExtend = () => {\n this.setState({\n groupsExtended: !this.state.groupsExtended,\n });\n this.loadGroups();\n };\n\n shExtend = () => {\n this.setState({\n sharedExtended: !this.state.sharedExtended,\n });\n };\n\n loadGroups = () => {\n let _this = this;\n seafileAPI.listGroups().then(res =>{\n let groupList = res.data.map(item => {\n let group = new Group(item);\n return group;\n });\n\n this.groupsHeight = (groupList.length + 1) * _this.listHeight;\n _this.setState({\n groupItems: groupList.sort((a, b) => {\n return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1;\n })\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n tabItemClick = (e, param, id) => {\n if (window.uploader &&\n window.uploader.isUploadProgressDialogShow &&\n window.uploader.totalProgress !== 100) {\n if (!window.confirm(gettext('A file is being uploaded. Are you sure you want to leave this page?'))) {\n e.preventDefault();\n return false;\n }\n window.uploader.isUploadProgressDialogShow = false;\n }\n this.props.tabItemClick(param, id);\n };\n\n onDTableClick = () => {\n let url = dtableWebServer;\n window.open(url);\n };\n\n getActiveClass = (tab) => {\n return this.props.currentTab === tab ? 'active' : '';\n };\n\n renderSharedGroups() {\n let style = {height: 0};\n if (this.state.groupsExtended) {\n style = {height: this.groupsHeight};\n }\n return (\n
      \n
    • \n this.tabItemClick(e, 'groups')}>\n #\n {gettext('All Groups')}\n \n
    • \n {this.state.groupItems.map(item => {\n return (\n
    • \n this.tabItemClick(e, item.name, item.id)}>\n #\n {item.name}\n \n
    • \n );\n })}\n
    \n );\n }\n\n renderSharedAdmin() {\n let height = 0;\n if (this.state.sharedExtended) {\n if (!this.adminHeight) {\n this.adminHeight = 3 * this.listHeight;\n }\n height = this.adminHeight;\n }\n let style = {height: height};\n\n let linksNavItem = null;\n if (canGenerateShareLink) {\n linksNavItem = (\n

    `VW-5c3)e+>jY&VdbtRyosNVp;7q9S=D_vgB5%LDx37b(F|UUk!2{tY@MtK1 zXL<9Bp!{D0Rc<%Iw(v>MH=+8|7f|)M@i*qbFWeA$FqHr8p~`1G+!!u|ia!PwUoBL+ zS9trq;daPt;V5`7+#3D@<*)m<=5HWW`bR*O$9Smnn*lq*x!%4Ec0#W8JP0bj(>%}i zyZ|bnmqL}ty|55I1y%mf!glaQ*am(CmH+Rc!t3yzu?xHzxhqsZcn+!@zJp5dFHret z`Ms4(N2v4{L6zGusB#$tm7gh4<+dYKIu=8@+YKt-I8-|KgbJqy%H0a6e5{75x5J_Q zoetZ>3!(hq1T}Bn?)fZ~yHB9}e+$)L*ZaZJ-vcUL1EKOU+;akyzu7QTKswVcBfkXqgM)vyesT>Qi2M~C4!iwk!{vOurif={8+vuc9^H!i;j)epM2Dsbzz(NJ?n<|n~!@D;cz{1K`hZPMP#wHs9Z z%!SJ5K~U}eT&VQl2m8Sfq3WS+2jc|Kz2MWBUjPTebVu`lKHLWR0XPQ!?73|xi!TEe z&t>pu_$XBT4{mDlz60g2WoL6Y*)tA5r(Ldv*TMSD3WD2k*LRBorw@Gx9*cbYmIZF! z*r98I8|Q1F@_#f`zAl8y&%>}k{0VLkdu>(V)-y{WRTvx!mtlTfH)|(f!HLLoyBD~5 z`gpiI^2T9-drw;hQ^@zj!{Eps)^6{HYmvwHEC^P?2cgPq+}4)QYN&d+94cLJKvz$_ ztRA~T$z@RKPkWvQ+acctC&4G7+FSeH7Vb_^`8x)xJ>3R-z~5kB*rSiRn+fM39}2s} zm!RVL0V+LR`xdzIY&Kktyb!A2Jq=Y)75%JVUI>pz9#mxQ_#W5+d5iuQ-yo>=xDaYy z&p@T;RH*W}4Gx7L!DVps0R?V9vKp#?d;(>^{XlCk%V9C{S~wlv3}?V!;aoUmFp%W3xdbt zVyO9}*EZ&U093h^K$Ytn&y%3ic?DEGKL8cq2T;6D(91+ z{5=e3!;hfG<&oQ2I@dytpZ|cZVbARg+&n)RD*Ul<7F+~-!wWqhfqNtW3#y$hA7$gg z?NIT3>)CO%)#os%{7iz%Z@K4cZ+;w9d%hl?3g3q6N2|tIelLgecPCVNKkLnZh6=aM zSj+EVsPbnFk+ zPEUbye+g7SdDZhbm_+V1!P0jUT!?%#dIZ)%x zM^O3SZnAM143Q6ms;A4L((^r3{q>(>^*R}9+?fYe&PPM_t2##`gW!J1F{u2#16RUr=32V1hD!JQa2GgoUO})N9t(Ga zzd+5Ci+8eics$$z`D)kze}V~^o^S5nfJ>0Olvw;LU={KeQ2Fk-z}7WWpwcmHp~ZIv zJPNt0?Ux+>}utHJygFAcC&eF zF5DmS1E_XTvAfONx57B`fIa+r51x$t9#py;mYDgwa3b=Er3Jxxa0Qfomu0>`!4l+C zpvLDJP0-3xa##5U76prDxwVlb1lH`(&tc{|KsI z$I5M;aXwT#D~enF&wwW)*Fcq1K}CU%WCVvorK?Y+rDGXXy);0L2UoyN;q6f4&C^ix zl)p2f`u{DEq72@JtKft^&HlFK1;OdqzW{fJ$!c52 zJq+6+?_6WyC*b;XF` z&Hr{#;m(1opR=LLjT zaC*bg5}#`LHF0 zt@OvB%IO5Cc6Aw?3*Umu@8E_4w_jWX9bV_a`B4J?slrzUM-<-+y?1 z4K+S*b%5os0?OS!Q0^{*6W~+uYwEq-fo8tm!8UFcL*@TUsB!o$sQMjoh;cR4ymc>B zJgpD4dS3|DAC86UpXWivdo5IbzYLZBPoetfk5J{%Wv$6WpxVJ)FYgbP-gBYK?NO-u z`j?m2Kg{Cq57q9{Q1M&^)sOCla{oM3IzI7ohr>f=GEc;A6a zZ_6VreZ8U5y$CA5NvL@Chw^`l=Mzx*ZE>X4S9_>-I2_7<460mLd--0de7pixza5XV zct=8+FMtZ~7^reO6RMp&4ky50V0Sp?Xyfj%7I`12^nVK5z>SVEc{8Z=Yzvj1I8?sZ zK;`2MsB}Ez`3+Qm*z{Q2C(ef|pU0rweF-PQ4#!!z3!%b22r9j2LAiedYW(;b%Kfn8 zO|FM(H#b4m$AeJy_A=ZL1}9j3?+=ykN1)o_4^a7=e4?=wYMws;9soau^|0n7i~l`1 z6S>vNmcIE=(D! zTRCN*;<*@VJbu^9+g@SeW}wRRE~xtX0;(N%y|N%EBK!=L`8j{H_3-0R_0;7m>jyhR z^_P?3L-02!{|{Yl{j=LO)-GaD`CJKA9~VKjUgb{-#DoH-xVtT2ST~O z2ddq_3FThOvaVnNR6Cdf)lN?Gd=hFM(CT{Q&TusHWl;HgAF4b%++g9vV0Yv-Q0Y1c zs@`sas^8b4%IimXDJ;6t)&tK#^@r9sS^m01`C9~)?!BSXbp}+p&qL+obGRLBd$X0- z45)M+>3N&yM^Ne9^cG_|RR6jGs^9$ti(%Vat=z^zrL)4zr$VLg9;ots7Rq1S+X{k8 z*c+;S91T^!??RP-=i6-@8wXV`bD-8IwXi3A94epxf*Zh2cN7HsGv0KC+ajNRS3&SA z?dS#A1M}zaDF}{SkM;F^1;JC8ANU~S0Os@mVdcB~BUVnUpvvcZsCs=KDnH?)7Vl0_ z`-BWs{13t2@KdPv)&4QxKcU*mVNm1E4N&R63#wk;hFWL+1~u>R`glR`JgkMkz{yWo zy2d|Q;Pm;s!D*O31eKmPWJ2j22Nmx!sB$|MDt-4rm2>;2t=#)U$>mV#SPhkqv!T*? zCsckuf(obgGiE;mrjSdZ;(N%Oe+*SG8$4_K%D(VmEQK)wQ9n`q9)z?;zJ3-ac{%{|73sk!u@r{-LQBdXe8dQH8^sTkS$x!WT9$W_3 zK#jL=!Oh{1um|k$owbhkMo9X`(Q1v;2UHVz@aHxFsDJTqz>3;`6&A->SD0KOJ1J)C6m-P#S+3@I= zg>L=u+6IMAAC+lU==5!0LiO)y4AO0237iRI@FRF7JO`e*QDJa29JX;`@FBbxu7sDi zE_D0r?rjR4zVCQgLwqeaDRg?EOxwaBL>|$u(DnC)?F(JMjYIXDq-6T@F>rs}oz}6? zy;t0P(?VB2_rrhV?lq`#e7SR>Yfp2!6uR+b1ynmb9IBn%2-Q9w_52aK{YN&d;1&)T3wkUM&<(Z zTm+S`X;A6d1(w4#@E!ObRDK@pY4!X$oPgYVYm0w2l>arb6dn(io^N3#?B2`T-C8Jj zeR^9yw}(o{T&VuD6sjLT1yvs(!xLe7A2a_ERw1|VYxTDpwm`lPZUJwGo!~QY6Zjzv z;dkD=b3ZGe0Z`>O8*1KJ1FwLGLDkdnA`AZzsCC<&Q1xBdzcBa=j)%v=fddNNdEmR? z&BzZAEDUZhKp!}$FqjWV4KC!20R44HVXz2!&T#S#FCJm-@Q#s%Zhbaon?iT4-~xC& z;q=(n+Vu^v8}55;XPmq}?H;*wRAF$Z!Wmr{Y$bVYVK5TzKhDx|^Y}uicdnUW>3;^Q zzjc{d=*FX?q1J^jLY4D~Nrg^-el67e^b1tJM@+VUwi+%%z6&mcou(AJd8r<%T%Lgn zf0L<&Zd^MUCXio&>SvRu6*|4@YFLZhX?mgC&mIKj?h~kScfpK8w|=}3mLdNOu7D*o zt==DnYmtZVVB^&t@KebGN;g;f7@)X z^^-ec8_KcEyh3;GrT0$OK8v9G<@R2l3pE}r_2zp+*WW#FgBrKqfpXV&zO}OfP~nX9 z@{Vv@7{V=fD|F|eMte?yO3!Sl{49gY z=L)EFoD3D;>E8Z&xFPbxQ0|_EE#X&C>HiTbz3cC8`R@o-9@|0LSHK-$+VgIx_Oam} z7JqN3^o;hL0~KEk%H49Pc-MOSOCZ?~?qp0VAi)R2{EJ~DIF`F!g~c`8^9~!^nkKvZC8?2{7 zych?%ZudF}$oV}2j}j|{oWFxRC$ElcKLKOg6D zm>+M6#%^c)_Q&pB)ij~_Hy_+ydUllpWxn{aDIlGD_6ojeVjN6cILSi zH$$vY2S z8|Dma0jiQcb$jbEZlD3%^&9ZLvOb|X5X2!;A40(@@wAi5Zvkd8UMpDACJ5R_o>`# zF&l_kPwz(VH1DxZcJrF#PK5Jfp8Z7pT<61){%nBSY{{v{v& zK+F!|z6|#la-Z(~zJmM3xM>Ift-!dR!`-QvU5FdD_(2GdK-TXS{)(N}2sZ-BZ=xwSsfbszRDAA)1J zwWiWF9DjvA9Lb+yr)xX>?}%Nsga_f4Iy9f81#CI)jp5i_NH+yp*#Qizum%)8;GZ<>$ zaSr?mcL^WHZn)8v#;h}DH=5}7(3fL31GA^S+r2zliU$qcDegybvp!*V;rVjHc#Qik z!Z;K22jMwz7$(T~==vJFk=)yGZ|TibScb?6?qzvyE^C@@& zY0z~z&*N}+8genub(m?NsOwqG>oB{=hjTD|9P@p+561l%A730d`+7HXe7G0m<|ppE zvD13%Np4-!xrcE-;obiL+aTBAkEL9&wGZ=lo_EHq!H0Jm=BN1QmvDbnUS4m)t*&vH z%_O`r++SgKGIuY`Za3>-9_G?5l)xLfSNZT-c|PyMe8zL3=Op|bikqwP^EblO{^~sL zn7989^Bev1Q#@<^|2~|8*=;boN|3v7cOZl{WxEb8l@~rC{o^{>qcf zNbG0$G@X{02RS_r^X;%N!F(?t#tE3;=-tZ=>fB&8@*O;n#N932ukySdX7gcN@9!f| zjNEmFk83*Si@n`B*k})bftTBOHyeBIjNK*9H{*#fi+_0eAy47?yysE4>rHsy`!ttf zw;pC^aDU_7E#~=a-0bh&9N^<`jf^@q*u=|&U?FMQ$-9dqKkCz_psKw)J=c2ki@n)r z`1v0QTk9wHxww+|kw2n@jHP!#fDGvH1T1cXi%=E_OG1f8Tq)fS+w~ zSAg9om`%p*)|lPEa}Vx46{x>1!QFE1{c*b&)U_PYA(YN-Z|-Apa583(a-YxL5wrH(JK?tj^65T+H!xd+tg8y% zf&E#S-OTe$o_ljwm~}9e^qqoyHS#_@AI5XQoy7gE@NmrD!>B^$T-DrLV%C+#bTUWD0d z?`8|k=J{vo81}~gIPa$q=KEoP5ayp^u4_|ow*%Y)vrAwaH@Z?h{~fdM@wbBK-MLfP z4Mx5Ij)FUKKV{B?w|Ji8{mSS7-0K>}UCHy8KF%MJzx3{=dN*>n3-|ei@hf}@?!)~R z?smk@F5KTDmtc1cJPP?J!n=;=e%!ihF`Ej1!h9#p9*0|C7G2YM{ugE&`ndbUh2Fl1 z=f2prN0tt2EYE9s?udCO_$^$<9bIP<{uy4l)^ij59E;o4+;8#x4sK52-Wz`f$cOQ) z>mwh|R4@O_%Wd#ijyqj3%(mfqGS8EFp3i+O?zhKm2JZSG|H2(zBYarW|GmKT=D7O} z`=#91ahKrdBFz8o-CY7N!u%K9@5^&bSnTZ-=E>aU+}GmfW_TL+)`X#}h_Gk*=c9RE zV#dJ|+_v`SuM*aedEv>)k=RYb&6_-5$32DTwfOJF^G@7nBM-vOi|`=Kujf7!^XTe^ z`6CE>bN@itwXhO58(^;M7(=iFcAxNk2j(^0BfR-o&r|W!is#O_>q~q~^3r)3&#m(0 zdinAh;C~JG-w0zgyb8Phc?Lm<99?rUSRbJjKj*>$+&%Kb9*5fjUY-P7 z5Ra}Y@Eqj93Xtn#o^QkLzj)q=dvor4kQ2DufalA+yGL-hA!b`)wk`H`-W)O51-rG} zi@ezpJnK4|dw-t)k>_?P@^9QHaxWsB2jNV@z1zE)&-2mTd*F8uZ?-$nOK_`eE9@@i zc>>QH;8)j4xO7cKYMz+SCMz;-iZ4c{2mT_a_ia*J_e@|UbPQD2@B-cyEzAW z5Bwd1(P+%pz{9y`aO*3GbpYdGV#Qp-p|2yViV84p^ z#vtoz$Mccg*Kq6l))1`p_7d0NPuG5MV|aR#uxs!;*txJjKYRDbA%1|}aOCOmW#rqv z-yU##|NIf=XJJ3U$GNEm6Wj^k_F>6rG|w~hp7n1dh<(g6J0y{hpXT%xX~r+A9;QeUgOPVuB#LGCf@8^ z!mB|(8-Bz6cW=HKX8Uo!ja&s^C%|&jQN(jAo{xkru-gMa8)06L*@l>nMb@!nkPpRA3b)_FSGixqY$f;6*q7p0*IYyJ z8}{$;9LH{i59eU~eudegP}ld|LwG(Nx5sm@^yVutk8wYU*`e~gQOH%2tchn5HSu)V zkgN}5wdGv6^^Tk*JP`u{;C$E)I8*ud=FGZ6!g; zS6Q;QqB>EQ30EdERbf02cO!;*N+1-dd>UtJz9kH_mQ z4J+cQbRtzMM6HjM~ zGpjOTKLt1;zA9EzR~;`dOV)(Lh727(Xy}kZLxv6-GGx%uVS|Q^C@S7)!(byysxRrU zOlHENVQqY6Sewiw%Hkn8?cFb($i$Z_tfKU&jT*V_-LJO3riheheWaW75>l)L7^ds% z>XNBUyu3J^rZS7K%EW6`oGSHNd{#GvrSULm#{InNIQ2qhCX)ciiJDlYReZ5?pGhXe z>R76hYM)qLom?3&r^Z($YU*pkbYgW}K@OcgsW|A_yI(3^mn=&6lu@iY6_1rSgo)a) zGL@{aBe#x4G>9>=uqqX=7>f@PALAA!;w#4tj*TM}^RHaR!WFUVM7gWJVC!&JqBIqw zrKW@4{bDuA`q~TyM3mKLR32+c7nO$~j8!IalQSSW&cxLZ*29c>ZPSL_M)^eehk$3 zycE?!EUE$(++Pg6Z`73g{*ObecFnrMwesIhE{>LFQ!C*wC${Ls>_74MWuD>)I zz4A(`Ik(AFWvn)_I+oD@Pp?Pz@%3D%ndb#nmrSdd#@r}ao=BI~r`;4mZ_OJ*@@us+ zRhKI!3Atj*)#YCZwo&o8aVsyRycF8#Q|=~=C`oyKZRE?PTq9gFzTF%gd8c^tbEFs= zqC7PhUM^oNW16n~a0aKlahLG&GthHj$h7Q6ZB6pbq=|||nbi#If;40QD26#3D{^DF zOCsGe6D!N4$%3=bAEVu{=q%FpWn~0ZQD4oZQy#C5Yg!7JX&3n!eg?xwGSwiXOe&VH z3i{2DTVGA4!kXj?s=Ok_oJu>XE?-&~%TyJmi-LZvLNrxnFn0~ME|yNOOs2}0GL9^* zj@MSoofai2(nwTziRN(4xlu0jjQuhKlL}fS6HXLlQ82Wag-Ugt1x+lZ{+45v$|PL- zrDT=NEEvWpT270t4P#|xnxTT>1k_MlMlil31|y2Yesk*-RIIuv zoXj+tVcyMJ=eGk!wy5fv@>UQ-YH67~BpLD4nB1sWUq{>&8ugiA7t?w``PiOy<$ezJ z2quQ5)iGv9rpGv|mP}a{>($z%Th`KyCsMa5Dw)=(xzSG_dGl`?CvGnJV_R#zc_ryq z1e%kJ(#=f>gl6-$YR%2|tifsQ@l>|ns17q>w#^3PoLI$?uxMo03XjEIO{_c~*43A? z4A-hli`;ZPlS$N8rfIz_-}=p=i6^vVtzltH)D7`Wkqd{yNz=CE))w$v<2AK{vSLz= zv7D}v50#hJqs}T7EyC%JE9iG*iFTEsdRYt3!IAZh9iE#);u%KXN(qX{>w9cy?S( z)1F;F_cIKUIF~WEyllvd3eYU{L?Tn_ir#-Nwp{nu?B<5fx|Gr%&yE(p3>omWbn>-k zh8DG2kOf?mm&j;45DjK7G0~_M)}@jeS~DYyGpA)W$~ST}f;)Rvk$Y$~xQA(5eyUaN zRi7wZ&M59WhHr0_u-iDM*-u&D@ZCo3)TKS{il6pn>nc`?)COX}5mC4$^8Fh?k4hkpHn%LZC zEz%6k_;h>1yeP4Id&Dr0ox zYFbSyN{Ac#)k$NvsT$}u3aY6X?cFyN3q-qq#H3=i=?Znq#``)tL$gy8HB9Sc^Y0&` z1)#OBuy;BfA58ocN3?sk{b{$>p)b(GYSMqj7irR@@&`^CJZLUb{J8b!AGk#GLX%Pt z%noJAia$v{e%vC=Mc{{nKa65Ua(Udv5!2uk*2Pmb3ENKmX6G{HkvTEWeW5QB~ zWv@z0H_$#58M@nY9(kU=oYx<$KjLU*$c9V@k8e z<3bGv19l1~vFOPg045a$lh|2MBNl^urs2*azHm%^wfDC$m^^Xbg2^)`29qg$m2_FM zj)6A2+++KiDl1|KqG6H#RbQHKSB|zKo%O0c$$#lJ6?dL%8t7pa*#NDP?c8T+aS%CJfMPv*UhFEww!(U5 zMqe4(HCY*23Rsk~wogz_stD7IpbS{fhO~@zTePdrs3=^pYzLwQWgDPbY4O5(-#JTC zy|%xWNB;(3mLDV|c^(=G3e4L&Dd*TW*Ll99UM@wv#vvA@ZcmyGKnf1$o^iFtF9h7G zWD5IzsVjpi@v>Ayokl$CH*NtDnfm1W4ufgqj?+YDwdb~kS$9#G%ttE8sLj_^Q;x0` zyIIyPa+xyIQd+QFEpwBYt>)@@?ZXO$rQ8&!?C}UEdJTw~hQ38cwoW+}2{X0ohy>e| zMNzjx*?e>F1EU%(5uJ|6y`u3=qdd}=O^Hk6q@@CGqsLJ^=Z4C>X9Z!K zop?=MrXk;%RvM`|i!t6-{GPdrB^$0hxOYBDa?&q))q~;CAwwFe*YLxLVyZ(m;zk~A z!Qle_T}QIbpfm7LdDmysWmRy6-jU5gf$yKOOH@?w$B+KGC+{k<$nB*_u?jW&YD`Lz z{IQzYvz`)V?3t&qO^Kx_r0jMj?=im^E&oJm8rx1$#!CyF#pgE-BXlFC-AaS+BRSO$qF_! z3X>VxmA-adAxmyWQf%I{-Lr`}kUTcK8(YU6vuIdoWF zPx8KTm+hxnpOJ}=P%q-*ika1^bHiKVl-~*K)jC78t3fsgeFygSPMWo-V}DDGW8yV_ zT`?2a8amuxn}+Gs0e$?|%sro70)c~CT{O|4~}LMe{I(#=>A-TFLw zdF$=+&9bwSw`*n$ZDf-dp(aK-*W~4z6jS-s+DbMDRgfjE{bfjY6&J=`la{`OY%ym! zH#yt3FTNa5Mcd{HM#c~xdy`8?4{*frpv(NyUb(mYTlqcgh zOgWurBL_Z{3~0?dS((!KY%8B!OwtEP^P`cE@y@J!E1#^49=I+^XSP!du&kOrC1Kd? z)&i15}2|MF0-vcv<@=e zP?SanGpV<5%qS_>k=kUGX^@*{KF=XaBzmPH$i9|pY-{>3xp2jhA4xfI##Nl` zaT=Mdswx%Fu*Y)x!*xR;{T9-?QM%pH?*_H5`%yGBvZ#fjTbMTI;`bYTu2?K1qnt`B zY94ON_UrrnaLYMiUX+UC(7t?dH_H7f<=AZ0z@s zt0@(C`a!4PQ#^lGt?p1-xfWBL4O>+f*XBaUqIhMJ47E z6*srL7i?Pp`r(PnW?r}Qb8D73qnCdL=EpwM7BSSg7gG6k>|WEjVE>1H{9ynMpS`In zSA3dPDtN8kXgE_bGnPi$(Le2wa{t%M8OPC{)OU==xyx9I=M6$uz%~{&DrOx{M77Xd zFz#)Mh6vhZlBqpeUs+`V=bcuo%4F(B4Ib>Zt~&NNxaYWqb-XP>4G}5$-66KT>USYW zC*xdUM(5zN_3;N?&9uo>fu-#aD#69$>x!yS3%17O8&Nb9X%o;idET3EQhy~m*%skL zU$;?2>51`r#=n^QD;cH%yH_9snN)1S#>qodHsq%}=gbue%`e+D^Kuty+;9#Sh9BVJ<*KX!EN@jMl;mm>87uLoz(osb&{&nXWXileb zoCEbqxgFeG!0srR=7x3+=981vyirfuE+t$LkJW_vZ?>FE+W^at23U6rmrx}(&P-%x zn@kNZyqD9GzTEO;ZOvX^F|hH9S=%(XK$Bw%8fAVRiC54zHCbPu;Fe8vhk?;ZZEo-+ zJwj=svXPvwp-q^HJ3q?H1Dym$FXn8bJyLI}9+p-R*-|-U!{Z`0FZC%!#YC!xsQE?J zPY4W@wItKFpgyThd|0K|u%lIYHbH3ti8?Xc=2)`YAtL9-VoryH!Vh z1|WL7t5KlF{JUMZ3W>7U5#C^$J4-^=jJeEF78nveZI2y~dn};>f@z$|a(}|Pgv+Ui zX}o(0OIWtWYlG>OyOyxQbS?PR;B|Dv9~@^ZL8Qu;UKx%Grt4su{k6vH44O7qGo%s4 znCzsDlnTM^Z`j?tj7P`TQOmDT=zhvFwPabY>tKaS-g-J}y<)#%c7eIGzfs-jl@b-B z19HVaeg7x%??NT1)%vx&f19sYdhS)S^3rn-Z*N=?MDG;xQlztWK7Iey3d@Q%@|v$W z%(L;`S8J?BYQSM5N9HLniYy(hj-A(ZFufkNU@&9Bf_Z*dT#?<|sdw5U)jDV}gF)9d zN=^*cspQ?^QPU`LI4PLHZaSWFpiCl$W2%OZ8$70JnAcp)zyht!41cWAHH}EMnzx7^ z70gHs)E&A%(c2FMrf+{70m0sGdb%c(u8WuP{*&Z28Bk}i=L%*dQ;F3YK&r#}C`L$J z%BO2ScD#X0+M779FCdg`L-gYm39CnwHiMx*rQtXC#Az@e)~sOWykKU9`a(>L=USH* zH~G*T{41t(HK!@15Q=HEDVH*nc~l2pG{CB$-4QsfZFA4Z0yy@cF$@ejr=INT+NE2q zn_Jcm^_>2dhE}+J)ODBM(Av$31K?XdY{A< zD_0tmHPUOIv6syh6J3_2R#kne9jejMC;w*J#?n|dCzUj7pqs#Xseh$S4`T34j}G(0 z^=C88PO&)8QB+L+*{Rdg5e*2u!1o%pMj>Pq9aRQPc#Y8Lz+<7Sg}idlE6iNM&tyxa zQIxt#l{1H_;4E8BO3aE}2W|4ot(G+d>UQ=XQhd6^=GShcI$O84tfE~WG@OMGYN&=`nr~wPYg`<~pV~aG8&6{p+ugL+zm}Hg<)T zVV|&^U7KR%U?tg71xi^TYSE$0I%5s=vRRncQ*;o^zYCrjX;n=1m=#NOGBXu6F?FgJ z!fm9933JO=cl;q5^IW8PAJJG-bZ38P7Jn^_KXT}GF8|BunuPLKB1F;o`^k4FG5(in zY7|CZWHc02N|Rd1H{~3-Hu^RjI-e;t>2_LkX4Ab6xvbpWVHM3%w733wD#Tu4FA8vy&%f08<3+U`qc72{Rar-sCHDKaNB{(U-^r?E*7Q??H zWL9()?I*|vKjl=q??U{hyf~b%R~BxP%8tFcML?s_&;q$Uaxl_|<+mliaYSd@i+#Eq zB9d$O$%a;(MfRzdJ6aiS<4LG=5dE0rm%0rnUkPUYmU!h^)_^_{9T&=Pcscts6-aMf~twXc~#_QQBLH|;%Kt_qgKz0DbBxy zGix2@)@K}PtWM491oli~rB*-om=0#gDjQ-c!0|;p!^(4NxtlC`MNp2k$}3W%*Q#X5 zt0V(EOhG7ih@2G9wvT)wGH*rSqKt~noez<)wy zFZ2n(nmnoV57e%@HZ4AD!im7_v+S}~OC##`36fXH z5xpl$CyhydG0DE+H*p%V*wddJXp(28UEdGxoZVmp3vo7tZt)MTLpB6+Vr&NV z$LZ?SFx4yExNOEKsn#{5H1oG#&VPQZYidwzVc{ei4*zg(Chxflc7ACBb6BdS7;Veb zJg&?uBuTD}^k8GCp0ZiwIch#KcLxCM!9K+bC+f_)3v`}8E%;x2wv`{EOYKU=DErD+ zRwa3FoFzx~qw!L*H6=Y!0nw+{W|dtT$~F?*(x3Bmt~t37vNpb$nJH75MmFfq+$j#X zSjT1+)=B<_b2uAV>so?;m6^zJ&XH{(t3$WT;q!KPF2py5?CBIL*1gHJujm;S}eJfYa+srcX4QaIkB)1Or|sBVF6}ijmcvY=PJyW0sjV2JuWLeoJV|zu87|!S zY?K#j4*!gv)N++);OAFw!Z>0ll#|g3<+;IJHsw(_aYEGYB&ZQJn%(AV!KMA0rgW#{ zh}2)&0Bhf=wL_#`V1CvYAI@F$MGUJC`PT<09Df+-zl%}Jbng^hzloHRQK4s&yjWy^ zR2+s=S>U3evbXsbkWSRA{QQ_lsnwsYKyd4J8tK0DIs0ISd44W! zB=6HX`$d4h<6MDCMeW;tlg|+S%gniYujt+;MK8bX7Y}MQT`FM~j5RKzl55UxL_d!p zC))e@S0DCKA`4RrUkSst`DeFQQQ=la(SdF^pPCbQlnccSpVB6oxGSRdt_t0jJ3HS6*(bks$TP@pyGd(qK5X=YAYVuab5jW&z@3}o^bb(x z{ot;_bFR)}1RB(B3X6Wi!M)y~qMS{nAd`^B$OiuGL)g!)W{PqKldZv& zYlocae0>knL}b{{eO8>av$a!{4AoHnbeeBoYa19ldz-UxsbfEr7rJul=dkj(SlP*>;upNRO{Yjk&G~sn5E%J?tpk5j1W6xzEhHwXDFY4qn0Xve(I%D$_eEzj@5-_^{;+>mfz;F@S_d@b0`p$7Hsmvk$5~bVMg45# z%N^R+_-m*38FZTodR<3;FwMq}Qi__A&e1eiQ5*PO2hyOq2|;mZU5A>;7*Tl3Qp&i> z!Y5vh8j@Lnevpn2;w2JaOeR(^l=%!q5!<*Cb2Q+`wxPxLo zP3Bc;ib4$&6>h3s>3@;I-q5+h-_O#TYzOBWPdJf^Z4^SJfnLsw5sf>t^y(zN2Xp)N zq3(xQvgzd0OL|pS^mRuwORq4kHeZeK14dDCXYJiul19|Lb(HO)HWjYpJ+jwQ&!0y5 zLpLrqI|Ph=%IRZ?TisIm^zQ+(6Lgcrsub)C3mtL5pVlGvdZRjFs}a*0=91uE-ZVsW zayWBJFfUn+Y8#|7^_8f+ng1uHVyijmJWpS%=6?vT<&EnO!8}d~@mklItY^%NzUX!; zn|Z0E^g@20kECqk#xbiw+KEph1O4%vE2&-vX_*nYr^V=T;(FAYDQY`eEhwXi|ImQX zI)BHJzW8k3$}Q4!jr;eUxdo$tdA6<_f0iw`;9ti{y$*jbXO@&rnY8aV|EDFgoz@D~ za+JTZo*!q%%YAybOA)Ry8D!r8mQ*DwG6QyPWVVZ>dYzH-I(~EHH2w4ap-Y@p+Nuz} zfm?Cvcwh6T*(IQUQ^37xZnUUWJBUsk+M+r-??Z65(r4r2{7KbiCQIE9P%)eH!&IT% zk$;c8cM4`MuT1RTx;$cTe#x5TuT(H}n@vMb{}JQ6H*Yp2`og(W% z?q>qeYZv3Tq3Bds*1x+|j(&cuBZcwm@e1=iME|*4M z>k-Ce-qdOj8oh$e%~ceG|3+Dp)?zv06B%^Z-)VkB`s3GfTqU6sUx!zK1i=xne z=t7GG-o-awj`=U6vuSg=>8lq(stPh>>*Q=!+$J;El)cU_n@G(r^h7nez?hlDdyi)R28M$o_IvGYMo7=}v*T zk;-b{9Uf`s;K$(Tum&B^9pm6fm(;7=b5)!JTpXWw!gznGBhR5uA*kmxa-7?pDCQ_B zxmSx}f8H5V7HM`UtaseDmN50U+$S}AOeA-1Vj7(xp_k`q!|cS$;Qqx`nVRY*iHdo{ zY!>*!lv8AA`UaPpl`F0kBg!;4ZP9Ne%<|v*dT}A$NWEWH(V#@?XuQ5zH*cx2GP1GV zl$#MO9P`PDrnhLCT=VQ~;gHTVafc^NW`d$@DAqh>WQqMqnO}IPiL|<65CdoK-Ll>~ zV@y@XBHgS7hl$tKnswB|^lHJ?fDIukC!Fe)iXNo%&1xE1>G}8B;Z$vj+z#b`cXGW+ z9R3qDx2XI-iprOUKgHsIxX#WTxwkK7L`l!&MvCN-uN$KxMl!AeV=!t2~&Cb%RRVQ@tRHl@%|CY#!ZYI)L*vOUpXh8P%^?<%5;DvsP+i|$RtZ-;f z(f7xZks1~HBolp-AU}%BXrQyAEV)^&MM_{+b7}e2Pjk9J+)v#_v8m*;za{(sRe&0F zeBb-4K{l5-D{~6YWnKlC9i5eIf6g;&nQx>YL0VWBlt9kLmi*6`D}J1j*GihGjaIH4 z-5jkMBho449dp$uw)Q)?T2Ms?2h{y*oc_m6h!RMvUVi5$IO;>Eg7rt0U7cJJTke34 z5#@3TZ(*wKFKaA)7O9a`hKTN<$+`!;OPG0AFj;E&ciS&?0=(sA$oHD_Xi-C2HQl&* z+|8`H<${}Iwc^$JW1B~8;v~I#dC#c}TXfqCyl9v0)~_yuR&c~=XCyUsy5E_|)}))b zS&Ak|D={SeYZaAWc1l(t{s&#twg4VP#j-+oKOgPi?xm9C!D6ut=BAb0k7m2Wr<^TS zh_)`U;r3JwW>)n!3PBtkDJCEvMT_u4Q)n+pa1HHcdF9D=-XYw z$-UCas#jQY>Ql`omhJ}xd%LAcwAN|XiEB#w-nntu&U<8sveh3JrBJceQVvI-G)&8Mtfnl zE%d>7S&W?iRg8yAxO$P4cyGDiB)SrgR-#hsFM;@CbC-?nvv(43OI2*U2NbT87 z^Ny^d>^1K(vUOATU&=(&aM#I2^Ib9W)_5rQdiSPb*f(Th&qgo%n)Y85&+dR?PwBpz zvD7Bw(t+Br* zneo3@&Wz&Mz5F&^6DO#gU4q?uuW{=^1>sb>_G{X6?=wnXvl0LCZ+tfH7}0Jzzv(wKp{b(O0d&yX&D`sJ zj^3#8%Q@>59J?J%lPDWoHYtClw^*<;F?X0R-nwpsEf>%OHkvlCG#xs zV4peTMQ_dXe$PU$U!{;!RMrHV3ngdczJS!v#pn6ZARL`t^Ck4hw%N@vsyd50YD~>V z9@&wLtlA;+g+er{cXw*e#p|`K&Di7}3na8CV5Og5)plP{(*^xcTB<~{)1s6O?)8aV z_VZ>$dr(&+Dfiz=WN_?*v!rExM%zhuuEZ-MOs(Qtz6&%uSJEiT+^?qFn?_!GL~4ez z>SR4zeVUZC0~TR3Y7f^aTm;&}r8tG5&qlMFb*39WTi`dTI4)^AApg0h)GxWWU)I7K zYg*iUAY$ZWQTBsS#XFjYAGoI|co{P8P3r_7$xv!cj%#S6Kn_EvE^S(m4Oa_>I#YcV7~4u$yM z-R$vN_nxSoRrSbC1iFO=IQ2v$i&Z-apMl?k6F{3PkAirgq zQUaMyY>1?4<3GH5 z`MjP(#8=5G@tvaXi;vCx`eXgW>iKh<7ms(3aRq{x-&C(V(juD=;rZz;>m>v9Po@*5 zRPytF&MNMt&TDvFUe(j(wp}&=?H@Odrk9PNTYlg^X5v8-h0vsziasB)d%Qizb3R@@K7p%=J+<~66o z1=-7BJzV2-hvg17S|rrtRY_M1kV#)1rBupj+|i@d>^nJpUjQjqYv{yYg0`%&Q`gkk z@%V!N6K{OsO(xtwa`N<#HtE8Ylz|w&VQC zkJ|<;PW{wnZdm+q;}yM@03Yx*3{6R$$|c`v9229L&kVAYjQx@q^_?9#r&dKWQ%*?L zPFQ632dKa`2%>P4n=G^VX1G1$66JGS`Ry}oq~&-i5z z$5ZR6FsFD8U#0VWtayrqFRJ()Zr0p;Jek8cRqUi!eUWccqkFWPRXklQAg%pnA;@ba zP?lRm%TK5Jqp{Vj@|an*&-PQ~kN0Iz>cTc2LxFpRYX`V7hJ0Rclu^S{-AVlXVePK( zE&f5;lkP440mpT><%Rs;^a_WxH+~5b4>G9oVV?rCR}k`_SawbSjn$&CI8o6yp%`;@uO&~a zryqL$HK_Chv@hOlk_LrU(n*h)$noNnf2Yo|oblB|TNjTY2u}#=8>+ZMl0AQYFX+${ zz3>XfC_R)O7|KtQFzTOm%Ktncis3H%7dL-Ad!AD+|8rdbf)oE}RV@|8bP0L1mui(- zIlAVU9Oc#f!Dt(|yYc(M{*2T2t=XUH;R*fI zJ)2rt|MJOGqbzWc6|e0X{f#>dFM?Ag)S5=`iD^{D1`iT_e?yCB?o+EfCZpVyS*|s@ zDEWd~pzpI>@T?xY`2NN@8U$Kn-XoPt5PeB*{I*#H!yoi`O&*8qnJ#PjpYEHi zMd@7u+QYjZc=|dvEPiSUR&N#mbK?Eag+=;4tCtwL zI{3ngSTEJ5lhan5$f`uU>EN5)^pF0AH~c(BZ&@tUjt1RIaiU7I-FNp#eRfdA$LEqj zOdKD|>kaB6`cd*sNcYc!o3VV>h2Ku=9@;DEal5uoYjpNYFQDme%R?7TkrsraYUthu zHDYnL5MmeFW$7qa7_T0UKhPt5H6=aoyxx<7$}%Z6#(Kb^@}cvTZ%(KN#y4GmmpY&hjo|jULti6?-CyK)0jAfd9ZEZSM<}0M?NLaW)9n>CVqLJ@ z#H7Lbe*5VBlc_SR55+KBEKc1!I>gjXGh+==i>$jLXb$>q1mmY0MFQbXO z0;{|97iAotChCmDI4D>6wTRC|W0k?+Aw=~|@!+@n2{+*sb=Swb#j23afYkTeBv0s@ znl%@p^bisancgecEGr#1F9~cDVA!E`Lt=!rE>ztLw}6!*NEaKoiJ}hQ>xO*sb%r9URi0wqH+H@YaSb0deVfxYJ)Yo=!HE&pi-h|5YY zdQj0gmLy;7{lufZe&KY%ZFj9vv8o*|^|_LFa=&nB{WnKv;Y=`6X$Qf4U-$!1j0Tj| zUBU>1Dcs4Weq&+31`;VZJuWf2L((AdX34WW5tYy0dYs1O{aV?F&meMkx_Q221sT7U z89Lsbj2kCMJ@l+pIMnH5KRT(kQ}hJ2AUxKmKbp+WBPXl}=qYQQORt#SIH^a8202R7 z1RTLBom!KR5^NHmP&WVa-3CeN(&U!NeNAxJm(Efp(-fcKs}ISp60F2Dhr6ET(VAs` z-G+r_fJ-^alvr*?R-adRC7B~ibSh3X`}%-156<^_%@1)4=B1pP1+zU(xkHNS zOs(`J{q>CMj^v&lU3vGduk+a{K@+FNdErYh%&h8EInhUDXQ{FvP^i()rW504Jy4jd z>5xqZ380UEAzWF+Wb{a$4Z%64M!FNjy)IA@DR`&-9joYi>Jh9wS8x4D4N28vtsI-= zSYX{G{IZ%;dCQ1wJZ4rMRnMO;SK}otfp7&U3qLqEC?<*YU_i!+%i^r%sUdHT${)qH z2ghTHO?K&)h2(I0aZqS8V3|Bx9y>lfM5VYvF=sYmp*NhM>tXb+D@MIkKK;5dP@dD1 zjKjv6i#e(FR$@Q$o`Go&O^rF!{9(pP%OjG8QR!;hcl(P+lu0qero+o0r zPWV(v_aq6%BuIYjQC%8$2b4DuP7dk27}D90QoeyqkI4+?Cqws_=_U`?4sHokOM-ai zRG#NVxF_g@K9P8Mo2Lo3&tzzHQkbf`v2oWCC;kJq8$?+j$mjO!QqlEY5`mXTA{h_b z?EKV6K_XtFm|o%(rmb~K#xA!z#qY!EAsDFeAT1}Y`FdNv-{9oMi!9*FkBrx;t*sxb z&cscQT+Vtr?a-x|yma6!%4;LI^cb&>F!i+Z%jsdiF0!x)3>V$SK~2fe#dCdQFx@A7 zS`a7$;&@zP-R>Uc`+>UTdhBZ#cvtS`>0_JUdG>Ie-f?O-t_T#z^y#I*gLNx&8{Lg{ zJod)PKH~c#1{!Ya2`x`>IYO%RX@c%i-CLvY3mlGTzQ*Utc||iGSMfSb{vd(r(dhKc z=r03`FHMm5gVQ1In+ zA*p`LP!T1a*h&_zbZtS7|8lG8_9oAzbLRL1UO3JZgIWmZzb|iW{BXvVCOvm~dbW7U zamKQO{+~Nlwzv=I9_F)8txWnuc|05nd_GCF&|xQi zb=MyQm?gXUJ=pc@M|H-Y4!Y%9JQiPuo4v@DgnzknlB*#u^YL$bL4q2GcuyqH*Oi^`#x?Zp^rh;#DQ9M?08r1)up&7kzrm>_Ixt)3T1SJ=5tp znMRAf=Xr&xx`>%x5&Y75{^J*p4osf*d3beoTh63M3TCw%<@dYHynuQ^j)zbiv$z`H zeNVR;#SMRc&&JVNe(Pzsv$?~?2flQ1@$`$czDlR-0PJv^bi{2E=f)HpH;TDE64HKg z&P*3AXIw;m(fPnJ@TX%*C#6~d8ReK7!a+q?-SCK zZ0Rn(S9DfD^GYn^0qQp5mOUp?-SnchcRWa0p2cZh5a!k^zrd1Ao9-PyirAdfa7`;# zTSO}E&gol0SGQTJ;ymQZre1BCoHV_rLZ*F*H!CNg^PLN`ysHqfWFFyTf_Uqff{+nO_%_dfjJ|Mu$azsz6#um5y2{rErM`n&&j@5BG&Z|~}jL0U~a@~zWHSagpk zi}5LLY{_^oJ|G}64 z=#19I^<}H47$5J!KBBJ<9q+isb(1&g^RHeUd$@Zvt!cdc^24}>jo|gjchB*O*Kd03g`^qD;NA~yL+u!@e{@&I7y}#Pu`}zLfzu%v~k$>*(@4dM{ ze|3NFANKb?+Mi$E-~0Rhy-)V%KiS{=aDVUJ{k_+`5py-T^KZy8f@#0>%zrO(qVlRp z&tdbLfBrjj+VxLZLXqvcrijzc{k?npd$;%Z?wAxr-rb*H@xL5pCo=tFa^&6z`+IjS zD8juhQW6^0p%N5+W(u(%E)Yk;*vS-x2`$hN);E3hc7}$L>;yOnf&zmB6o|auB`Kvp zaK33Z7zC#`@>LUHLYj{(85l7VW^?FGHvnnnQoPrx25 zp#qBkWWAva4B1ClFaQs`hddq&;073)?K|GC=*Ywv5S(`HHn=Ew|DD`bF3o;K40nAO zfv`Iy7>Z_4b@BM4{u`@ zr2R>9aj`@i0qoeo-@tblArKRZ-yL?~#~+zFur**`v4;m*@wAPa!iBvk1TKt#8G8W| zf&QI0K(s_E17alqBIw_G*1dI@$hkn6NvMeyU>;f!Sv4yL%suj!S^YhXoatI0Cq3{W z4J^!mD|5a&`&|TQI$~neNad4JJG0*a6~c#V$;nQh=j)j~Mg=Vt#H`@J0NHoO9Tc47 zaOu`j!US;nJ0rqjws#rFptN{{GM63YSO-%e8DNuV!3yUqf!CvI=q~14mzw@NppIB1 zU}#;ngGe4oD1DuX2JnRLgGH6NBV>E$m2(?k0xkKy8Rir%qLQ3X=y?5@rRqBO`^tyoMV>u!@+sX&+Q6Ix5*W)oJnw7P8%!|myD z>?wi_{=n4mw)4E9jcn^V_#mF>?9>{{4Xj&S8OaU|@+&52bt$LZv8xT!R3D^u)YprD zcCoT#=3m*<_=MV`?ExdRFP52O(nUFz+qofGwSqXfqsuFi`^r53mOQftPyN^=?a>7RJn7sk8KZTWxtD>uE$n*g-eI6w>O@>rT(@0^ z8}8q`sd3~>(>b5taT^dM;7(p(4{ktGzU>l39%Vxn`1tH|>K!;jbHrG7M;m3( zB-@=ZBz|cc4B(L5)GY}~nYxJIk@=ban*Z(9HT6=mWV0XmJ=`w84EN>O_^-?oUuCPsGDL?(Wb8 z@j?wYu)+K2BbrL`^u5rDa~ejLE(7Tq3_Jd4=KznN?|RndOl=HG?#^1XgayQRZGPG! zs9}x1%paaTt}{_+$3QSgIy?kFVPLdPqz|;m+Ux|(Xd6HR?*LxL+q*=B@qqMRIl&KMr{#_adgpxRiBBNPw}saN&eUp(4{{d+wQcU@;K04xlRY-LHfGkLXT~Lr*;!w-&OP z%U<>ziBAV`sufEOhW1HT__zV_DLxVE_qprD;H!tyNG@^=r|MeAOC09~qXdoq`_z-i zJn^aSSUQ`i=kU&nbh?o5D>upnGJm)wpyRRRJ$wtDa22eq%4ysggBbwVw$Y({o-GHa zp?-bl32b2sd?iLh*9j=45`H?T$Vv+>VxcbginB1hfU~9TAe|X5Z!~rEV+*@TrA}g% z3dK>dzgu2i1d2P_7dzmRrO^v4MyE=nTqyV`_2D3pq#gzV7(yPBpuz@!ILI4^(H7hP+<(P4v-b!@SV4f{ z&{MF(vtwyNeBRD3oV>NO_yGoy$_TW9<6ehf@e519D6jHKY9@x`(@aD(#5}kZLy}_a z6b?yEq4fQTQ$%A=su(BeN_Pk?_5w+LOOUeI!=)vC(XJGBG)gG#?*Su5qc`$C7C}qR zU=q2mZ9Fb3(t^z~Nu)!Z9W*}-XeVa{4=4gJ0)(M=V^Uw?#=m<&6;lKnQxTHcv_AOD zdy5k|hKu2k42@vG^40_wka3fwJ=6M>d66D5vTI7%A2P2lj=-?DM&)5~P&hmyhXzWj zet5?YS;;Zq8ZlUo~fg+G#dlR~aFAVUdtZYg;gdhmmX3Q5Lk*?#Eah#r9!@vzv(KHkZ zq$AA8a9{+E&|({*_!qZ>$35?752RsptrCT!bRUrr*q&QsKRkK2vp(TUyOd4Uj_&t6*OlZKIe4Q%A*f5RJ4BQUb{$oCkT}|Y zf`j?ko3OZ|%po4GOv({>!@CoT$@1Zc41!82%Be#gh`wkQbVo$?;~cj}U1TL*Z zo=}>+bWIU)u}E70j1uKGt{4Pv!xPnsnb0EwkS)$mqQ2eoNg`pFmK0FY!6@UQGTf-% z)C_)3p27G&0;56HJ-OfnPh1^)p&NkXQDIzc*J4?^)zbI$J_#pC6)4nsSj5Vw zS4a#~T;+z{fYehe+1t4=$*U0*U&Z+3OvJ@3cs$)!Y;z(U(}<@YK+A!A7zq(e9;Ppe zJ&1_hkdil{H&ToiPKIigK0(?qCLean<*Vk9?N}%p;D(I2B=L*vMVmTbKq%Y}_T0Rp z&;Ip9#rt3s49SNE1Hap~H{Y`icoHl=k-Nx7uDS_PN*H6_ctFk~iLhj;xQ`9QQ999H zs#Ym;O<*tL!ZGbCY9oIHGLD>BTb7ZNN}@K+_zzbC6&HKp|idWSj%K3;_6r!=n=Z zkLAdF5{bPeXJEJr0kG#c)R=_y7=)>0V16RHf68OnbJKGody@{!<)e^- z+5<33c5$)^EZ}?3X&qKUy&fcP{clSV&H@Ly1qK*X*2*FEA-XXrf^&pXWa@Q8YJ!BI zK_JA6^RR1@L#`TT?@RgAe8j<-@=e2~ArR4o;}ZF8D)Lvp`+oIMr#88Pfe`Y2RL`%d z25Zqod*|}f@N#hF5?SYw_~=cRsQYq?!5IpSQSrm|{yMzF@(A%#eDP*9gD=y_ETydj z9zX*|ViV|8F&=1g_v8!bwod)<-|(TXjr2{J{|SP48>k|I+3eMw<{zumMDGze42&5` zg|!BCPrk$jv!{11o%_A#XHS3ayU#uS&9C9%C6pt0fFKM&#^n%fh!%hZ1zoM)zI4hr zP;rR3z+em@_49M-B8;3ppwtbOJhSALoF%LoFSs2gD~SIVr2+>66c-_nAl_Bm4$ru3 zd`Lpe(8P=+5r$s(G=7E|!M!ivob=4eP<1;j=hln_;EECx?_*jnNl?dfC==T>{wVWV zinLTBp<;Ma3P4}N7rU>Y2$is)!UXW*T0>B(b`3)t=<#&**iJh2IHi}eB&pUbV!(Ul zkyooT!LJjanhT0>u4;sc#7=odYs3WF2OG_8muX3KL4pbTr9V6fzHJ34D`kZMJTV|W zA$bD3QUBO*izX+F^tHY{lR1JMNUl3G<aY3Z}r1KyGMWGskt41b*MUf#(DNU(NB0XV@TjukhLq@fBn%#p~mM)3- zdPDcr6HcQu`4QDr79Hc!2Oy2}osw(oZiD$1mv|`SYxd-nZq->@l?GQrKDj7^_yH@1 z!dwuLS=fvITl4k>-dQ#5-r#k&VK!N-O6SQXo71%($ zM&&rzP-sL@A}|~LL?%gEDh(oYtZoBy2~zxMWt{&+YD9Il2aR3S=D10;b6Y$|*G?`o zp1QJwn3_|f^57(onQ0<06c3Q)Eik1x_shoP-}c1ak_A^B=2jz52>*Gdp%i{AOISZ^M}1j`25u3A_!t{N@#n8xU4aRxa7nF>qL;ZX+a9(HFC-n za}5@L5Z$$1%8gN+s-Xy6sRb+>gexnDt|2SJAx3-M*^+QnVd=ya$w-vbXy(UHf*($s)l_)V&XhQFLsB6l<;>-%ez3rz#me!h!H+M8J^ zWluIEpNSyOppo;NWLLzTDnAOGPnH}WceK6O%#N^1%+4o83&X)KE*$nOrTVImpQ^f}A~R1y2d z?82V>wQI`P%2`Pahe-PZP?<_FrWFT6g08xYJ!W5atkQKwbdl2U;Z&nSp`m$(!hlM{ zdd^sJBplxiKSrBog{BJ^zRi~u$5N4i<$9y01XG|w z8vzglB|(W;Vf4>*b1fjvohjKMCjd;=qZ-aD{vJa#CnpF=AWRRf_o)h;(+|oOAV+qf zkzs>8H7S7EgJzr#t60V2Z(aQkKn_7lYGPWHMr6Hb5wv=-;xJW-;fPDRVWKA=ZI z*A1N<$293;(fGIBB(f*t*uZP#EVd)H4Xi#~oYU-nhK!~hID4xYAum>7Ba%TDU_?j` zo*R+k*V6KqjeseX222ft5&vk<#)9@K{cCaxf<@iNM(LWkR##R(FiO#ulpboNgTi`X z>dtlvfE$s%KfmGxmmy)kOaWRA8$;_grxK7P5-=YdcXEU?0iP{|*ogWEZVb*RCM~+n z{+&XFAW&yr3>fhQu=e@IP~}-u)PwBRb@4vCmHTMWFIihBmnDQzGX?Jf7+2&m5Z=F= zV}QGa&~CDa!s9s1=oDrZA*6uNp!w;(^!O8<4TGZt9kQ~4CEmwWDABNKv&uZcI4(rw z_k^?=B40E`wxxtawN$Hg(Tg4V&INfJu5;V(No-0#n!sq8OimMX1Rn9pKAtb%IGXPbL6FfZJ1jJ$)TPs78F4zG6fTU3%jeP1#48;wH9-D%xul+(QBVP z$OoM=*+70IC)Q8_YhN{lx!x;6ft&pw(ECf)vg+6$fdZ+op1!0UCv__h><#$k&%)PEEi?~ftUmKjYDOS!DjYD`GPJ_PxE8!ZHun-5doX+m_WBp9z z)E>)ooFL+U5E-Pj&zxu!2((J26Ga*&sJ%Dmy?mB3?II15$LoB)>z*rufXop753cOt z5D^~*2KOgcNvh-}`+tj8do*-efY{P0MbuFB(*Z+h0c-n=%!rrJZ=DMxw4Y7AP5d(r4VVCk6-ve;Cwj^tOPIC`ArYxb1|<=X z6NT^|u)JsDNXi(_i^Q0a;D1q9}V9ZG|A%XR>qLRaxM;y;vmPH-a55}P*US|FMt;3x6w z?6xkSi82l0j(2=$hOZLqZQ>hxZTW(sZjRAJWf1; z{E#V>8ya~|)GS=U8AX8O7fw?mq!Wb$r$spw?{xJmC0l$aEGB+9Sm5CtwBU+UdWfMb z*s^--K`nW7!J!F{W*l7mCMm2lM0#kT2}oqu14Lwtv+6pW%k9ynwcM4z$W+8=gg3(B`ZA{SVJdiD9&w=~i%DN3Qru@lj<;8^PjF@a>ia4~Fyqt3h! zcpwJu{ATgtvPr+jE-(OAEv0lP0FMK2y8%M}J{Qg^J6tyz<}edtShH^htDMRH!7`#k z6>Ugfco#lTvkZM;S>DC9uwPS{hm;&>sX!Q6(Fo~jO5V|i6u>XY>XS`+Q-BK93awqI z68NM-0pLUg@WL04#3Y8M>7vDormNwS@_o$5K*VGo8+n;YF+ud-k?ABaG|*;lTd+aB zN_U6FOl^?z!eE0x56i8&1_Oh zv`p29z`T$zfQMh8A$m5z*F#@|IO`?btMTYz(pi>n5NS-dUcD)N1|w9A~K1Kh6-z;>&iEX^5cBOIW@(+2avC) zl-~HhC2k5ghupYocIq+1Zz4kQ5>UaB9HcU-N0bQ9z6k%6&|Bw8+zifxL0n zw7FxHX6|zC?bvSR0-bI?5Ct1!t)xn{B2DRGktXa6bZ)15+}J~sAwv4 z0|qmOP;*}>2g=mNA8PDDSJ8p`wf^i$5U(edPo&{Vx`P;(2Go(FNl%~(sNF@!pu>Yb z(z7hIct2S=t1h7kfUbITiiEqRtR#NYijW*XK!F2-8^{0}JfY1W#E=_D2yDjz+u!5S zGh}4%*wC80?Scv@<1@YH$Nk~#KgwUv`a*s!^bj5~$3#d3hG<2h^Q9M=2%-oGG!XsS zl4%U3V-Fn{rwust;@P)B9u@HFSP;%s#5tYgP{#TCx^>^(61QVDHt-Qt|kB0%q)&&JQ) zO3=j8T216J_1U-yurX2D87IuHCF-|EWuP*I;gwD|EYMqMM&LzKWF|;5LUK(Wn06kK z3Hp?D1r}Dvz~jAjppTD*S#%Rb+Ugq~kq&F3uC&DWK^O!W`eATGa3T)WQoR6_RuL`{ zC7;1nJVzwK6=D&SP{Ae0ULna@i9Jh!<%$<_a252Xr>Ts|?1+quSv~Ld?Agycouq*h#o# zni8O{|IHo&VGxz+YvqS-1ZbsXmQt>W4oCxRY@izg0RfJR#1T~h$xd|OXPBEq$U)NN z>4>3WEZzTC&@Cte81MjLfJEkEPaiB}jFb`pxW*NL*+V>~mbp8$oQ6&znA1l~9kLv| zmV+608;rv#`l8mSH4S3uS{2hIqLeDAk>MbV=Sw8(3-AJF@xg3yx7WXn-*ce<3nxvk?pK9;u|tPE^p7E5xUV=J@PI zmwS>J(Il=#U>T%=!Y_FuEmBqS7zRzk6d#7tx3CeyxPk=NKq-yF}? zGl5p3B=-OnQNpCE3XI4dK_bi`9@c2>tsqW98sb>+C*HGjB@1B#ERjlARX}9`pn|*V zH_~7x{-_)5!ebB)D}}9~!9BWXFD2Z+$AqXaCZ0>KSwjLvKeoTS0thqQAE|;HK?dn1 zT{n~|1@zCCvjrm!hQnY4m`WhCgQonKc$iyaN57_;4jsOOeJn?Y`a!S z>OriICY_&|@!@-)p+x(E4nzu_6H+2Ebc08T<>(eam@&pvWCrCHgL+#p8juOV>l5_h zPLFe^Po2DUT8l=zwn0q^Z(yJ$mwD(@anuNC_=9lLk;x2Y1a@N=F@X($@9NQxZ!m5h zisK_vzyK+f&@~@#aGwVANN^nbS(({OJA%^VQhNDHw?D@cxDFD&=_QY3P}4bfNQ=IJ z2R0vh&%bU9)z+^}HTo#_&i>vlYly0_jaroOn^oot9YaCtDGrGbAO`=ITLg%Kcloxt zzN(#-kaYvfur6sMu)#R61Cg+FczPksEJjBAiy0VG^M`HNkYVh{8f7FF1{h1H>=nkl z-AyPWf$e~6Q4x`r;^Ga|XdKUX<>KxQnH0}WP31AxFk!3Cf2?WlNVWHa`q-4MLxk$=yZp3a|1 z3G+|;-E0AO^a*7?J~X(Cp*d(=pw}8?FcJLK+OfOt>1Y2;cZ_3c>Eb-+I>bKVrL%)coEX9yr6(Q%9C`>Q zMM@OI2+dnea;B)7d!&NxZ6~YbA&)+H@&&b~VN)kMB^cc<&SmHrg!KF&7|sH>SKU^T zhez&QETIj8d(J?r98m%Gq$EmQer$*%_&+LyeOH(HYC?8YlxghMlj)-(XE#dO;p*X8 z=lV*qM;<~n+g!vP>w@T7mCuPO4ox;Y0L5X>)3ck2=o0EzdExI{hLJNmhy^9B^eGI$0GA`~{&3nlaGp|YOr>OWa6Q}*xG@SLb;)TY;=w-D$> z$~8E)F0%A`WdeYRp>PRArWiFY%=Ai}yl{F_{5dhSdp{Zs1n7A+MOhTTA#bR{)xyQm zQIyeFZ|VGuEz{)H!nYT5a63dXb-mX<5ux2AC701*GBqv)v?LJ9DF6PFfWajrD2Wp~ z)XTOQ$7r)BPh;sZm_x5f*2G1Gos$R~q?eplOMf)TdUC6|6B?4>T!RZdD<=Ehx2xz! zy|7Hu2KmT$Fs(8)0+3GUIs8{p><<%q(8Z(q7mAb5vkuc9cmO@)nRsv59RVApfIVX- ziNOV1yxTqT*cbnx8=ioWNI3dF)Mh5fZ%mpeCkBkLe4-TwifRC}uz&0%HgO6p&3J^v zBT5^@`mt!4x&}pK(Z9;1KE^zdg|?SsM656$X6}Wuwl4$N(-J40*ua@xAuxJ<;#|l^ zS#1FYl44bn7V<+;2*nSqAxt`5ngJp1)o%^7zO-LN47A=TrX6#@SCcF0C*PM z;iVqI)hh)MgRnDX>bItTOO+iVBM=b;(ojeXiqQ?+G{x(l>u41N^)HM?MGg~QR!HuP zcwD9dhIgx%v;Oz62`ADK;tOMkbs>mBkrM^N(sUGzF*@{D&-}^PbVh#5y5VBK;D@zR z=fSvgPh>qptV#s9R7(Z z`GI*Dv8+E?cj%D^<<&<=OK2-fiqDEkcoeIB3&##G*0+-Y5swEMLSb-ML1#J9KCZj0 z40))^AeBSFGa7E7E{zU5BQy0Of)rI9lU1B(uu#&136P+~=KLV%gjr}|*-=y8tZ(^b zRjc{S^-Php;Frn(LzN^()}-X9lBKl~>sAbd+TyeKbh&Z4Tf=6biF*+O{;+oLclui0 z`jm^3&m5uDAZ@&SV(aA#iX+|dgB1u%Al1TiD_g7)5A^FGK{s*NA&*sYk9Fh3u{loV zYfmml+1s_B*nh0*0bpM!!1qU`m|&1of9?d0n|y#ob#$$*W21nJ12IRO5YBAZL4rlY z#mT;yg1n3I?|QJ>0^$)fv6p11W#ZwE@$V&9%TX*WodTJ%MIcd(;GlxR?&?IYI_9?s zj4`4MQ7_3nz~_(ICAGn+9G;lxIphhZfh!ZzndnM-OWBRWgL*OF$I&DMdJ-+vwWNJK z`V6~&PIaU|u=w6uSp@8e82&|AEekW1q8@<|DnteX3yc*tKJc#dWvdUce29ga$*7=+ z8Q5_CRJ@c<%t;|R2%5-f?AoDc)QvAv2@!fQu*-FS+T_ z&yqE#k0Et_?g3`wC(Hu%Jv`&-YuwvQFSR<5luWK8&4pvAw8 zus4bV=ZBFo!rAe35S5AVb6S7e42}K=4}6ppcKMk~l-#Qy;nYkOMJ8HrXDx*Zw!vUJ zbyyso+9x&_H`VZ z+6j;cc>m_ATM{a99yK3~6p{F?T?GTKz#%MM$%=@Gp8E`dY z1~Hw9G&5mQDCF}peBKFbZQPY&&_GfT@sr;^1n-d3VHpfX9>E_GJr$0cos~&nUt9|T zsJfCMwdmo~Y=8qBYt3Ih$bOSf1s4N)ElX7i3AJGv#YJM;hylD41i=d4GM-^k<6Z6I zfEtB9xKred0Hn&)G!Ae`Jse{LuKY1Sdr6Rt zjp7h=9=$`@h$6{hjE#fUOTR-MH4GQ!vYGM|+!tL-P63N|Y8D68KAfCF93CC#W4*)& zBqyN(XQ+w2u?ZJJhGJnSba|)L|L}P+AL~YjBG_O+;<#HM#OoudK}+%fhn+FTPV686 z!JG7jd<0smMg$a7koWC)_#fKiUCpz&@gT%NpmsTdCY+TStY|DXk~eTs_CyYvnz4Q@~m5<@@|NLC6(YOk8x9|%>h-e+o3(!h+^(+aEn)SiersWI#LQFakI3SuPsT= zxedCLmq<72FfbY+(i)};8ol|s(mJUnW@G z&;VML-3xZ=iDb~)?Od%@& zXU!MtU`pvlYMhNUwmQo{g!wcX2v1ffolz&@%r>gAL6XR_qzu{D7rjLRiHVTXt}wQ5 zesaBD(u!z4lTjVacC9`C!WVcEDV0ls%PDXW0H-~S z+Eqy^z_A{F9F+*w7z`To0~BP*9;S%tC4Zv?e{}mYv^V@rSB*N-AwU0eJmRyGF2$6g zkseEM(cx)AYd04|uoHH+sc03d zgczqpq5M^A1$@Junobv%P7Mzx*b4683+MpUC&4B3+m3kP3E6hL=>0&G4OFBL;vDIc z!`%l_{1M-g84f;K=6V=Xj5ycNyujg>^JNqbY&NO`ilzvCJZ0oQq`^2uR1RDz;U|~u zU3rNVZTt7n-znKey6+Q_LoouI;71PRLkQ|YU#jBvfo0XiVLd)g?bgUvSd`QAoFJts zX2#zmw}1?L!gs30HsugGXI*y9OX;h7ymRZZ%V(nN6d_8b7LoACs}KOPv<$O2x~?~H zoLq71PHq1Pp5dR^R#%g%N+!lNsUFw0=S+J{XLXUTPiRZIPg7d(J)n^vR}MlBrX?W% zrT+L~af+acB7aMjsq(!+a=yz6dNZt4#CZ*~#KCmR8ASjs;1SLyFXFVB?G;ABtvj3-gV>5F#07r#SL_V`9Obm{lND=NX^Uq9$c*2-i z1k*5-jitr2KU0vAOuAolL|Yaqc%cXse_1_A^XIx{XLyj?nV;Udbnf?_J-hkh&hPzT z;dnay=Ny1hh=ej!*5rEKqcJr-=*u9KgGZ!hGE48TlgFG;c5QW{7Wd==onAL~unA-` zrLD*hH%$k4v+G1^k_n*N2W++!7DTx#aiVV>2q#<>1!_lxez;wKAp$u`1n}cuP$y;b zZ$z1rn{TcYLIy|brjHc2!HTs%k2Uj7pduD?Eft5KRxw;Mv%-#zH@a1Oh z6;{j+|B0P=)qVKMBkf9ynd2vFX0IadE3lAyrvjZ)d=($*BlLvjRbWLI6_u zUcZvE?l?=+uZ*un7~u!W8eZdFPUM6HVzB_g(a945CaZn%AEW8H-ih27X-p6;C%|Q> zWTr!%L6G-(gEOSaVUdb=i|1k3cuJ7dos=%kM-Wz%RE*Zr!Pe->LzD_JDv~SGaB~jg zpuju1vtbcQ&xAz&;$M!v9lw#DR83aSiWUSn0cBQfoV#JQh6({QyR#%TgBQ*@zO1gcNlsrxcWOq(8Pa{pZ$8Wl0krnw%!#cp0G=0mhfLDhD~@35y_yN?#an8CDi(ffrz*u8AQ}q z%Dv^32owb!e~P%i)(a*fVG*u|<1#lOh7^in{H#JsOS{(SHUBFM7YFp*VITAT%?qcu zUglBbZ=XB`B*EvS?wQRCFa5Zh2SP(%9N>R2TL+uBES~jUJ0;!!Ocx#8cF}l%IKmp> zq6-FhIxQOTgo-z!!^dVgtTT{~-nNAR3Ap*mpAL04Y!!Y24Rc|6=Hu#&-mM%2QTSPm z$zaEDIHsn&+nv$d9-&)~u@UB8&`i4G{ip&PCNnZ;D~UW=yK;l|#{c8Y|64cTATeS% z+G}hK-dKvC;CjCpGf|}OI7t%I7#jP8iJ&=%(PHgBKFh8KB=;{9&KLem?&2B-o&rz#{zDjt&F^5W5UMu^)ozmSe36)8 zIO-GpfCNbqAKCBMcVq`tA_c<>HG=P*+D04*_hkc4aE%SbWhM!sKL_$rL}5TcnlGiL zZWARLPmjdJXcpK;CH~D^CSt}uoO>z}UoRBrxC*a#0j!0>nOjGXnwqnlEaNLyvQI zDkj)7Ug~=6?8dosyl&PL|4`?yumQ1fez~L%<#}!bRbrxOgdW_3DYl7{(FRzh2kQa& z(A?|(byzSKC&pZS-iX%+0L8{Pppu5P>WIF~f35RP@OA$Nn9FNe#QA49}#gx3Wlj{`>xE&c1@1*S- zLBLLjLCNHb1jK@qBWdqL=ED%$xHkWix1xCqO&J}AZc--= zZVu^bS@LFngdlo>w`-wPV-FgYjM;7pYSJt^uomP`d=zQ$2@r68QD(yy0Z3dbMgE&z zUhd%l;IIp>Ab^`81m=YVWtqu&QA5M(l%Fpq_L+)_D9K!?#cAck_>5^*N;X_L&y>hO zH+&0|WUtgO0?Kg*cYHrE2!*sj`wVms$Wh1ckzF(5E#uPCig`>b3-vh`6%!GC9Hp2= zst-sA3^3zg=7u-)(Svepxut!F0Kq6xQb`ceZ~A21xcDx;e|*=>CtleaDtLR z1R#=;`Slpxa760A*$G~eDPTn`F&deua=16wE5_4e)dE2HqYlEI`MT`9l)Sn!$SayW zv+ykE4q3zbl_-W#B-@nqmLiC~iK9g%m|@Fbw!*>$r?Y7Nxsuh2i}qd?!~1LHlSA^m zcAEBSGgAR9Hm7Sr_;IA7BqM+ed~aAcjMyC4+G{+(7pG_+#xHV|Xu$M3PKqI%6j^{B zahMy^Ne@H^J^+P2d?r|m%~Bho~^R(5Lcz5p|rn#@B!GDgp$7-Ce~?kJ%7K`q zxiBFfOs~P7dVv;JgHXKeleZ8V$RJdjZw?V|afnbz?mz8H$P7!^(|*Aw(rr=%Hwn%Z zqpXrd8wm?P_Bff)DycwG-H@04urG-|Is}%8DhprORIB*m~FoV`#jdsPe4#r_mx$CmV&f%^bHlpcZBF9mN z>1_AB>e1HZj`OMRO76+j2gq`ZU(*CA>nJ9HAq~1=!Nar>&X=pJ&@NpK@TUI3&N1a> zE2iN|?VeJgaiX7Ha$Qf%ABs2EP>Vq}9x_o5w%!RE>8%KA3%yprNqA7)B3+#=tYb&l5W|?%d z=$lSH_^dObG|kJ~1CWXGyAB5&;{7U3UC9e3m<_Y|73_Hd7r_gQMk$7UoVPH)2$44mbeADDAJSm9Y(>cj=}&U*xgX3s z_}tID%EL2mx&WXf>e%Jb%+AZX-N8l5`oGdW}%;d?%l1_*WQP$^;kZc77>w& z{uJ{g3UL&PoI`9NJsVDzf*tca95pyjZvfFvv@}NtNacx1D@Acy|LM0T*7*bnERX>@ zn41lP7Rm?-WRdOQ$o{ZC%>qXyFtm}9`+9XFFT)3?eMt!gm{uV!4;6{zhjT;c-TeND zF^QN)s!Lg>FruA91SA^5Ch-lGtjqw!Uq!NCW}07#lw6n$v>A)C?z|`>Q;XTuzEpiI z>^;M@Yg9*ztI3*+p!VpjFOrHEWwCU9lneM|Uc!#h6kG)W?c| z!YVK8T^L_3RRTG3YL+#}bRWzrb`pi!lqRdp(wwGUV&P2a8_|4 z$cA2uOUcX8k%Wg9Q)ts2l=GQT1nV!xuS!THJzN!Gt50q{d9u^1slLie79SIebu3T; za&r1@BMr%UdL`9?NI#4ZVY&KEh~CuHBFlnkYDdv_T@J2+>~!*Ua&8iK);{#PZCz(= zz~ICEvj%GnkzJYf5uVci*4dm?k85JD)N@RH?#yKRSGq5gZ*|d00Kk-rMs0{N!_UYg zln3G;zvL*gA%7el!!h#ZG5Vg&Olnwpi-z93F@fxo=}TrU_<_U)?$YQj7h1;Qq&nYg zySiFO(dwu4*<0BrFQ_%#qUE0lLudtsr68p&Q+?^}ffE7^f26L8X!3{yI(swFn&ex! zQa!01n3=z5eg+;u*m?au9;q68!z_Zza?{S?`8YhDNGhWFTpXQjfP+Px;C_s|mP7YL zxNV&~U7o3o;RY-b|eAZGmYQtJH z1v~orB}}LLt1ha!u!otl)=S*fnP1NYc}UAuyN z%hEUqB{CR?A_F#>7ucZ6!|PrOZ;_2!5AV{ntY?*mF+`5DCtUF-fsAU>+O0LYji^BV zkBN|nWK3Db=D`sco9y`&hZbW3`qEJ~4aQ)d{}svBxUg0gHkh>f$5vZCT`udc;*vBD@tNX6;tco-Zb_0rZMz&rAdbSDn^fRdv= zH6=O87Uv5SXWAHtlL`J-6actlnJ_VMk^8)n&mThRWN*9mgqY6?{ zzR;Mk1pZjLSX%^IT&(i06A++8BY(##%A@++I00D`i51%BwXy?{RGhD_tpJO$c=`#I zhAQQeYjvMMOJs4)dA>IC`4RB;X%eM^>7v{7Ci>j(8NEe2yO@=9IP1~|FGN@}Y2sqdg86vV=vJ{I z(fO5Bu4KS5E(a&4I0ctA+jtnt8PE}TadW<>Tb%mrz>f&=7_!2P8NIGqY9>oBo1zRs z09mbg%cZr5f>9Qz*ojWKqgFKd!Q67aMmd08kybe1 zG%lcGHkYe08d-$XA9k{sg-e8x*Ik;4BN`jXN30>NPz~>CkyfKb7OIh^<-i{xq3a-7 z1Z6zJOYL2|11U`q0Ok3TLS6`C{@A$T#v6XwnpvB!*IFS?f~5IFQ9KrsN3Q{~ZhO0g>GtN%Mm_@=S*-v-fS_5NKfwseC}Ti^ zTKq%|vccv0!~y{A8jN8;MnYp4Y?Tt097XuK$6#hCE1PzX!05J^%r4k7nQX=ADDRL4 zDvriZ2;GXw`*XmHGPB6+wN$?ZXZB7}cC(P!6O^z(+t8CDAM(L5JPR3=#X+lPk6I;V z7UW=Ke-;m>ePZ@dVLu3A=-|C;(M#JrkS-5pg50%t#*wv(oRQNZ#)La&i_87PxW`1? z57WKPXn|}cd7*#45L@JIFqc^$!n7jx(8=beE-UD&<%relIoS!YH~66|{xM(xQ4S!# zeOTNkYnjuuJz^;w2PfBGJj4rfl9RB>kB|`oaW#a;XSnZZi7zAqxCetUyK<~0U&oem zL(I;K9)Lq4`>*!LsVL-f>>L0%VC7ULqnrW??T}2Dk$Y7aPVYl}N4{VRLd--;N)lp0 zA{HP+dx1H>3hV2{Y_6KO{76AtwVTIz;BAn8vU^ z_EyQ%`$CR}hH%J1NhI$hF*YURfffkqj)5*eGI#3S)=Q`L!2;k)IWZqwxV^^ZH+fj8 zsi=WIR-mHc5Ty5HKe;FiDQAc(#T1+kg`va0|BJH@g98y{!8?kDk)MfkJ3@u2ojpuX zcCO0NFxYF=ED(P6s%{}V`_c>D%Ns9rn-_LAF1>j2)J9Yu%P8wW5z$7Z0TQQ1BB(r& z`1WHEMd@%P&?4G*)z6c%*<^?9Csu4@JR}-4ww*^r;37;8++q;PnFF^S&Dk>ZE2+C0 zl$d2Pia1aY1-#w+B+WbK<0u{|5SMr}X*md`>w}m8<45=`l9@v=%)_8kS^=qC7{i@F z3oq*3*;CkqhG4{gDA-vwz zWK7JSbv@-*50cZ0aZ}WX9y-%m6fn4@n)&;SV5i#`6W9+KA~_qVJT;4P$Hbj6#I1#pl-`vd1PgsE=PW{umZD{jc=z|!BTo8RZQ1Z7V>5$XOT)0i-Nm48N zs0|sQ$-eMF%pWVe_}X22Tsc&{H!>lf5ws&Jb~A-|T^7!Z-yk3ii}ON?oyt)o4~G`a zqPRxILXLaCGs{5`-SjP$IeBDR)tHt+(SX3><;Y;0`W`r8*46F~?{YI&(Yy{I6ov{C zka@w5pQIx;?sQ*#taIXoImaSHp*lhE^O?P!z2Lygo$Q!?q$lTKMUCL!Umov72KrI0 zi!h*1ct8*GphT`4U&4SchigjP7fxQ>KFf8gg%Aa%x|rUw3Mf*SMu^!tL=~^gw`Mp= zApxVo7-`^08}hM*gD$0-X(0yb3>>anpKt*RG2|v2Q*%O9XCZ0ZkYG_yvyPDT zqoK2c0by{}$dGWMG%#h?mKj}g&SwwFqtS7#HOL9^Qc~#-ojj*kM~Ew}eLf2mC<~Wn zB6G?Y*2E6+Z=vYCh?hSP4w%LZzz z*&OT3u0;iF?hjqfmUUC$BHXUy7>#gm7%2)B7EeXc7r&1s+UopL&d^r5#nc&Skm-nardMYr>SfRoK*$%joGi#1AdjEm z4~*~M2*hvFEHWW?DKJKDl*&~v2w(Civ{Wzpgd_#-?9Z_%uEw^_CT7>Y#K@ky;Q)n_ zLUDA&x*2ha60|J{)Q8Rf{EDJMjFHc$jN0Qhqu?qnqmdzcVkL~}xCuE22?$MQAudWY z@@n_=*-KmJS(K?_tosJH6TGLh=spikD^2fMEztzXB=!9)p3=mpOWO~>iQ?r2_@ED#u7FC6PZQk93l;fN#icLg~ zwleeqT1-a|04RvWMg$&?z@g$$1SES<1J=$ric;v1LJE8-E=qh2R%ZY++S5|2urVSq z8`@CCziU~l6QX`8cyr^zPIvLr)|pEu&v)6?rtwQ!hSYPrO$K8Mg95qGVj{$AsYpjy z3B4ZzJa__xst!U#aRZzIIGTAktXAvO!W=V(XAveClb_SgT5?7>GZ^EqZ0-sIB}+p; z;;|fh2;d~+_N62xlwk4V|!*#oIZR*|u zOU8FOV)6|~BM!S*mr-3giA&cfPvwUhJWV&PR#&r$4arkh3IGvT1IN3L2eJ?C7}6@& zXvLj_I55$Mh{Q`e!T~1Q*fR4%cP5Wo)2^!mV~`wbr$v;O6DA;R$0dP}&tM;9pMYNe z8AThO1P8!iEg1ens1zn7uLzrPd`=IT=aq*Sqac5wI~CP>>r(fvuYVczAycWLpNN1> zZ(E$e8`1b9;sZw|XreZewjtmL0Dw2{Ly(TWkYogBy_l6t@(a5x2E0B=j4H#T138n~ zx9usC0|Je`I9C5Yoz97T&Ro4?p)uOp;S>2RAQwYMukS1kx>MXBnsb^k&e>nvdbiV zs9JPtR0I*Z(o#{Bn$Q3vD?IG0G!!6k)A#?~=UgKJ?0`i3NXA1q;t81?r7VK!xgv}t z!(n#8?Z|}p4MmP-G6$0&7RF1@r|&wd7LCDBQcGGOIglAFPn|U?S6Qlj=r&F{>jxol zP#wq-sWiIM_eva`w*2tnn1Gc#^rn6aZ^vPtUG`G%-^CYtiwVW zNr`|#(bj+rW{GW@BApqv4^YAMx|DRI-{i0n%H#q#4DL5zYGbc=lAjP1`B=$q4jP)U zNhXZdTXFRum6+9|rUo&y7ux}czsd2ZCfu@yKtgOTAG%uGYDB509dFaPc=7@_3!L2E z{_3Hvi$``&UOKa}bLgqhJ<5X=$$(ED(;(jAHptCH2;M-(ps_8ftA&liB4_R~g+9g@ z!D2cV!3VHNgHU-7tp-ve;?fj}ODDeF^Ow$%aKI@RfRIiVV({BRnN|s9$Z@w{CoJ+N z+KorVjrfhdU6sQSJ=IzBM?gv%@{nFojI36#pAbMOOp4}@n1Uxi)fg@?$&ZYDJ{}i4 z!D(}RToVc{{Z}dft6X&bby9P_6jCL1y#`pTN4%_^0V&I>L5ErIi;r*Ekp%7 zGkO()?ujpbsWbHW84#d68&H2AP}G^Q4@Q89MF_zUiEr40*FE!OqyT21{?k31uFUb9 zBULVHOOa;6ngFYlWm{IZyr9-K;OxeajpoB9REUAhDW~x0Sq-qDHY; zrAWyn@Mco1w-pH_=1NA1O1`c2cV>G0e3qLf=;D}&1QK`iJue`^o@-Vi-v}d6)xO6V z(dha(kmXSn6_H5Dnn^uC6%3|R1|i9y2&c5Q3B(eAdacvrRGl-C2Gz|vo^i!RR!vI= zv6lwb&I-dj4_Od7aAZ5U*+c93VoQVoCtwT&T%;1kZKYmF1i#m7$$=H1;UE(% zD@9T#8Y}B4(TGj9@r^(VNfA?e3|`DCix_-x&ekl+Tv=hrUwZ;@_FwhH+!6}>$<>g` zc?MuDRrbD_DR&{?tNU|OR65TbFZ1>v4HkB&ks z;6_WJpC16B9)9SQj0ZtdFlGaIq~{O05gHlTh+7D5swGUP2)zID{7LSX$S=%EUFeC8 z)0;ad{J8Y*Zd^EZgayna+Z#JOn-|XTR_MYSnpRCs>L4f=9U&A1jog+VvcHkl?m9Ad zM`6Jwg1uWd%kBL+-Wnw!^b8NgL*;B-aTo^F;;kQJ$M`L{ltcz_{3$#J-yep8jFQfl zs!GXDm1}e-0b)gTL|G6B54~DfIuR5A{ujHGwuUU^2^i>O&qe@*ffyYh`U58<@d|FZ zVZYD&<&fqSva3LEK_Qw()q1F#?4sY>Zb~eDt<$oWnF_CY@F# zz^wXmFb=B2I~mtE0SQPzi3klr*cf>782EL0$;nAAn4B3g2@9p=?}kpzlu^)=d|-gj zIMgLE9sscHUss~f2-5IiyKru zU`7fL8{=p|0pu=;BbVS>f&;@-sVC#mu#GyPmJYHT1rud(U^GEzG6os~2U_{3S|@Y} zI4Wyv7W;<=*YrS>f1&AFC1-sW4%|61rXq&8L3~R(|0zSst+7IdokAm&Z8i&)Eh}ST zIUoa?g61glfg^5e;*;ypgQVJUhr!CP z3Du(KTrQVsp(rm_dkbv13R2*fGz)j^bpXjUEVoz!Tf8ePc!~oxp$jP@t?7_>GN}mo z>st*57Fddk7*Hi{+g)JbYAkZdUE-GH#!tM0zqlhVR9#SGpaaS?0GhB+zo6C6v}vQo z8N?zu<<$SRd_v7EAhifWJWg?P?;(d3pY^EAPUCd7e&N|)i+#i3Xjz|OgtL^BKlHmu)xf74kmn^i8w zo?(N$K0Rk40%rabb;k}~xeLjddPxIUw@ONi_*DGMyEk1c#yRLv$0W^_&xsTnxyZV% zT%RR`B?gsmsd1%2pztDS6a=D=_Jc4CEQlT|D5-nb$`B$9rYsawu#t<*5TzzY{mJ3l zjn;6As*qDSDA$FK?TBC$VH*Q{Vv~)s_PS;;3+TAODO15NAj%oPXf4OU(yI0MVLXJs zYq;rg>kFbIxk0>~1aQcWMaiU+AZ%G1^8Z~;jMgCl0&n6E*P}ND@5w~mJDu_{4vS&& zP1a8*d~=j0#@x~ga^SawYvpnZBHZj=j&tOm4_2cW4d9a=>4nS;C&(5P1(LCoLwKCJ z!sR}NXR3yBE92vO)~xb;iAORr18rY-I1tYM_BjrV81Mo#g4-^f*M7Qmt0eT06I<;1 zUno&`p~S{OX-|g&;6-?`QTOrMJJBeLT(pR=;bib*Yrbxf&em#1#RF5^bs|HRthDwc z^>3%?RJK6HrdfM@kPc)KiY!N2!$M$9x{D`lujMFbfc22UK5T&?ic!#*kA?9A+edV7 zSPe0Q5bo$v0aloBxIc2k0Qzb7FdA_uiuO-Fx+7qYF zp1g2oBQ7TC;!(o~(oIh2=lI;KSN6qbBCJ-pY6B}LZ)IMtD(`HaNS{uvFJ1NQ7W2@3 zCd}pe=Ham+=_UNyA-KRvo`v18CLImP<8C7yt~&i76F?ztRqPci;~H=PU`2m!AAt_GNM~D> zE#*ig0L7M_ift+Y0wGqNN${5tv>;`Qv4oWGiR8;IDS4zfcIV&mK5g`u>vApveY9db zx76AhZCT$~x6V{^Qb{2|a;1tPiPN31izP7Vvj-e4?VQkH41YQU=-j+>`iC1Zt}()w zQwMh&_B}|?4CzbZDlh{d-2htYo}Z{KHyoPSdJJLmzw)^ShL4_Ri)#;9$a*fSC-3O* zi5juXw=d>t)SCm*6U2anMrC0GxNxGmp+xtHBeKteW{>{K#`X_)wk{s~+J)1Xwl+^6 z+x*V6hXI}$tVJR zUJ8n?OYRJ38csIa6p;m~z-HH^fuD7TG3V-1+?C{$G6NK|nxe4WeFW2zQ|ASiVnBD> zeoCi%RF6siB^mRu?nPiSvVb>6Ko2%xR+dr+G3?8KQFjEMmD6AXh7>lUvc zojkXB`b01Qb?k>E*a%A1MHuNEy#h1}Z8$R?4jh6i#)Vb7?ps|I$=5cMaTtGf(7{-R zOh`(>9zu*G^xzS$oR+AkWn5-T#78>(2?xOSZkqurMylYX57*J6)r9&BqyevbbhYc9 zMij!y$c8v0;-@gzOVvRitM&YSb40|K_yC++h`0@!9RQyqdS(Lh_QW-uS4ZZGE z7R&yjqi^RlQ0&PDfWTUHboPU9eRpOixRV?Psb}^J%!3T<#TRJBwZak03K0Fr{k`}3 zjStnqi+`jC$v6g=a=C$V2&{8DBx4JT*PJuKtv#;QCrGw;JdK0`2{mJpi_jf&BOM1A zgyh&HLMVV@*j+}4Z`(F9*+5=o#9VqeImkerDf}Di2@$Zk8#-VXakta5!B3GlRIo*m z4?D{Fkoo2_U)fvumRe>ceAzT`O-jcuzo+wX4%!uMrT2}=OJQh0y zHuySR_<8f_QJq@guaOe~5Q25r#<*SMtZ>DA*i|XOv)LB$MoR3Od8Rec0?1f>&a({A zZU;z+fs_L;vb}o}3?h#wJ^1lf@=v)MPnGqJADV0JhFws^vAG8aS;*G!b>G`Ob++5t z(3j!`CVx2bz?*v(Mtp=^Z499P#3aNCNIi7#!`a2tFS4T%&4w5Z7|0)1ivj}leJeG~ z3#3P0_TvdkVG&?aoTDg`3NRo<0#URJvWh*Y%Z!aIpc;Xm$aLG8(@H06ONg27l<+@9 z%t69>ixD(r$PM<6&Hzd>| ztTEMAPmNM4Dwr(f2Cm4Z)3=@$Uz#0FK*38w#rK@-w zaN`N^Q3sI#Ws8dpDSB*8m?BeTjFfQ{R=o=keyDgCx4H@n}w{@0yFXCVYl5dE_4h0h@xDl;l+H-4P$hRJVX|FvNKg_r&7pIuC4gi!rwBc`nFUGv#*UjG~a&_Q%T h1*ifie2gqVb+I|+z{W^J=To2`>{P|zTiuG`&Zs_Qnjq-h)> z3&Rp%B8Er;7?L0p1d%8SsUDZ8h%D-WBIClS6%`p3Wd=b}A7I|^oO5q2sa`VA)KhmY4Bw5 zmtZ3}0^!8(G*Eob1W~~|A8Z0IbhyTie;pM6M_v1AP^$hI6rUFy{t?u^e+EZ@BTz!) zBSGzRI4C~HfLcEW)V|YP`%F;swmAGSD1ACX*`W{A{MDfNtpzpz7VvH07Vz!h1K?5M zR~$YC9!mSy4qpPr=O1qTz+>&YcY>NX4rIui25Mf5>tE>FOF{W70FMVl*S--vlJ*8r z^4<%|4qpN#=fj}v@hB+1-*xS0K;25Nl=sC_c7 zzZcZ{PrCLspw_PiHGduW7VtJu^KJ)ax2>T3_C-+q_JCUVIM@JwA0%|Ve}IVOjeeK) z-zlKvZUQxbE~xbjLGil;ls%U_>~**Xl>OF$l4}zvy|%jcc2N8t1m(}2uK!yOp9JOK zAA-u4--6orAE4|!0;i~b6evAU0L5=CsJNTp+S5VFagJ+W07~w;p!8Y_ieCtd-&LUI zUk6IBTR{2yv!M9yaO2+qF_rhE!{30~{|!*~Kaip!J_mv7KLV6KM}yLLA}Be|0Og+x z!S{emK&{Jz()%h<`LrI?yv?B2-w#Tjeo%IO0+jqufzszEp#1p)D1NWI_QCJA{N4>p z{|TVhHG$G+2B>vQ!LeWt?AvWw8IlX$uky|eWtqh z*{=iH@Wt!4*v#f-`7F$A4!l2 z4|8}FC_5bsO8>FoTfj-6{MHDn{!a&&AK-bd;OVr#da}irK|;oxFwW+~1)%J)6r2in zJKPMupY~Ir{CCiMZC#%MQVP7lwO2X38&rNh3bKXw94LO?c+O~G8pzvQ&POx29=slW z7S#TiPOz8(<;SbQE5UW(25{6wTd%f&;`0!Q3%%#S2Jm%I`%gN>+MyZb?akpsb#8_0 zzX8;K>p|J!Zg3X(El}sfA(K4s1K=1C7kEjB*MYLfeW3K;3u^uA;6dOCldW81LCG-( z6u$&0Ij?l>J3+~_%e5bO?Y-b>^uGcc|DcrCUjX6)?=n#R*Mj1A52$?}bM2plTK^^} z{-=>_sN~HCCGX{+^u8I?`p<$|zX#Ml&${-XK=Bzd#g0!07t@{(YX5EE9`Kv4y$UC5 z{TA?Wu;1Ym4u1;1mHyv>lH(;%`yM*Y#_bqzB<+(y#Z4n9e=G*&=S`sW`6hS?_#;s3 zr<`izauz7Qt3ml^GdKc#7JM7{Gf?`z0E*v8l#^Yifogx$wXbpbASgY421?)GgOY3H z`#8(MM({|m7nB@pLGjrFYX8SU$@3rfkDwiZTDJn!{F^|@`3NXEpLXq+ zK}x9iro$7NEP2iYW$#Nt?b8eL_SW;EJbe-*1iXVO!kTwFsCb?ao(J9nO1~d~(qk_u z{a$hX$4$5SIuR8Ac2N6X4Qk$Ia1Qv08$X=n)_#*f&A%8F--5&ILHY9z@Mv%^cr5r= zQ1&^Z$;#gh9!L8M5R-eK2F33?pyd9QYoBzM)$?3X>puaufnRX_2VeyG>0Izb;B}z( z`z0tpy$163{Bvv^ECo-XeLc7Uya$y0uY&T&A?I5CP64IIhe7e#?C?9F=Kl#4-vba< zdY%hPk2X;Dz8;kQHi8F(Ujt>wM?uB^==1G8>Ui*Y+Ec*U;2cnTej1cKkAT|$c~JYj zz1iYeP;q@GsC|;)d%znU-V2^c`!P`Q_5vusy#h+UlL!*YaVq#R@NAG$;N1yc3Vs)) z6nm%4uy$PxE~0(E!#63kPG=Ds(@fL>}*S{W=|964f z|A!8rcla78K8GTt>@)@x|7oE3eh?f9rok7%72ttj`v>j1PH;T!PlB3v4=6qlg3^Bv zD8GCU)c!Amn)fCsc}Ef?JbI1b0pKgpkD(4ouRiGQP#3fp!cFG&&wR>{gk{z19@qL7 zco8%SIs{q@$v=vTcSE?#`vKGn>9q+O1xc5k&L#M03 z>t^Wt5Uw#X^)Aqdl=pi5Cv>ZM^1RQ3pMm}fx&z8Wt0BFvfaXD)p=Y6opg%&julLaL zQP-(ja69x_Xo~9-taHy39bN~1)jdb>arf|L@C(rM&|=pYI6MV>6&elw%Jm8U27Ric zeG<<-(B;sB(08CyA;QeN2^t3#pd+CTkZQrj(A`kwE39aIh3Dz>~V{yWqT?STFQ>2(J5Ug%CWcujz|KqH`Ypa-C@L;nrwwGny&`VI6i zPzjm}{SI0H{Tdnry#qQ7`XN;LdW6Q&uA|YRa$T=4S}=FkyLc`_v!Q>3GSJyj<*Sp% zGtd&~GH5#VBJ?F_A#@(}ACO*;L3_-T=lu`36*>{x27LtjEp#Q+3_T9LANnN}y>8&) zH0V(18&LGR%{^S>@EC9wbRe`0`X;2;;TF7KfY(CrgMI?7f%N(s)MTFc-VA;l`Y+dB z1U?0&pl;~H(2dZe&~8Yte&__~uWD4hmh;>KC84LGKS6(nZh<}l9Ry{ES*n4bD+u4C6G6vy^zfYnY^C~^Qn$hdm^6-GZV|*D}rp!^fb5U zQ!4_`Kq{XKa$a*XDe{|>-KmUe`UyRn&P>o-#nN>4ByzdlFq`yyvSB`eVQ428azR!T z0x`54EX#D-Yfh*A3$kIMhaGsFUm>RLX)P>Er`r9wsmyZQ(UD3Ae!j0qB4z`>FD&@E zf_vyqplUw!lR-Mj2mZL6f8M~8vOz8%vM}G3%K7QkvTP#T$Mixn6?)Ap68Qu|8)))o zBr;OhZx4I={A4PNa$&a5A2%VFZJ(Iaj;VYOF_u-1C4=0=T)eb9ToLU5()J)N4uFq& zycu1IOlRQ0Z*}(eW~2jzoskZ6jD?wwRJOZf5Si&MWb)pOY>>z^#Q>g-dXka)b|{3G z3!AytEOEOvk?(5q<7Q9P#FE{9g=c1BzGVr-nHh8>3h6v3k2vs~+uMymw$}zgG&V2j zUPipQp~`@W`W9q66PeVNCYGbVwp4e_eTm}Du1`i7n_i*q#*Dyf<=V5U9uuw=&puI+ z4K6R>ZE?vbQfbXyk!lb8`3bX|p6QF?!J8Sj7rK>g?O}$@5=Xy-bwRQ*9%Fu(8K3u; z2SJZddmCXMADm;Oy$i7!PMR!1j?CN-LUXxW!kfSJq%{E_-ED?sl30qFP9Ix zeVbFW%|4!mM!%Ji$OV3TSJ1wk2oL;BkS8~nH+r*?$9(unx2rTwrgDj82-;*O=eiOk zMw*=S^VviPg~Ja!e5MCkO(vm}exb+m%6YTHbdoyaT@Wy?05b_~Kj|%yXWoTDy2rcF zsoT=(wR9&sv0Y1dPngY%A?sT*eu5fcQ&E0u$s}x9YRPnjw0a788)U&1`5>dhmGirT zY%tl+1w9FE?f0hgUHUWFl39^Rr;-$iTt1aC5#%d~y_S5X zzZ<4p91F!Xa>#EzL0jS$Bsxw;ei_AW-QU^wJW zBIi_v=7*VpkMdFI%vIILW(AcXg?y(yniiy!v8djHOuEmeZ^Fl9sW7RTE=-!d*o@_; zaxyoTJ9A!D9jk0GM9OBJrDTW&N6jM<`oxuXa!5 ziM%gnd7l$HP@!z}TC)`Cu#n>+RPaO?r|KdSt3h7$%+rUmDe{!ZG=8nQL2$ds`U!hl zoyQ!V;y{L6a9|_cb`c0!U%8WXQM)L}1^II1m}YBllBMSA5n-GX^eapk1uMekfh+8b zLR46sSV56#Y;5!v2MMDTm~HQ}`}nC$)h&ienWXt39Gc8SyxJ7Qi|nZqnFT+Xva%zQ>`%sDYT8+O}4zb&*6N&f?V(bKX%?UT9^EqW3ho*d5z zmrvwz(c;3gZce<#I_z>e)!RN@vWP$~SF-ZN9G+Dp(XAT;&CsL~dt}3`@{;R!!6RG9=*-bZIk~0L)BISI-V{gQvVc0* z!^x=d3OHm<@JOvtHE^2WMS5r4oBSp^jJ9T54?DuwsTxW2DvnBN@>?MSi zn%oVz?8G-ElOy)5YVY37I?347#Oiw1!4L2Wp1!EsI z^rb2muZJMd`MFnMyW%pwO9XXbYSC zQLPIasAkw9%rx+&AZYSWojUFGhN-;I^rxQQbn5g;Q+bWj^{K(QmxCwFHu%~ftnzUyOc7fzWtYF^8{S!K1RHBKGHcPZ|f z$i=r!F23C$i+@IZN7RH%u?jb8*_hWt}@&rnAYPzATlGCD!Gdy+*aB z3)w`vVK(P$uF22zm}c&rX=nNN@tmn=jq)ax`d5{T*O&TlC>5_O^{*@yH8i(EwbAd zzsx$XR74WSV8X-Q=DpQ3i#BUO-1ljhig%WZ{f5u2=7FX6n58?6ytmgf*#8BC7)VOo zk5tIE?>=`JsW9YqMj;G|ZBUB^Jl`ilq>|NLmM?2r7BVu^KI|pcJ!XgPSZ+uo3}eP^ z#)T#htWw2WtxvFL(OSP$tUGBC3)NpB7vX6PbB&1}jDZ<8nolgWzEs3}b+=M4k%;mH z5>t1W_}HS^{nwO=cNwGHgxoZkx88*JCP^<#V(#sc(Kl4Phy7uPT({dFbOz>t|CqU3 z!LKdleBVgB%doD?7kO=vvVfHY0uO9PAdq#8-esiOS}LxN#NxT1Io9zQXjiGYjoGM1 zNRfKvsbsEgH?hD;WrB=3aI)Hc#%#-;qzaqEXBD>w`|FZfg-zMR3I!9gbfuK-w-Jo# zS%U6X(QQUudbYvD{tPwf*32ikkc5XJnEyXZC8bswU2NQ~!f3T!1H_vQfK^x*DUI{w zFx!bc>dugr>gG9|oE2>Fs{kMk+{g#z8*PYNRBd}GS8N~f?rmz^- z)UO(bHKVeiQH)eZ3R&+{W^=5&Z+fDeE8}D&XP_;hwhHJ_LvQ&*VBT=Q*_@XobX2zc z*Vw}_o=1SOz*XJ27pvM_UTeZdVQknc9_t_B(F`SSTy2?6*-+e4Mqq$h#U`FRkW|{H z>}$L85Q$t9AMqMjr)!2`_K>MDc$sv-UaA(zh4fWjz6ppB+~2|{&4qOC>?e2g{Jw$X0YaOI5Ybrlj5tB^{Xu|O0@l9tmCxsVWp#5c16IMw0b z=o=-iF<^%oV1)i`hN0P*j74BfNWVFoCA<}d2-4<*9I*r2(^xTz)*=TeXEMAHWT(8) zzozCE+k~KuBaJGDnTXdY9H`C;dhiYRWzJFr#ZK_%%@C__BbqQLvRs*cv~#(KnH&+= zRaei!)l+;}9WW8rW2tWKxDwk{of7at&~n|WZrdN(jmBt)^*PDmNMx``Mu%g)c;%~N zskp_cyO}4fVIwdOuUdW42*WZDf5I9I4slBw==82ksR4b4NLCW;vNgJOp@>R3U5LRO zS22dYFbPG19D#Qn7`W5k516Tk$<<*X2VnPYgZ#~)`t(9+HpIU$<^k;^P0BH7j~E2h z0flTf&TvdkU6hLkD<}1BXZ{codF}H^!6sx~e89!0-WDUFouRE_rxLOcn`p*XHW9HN zrc*7pQG&#Ag=2uguQL?|d1H0U15J3Y%`aFEH&pg-Dvl_pElc;2hWx20Xz0~1XSlS$ zVCaRs_>g()ZPMXW>mo#^H$IfmpH#w=*7bb7uqqQ%EQu{|=g5lK)6QOND+pb2Aj6vk zg%e+y>-GBfJG@I=gq+B{f!u@u6%_;rDahiDJ_m9c`0ogLNBs)6EgWI#N-FBhPdMi}F3iEsy&83qeY zB~eK+f`IwB7q>h2Qd=3YU-01<&y}G3YNaDLUcS{_G6`EkhBq7tvW@l*RW-@VHDDr{ z#2M%suN)a@OqG#)Gm%cl+juWW?;yr7c5`WCjo6P7;)={Q4SuL&l0*{-fBP+rAz8sp zUEEBvMFhQK*Boimk`9M>cRuoDMQ{M;D;7`Qp-@* zDy4FRvuRuF<2_dm(4~Hq4LC4x<_y5em}LLMT(z;jXcbXgC+Jy&xADKV1Si+crgCn8 zA1A{))k;}{+}mi9#a2};Ox6<{gREEh5;}N-lZ>oq2i-tT>DA@P9z1y4ibdQJT;jop(EF-{aq}h3@t_F z^_2x2Z`#e2IZ7sCo6hRgbqdPITU|Np*S7?FHnJctE{YQd;@bw(`^}2`qO!nLe91gr z0?d=KmB~&k$#54}-h-+&k)Xs3#@J@}DNk)Mk&3VFppNYFeYqUGibw*UH3F=P8q4}A} zBo6JJ$a)ERcpyGwE{as-LAD#C{HmK7!=6WW@wJl>Vi&fSZEL&s>pEWd=#)!sA;z3L z%?^=UhU)aWFCq@8Ue`W?aG~zM8D6{7(lHnCQeP*74A9W*E+I+Cz6KopjEObvLeQ(p(Ar)s9SBmAPNE+iNTU;u>7HBtnRUv0=^5El@ z=J+M@Y$YYkI4T(3RNewjkQ;LiZ8|Gcw4k4WM-1w)%^H3CtDd1i$Exhdo0M?2WnP_R zM=w^_`O;QTt^uZ2of-r1tGCn$j-=G9y2DZx3%MVOYGo`%!!jx}F(m4Lep_ZsdZ^@6dYzUc3Qb#+0%T&;WMRv;=rE%NN>}~ zMjHLrD!2PasQ9uAFG7&Z^BUPkdmzWIG1f)+i&eTGvK}EYCZ7-KznF|ccAG$se}+Rk z&J?EFVp3UzZ3)*gjjItAv563N=E@?utznQDgGpj~kt}kgwjc1Q8)!Z5L=Nl#%WbCO zl?{gkr0fms!ie=adr2I#DG#ip-`+fHW=NXa8eNZ5y?Mh|s~$(4Yshx1d1FG|Ypo|$ zVxnhGLKSt)NbhE2QlcLHlmc~nEAw@L8CqRslzME2HL0RD5LN`;S_PeYDOSe%ioxwV z>Y}0*&8pu;j9QbBAqpNFxj2|hv~jM?)z4Z%`9Ic7Mlx>COdhtH#HBVVJnL2oSDN#gvQBKnyjB|{0Ln9J3k>pEk_0#$ zP>n19U1j)j=e(d?H|~gjf;9haXLh!=iv%ebR`x z+0H^&TNz}1ZGsu+Vxnz|j5=vRwm)p+-Z)+LHqPie(+BpOw7%8+6W}mBw8{HlFpIMs literal 0 HcmV?d00001 diff --git a/locale/tr/LC_MESSAGES/django.mo b/locale/tr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..0c79ced958039b674191ab6cf999670e0c63d0e5 GIT binary patch literal 104724 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 H)aLy^ks_t^ literal 0 HcmV?d00001 diff --git a/locale/uk/LC_MESSAGES/django.mo b/locale/uk/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..841ee959d97d6268dfbd82bbbe8bd5d38fc0b126 GIT binary patch literal 48483 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 literal 0 HcmV?d00001 diff --git a/locale/uk/LC_MESSAGES/djangojs.mo b/locale/uk/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..f98aa2c8655cc804d2508a601ea300b00a528ab7 GIT binary patch literal 19628 zcmb`N37lL-oyQ-i5Uy~D$XOgAiDV`-T*8DT29iLQOcF^#1az0q^vg_>nSMiePliEV za&QVJ93hb`N4VthAPKoiCMu#RsNF2C$gUu;ps*;Q2(kk1_g7W#^)WMX@#FjC-@jM& zs{U2=zu%iYx8Ke;2VDE@5Cn&U-`p(-BJNMySG_^-=L3U)f5ChFsB7>if?yBuC~y#1 z@9|V{SK8x!`)qJ0+UNTA`QYxfL+}7F0{ItQ&JRllw}QKX_j>#WD1NI!@!1G!y)B^j z@k4Mh_)Bna@HOxl@I9~|Jp3TXuNf4d>EOq}^T8%?w#VE2^JhTuf8MuW1NWi*7N~vg z@JWXs1COS?7bt#>zW-EE`xy)F3{La?GeNC?0Vw{nLGkSXHUG=LeFdm<-0a);`1V>* z=Y15EoPG{!-gBV%z5;6A@4!95_kDZ!gV`hPgTVd4V?8#3(%%%1=Y!%m$3M@4nzztD zzaB)S!L6Xit@Zs|eEV@wdM$#7fY18&JK%n_)v0~&4@xeFg4*wqpyb*Bitow3JqFZy z$AdcGx!{rD7eLLw%s;;zoJe~aC_cXeHU1_4{54Q~-v_n+&KS4G?FDMw{=R)MD82^N z_#xnqU>&G&4WRb>X;AW=2ujb>LGew4n%@D|fjRKw;7SnF3D$$s_s>9`>v>S)-vTxN z9Z>xK3Q8}74|8~^$6=u4dm^a)jRAFziM~A<6u%ju^md-_Z}k{~(tkH7zq=OHx+_7Q z>jB^12lQ08spo1~q;JsB@hR${tP! z#doHE9)g%`5P7@?)cSXW(!>3r{N@{=_^tQPzXM7ikAXVhQ=rcO3aEX(?Vs;*1hIhj zexT+zf|A21P<*F>;&TD0`E8)~HxHDYuLO0T>p;otW>EUQ2Nb`}zWser{GJ6RkC#Es zdl%IC0%QLL2ZMS(3KXAaQ1PS%M3li*AX9>SJw67C&�n|9epTdk56|yW$*LcQ7bE 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 TG8STAd78@^D2*oWUm^bsizvsi literal 0 HcmV?d00001 diff --git a/locale/zh_CN/LC_MESSAGES/django.mo b/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..4712bd154845e6dff781cdf56eae98a42a0489ce GIT binary patch literal 158261 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

  2. \n this.tabItemClick(e, 'share-admin-share-links')}>\n #\n {gettext('Links')}\n \n
  3. \n );\n } else if (canGenerateUploadLink) {\n linksNavItem = (\n
  4. \n this.tabItemClick(e, 'share-admin-upload-links')}>\n #\n {gettext('Links')}\n \n
  5. \n );\n }\n return (\n
      \n {canAddRepo && (\n
    • \n this.tabItemClick(e, 'share-admin-libs')}>\n #\n {gettext('Libraries')}\n \n
    • \n )}\n
    • \n this.tabItemClick(e, 'share-admin-folders')}>\n #\n {gettext('Folders')}\n \n
    • \n {linksNavItem}\n
    \n );\n }\n\n renderCustomNavItems() {\n return (\n customNavItems.map((item, idx) => {\n return (\n
  6. \n \n \n {item.desc}\n \n
  7. \n );\n })\n );\n }\n\n render() {\n let showActivity = isDocs || isPro || !isDBSqlite3;\n return (\n
    \n
    \n

    {gettext('Files')}

    \n
      \n {canAddRepo && (\n
    • \n this.tabItemClick(e, 'my-libs')}>\n \n {gettext('My Libraries')}\n \n
    • \n )}\n
    • \n this.tabItemClick(e, 'shared-libs')}>\n \n {gettext('Shared with me')}\n \n
    • \n { canViewOrg &&\n
    • this.tabItemClick(e, 'org')}>\n \n \n {gettext('Shared with all')}\n \n
    • \n }\n
    • \n \n \n {gettext('Shared with groups')}\n \n \n {this.renderSharedGroups()}\n
    • \n {enableOCM &&\n
    • \n this.tabItemClick(e, 'shared-with-ocm')}>\n \n {gettext('Shared from other servers')}\n \n
    • \n }\n {enableOCMViaWebdav &&\n
    • \n this.tabItemClick(e, 'ocm-via-webdav')}>\n \n {gettext('Shared from other servers')}\n \n
    • \n }\n
    \n\n\n

    {gettext('Tools')}

    \n
      \n
    • \n this.tabItemClick(e, 'starred')}>\n \n {gettext('Favorites')}\n \n
    • \n {showActivity &&\n
    • \n this.tabItemClick(e, 'dashboard')}>\n \n {gettext('Activities')}\n \n
    • \n }\n
    • \n this.tabItemClick(e, 'published')}>\n \n {gettext('Published Libraries')}\n \n
    • \n {/*isDocs &&\n
    • this.tabItemClick(e, 'drafts')}>\n \n \n {gettext('Drafts')}\n {this.props.draftCounts > 0 && {this.props.draftCounts}}\n \n
    • \n */}\n
    • \n this.tabItemClick(e, 'linked-devices')}>\n \n {gettext('Linked Devices')}\n \n
    • \n {canInvitePeople &&\n
    • \n this.tabItemClick(e, 'invitations')}>\n \n {gettext('Invite Guest')}\n \n
    • \n }\n
    • \n \n \n {gettext('Share Admin')}\n \n \n {this.renderSharedAdmin()}\n
    • \n {customNavItems && this.renderCustomNavItems()}\n
    \n
    \n\n {dtableWebServer &&\n
    \n \n SeaTable\n \n
    \n }\n
    \n );\n }\n}\n\nMainSideNav.propTypes = propTypes;\n\nexport default MainSideNav;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalBody } from 'reactstrap';\nimport { gettext, lang, mediaUrl, logoPath, logoWidth, logoHeight, siteTitle, seafileVersion, additionalAboutDialogLinks, aboutDialogCustomHtml } from '../../utils/constants';\n\nconst propTypes = {\n onCloseAboutDialog: PropTypes.func.isRequired,\n};\n\nclass AboutDialog extends React.Component {\n\n renderExternalAboutLinks = () => {\n if (additionalAboutDialogLinks && (typeof additionalAboutDialogLinks) === 'object') {\n let keys = Object.keys(additionalAboutDialogLinks);\n return keys.map((key, index) => {\n return {key};\n });\n }\n return null;\n };\n\n render() {\n let href = lang === 'zh-cn' ? 'http://seafile.com/about/' : 'http://seafile.com/en/about/';\n const { onCloseAboutDialog: toggleDialog } = this.props;\n\n if (aboutDialogCustomHtml) {\n return (\n \n \n \n
    \n
    \n
    \n );\n } else {\n return (\n \n \n \n
    \n

    \"logo\"

    \n

    {gettext('Server Version: ')}{seafileVersion}
    © {(new Date()).getFullYear()} {gettext('Seafile')}

    \n

    {this.renderExternalAboutLinks()}

    \n

    {gettext('About Us')}

    \n
    \n
    \n
    \n );\n }\n }\n}\n\nAboutDialog.propTypes = propTypes;\n\nexport default AboutDialog;\n","import React, { Fragment } from 'react';\nimport { gettext, siteRoot, enableTC, sideNavFooterCustomHtml, additionalAppBottomLinks } from '../utils/constants';\nimport ModalPortal from './modal-portal';\nimport AboutDialog from './dialog/about-dialog';\n\nclass SideNavFooter extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isAboutDialogShow: false,\n };\n }\n\n onAboutDialogToggle = (e) => {\n e.preventDefault();\n this.setState({isAboutDialogShow: !this.state.isAboutDialogShow});\n };\n\n renderExternalAppLinks = () => {\n if (additionalAppBottomLinks && (typeof additionalAppBottomLinks) === 'object') {\n let keys = Object.keys(additionalAppBottomLinks);\n return keys.map((key, index) => {\n return {key};\n });\n }\n return null;\n };\n\n render() {\n\n if (sideNavFooterCustomHtml) {\n return (
    );\n }\n return (\n \n
    \n {gettext('Help')}\n {gettext('About')}\n {enableTC && {gettext('Terms')}}\n {this.renderExternalAppLinks()}\n \n {' '}\n {gettext('Clients')}\n \n
    \n {this.state.isAboutDialogShow && (\n \n \n \n )}\n
    \n );\n }\n}\n\nexport default SideNavFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Logo from './logo';\nimport MainSideNav from './main-side-nav';\nimport SideNavFooter from './side-nav-footer';\n\nconst propTypes = {\n isSidePanelClosed: PropTypes.bool.isRequired,\n currentTab: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n onCloseSidePanel: PropTypes.func.isRequired,\n tabItemClick: PropTypes.func.isRequired,\n draftCounts: PropTypes.number,\n};\n\nclass SidePanel extends React.Component {\n\n render() {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nSidePanel.propTypes = propTypes;\n\nexport default SidePanel;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n children: PropTypes.object.isRequired,\n};\n\nclass MainPanel extends Component {\n\n render() {\n return (\n
    \n {this.props.children}\n
    \n );\n }\n}\n\nMainPanel.propTypes = propTypes;\n\nexport default MainPanel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\n\nconst propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.object\n ]).isRequired,\n};\n\nclass DraftsView extends React.Component {\n render() {\n return (\n
    \n
    \n
    \n
    \n

    {gettext('Drafts')}

    \n
    \n
    \n {this.props.children}\n
    \n
    \n );\n }\n}\n\nDraftsView.propTypes = propTypes;\n\nexport default DraftsView;\n","import React from 'react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { gettext, siteRoot, lang } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nmoment.locale(lang);\nconst propTypes = {\n draft: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n onDeleteHandler: PropTypes.func.isRequired,\n onPublishHandler: PropTypes.func.isRequired,\n};\n\nclass DraftListItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isMenuIconShow: false,\n isItemMenuShow: false,\n highlight: false,\n };\n }\n\n onMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isMenuIconShow: true,\n highlight: true,\n });\n }\n };\n\n onMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isMenuIconShow: false,\n highlight: false,\n });\n }\n };\n\n onDropdownToggleClick = (e) => {\n e.preventDefault();\n this.toggleOperationMenu(e);\n };\n\n toggleOperationMenu = (e) => {\n e.stopPropagation();\n this.setState(\n {isItemMenuShow: !this.state.isItemMenuShow }, () => {\n if (this.state.isItemMenuShow) {\n this.props.onFreezedItem();\n } else {\n this.setState({\n highlight: false,\n isMenuIconShow: false,\n });\n this.props.onUnfreezedItem();\n }\n }\n );\n };\n\n onDeleteHandler = () => {\n this.props.onDeleteHandler(this.props.draft);\n };\n\n onPublishHandler = () => {\n this.props.onPublishHandler(this.props.draft);\n };\n\n render() {\n let draft = this.props.draft;\n let repoID = draft.origin_repo_id;\n let filePath = draft.draft_file_path;\n let fileName = Utils.getFileName(filePath);\n let draftUrl = siteRoot + 'drafts/' + draft.id + '/';\n let libraryUrl = siteRoot + 'library/' + repoID + '/' + encodeURIComponent(draft.repo_name) + '/' ;\n let localTime = moment.utc(draft.updated_at).toDate();\n localTime = moment(localTime).fromNow();\n\n let iconUrl = Utils.getFileIconUrl(fileName);\n return (\n \n \n \n {fileName}\n \n \n {draft.repo_name}\n \n {localTime}\n \n {this.state.isMenuIconShow && (\n \n \n \n {gettext('Delete')}\n {draft.status == 'open' &&\n {gettext('Publish')}\n }\n \n \n )}\n \n \n );\n }\n}\n\nDraftListItem.propTypes = propTypes;\n\nexport default DraftListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport DraftListItem from './draft-list-item';\n\nconst propTypes = {\n draftList: PropTypes.array.isRequired,\n onDeleteHandler: PropTypes.func.isRequired,\n onPublishHandler: PropTypes.func.isRequired,\n};\n\nclass DraftListView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false,\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n render() {\n let drafts = this.props.draftList;\n return (\n \n \n \n \n \n \n \n \n \n \n \n { drafts && drafts.map((draft) => {\n return (\n \n );\n })}\n \n
    {/*img*/}{gettext('Name')}{gettext('Library')}{gettext('Last Update')}
    \n );\n }\n}\n\nDraftListView.propTypes = propTypes;\n\nexport default DraftListView;\n","import React, { Fragment } from 'react';\nimport { gettext } from '../../utils/constants';\nimport editUtilities from '../../utils/editor-utilities';\nimport { Utils } from '../../utils/utils';\nimport PropTypes from 'prop-types';\nimport toaster from '../../components/toast';\nimport EmptyTip from '../../components/empty-tip';\nimport Loading from '../../components/loading';\nimport DraftListView from '../../components/draft-list-view/draft-list-view';\n\nconst propTypes = {\n isLoadingDraft: PropTypes.bool.isRequired,\n updateDraftsList: PropTypes.func.isRequired,\n draftList: PropTypes.array.isRequired,\n getDrafts: PropTypes.func.isRequired,\n};\n\nclass DraftContent extends React.Component {\n\n componentDidMount() {\n this.props.getDrafts();\n }\n\n onDeleteHandler = (draft) => {\n // let draft = this.state.currentDraft;\n let draft_name = Utils.getFileName(draft.draft_file_path);\n editUtilities.deleteDraft(draft.id).then(res => {\n this.props.updateDraftsList(draft.id);\n let msg_s = gettext('Successfully deleted draft %(draft)s.');\n msg_s = msg_s.replace('%(draft)s', draft_name);\n toaster.success(msg_s);\n }).catch(() => {\n let msg_s = gettext('Failed to delete draft %(draft)s.');\n msg_s = msg_s.replace('%(draft)s', draft_name);\n toaster.danger(msg_s);\n });\n };\n\n onPublishHandler = (draft) => {\n // let draft = this.state.currentDraft;\n let draft_name = Utils.getFileName(draft.draft_file_path);\n editUtilities.publishDraft(draft.id).then(res => {\n this.props.updateDraftsList(draft.id);\n let msg_s = gettext('Successfully published draft %(draft)s.');\n msg_s = msg_s.replace('%(draft)s', draft_name);\n toaster.success(msg_s);\n }).catch(() => {\n let msg_s = gettext('Failed to publish draft %(draft)s.');\n msg_s = msg_s.replace('%(draft)s', draft_name);\n toaster.danger(msg_s);\n });\n };\n\n render() {\n return (\n
    \n {this.props.isLoadingDraft && }\n {!this.props.isLoadingDraft && (\n \n {this.props.draftList.length === 0 && (\n \n

    {gettext('No draft yet')}

    \n

    {gettext('Draft is a way to let you collaborate with others on files. You can create a draft from a file, edit the draft and then ask for a review. The original file will be updated only after the draft has been reviewed.')}

    \n
    \n )}\n {this.props.draftList.length !==0 && (\n \n )}\n
    \n )}\n
    \n );\n }\n}\n\nDraftContent.propTypes = propTypes;\n\nexport default DraftContent;\n","class Acticity {\n constructor(json) {\n this.repo_id = json.repo_id;\n this.repo_name = json.repo_name;\n this.obj_type = json.obj_type;\n this.commit_id = json.commit_id;\n this.path = json.path;\n this.name = json.name;\n this.author_email = json.author_email;\n this.author_name = json.author_name;\n this.author_contact_email = json.author_contact_email;\n this.avatar_url = json.avatar_url;\n this.time = json.time;\n this.op_type = json.op_type;\n this.createdFilesCount = 0;\n this.createdFilesList = [];\n if (json.op_type === 'clean-up-trash') {\n this.days = json.days;\n } else if (json.op_type === 'rename' && json.obj_type === 'repo') {\n this.old_repo_name = json.old_repo_name;\n } else if (json.op_type === 'move' && ['dir', 'file'].includes(json.obj_type)) {\n this.old_path = json.old_path;\n } else if (json.op_type === 'rename' && ['dir', 'file'].includes(json.obj_type)) {\n this.old_path = json.old_path;\n this.old_name = json.old_name;\n } else if (json.op_type === 'publish') {\n this.old_path = json.old_path;\n } else if (json.name.endsWith('(draft).md')) {\n this.draft_id = json.draft_id;\n }\n }\n}\n\nexport default Acticity;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Table } from 'reactstrap';\nimport { gettext, siteRoot, serviceURL } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n activity: PropTypes.object.isRequired,\n toggleCancel: PropTypes.func.isRequired,\n};\n\nclass ListCreatedFileDialog extends React.Component {\n\n toggle = (activity) => {\n this.props.toggleCancel(activity);\n };\n\n render() {\n let activity = this.props.activity;\n return (\n \n {gettext('Created Files')}\n \n \n \n \n \n \n \n \n \n {\n activity.createdFilesList.map((item, index) => {\n let fileURL = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;\n if (item.name.endsWith('(draft).md')) {\n fileURL = serviceURL + '/drafts/' + item.draft_id + '/';\n }\n let fileLink = {item.name};\n if (item.name.endsWith('(draft).md') && !item.draft_id) {\n fileLink = item.name;\n }\n return (\n \n \n \n \n );\n })\n }\n \n
    {gettext('Name')}{gettext('Time')}
    {fileLink}{moment(item.time).fromNow()}
    \n
    \n \n \n \n
    \n );\n }\n}\n\nListCreatedFileDialog.propTypes = propTypes;\n\nexport default ListCreatedFileDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { gettext, siteRoot, serviceURL } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport ListCreatedFileDialog from '../../components/dialog/list-created-files-dialog';\nimport ModalPortal from '../../components/modal-portal';\n\nimport '../../css/files-activities.css';\n\nmoment.locale(window.app.config.lang);\n\nconst activityPropTypes = {\n item: PropTypes.object.isRequired,\n index: PropTypes.number.isRequired,\n items: PropTypes.array.isRequired,\n isDesktop: PropTypes.bool.isRequired,\n};\n\nclass ActivityItem extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isListCreatedFiles: false,\n };\n }\n\n onListCreatedFilesToggle = () => {\n this.setState({\n isListCreatedFiles: !this.state.isListCreatedFiles,\n });\n };\n\n render() {\n const isDesktop = this.props.isDesktop;\n let {item, index, items} = this.props;\n let op, details, moreDetails = false;\n let userProfileURL = `${siteRoot}profile/${encodeURIComponent(item.author_email)}/`;\n\n let libURL = siteRoot + 'library/' + item.repo_id + '/' + encodeURIComponent(item.repo_name) + '/';\n let libLink = {item.repo_name};\n let smallLibLink = {item.repo_name};\n\n if (item.obj_type == 'repo') {\n switch(item.op_type) {\n case 'create':\n op = gettext('Created library');\n details = libLink;\n break;\n case 'rename':\n op = gettext('Renamed library');\n details = {item.old_repo_name} => {libLink};\n break;\n case 'delete':\n op = gettext('Deleted library');\n details = item.repo_name;\n break;\n case 'recover':\n op = gettext('Restored library');\n details = libLink;\n break;\n case 'clean-up-trash':\n op = gettext('Cleaned trash');\n if (item.days == 0) {\n details = gettext('Removed all items from trash.');\n } else {\n details = gettext('Removed items older than {n} days from trash.').replace('{n}', item.days);\n }\n moreDetails = true;\n break;\n }\n } else if (item.obj_type == 'draft') {\n let fileURL = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;\n let fileLink = {item.name};\n op = gettext('Publish draft');\n details = fileLink;\n moreDetails = true;\n } else if (item.obj_type == 'files') {\n let fileURL = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;\n if (item.name.endsWith('(draft).md')) {\n fileURL = serviceURL + '/drafts/' + item.draft_id + '/';\n }\n let fileLink = `${item.name}`;\n if (item.name.endsWith('(draft).md') && !item.draft_id) {\n fileLink = item.name;\n }\n let fileCount = item.createdFilesCount - 1;\n let firstLine = gettext('{file} and {n} other files')\n .replace('{file}', fileLink)\n .replace('{n}', fileCount);\n op = gettext('Created {n} files').replace('{n}', item.createdFilesCount);\n details = (\n \n

    \n {isDesktop && }\n
    \n );\n moreDetails = true;\n } else if (item.obj_type == 'file') {\n const isDraft = item.name.endsWith('(draft).md');\n const fileURL = isDraft ? serviceURL + '/drafts/' + item.draft_id + '/' :\n `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;\n let fileLink = {item.name};\n if (isDraft && !item.draft_id) {\n fileLink = item.name;\n }\n switch (item.op_type) {\n case 'create':\n op = isDraft ? gettext('Created draft') : gettext('Created file');\n details = fileLink;\n moreDetails = true;\n break;\n case 'delete':\n op = isDraft ? gettext('Deleted draft') : gettext('Deleted file');\n details = item.name;\n moreDetails = true;\n break;\n case 'recover':\n op = gettext('Restored file');\n details = fileLink;\n moreDetails = true;\n break;\n case 'rename':\n op = gettext('Renamed file');\n details = {item.old_name} => {fileLink};\n moreDetails = true;\n break;\n case 'move':\n // eslint-disable-next-line\n const filePathLink = {item.path};\n op = gettext('Moved file');\n details = {item.old_path} => {filePathLink};\n moreDetails = true;\n break;\n case 'edit': // update\n op = isDraft ? gettext('Updated draft') : gettext('Updated file');\n details = fileLink;\n moreDetails = true;\n break;\n }\n } else { // dir\n let dirURL = siteRoot + 'library/' + item.repo_id + '/' + encodeURIComponent(item.repo_name) + Utils.encodePath(item.path);\n let dirLink = {item.name};\n switch (item.op_type) {\n case 'create':\n op = gettext('Created folder');\n details = dirLink;\n moreDetails = true;\n break;\n case 'delete':\n op = gettext('Deleted folder');\n details = item.name;\n moreDetails = true;\n break;\n case 'recover':\n op = gettext('Restored folder');\n details = dirLink;\n moreDetails = true;\n break;\n case 'rename':\n op = gettext('Renamed folder');\n details = {item.old_name} => {dirLink};\n moreDetails = true;\n break;\n case 'move':\n // eslint-disable-next-line\n const dirPathLink = {item.path};\n op = gettext('Moved folder');\n details = {item.old_path} => {dirPathLink};\n moreDetails = true;\n break;\n }\n }\n\n let isShowDate = true;\n if (index > 0) {\n let lastEventTime = items[index - 1].time;\n isShowDate = moment(item.time).isSame(lastEventTime, 'day') ? false : true;\n }\n\n return (\n \n {isShowDate &&\n \n {moment(item.time).format('YYYY-MM-DD')}\n \n }\n {isDesktop ? (\n \n \n \"\"\n \n \n {item.author_name}\n \n {op}\n \n {details}\n {moreDetails &&
    }\n {moreDetails && smallLibLink}\n \n \n \n \n \n ) : (\n \n \n \"\"\n \n \n {item.author_name}\n

    {op}

    \n {details}\n \n \n \n \n \n {moreDetails &&
    }\n {moreDetails && libLink}\n \n \n )}\n {this.state.isListCreatedFiles &&\n \n \n \n }\n
    \n );\n }\n}\n\nActivityItem.propTypes = activityPropTypes;\n\nexport default ActivityItem;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport EmptyTip from '../../components/empty-tip';\nimport ActivityItem from './activity-item';\n\nimport '../../css/files-activities.css';\n\nmoment.locale(window.app.config.lang);\n\nconst contentPropTypes = {\n isLoadingMore: PropTypes.bool.isRequired,\n items: PropTypes.array.isRequired,\n};\n\nclass FileActivitiesContent extends Component {\n\n render() {\n const isDesktop = Utils.isDesktop();\n let { items, isLoadingMore } = this.props;\n\n if (!items.length) {\n return

    {gettext('No more activities')}

    ;\n }\n\n const desktopThead = (\n \n \n {/* avatar */}\n {gettext('User')}\n {gettext('Operation')}\n {gettext('File')} / {gettext('Library')}\n {gettext('Time')}\n \n \n );\n\n const mobileThead = (\n \n \n \n \n \n \n \n );\n\n return (\n \n \n {isDesktop ? desktopThead : mobileThead}\n \n {items.map((item, index) => {\n return (\n \n );\n })}\n \n
    \n {isLoadingMore ? : ''}\n
    \n );\n }\n}\n\nFileActivitiesContent.propTypes = contentPropTypes;\n\nexport default FileActivitiesContent;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Input } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\n\nimport '../../css/files-activities.css';\n\nconst propTypes = {\n availableUsers: PropTypes.array.isRequired,\n currentSelectedUsers: PropTypes.array.isRequired,\n setTargetUsers: PropTypes.func.isRequired,\n toggleSelectUser: PropTypes.func.isRequired\n};\n\nclass UserSelector extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isPopoverOpen: false,\n query: ''\n };\n }\n\n componentDidMount() {\n document.addEventListener('click', this.handleOutsideClick);\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.handleOutsideClick);\n }\n\n handleOutsideClick = (e) => {\n const { isPopoverOpen } = this.state;\n if (isPopoverOpen && !this.userSelector.contains(e.target)) {\n this.togglePopover();\n }\n };\n\n togglePopover = () => {\n this.setState({\n isPopoverOpen: !this.state.isPopoverOpen\n }, () => {\n if (!this.state.isPopoverOpen) {\n const { availableUsers } = this.props;\n const selectedUsers = availableUsers.filter(item => item.isSelected);\n this.props.setTargetUsers(selectedUsers);\n }\n });\n };\n\n onToggleClick = (e) => {\n e.stopPropagation();\n this.togglePopover();\n };\n\n onQueryChange = (e) => {\n this.setState({\n query: e.target.value\n });\n };\n\n toggleSelectItem = (e, targetItem) => {\n e.stopPropagation();\n this.props.toggleSelectUser(targetItem);\n };\n\n render() {\n const { isPopoverOpen, query } = this.state;\n const { currentSelectedUsers, availableUsers } = this.props;\n const selectedUsers = availableUsers.filter(item => item.isSelected);\n const filteredAvailableUsers = query.trim() ? availableUsers.filter(item => item.email.indexOf(query.trim()) != -1) : availableUsers;\n return (\n
    \n \n {currentSelectedUsers.length > 0 ? (\n <>\n {gettext('Modified by:')}\n {currentSelectedUsers.map(item => item.name).join(', ')}\n \n ) : gettext('Modified by')}\n \n \n {isPopoverOpen && (\n
    this.userSelector = ref}>\n
      \n {selectedUsers.map((item, index) => {\n return (\n
    • \n \"\"\n {item.name}\n {this.toggleSelectItem(e, item);}}>\n
    • \n );\n })}\n
    \n
    \n \n
    \n
      \n {filteredAvailableUsers.map((item, index) => {\n return (\n
    • {this.toggleSelectItem(e, item);}}>\n
      \n \"\"\n {item.name}\n
      \n {item.isSelected && }\n
    • \n );\n })}\n
    \n
    \n )}\n
    \n );\n }\n}\n\nUserSelector.propTypes = propTypes;\n\nexport default UserSelector;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext, siteRoot, username } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../../components/loading';\nimport Activity from '../../models/activity';\nimport FileActivitiesContent from './content';\nimport UserSelector from './user-selector';\n\nimport '../../css/files-activities.css';\n\nmoment.locale(window.app.config.lang);\n\nconst propTypes = {\n onlyMine: PropTypes.bool\n};\n\nclass FilesActivities extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n errorMsg: '',\n isFirstLoading: true,\n isLoadingMore: false,\n currentPage: 1,\n hasMore: true,\n allItems: [],\n items: [],\n availableUsers: [],\n targetUsers: []\n };\n this.avatarSize = 72;\n this.curPathList = [];\n this.oldPathList = [];\n this.availableUserEmails = new Set();\n }\n\n componentDidMount() {\n let { currentPage, availableUsers } = this.state;\n seafileAPI.listActivities(currentPage, this.avatarSize).then(res => {\n // {\"events\":[...]}\n let events = this.mergePublishEvents(res.data.events);\n events = this.mergeFileCreateEvents(events);\n events.forEach(item => {\n if (!this.availableUserEmails.has(item.author_email)) {\n this.availableUserEmails.add(item.author_email);\n availableUsers.push({\n email: item.author_email,\n name: item.author_name,\n avatar_url: item.avatar_url,\n isSelected: false\n });\n }\n });\n this.setState({\n allItems: events,\n items: this.filterEvents(events),\n availableUsers: availableUsers,\n currentPage: currentPage + 1,\n isFirstLoading: false,\n hasMore: true,\n });\n if (this.state.items.length < 25) {\n this.getMore();\n }\n }).catch(error => {\n this.setState({\n isFirstLoading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n mergePublishEvents = (events) => {\n events.forEach((item) => {\n if (item.op_type === 'publish') {\n this.curPathList.push(item.path);\n this.oldPathList.push(item.old_path);\n }\n });\n let actuallyEvents = [];\n for (var i = 0; i < events.length; i++) {\n if (events[i].obj_type === 'file') {\n if (events[i].op_type === 'delete' && this.oldPathList.includes(events[i].path)) {\n this.oldPathList.splice(this.oldPathList.indexOf(events[i].path), 1);\n } else if (events[i].op_type === 'edit' && this.curPathList.includes(events[i].path)) {\n this.curPathList.splice(this.curPathList.indexOf(events[i].path), 1);\n } else if (events[i].op_type === 'rename' && this.oldPathList.includes(events[i].old_path)) {\n this.oldPathList.splice(this.oldPathList.indexOf(events[i].old_path), 1);\n } else {\n actuallyEvents.push(events[i]);\n }\n } else {\n actuallyEvents.push(events[i]);\n }\n }\n return actuallyEvents;\n };\n\n mergeFileCreateEvents = (events) => {\n let actuallyEvents = [];\n let multiFilesActivity = null;\n for (var i = 0; i < events.length; i++) {\n let isFulfilCondition = events[i].obj_type === 'file' &&\n events[i].op_type === 'create' &&\n events[i + 1] &&\n events[i + 1].obj_type === 'file' &&\n events[i + 1].op_type === 'create' &&\n events[i + 1].repo_name === events[i].repo_name &&\n events[i + 1].author_email === events[i].author_email;\n if (multiFilesActivity != null) {\n multiFilesActivity.createdFilesCount++;\n multiFilesActivity.createdFilesList.push(events[i]);\n if (isFulfilCondition) {\n continue;\n } else {\n actuallyEvents.push(multiFilesActivity);\n multiFilesActivity = null;\n }\n } else {\n if (isFulfilCondition) {\n multiFilesActivity = new Activity(events[i]);\n multiFilesActivity.obj_type = 'files';\n multiFilesActivity.createdFilesCount++;\n multiFilesActivity.createdFilesList.push(events[i]);\n } else {\n actuallyEvents.push(events[i]);\n }\n }\n }\n return actuallyEvents;\n };\n\n getMore() {\n const { currentPage, availableUsers, targetUsers } = this.state;\n seafileAPI.listActivities(currentPage, this.avatarSize).then(res => {\n // {\"events\":[...]}\n let events = this.mergePublishEvents(res.data.events);\n events = this.mergeFileCreateEvents(events);\n events.forEach(item => {\n if (!this.availableUserEmails.has(item.author_email)) {\n this.availableUserEmails.add(item.author_email);\n availableUsers.push({\n email: item.author_email,\n name: item.author_name,\n avatar_url: item.avatar_url,\n isSelected: false\n });\n }\n });\n const filteredEvents = this.filterEvents(events);\n this.setState({\n allItems: [...this.state.allItems, ...events],\n items: [...this.state.items, ...filteredEvents],\n availableUsers: availableUsers,\n currentPage: currentPage + 1,\n isLoadingMore: false,\n hasMore: res.data.events.length === 0 ? false : true\n });\n if (this.state.items.length < 25 && this.state.hasMore) {\n if (!(targetUsers.length && currentPage == 100)) {\n this.getMore();\n }\n }\n }).catch(error => {\n this.setState({\n isLoadingMore: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n filterEvents = (events) => {\n const { onlyMine } = this.props;\n const { targetUsers } = this.state;\n\n if (onlyMine) {\n return events.filter(item => item.author_email == username);\n } else if (targetUsers.length) {\n return events.filter(item => targetUsers.map(item => item.email).indexOf(item.author_email) != -1);\n } else {\n return events;\n }\n };\n\n setTargetUsers = (selectedUsers) => {\n this.setState({\n targetUsers: selectedUsers\n }, () => {\n const items = this.filterEvents(this.state.allItems);\n this.setState({\n items: items\n }, () => {\n if (items.length < 25 && this.state.hasMore) {\n this.getMore();\n }\n });\n });\n };\n\n toggleSelectUser = (user) => {\n const { availableUsers } = this.state;\n this.setState({\n availableUsers: availableUsers.map(item => {\n if (item.email == user.email) {\n item.isSelected = !user.isSelected;\n }\n return item;\n })\n });\n };\n\n handleScroll = (event) => {\n if (!this.state.isLoadingMore && this.state.hasMore) {\n const clientHeight = event.target.clientHeight;\n const scrollHeight = event.target.scrollHeight;\n const scrollTop = event.target.scrollTop;\n const isBottom = (clientHeight + scrollTop + 1 >= scrollHeight);\n if (isBottom) { // scroll to the bottom\n this.setState({isLoadingMore: true}, () => {\n this.getMore();\n });\n }\n }\n };\n\n render() {\n const { onlyMine } = this.props;\n const { targetUsers, availableUsers } = this.state;\n return (\n
    \n
    \n
    \n
      \n
    • \n {gettext('All Activities')}\n
    • \n
    • \n {gettext('My Activities')}\n
    • \n
    \n
    \n
    \n {this.state.isFirstLoading && }\n {(!this.state.isFirstLoading && this.state.errorMsg) &&\n

    {this.state.errorMsg}

    \n }\n {!this.state.isFirstLoading && (\n \n {!onlyMine && (\n \n )}\n \n \n )\n }\n
    \n
    \n
    \n );\n }\n}\n\nFilesActivities.propTypes = propTypes;\n\nexport default FilesActivities;\n","import React, { Component } from 'react';\nimport FilesActivities from './files-activities';\n\nclass MyFilesActivities extends Component {\n\n render() {\n return ;\n }\n}\n\nexport default MyFilesActivities;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { Link, navigate } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport { gettext, siteRoot, enableVideoThumbnail } from '../../utils/constants';\nimport EmptyTip from '../../components/empty-tip';\nimport Loading from '../../components/loading';\nimport toaster from '../../components/toast';\n\nclass Content extends Component {\n\n render() {\n const {loading, errorMsg, items} = this.props.data;\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No favorites')}

    \n

    {gettext('You have not added any libraries, folders or files to your favorites yet. A favorite gives you quick access to your most frequently used objects. You can add a library, folder or file to your favorites by clicking the star to the left of its name.')}

    \n
    \n );\n\n const desktopThead = (\n \n \n \n {gettext('Name')}\n {gettext('Library')}\n {gettext('Last Update')}\n \n \n \n );\n const mobileThead = (\n \n \n \n \n \n \n \n );\n\n const isDesktop = Utils.isDesktop();\n return items.length ? (\n \n {isDesktop ? desktopThead : mobileThead}\n \n
    \n ) : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n data: PropTypes.object,\n items: PropTypes.array,\n};\n\nclass TableBody extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n items: this.props.items\n };\n }\n\n componentDidMount() {\n this.getThumbnails();\n }\n\n getThumbnails() {\n let items = this.state.items.filter((item) => {\n return (Utils.imageCheck(item.obj_name) || (enableVideoThumbnail && Utils.videoCheck(item.obj_name))) && !item.repo_encrypted;\n });\n if (items.length == 0) {\n return ;\n }\n\n const len = items.length;\n const thumbnailSize = 48;\n const _this = this;\n let getThumbnail = function(i) {\n const curItem = items[i];\n seafileAPI.createThumbnail(curItem.repo_id, curItem.path, thumbnailSize).then((res) => {\n curItem.encoded_thumbnail_src = res.data.encoded_thumbnail_src;\n }).catch((error) => {\n // do nothing\n }).then(() => {\n if (i < len - 1) {\n getThumbnail(++i);\n } else {\n // when done, `setState()`\n _this.setState({\n items: _this.state.items\n });\n }\n });\n };\n getThumbnail(0);\n }\n\n render() {\n\n let listItems = this.state.items.map(function(item, index) {\n\n if (item.path === '/') {\n item.item_icon_url = Utils.getDefaultLibIconUrl(false);\n } else {\n item.item_icon_url = item.is_dir ? Utils.getFolderIconUrl(false) : Utils.getFileIconUrl(item.obj_name);\n }\n\n item.encoded_path = Utils.encodePath(item.path);\n\n item.thumbnail_url = item.encoded_thumbnail_src ? `${siteRoot}${item.encoded_thumbnail_src}` : '';\n item.dirent_view_url = item.is_dir ? `${siteRoot}library/${item.repo_id}/${item.repo_name}${item.encoded_path}` : `${siteRoot}lib/${item.repo_id}/file${item.encoded_path}`;\n // item is folder or file\n if (item.encoded_path !== '/') {\n item.dirent_view_url = item.dirent_view_url.replace(/\\/+$/, '');\n }\n\n item.mtime_relative = moment(item.mtime).fromNow();\n\n\n return ;\n }, this);\n\n return (\n {listItems}\n );\n }\n}\n\nTableBody.propTypes = {\n data: PropTypes.object,\n items: PropTypes.array,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n showOpIcon: false,\n unstarred: false,\n isOpMenuOpen: false // for mobile\n };\n }\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n });\n };\n\n handleMouseOver = () => {\n this.setState({\n showOpIcon: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n showOpIcon: false\n });\n };\n\n unstar = (e) => {\n e.preventDefault();\n\n const data = this.props.data;\n seafileAPI.unstarItem(data.repo_id, data.path).then((res) => {\n this.setState({unstarred: true});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n visitItem = () => {\n const data = this.props.data;\n if (data.is_dir) {\n navigate(data.dirent_view_url);\n } else {\n window.open(data.dirent_view_url);\n }\n };\n\n render() {\n\n if (this.state.unstarred) {\n return null;\n }\n\n const data = this.props.data;\n\n let opClasses = 'sf2-icon-x3 unstar action-icon';\n opClasses += this.state.showOpIcon ? '' : ' invisible';\n const linkUrl = data.dirent_view_url;\n\n const desktopItem = (\n \n \n {\n data.thumbnail_url ?\n \"\" :\n {gettext('icon')}\n }\n \n \n { data.is_dir ?\n {data.obj_name} :\n {data.obj_name}\n }\n \n {data.repo_name}\n \n \n \n \n \n );\n\n const mobileItem = (\n \n \n {\n data.thumbnail_url ?\n \"\" :\n {gettext('icon')}\n }\n \n \n { data.is_dir ?\n {data.obj_name} :\n {data.obj_name}\n }\n
    \n {data.repo_name}\n \n \n \n \n \n
    \n
    \n
    \n {gettext('Unstar')}\n
    \n
    \n
    \n \n \n );\n\n return Utils.isDesktop() ? desktopItem : mobileItem;\n }\n}\n\nItem.propTypes = {\n data: PropTypes.object,\n items: PropTypes.array,\n};\n\nclass Starred extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: []\n };\n }\n\n componentDidMount() {\n seafileAPI.listStarredItems().then((res) => {\n this.setState({\n loading: false,\n items: res.data.starred_item_list\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n render() {\n return (\n
    \n
    \n
    \n

    {gettext('Favorites')}

    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default Starred;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button, FormGroup, Label, Input } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\n\nconst propTypes = {\n executeOperation: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass ConfirmUnlinkDevice extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isChecked: false\n };\n }\n\n toggle = () => {\n this.props.toggleDialog();\n };\n\n executeOperation = () => {\n this.toggle();\n this.props.executeOperation(this.state.isChecked);\n };\n\n onInputChange = (e) => {\n this.setState({\n isChecked: e.target.checked\n });\n };\n\n render() {\n return (\n \n {gettext('Unlink device')}\n \n

    {gettext('Are you sure you want to unlink this device?')}

    \n \n \n \n
    \n \n \n \n \n
    \n );\n }\n}\n\nConfirmUnlinkDevice.propTypes = propTypes;\n\nexport default ConfirmUnlinkDevice;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';\nimport moment from 'moment';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext } from '../../utils/constants';\nimport toaster from '../../components/toast';\nimport EmptyTip from '../../components/empty-tip';\nimport ConfirmUnlinkDeviceDialog from '../../components/dialog/confirm-unlink-device';\nimport { Utils } from '../../utils/utils';\n\nclass Content extends Component {\n\n render() {\n const {loading, errorMsg, items} = this.props.data;\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No linked devices')}

    \n

    {gettext('You have not accessed your files with any client (desktop or mobile) yet. Configure clients on your devices to access your data more comfortably.')}

    \n
    \n );\n\n const desktopThead = (\n \n \n {gettext('Platform')}\n {gettext('Device Name')}\n {gettext('IP')}\n {gettext('Last Access')}\n \n \n \n );\n const mobileThead = (\n \n \n \n \n \n \n );\n\n const isDesktop = Utils.isDesktop();\n return items.length ? (\n \n {isDesktop ? desktopThead : mobileThead}\n \n {items.map((item, index) => {\n return ;\n })}\n \n
    \n ): emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n data: PropTypes.object.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpMenuOpen: false, // for mobile\n isOpIconShown: false,\n unlinked: false,\n isConfirmUnlinkDialogOpen: false\n };\n }\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n });\n };\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n toggleDialog = () => {\n this.setState({\n isConfirmUnlinkDialogOpen: !this.state.isConfirmUnlinkDialogOpen\n });\n };\n\n handleClick = (e) => {\n e.preventDefault();\n\n const data = this.props.data;\n if (data.is_desktop_client) {\n this.toggleDialog();\n } else {\n const wipeDevice = true;\n this.unlinkDevice(wipeDevice);\n }\n };\n\n unlinkDevice = (wipeDevice) => {\n const data = this.props.data;\n seafileAPI.unlinkDevice(data.platform, data.device_id, wipeDevice).then((res) => {\n this.setState({\n unlinked: true\n });\n let msg = gettext('Successfully unlinked %(name)s.');\n msg = msg.replace('%(name)s', data.device_name);\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n if (this.state.unlinked) {\n return null;\n }\n\n const data = this.props.data;\n\n let opClasses = 'sf2-icon-delete unlink-device action-icon';\n opClasses += this.state.isOpIconShown ? '' : ' invisible';\n\n const desktopItem = (\n \n {data.platform}\n {data.device_name}\n {data.last_login_ip}\n {moment(data.last_accessed).fromNow()}\n \n \n \n \n );\n\n const mobileItem = (\n \n \n {data.device_name}
    \n {data.last_login_ip}\n {moment(data.last_accessed).fromNow()}\n {data.platform}\n \n \n \n \n
    \n
    \n
    \n {gettext('Unlink')}\n
    \n
    \n
    \n \n \n );\n\n return (\n \n {this.props.isDesktop ? desktopItem : mobileItem}\n {this.state.isConfirmUnlinkDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n isDesktop: PropTypes.bool.isRequired,\n data: PropTypes.object.isRequired,\n};\n\nclass LinkedDevices extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: []\n };\n }\n\n componentDidMount() {\n seafileAPI.listLinkedDevices().then((res) => {\n this.setState({\n loading: false,\n items: res.data\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n render() {\n return (\n
    \n
    \n
    \n

    {gettext('Linked Devices')}

    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default LinkedDevices;\n","class SharedRepoInfo {\n\n constructor(object) {\n this.repo_id = object.repo_id;\n this.repo_name = object.repo_name;\n this.share_type = object.share_type;\n this.share_permission = object.share_permission;\n this.share_permission_name = object.share_permission_name;\n this.modifier_name = object.modifier_name;\n this.modifier_email = object.modifier_email;\n this.modifier_contact_email = object.modifier_contact_email;\n this.encrypted = object.encrypted;\n if (this.share_type === 'personal') {\n this.is_admin = object.is_admin;\n this.user_name = object.user_name;\n this.user_email = object.user_email;\n this.contact_email = object.contact_email;\n } else if (this.share_type === 'group') {\n this.is_admin = object.is_admin;\n this.group_id = object.group_id;\n this.group_name = object.group_name;\n }\n }\n\n}\n\nexport default SharedRepoInfo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalBody } from 'reactstrap';\nimport { Utils } from '../../utils/utils';\nimport CustomPermission from '../../models/custom-permission';\nimport Loading from '../loading';\nimport toaster from '../toast';\nimport { seafileAPI } from '../../utils/seafile-api';\n\nconst propTypes = {\n repoID: PropTypes.string,\n currentPerm: PropTypes.string.isRequired,\n permissions: PropTypes.array.isRequired,\n changePerm: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass PermSelect extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n isLoading: true,\n currentOption: this.props.currentPerm,\n customPermissions: []\n };\n\n this.customPermissions = null;\n }\n\n componentDidMount() {\n if (this.props.repoID) {\n this.listCustomPermissions();\n } else {\n this.setState({isLoading: false});\n }\n }\n\n listCustomPermissions = () => {\n const { repoID } = this.props;\n seafileAPI.listCustomPermissions(repoID).then(res => {\n const { permission_list: permissions } = res.data;\n const customPermissions = permissions.map(item => new CustomPermission(item));\n this.setState({\n isLoading: false,\n customPermissions: customPermissions\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n this.setState({isLoading: false});\n });\n };\n\n switchOption = (e) => {\n if (!e.target.checked) {\n return;\n }\n\n const currentOption = e.target.value;\n this.setState({\n currentOption: currentOption\n });\n\n this.props.changePerm(currentOption);\n this.props.toggleDialog();\n };\n\n translatePermission = (permission) => {\n let value = Utils.sharePerms(permission);\n if (!value) {\n const { customPermissions } = this.state;\n const item = customPermissions.find(item => item.id + '' === permission);\n value = item && item.name;\n }\n return value;\n };\n\n translateExplanation = (explanation) => {\n let value = Utils.sharePermsExplanation(explanation);\n if (!value) {\n const { customPermissions } = this.state;\n const item = customPermissions.find(item => item.id + '' === explanation);\n value = item && item.description;\n }\n return value;\n };\n\n getPermissions = () => {\n const { permissions } = this.props;\n let newPermissions = permissions.slice();\n const { customPermissions } = this.state;\n if (!this.customPermissions) {\n if (customPermissions.length > 0) {\n customPermissions.forEach(item => {\n newPermissions.push(item.id + '');\n });\n }\n this.customPermissions = newPermissions;\n }\n return this.customPermissions;\n };\n\n\n render() {\n const { isLoading, currentOption } = this.state;\n let permissions = [];\n if (!isLoading) {\n permissions = this.getPermissions();\n }\n\n return (\n \n \n {isLoading && }\n {!isLoading && permissions.map((item, index) => {\n return (\n
    \n \n \n
    \n );\n })}\n
    \n
    \n );\n }\n}\n\nPermSelect.propTypes = propTypes;\n\nexport default PermSelect;\n","import React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext, siteRoot, isPro } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../../components/toast';\nimport EmptyTip from '../../components/empty-tip';\nimport SharePermissionEditor from '../../components/select-editor/share-permission-editor';\nimport SharedRepoInfo from '../../models/shared-repo-info';\nimport PermSelect from '../../components/dialog/perm-select';\n\nclass Content extends Component {\n\n sortByName = (e) => {\n e.preventDefault();\n const sortBy = 'name';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n render() {\n const { loading, errorMsg, items, sortBy, sortOrder } = this.props;\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No libraries shared')}

    \n

    {gettext('You have not shared any libraries with other users yet. You can share a library with other users by clicking the share icon to the right of a library\\'s name in \"My Libraries\".')}

    \n
    \n );\n\n // sort\n const sortByName = sortBy == 'name';\n const sortIcon = sortOrder == 'asc' ? : ;\n\n const isDesktop = Utils.isDesktop();\n const table = (\n \n \n {isDesktop ? (\n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n )}\n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {/*icon*/}{gettext('Name')} {sortByName && sortIcon}{gettext('Share To')}{gettext('Permission')}
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n sortItems: PropTypes.func.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n\n let item = this.props.item;\n this.state = {\n share_permission: item.share_permission,\n share_permission_name: item.share_permission_name,\n is_admin: item.is_admin,\n isOpIconShown: false,\n isOpMenuOpen: false, // for mobile\n isPermSelectDialogOpen: false, // for mobile\n unshared: false,\n isShowPermEditor: false,\n };\n let permissions = ['rw', 'r'];\n this.permissions = permissions;\n this.showAdmin = isPro && (item.share_type !== 'public');\n if (this.showAdmin) {\n permissions.push('admin');\n }\n if (isPro) {\n permissions.push('cloud-edit', 'preview');\n }\n }\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n });\n };\n\n togglePermSelectDialog = () => {\n this.setState({\n isPermSelectDialogOpen: !this.state.isPermSelectDialogOpen\n });\n };\n\n onMouseEnter = () => {\n this.setState({isOpIconShown: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOpIconShown: false});\n };\n\n changePerm = (permission) => {\n const item = this.props.item;\n const share_type = item.share_type;\n let options = {\n 'share_type': share_type,\n 'permission': permission\n };\n if (share_type == 'personal') {\n options.user = item.user_email;\n } else if (share_type == 'group') {\n options.group_id = item.group_id;\n }\n\n seafileAPI.updateRepoSharePerm(item.repo_id, options).then(() => {\n this.setState({\n share_permission: permission == 'admin' ? 'rw' : permission,\n is_admin: permission == 'admin',\n });\n toaster.success(gettext('Successfully modified permission.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n unshare = (e) => {\n e.preventDefault();\n\n const item = this.props.item;\n const share_type = item.share_type;\n let options = {\n 'share_type': share_type\n };\n if (share_type == 'personal') {\n options.user = item.user_email;\n } else if (share_type == 'group') {\n options.group_id = item.group_id;\n }\n\n seafileAPI.unshareRepo(item.repo_id, options).then((res) => {\n this.setState({\n unshared: true\n });\n let message = gettext('Successfully unshared {name}').replace('{name}', item.repo_name);\n toaster.success(message);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster(errMessage);\n });\n };\n\n onEditPermission = (event) => {\n event.nativeEvent.stopImmediatePropagation();\n this.setState({isShowPermEditor: true});\n };\n\n render() {\n if (this.state.unshared) {\n return null;\n }\n\n let { share_permission, share_permission_name, is_admin, isOpIconShown, isPermSelectDialogOpen, isShowPermEditor } = this.state;\n let item = this.props.item;\n Object.assign(item, {\n share_permission: share_permission,\n is_admin: is_admin\n });\n\n let iconUrl = Utils.getLibIconUrl(item);\n let iconTitle = Utils.getLibIconTitle(item);\n let repoUrl = `${siteRoot}library/${item.repo_id}/${encodeURIComponent(item.repo_name)}/`;\n\n\n let shareTo;\n const shareType = item.share_type;\n if (shareType == 'personal') {\n shareTo = item.user_name;\n } else if (shareType == 'group') {\n shareTo = item.group_name;\n } else if (shareType == 'public') {\n shareTo = gettext('all members');\n }\n\n if (this.showAdmin && is_admin) {\n share_permission = 'admin';\n }\n\n // custom defined permission\n if (share_permission.startsWith('custom-')) {\n share_permission = share_permission.slice(7);\n }\n\n const desktopItem = (\n \n {iconTitle}\n {item.repo_name}\n \n {item.share_type == 'personal' ? {shareTo} : shareTo}\n \n \n {!isShowPermEditor && (\n
    \n {Utils.sharePerms(share_permission) || share_permission_name}\n {isOpIconShown && (\n \n \n )}\n
    \n )}\n {isShowPermEditor && (\n \n )}\n \n \n \n );\n\n const mobileItem = (\n \n \n {iconTitle}\n \n {item.repo_name}\n {Utils.sharePerms(share_permission)}\n
    \n {`${gettext('Share To:')} ${shareTo}`}\n \n \n \n \n
    \n
    \n
    \n {gettext('Permission')}\n {gettext('Unshare')}\n
    \n
    \n
    \n \n \n {isPermSelectDialogOpen && (\n \n )}\n
    \n );\n\n return this.props.isDesktop ? desktopItem : mobileItem;\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isDesktop: PropTypes.bool.isRequired,\n};\n\nclass ShareAdminLibraries extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: [],\n sortBy: 'name', // 'name' or 'time'\n sortOrder: 'asc' // 'asc' or 'desc'\n };\n }\n\n componentDidMount() {\n seafileAPI.listSharedRepos().then((res) => {\n let items = res.data.map(item => {\n return new SharedRepoInfo(item);\n });\n this.setState({\n loading: false,\n items: Utils.sortRepos(items, this.state.sortBy, this.state.sortOrder)\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n sortItems = (sortBy, sortOrder) => {\n this.setState({\n sortBy: sortBy,\n sortOrder: sortOrder,\n items: Utils.sortRepos(this.state.items, sortBy, sortOrder)\n });\n };\n\n render() {\n return (\n
    \n
    \n
    \n

    {gettext('Libraries')}

    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default ShareAdminLibraries;\n","class SharedFolderInfo {\n\n constructor(object) {\n this.path = object.path;\n this.folder_name = object.folder_name;\n this.repo_id = object.repo_id;\n this.repo_name = object.repo_name;\n this.share_type = object.share_type;\n this.share_permission = object.share_permission;\n this.share_permission_name = object.share_permission_name;\n if (object.share_type === 'group') {\n this.group_id = object.group_id;\n this.group_name = object.group_name;\n } else {\n this.user_name = object.user_name;\n this.user_email = object.user_email;\n this.contact_email = object.contact_email;\n }\n }\n\n}\n\nexport default SharedFolderInfo;\n","import React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport { gettext, siteRoot, isPro } from '../../utils/constants';\nimport Loading from '../../components/loading';\nimport EmptyTip from '../../components/empty-tip';\nimport toaster from '../../components/toast';\nimport SharePermissionEditor from '../../components/select-editor/share-permission-editor';\nimport SharedFolderInfo from '../../models/shared-folder-info';\nimport PermSelect from '../../components/dialog/perm-select';\n\nclass Content extends Component {\n\n sortByName = (e) => {\n e.preventDefault();\n const sortBy = 'name';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n render() {\n const { loading, errorMsg, items, sortBy, sortOrder } = this.props;\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No folders shared')}

    \n

    {gettext('You have not shared any folders with other users yet. You can share a folder with other users by clicking the share icon to the right of a folder\\'s name.')}

    \n
    \n );\n\n // sort\n const sortByName = sortBy == 'name';\n const sortIcon = sortOrder == 'asc' ? : ;\n\n const isDesktop = Utils.isDesktop();\n const table = (\n \n \n {isDesktop ? (\n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n )}\n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {/*icon*/}{gettext('Name')} {sortByName && sortIcon}{gettext('Share To')}{gettext('Permission')}
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n sortItems: PropTypes.func.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n share_permission: this.props.item.share_permission,\n share_permission_name: this.props.item.share_permission_name,\n isOpIconShown: false,\n isOpMenuOpen: false, // for mobile\n isPermSelectDialogOpen: false, // for mobile\n unshared: false,\n isShowPermEditor: false,\n };\n\n this.permissions = ['rw', 'r'];\n if (isPro) {\n this.permissions.push('cloud-edit', 'preview');\n }\n }\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n });\n };\n\n togglePermSelectDialog = () => {\n this.setState({\n isPermSelectDialogOpen: !this.state.isPermSelectDialogOpen\n });\n };\n\n onMouseEnter = () => {\n this.setState({isOpIconShown: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOpIconShown: false});\n };\n\n unshare = (e) => {\n e.preventDefault();\n\n const item = this.props.item;\n let options = {\n 'p': item.path\n };\n if (item.share_type == 'personal') {\n Object.assign(options, {\n 'share_type': 'user',\n 'username': item.user_email\n });\n } else {\n Object.assign(options, {\n 'share_type': item.share_type, // 'group'\n 'group_id': item.group_id\n });\n }\n\n seafileAPI.unshareFolder(item.repo_id, options).then((res) => {\n this.setState({\n unshared: true\n });\n let message = gettext('Successfully unshared {name}').replace('{name}', item.folder_name);\n toaster.success(message);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster(errMessage);\n });\n };\n\n changePerm = (permission) => {\n const item = this.props.item;\n const postData = {\n 'permission': permission\n };\n let options = {\n 'p': item.path\n };\n if (item.share_type == 'personal') {\n Object.assign(options, {\n 'share_type': 'user',\n 'username': item.user_email\n });\n } else {\n Object.assign(options, {\n 'share_type': item.share_type, // 'group'\n 'group_id': item.group_id\n });\n }\n\n seafileAPI.updateFolderSharePerm(item.repo_id, postData, options).then((res) => {\n this.setState({share_permission: permission});\n toaster.success(gettext('Successfully modified permission.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onEditPermission = (event) => {\n event.nativeEvent.stopImmediatePropagation();\n this.setState({isShowPermEditor: true});\n };\n\n render() {\n if (this.state.unshared) {\n return null;\n }\n\n const item = this.props.item;\n let { share_permission, share_permission_name, isOpIconShown, isPermSelectDialogOpen, isShowPermEditor } = this.state;\n\n let is_readonly = false;\n if (share_permission == 'r' || share_permission == 'preview') {\n is_readonly = true;\n }\n let iconUrl = Utils.getFolderIconUrl(is_readonly);\n let iconTitle = Utils.getFolderIconTitle({\n 'permission': share_permission\n });\n let folderUrl = `${siteRoot}library/${item.repo_id}/${encodeURIComponent(item.repo_name)}${Utils.encodePath(item.path)}`;\n\n // custom defined permission\n if (share_permission.startsWith('custom-')) {\n share_permission = share_permission.slice(7);\n }\n const desktopItem = (\n \n {iconTitle}\n {item.folder_name}\n \n {item.share_type == 'personal' ?\n {item.user_name} : item.group_name}\n \n \n {!isShowPermEditor && (\n
    \n {Utils.sharePerms(share_permission) || share_permission_name}\n {isOpIconShown && (\n \n \n )}\n
    \n )}\n {isShowPermEditor && (\n \n )}\n \n \n \n );\n\n const mobileItem = (\n \n \n {iconTitle}\n \n {item.folder_name}\n {Utils.sharePerms(share_permission)}\n
    \n {`${gettext('Share To:')} ${item.share_type == 'personal' ? item.user_name : item.group_name}`}\n \n \n \n \n
    \n
    \n
    \n {gettext('Permission')}\n {gettext('Unshare')}\n
    \n
    \n
    \n \n \n {isPermSelectDialogOpen &&(\n \n )}\n
    \n );\n\n return this.props.isDesktop ? desktopItem : mobileItem;\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isDesktop: PropTypes.bool.isRequired,\n};\n\nclass ShareAdminFolders extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: [],\n sortBy: 'name',\n sortOrder: 'asc' // 'asc' or 'desc'\n };\n }\n\n _sortItems = (items, sortBy, sortOrder) => {\n let comparator;\n\n switch (`${sortBy}-${sortOrder}`) {\n case 'name-asc':\n comparator = function(a, b) {\n var result = Utils.compareTwoWord(a.folder_name, b.folder_name);\n return result;\n };\n break;\n case 'name-desc':\n comparator = function(a, b) {\n var result = Utils.compareTwoWord(a.folder_name, b.folder_name);\n return -result;\n };\n break;\n }\n\n items.sort(comparator);\n return items;\n };\n\n sortItems = (sortBy, sortOrder) => {\n this.setState({\n sortBy: sortBy,\n sortOrder: sortOrder,\n items: this._sortItems(this.state.items, sortBy, sortOrder)\n });\n };\n\n componentDidMount() {\n seafileAPI.listSharedFolders().then((res) => {\n let items = res.data.map(item => {\n return new SharedFolderInfo(item);\n });\n this.setState({\n loading: false,\n items: this._sortItems(items, this.state.sortBy, this.state.sortOrder)\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n render() {\n return (\n
    \n
    \n
    \n

    {gettext('Folders')}

    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default ShareAdminFolders;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalBody } from 'reactstrap';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n currentPerm: PropTypes.string.isRequired,\n permissions: PropTypes.array.isRequired,\n changePerm: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass ShareLinkPermissionSelect extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n currentOption: this.props.currentPerm\n };\n }\n\n switchOption = (e) => {\n if (!e.target.checked) {\n return;\n }\n\n const currentOption = e.target.value;\n this.setState({\n currentOption: currentOption\n });\n\n this.props.changePerm(currentOption);\n this.props.toggleDialog();\n };\n\n render() {\n const options = this.props.permissions;\n const { currentOption } = this.state;\n\n return (\n \n \n {options.map((item, index) => {\n return (\n
    \n \n \n
    \n );\n })}\n
    \n
    \n );\n }\n}\n\nShareLinkPermissionSelect.propTypes = propTypes;\n\nexport default ShareLinkPermissionSelect;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalBody } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\n\nconst propTypes = {\n toggleDialog: PropTypes.func.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n sortOptions: PropTypes.array,\n sortItems: PropTypes.func.isRequired\n};\n\nclass SortOptions extends React.Component {\n\n constructor(props) {\n super(props);\n this.sortOptions = this.props.sortOptions || [\n {value: 'name-asc', text: gettext('By name ascending')},\n {value: 'name-desc', text: gettext('By name descending')},\n {value: 'size-asc', text: gettext('By size ascending')},\n {value: 'size-desc', text: gettext('By size descending')},\n {value: 'time-asc', text: gettext('By time ascending')},\n {value: 'time-desc', text: gettext('By time descending')}\n ];\n const { sortBy, sortOrder } = this.props;\n this.state = {\n currentOption: `${sortBy}-${sortOrder}`\n };\n }\n\n switchOption = (e) => {\n if (!e.target.checked) {\n return;\n }\n\n this.setState({\n currentOption: e.target.value\n });\n\n const [sortBy, sortOrder] = e.target.value.split('-');\n this.props.sortItems(sortBy, sortOrder);\n this.props.toggleDialog();\n };\n\n render() {\n return (\n \n \n {this.sortOptions.map((item, index) => {\n return (\n \n \n
    \n
    \n );\n })}\n
    \n
    \n );\n }\n}\n\nSortOptions.propTypes = propTypes;\n\nexport default SortOptions;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CommonToolbar from './common-toolbar';\n\nconst propTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n searchPlaceholder: PropTypes.string,\n children: PropTypes.object\n};\n\nclass TopToolbar extends React.Component {\n\n render() {\n const { onShowSidePanel, onSearchedClick } = this.props;\n return (\n
    \n
    \n \n \n {this.props.children}\n
    \n \n
    \n );\n }\n}\n\nTopToolbar.propTypes = propTypes;\n\nexport default TopToolbar;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { Dropdown, DropdownToggle, DropdownItem, Button } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport { isPro, gettext, siteRoot, canGenerateUploadLink } from '../../utils/constants';\nimport ShareLink from '../../models/share-link';\nimport Loading from '../../components/loading';\nimport toaster from '../../components/toast';\nimport EmptyTip from '../../components/empty-tip';\nimport ShareLinkPermissionSelect from '../../components/dialog/share-link-permission-select';\nimport ShareAdminLink from '../../components/dialog/share-admin-link';\nimport SortOptionsDialog from '../../components/dialog/sort-options';\nimport CommonOperationConfirmationDialog from '../../components/dialog/common-operation-confirmation-dialog';\nimport TopToolbar from '../../components/toolbar/top-toolbar';\nimport Selector from '../../components/single-selector';\n\nconst contentPropTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n sortItems: PropTypes.func.isRequired,\n onRemoveLink: PropTypes.func.isRequired\n};\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n toggleItemFreezed = (isFreezed) => {\n this.setState({ isItemFreezed: isFreezed });\n };\n\n sortByName = (e) => {\n e.preventDefault();\n const sortBy = 'name';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n sortByTime = (e) => {\n e.preventDefault();\n const sortBy = 'time';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n render() {\n const { loading, errorMsg, items, sortBy, sortOrder } = this.props;\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No share links')}

    \n

    {gettext('You have not created any share links yet. A share link can be used to share files and folders with anyone. You can create a share link for a file or folder by clicking the share icon to the right of its name.')}

    \n
    \n );\n\n // sort\n const sortByName = sortBy == 'name';\n const sortByTime = sortBy == 'time';\n const sortIcon = sortOrder == 'asc' ? : ;\n\n const isDesktop = Utils.isDesktop();\n // only for some columns\n const columnWidths = isPro ? ['14%', '7%', '14%'] : ['21%', '14%', '20%'];\n const table = (\n \n \n {isDesktop ? (\n \n \n \n \n {isPro && }\n \n \n \n \n ) : (\n \n \n \n \n \n )}\n \n \n {items.map((item, index) => {\n return (\n );\n })}\n \n
    {/*icon*/}{gettext('Name')} {sortByName && sortIcon}{gettext('Library')}{gettext('Permission')}{gettext('Visits')}{gettext('Expiration')} {sortByTime && sortIcon}{/*Operations*/}
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = contentPropTypes;\n\nconst itemPropTypes = {\n item: PropTypes.object.isRequired,\n isDesktop: PropTypes.bool.isRequired,\n onRemoveLink: PropTypes.func.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n toggleItemFreezed: PropTypes.func.isRequired\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n highlight: false,\n isOpIconShown: false,\n isOpMenuOpen: false, // for mobile\n isPermSelectDialogOpen: false, // for mobile\n isLinkDialogOpen: false,\n permissionOptions: [],\n currentPermission: '',\n };\n }\n\n componentDidMount() {\n if (isPro) {\n this.updatePermissionOptions();\n }\n }\n\n updatePermissionOptions = () => {\n const item = this.props.item;\n let itemType = item.is_dir ? (item.path === '/' ? 'library' : 'dir') : 'file';\n let permission = item.repo_folder_permission;\n let permissionOptions = Utils.getShareLinkPermissionList(itemType, permission, item.path, item.can_edit);\n let currentPermission = Utils.getShareLinkPermissionStr(this.props.item.permissions);\n this.setState({\n permissionOptions: permissionOptions,\n currentPermission: currentPermission\n });\n };\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n });\n };\n\n togglePermSelectDialog = () => {\n this.setState({\n isPermSelectDialogOpen: !this.state.isPermSelectDialogOpen\n });\n };\n\n toggleLinkDialog = () => {\n this.setState({\n isLinkDialogOpen: !this.state.isLinkDialogOpen\n });\n };\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n viewLink = (e) => {\n e.preventDefault();\n this.toggleLinkDialog();\n };\n\n removeLink = (e) => {\n e.preventDefault();\n this.props.onRemoveLink(this.props.item);\n };\n\n renderExpiration = () => {\n const item = this.props.item;\n if (!item.expire_date) {\n return '--';\n }\n const expire_date = moment(item.expire_date).format('YYYY-MM-DD');\n const expire_time = moment(item.expire_date).format('YYYY-MM-DD HH:mm:ss');\n return ({expire_date});\n };\n\n // for 'selector' in desktop\n changePermission = (permOption) => {\n this.changePerm(permOption.value);\n };\n\n changePerm = (permission) => {\n const item = this.props.item;\n const permissionDetails = Utils.getShareLinkPermissionObject(permission).permissionDetails;\n seafileAPI.updateShareLink(item.token, JSON.stringify(permissionDetails)).then(() => {\n this.setState({\n currentPermission: permission\n });\n let message = gettext('Successfully modified permission.');\n toaster.success(message);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const item = this.props.item;\n const { currentPermission, permissionOptions , isOpIconShown, isPermSelectDialogOpen, isLinkDialogOpen } = this.state;\n this.permOptions = permissionOptions.map(item => {\n return {\n value: item,\n text: Utils.getShareLinkPermissionObject(item).text,\n isSelected: item == currentPermission\n };\n });\n const currentSelectedPermOption = this.permOptions.filter(item => item.isSelected)[0] || {};\n\n let iconUrl, objUrl;\n if (item.is_dir) {\n let path = item.path === '/' ? '/' : item.path.slice(0, item.path.length - 1);\n iconUrl = Utils.getFolderIconUrl(false);\n objUrl = `${siteRoot}library/${item.repo_id}/${encodeURIComponent(item.repo_name)}${Utils.encodePath(path)}`;\n } else {\n iconUrl = Utils.getFileIconUrl(item.obj_name);\n objUrl = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;\n }\n\n const deletedTip = item.obj_id === '' ? {gettext('(deleted)')} : null;\n const desktopItem = (\n \n \"\"\n \n {item.is_dir ?\n {item.obj_name} :\n {item.obj_name}\n }\n {deletedTip}\n \n {item.repo_name}\n {isPro &&\n \n \n \n }\n {item.view_cnt}\n {this.renderExpiration()}\n \n {!item.is_expired && }\n \n \n \n );\n\n const mobileItem = (\n \n \n \"\"\n \n {item.is_dir ?\n {item.obj_name} :\n {item.obj_name}\n }\n {isPro && {Utils.getShareLinkPermissionObject(currentPermission).text}}\n
    \n {item.repo_name}
    \n {gettext('Visits')}: {item.view_cnt}\n {gettext('Expiration')}: {this.renderExpiration()}\n \n \n \n \n
    \n
    \n
    \n {(isPro && !item.is_expired) && {gettext('Permission')}}\n {!item.is_expired && {gettext('View')}}\n {gettext('Remove')}\n
    \n
    \n
    \n \n \n {isPermSelectDialogOpen &&\n \n }\n
    \n );\n\n return (\n \n {this.props.isDesktop ? desktopItem : mobileItem}\n {isLinkDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = itemPropTypes;\n\nconst propTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired\n};\n\nclass ShareAdminShareLinks extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isCleanInvalidShareLinksDialogOpen: false,\n loading: true,\n errorMsg: '',\n items: [],\n sortBy: 'name', // 'name' or 'time'\n sortOrder: 'asc' // 'asc' or 'desc'\n };\n\n // for mobile\n this.sortOptions = [\n {value: 'name-asc', text: gettext('By name ascending')},\n {value: 'name-desc', text: gettext('By name descending')},\n {value: 'time-asc', text: gettext('By expiration ascending')},\n {value: 'time-desc', text: gettext('By expiration descending')}\n ];\n }\n\n _sortItems = (items, sortBy, sortOrder) => {\n let comparator;\n\n switch (`${sortBy}-${sortOrder}`) {\n case 'name-asc':\n comparator = function(a, b) {\n var result = Utils.compareTwoWord(a.obj_name, b.obj_name);\n return result;\n };\n break;\n case 'name-desc':\n comparator = function(a, b) {\n var result = Utils.compareTwoWord(a.obj_name, b.obj_name);\n return -result;\n };\n break;\n case 'time-asc':\n comparator = function(a, b) {\n return a.expire_date < b.expire_date ? -1 : 1;\n };\n break;\n case 'time-desc':\n comparator = function(a, b) {\n return a.expire_date < b.expire_date ? 1 : -1;\n };\n break;\n\n // no default\n }\n\n items.sort((a, b) => {\n if (a.is_dir && !b.is_dir) {\n return -1;\n } else if (!a.is_dir && b.is_dir) {\n return 1;\n } else {\n return comparator(a, b);\n }\n });\n return items;\n };\n\n sortItems = (sortBy, sortOrder) => {\n this.setState({\n sortBy: sortBy,\n sortOrder: sortOrder,\n items: this._sortItems(this.state.items, sortBy, sortOrder)\n });\n };\n\n componentDidMount() {\n this.listUserShareLinks();\n }\n\n listUserShareLinks() {\n seafileAPI.listUserShareLinks().then((res) => {\n let items = res.data.map(item => {\n return new ShareLink(item);\n });\n this.setState({\n loading: false,\n items: this._sortItems(items, this.state.sortBy, this.state.sortOrder)\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n onRemoveLink = (item) => {\n seafileAPI.deleteShareLink(item.token).then(() => {\n let items = this.state.items.filter(uploadItem => {\n return uploadItem.token !== item.token;\n });\n this.setState({items: items});\n let message = gettext('Successfully deleted 1 item.');\n toaster.success(message);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n toggleSortOptionsDialog = () => {\n this.setState({\n isSortOptionsDialogOpen: !this.state.isSortOptionsDialogOpen\n });\n };\n\n toggleCleanInvalidShareLinksDialog = () => {\n this.setState({isCleanInvalidShareLinksDialogOpen: !this.state.isCleanInvalidShareLinksDialogOpen});\n };\n\n cleanInvalidShareLinks = () => {\n seafileAPI.cleanInvalidShareLinks().then(res => {\n const newItems = this.state.items.filter(item => item.obj_id !== '').filter(item => !item.is_expired);\n this.setState({items: newItems});\n toaster.success(gettext('Successfully cleaned invalid share links.'));\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n \n\n \n \n
    \n
    \n
    \n
      \n
    • \n {gettext('Share Links')}\n
    • \n {canGenerateUploadLink && (\n
    • {gettext('Upload Links')}
    • \n )}\n
    \n {(!Utils.isDesktop() && this.state.items.length > 0) && }\n
    \n
    \n \n
    \n
    \n
    \n {this.state.isSortOptionsDialogOpen &&\n \n }\n {this.state.isCleanInvalidShareLinksDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nShareAdminShareLinks.propTypes = propTypes;\n\nexport default ShareAdminShareLinks;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { Dropdown, DropdownToggle, DropdownItem, Button } from 'reactstrap';\nimport { gettext, siteRoot, canGenerateShareLink } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../../components/toast';\nimport Loading from '../../components/loading';\nimport EmptyTip from '../../components/empty-tip';\nimport UploadLink from '../../models/upload-link';\nimport ShareAdminLink from '../../components/dialog/share-admin-link';\nimport CommonOperationConfirmationDialog from '../../components/dialog/common-operation-confirmation-dialog';\nimport TopToolbar from '../../components/toolbar/top-toolbar';\n\nconst contentPropTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n onRemoveLink: PropTypes.func.isRequired\n};\n\nclass Content extends Component {\n\n render() {\n const { loading, errorMsg, items } = this.props;\n\n if (loading) {\n return ;\n }\n if (errorMsg) {\n return

    {errorMsg}

    ;\n }\n\n const emptyTip = (\n \n

    {gettext('No upload links')}

    \n

    {gettext('You have not created any upload links yet. An upload link allows anyone to upload files to a folder or library. You can create an upload link for a folder or library by clicking the share icon to the right of its name.')}

    \n
    \n );\n\n const isDesktop = Utils.isDesktop();\n const table = (\n \n \n {isDesktop ? (\n \n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n )}\n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {/*icon*/}{gettext('Name')}{gettext('Library')}{gettext('Visits')}{gettext('Expiration')}{/*Operations*/}
    \n );\n\n return items.length ? table : emptyTip;\n }\n}\n\nContent.propTypes = contentPropTypes;\n\nconst itemPropTypes = {\n isDesktop: PropTypes.bool.isRequired,\n item: PropTypes.object.isRequired,\n onRemoveLink: PropTypes.func.isRequired\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n isOpMenuOpen: false, // for mobile\n isLinkDialogOpen: false\n };\n }\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n });\n };\n\n toggleLinkDialog = () => {\n this.setState({\n isLinkDialogOpen: !this.state.isLinkDialogOpen\n });\n };\n\n handleMouseOver = () => {\n this.setState({isOpIconShown: true});\n };\n\n handleMouseOut = () => {\n this.setState({isOpIconShown: false});\n };\n\n viewLink = (e) => {\n e.preventDefault();\n this.toggleLinkDialog();\n };\n\n removeLink = (e) => {\n e.preventDefault();\n this.props.onRemoveLink(this.props.item);\n };\n\n renderExpiration = () => {\n const item = this.props.item;\n if (!item.expire_date) {\n return '--';\n }\n const expire_date = moment(item.expire_date).format('YYYY-MM-DD');\n const expire_time = moment(item.expire_date).format('YYYY-MM-DD HH:mm:ss');\n return ({expire_date});\n };\n\n render() {\n let item = this.props.item;\n const { isOpIconShown, isLinkDialogOpen } = this.state;\n\n const iconUrl = Utils.getFolderIconUrl(false);\n const repoUrl = `${siteRoot}library/${item.repo_id}/${encodeURIComponent(item.repo_name)}`;\n const objUrl = `${repoUrl}${Utils.encodePath(item.path)}`;\n\n const deletedTip = item.obj_id === '' ? {gettext('(deleted)')} : null;\n const desktopItem = (\n \n \"\"\n {item.obj_name}{deletedTip}\n {item.repo_name}\n {item.view_cnt}\n {this.renderExpiration()}\n \n {!item.is_expired && }\n \n \n \n );\n\n const mobileItem = (\n \n \"\"\n \n {item.obj_name}\n
    \n {item.repo_name}
    \n {gettext('Visits')}: {item.view_cnt}\n {gettext('Expiration')}: {this.renderExpiration()}\n \n \n \n \n
    \n
    \n
    \n {!item.is_expired && {gettext('View')}}\n {gettext('Remove')}\n
    \n
    \n
    \n \n \n );\n return (\n \n {this.props.isDesktop ? desktopItem : mobileItem}\n {isLinkDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = itemPropTypes;\n\nconst propTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired\n};\n\nclass ShareAdminUploadLinks extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isCleanInvalidUploadLinksDialogOpen: false,\n loading: true,\n errorMsg: '',\n items: []\n };\n }\n\n componentDidMount() {\n this.listUserUploadLinks();\n }\n\n listUserUploadLinks() {\n seafileAPI.listUserUploadLinks().then((res) => {\n let items = res.data.map(item => {\n return new UploadLink(item);\n });\n this.setState({\n loading: false,\n items: items\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n onRemoveLink = (item) => {\n seafileAPI.deleteUploadLink(item.token).then(() => {\n let items = this.state.items.filter(uploadItem => {\n return uploadItem.token !== item.token;\n });\n this.setState({items: items});\n const message = gettext('Successfully deleted 1 item.');\n toaster.success(message);\n }).catch((error) => {\n const errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n toggleCleanInvalidUploadLinksDialog = () => {\n this.setState({isCleanInvalidUploadLinksDialogOpen: !this.state.isCleanInvalidUploadLinksDialogOpen});\n };\n\n cleanInvalidUploadLinks = () => {\n seafileAPI.cleanInvalidUploadLinks().then(res => {\n const newItems = this.state.items.filter(item => item.obj_id !== '').filter(item => !item.is_expired);\n this.setState({items: newItems});\n toaster.success(gettext('Successfully cleaned invalid upload links.'));\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n \n \n \n
    \n
    \n
    \n
      \n {canGenerateShareLink && (\n
    • {gettext('Share Links')}
    • \n )}\n
    • {gettext('Upload Links')}
    • \n
    \n
    \n
    \n \n
    \n
    \n
    \n {this.state.isCleanInvalidUploadLinksDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nShareAdminUploadLinks.propTypes = propTypes;\n\nexport default ShareAdminUploadLinks;\n","import { Utils } from '../utils/utils';\n\nclass Repo {\n constructor(object) {\n this.repo_id = object.repo_id;\n this.repo_name = object.repo_name;\n this.permission = object.permission;\n this.size_original = object.size;\n this.size = Utils.bytesToSize(object.size);\n this.owner_name = object.owner_name;\n this.owner_email = object.owner_email;\n this.owner_contact_email = object.owner_contact_email;\n this.encrypted = object.encrypted;\n this.last_modified = object.last_modified;\n this.modifier_contact_email = object.modifier_contact_email;\n this.modifier_email = object.modifier_email;\n this.modifier_name = object.modifier_name;\n this.type = object.type;\n this.starred = object.starred;\n this.monitored = object.monitored;\n this.status = object.status;\n this.storage_name = object.storage_name;\n if (object.is_admin != undefined) {\n this.is_admin = object.is_admin;\n }\n }\n}\n\nexport default Repo;\n","import React from 'react';\nimport { gettext } from '../utils/constants';\n\nfunction LibsMobileThead() {\n return (\n \n \n {gettext('Library Type')}\n \n {gettext('Actions')}\n \n \n );\n}\n\nexport default LibsMobileThead;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { UncontrolledTooltip } from 'reactstrap';\nimport Icon from '../components/icon';\nimport { gettext } from '../utils/constants';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired\n};\n\nclass RepoMonitoredIcon extends React.Component {\n\n render() {\n const { repoID } = this.props;\n return (\n \n \n \n \n \n {gettext('You are watching file changes of this library.')}\n \n \n );\n }\n}\n\nRepoMonitoredIcon.propTypes = propTypes;\n\nexport default RepoMonitoredIcon;\n","import React, { Component, Fragment } from 'react';\nimport { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport cookie from 'react-cookies';\nimport { Link, navigate } from '@gatsbyjs/reach-router';\nimport { gettext, siteRoot, isPro } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../../components/toast';\nimport Repo from '../../models/repo';\nimport Loading from '../../components/loading';\nimport EmptyTip from '../../components/empty-tip';\nimport LibsMobileThead from '../../components/libs-mobile-thead';\nimport ModalPotal from '../../components/modal-portal';\nimport ShareDialog from '../../components/dialog/share-dialog';\nimport SortOptionsDialog from '../../components/dialog/sort-options';\nimport RepoMonitoredIcon from '../../components/repo-monitored-icon';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n freezeItem = (freezed) => {\n this.setState({\n isItemFreezed: freezed\n });\n };\n\n sortByName = (e) => {\n e.preventDefault();\n const sortBy = 'name';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n sortByTime = (e) => {\n e.preventDefault();\n const sortBy = 'time';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n sortBySize = (e) => {\n e.preventDefault();\n const sortBy = 'size';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n render() {\n const { loading, errorMsg, items, sortBy, sortOrder } = this.props;\n\n const emptyTip = (\n \n

    {gettext('No shared libraries')}

    \n

    {gettext('No libraries have been shared directly with you. A shared library can be shared with full or restricted permission. If you need access to a library owned by another user, ask the user to share the library with you.')}

    \n
    \n );\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n // sort\n const sortByName = sortBy == 'name';\n const sortByTime = sortBy == 'time';\n const sortBySize = sortBy == 'size';\n const sortIcon = sortOrder == 'asc' ? : ;\n\n const desktopThead = (\n \n \n \n {gettext('Library Type')}\n {gettext('Name')} {sortByName && sortIcon}\n {gettext('Actions')}\n {gettext('Size')} {sortBySize && sortIcon}\n {gettext('Last Update')} {sortByTime && sortIcon}\n {gettext('Owner')}\n \n \n );\n\n const isDesktop = Utils.isDesktop();\n const table = (\n \n {isDesktop ? desktopThead : }\n \n {items.map((item, index) => {\n return ;\n })}\n \n
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n sortItems: PropTypes.func.isRequired,\n onMonitorRepo: PropTypes.func.isRequired\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n highlight: false,\n showOpIcon: false,\n unshared: false,\n isShowSharedDialog: false,\n isStarred: this.props.data.starred,\n isOpMenuOpen: false\n };\n }\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n }, () => {\n this.props.freezeItem(this.state.isOpMenuOpen);\n });\n };\n\n handleMouseOver = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n highlight: true,\n showOpIcon: true\n });\n }\n };\n\n handleMouseOut = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n highlight: false,\n showOpIcon: false\n });\n }\n };\n\n share = (e) => {\n e.preventDefault();\n this.setState({isShowSharedDialog: true});\n };\n\n leaveShare = (e) => {\n e.preventDefault();\n\n const data = this.props.data;\n\n let request;\n if (data.owner_email.indexOf('@seafile_group') == -1) {\n let options = {\n 'share_type': 'personal',\n 'from': data.owner_email\n };\n request = seafileAPI.leaveShareRepo(data.repo_id, options);\n } else {\n request = seafileAPI.leaveShareGroupOwnedRepo(data.repo_id);\n }\n\n request.then((res) => {\n this.setState({unshared: true});\n let message = gettext('Successfully unshared {name}').replace('{name}', data.repo_name);\n toaster.success(message);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n errMessage = gettext('Failed to unshare {name}').replace('{name}', data.repo_name);\n }\n toaster(errMessage);\n });\n };\n\n toggleShareDialog = () => {\n this.setState({isShowSharedDialog: false});\n };\n\n onToggleStarRepo = (e) => {\n e.preventDefault();\n const repoName = this.props.data.repo_name;\n if (this.state.isStarred) {\n seafileAPI.unstarItem(this.props.data.repo_id, '/').then(() => {\n this.setState({isStarred: !this.state.isStarred});\n const msg = gettext('Successfully unstarred {library_name_placeholder}.')\n .replace('{library_name_placeholder}', repoName);\n toaster.success(msg);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n seafileAPI.starItem(this.props.data.repo_id, '/').then(() => {\n this.setState({isStarred: !this.state.isStarred});\n const msg = gettext('Successfully starred {library_name_placeholder}.')\n .replace('{library_name_placeholder}', repoName);\n toaster.success(msg);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n visitRepo = () => {\n navigate(this.repoURL);\n };\n\n watchFileChanges = () => {\n const { data: repo } = this.props;\n seafileAPI.monitorRepo(repo.repo_id).then(() => {\n this.props.onMonitorRepo(repo, true);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n unwatchFileChanges = () => {\n const { data: repo } = this.props;\n seafileAPI.unMonitorRepo(repo.repo_id).then(() => {\n this.props.onMonitorRepo(repo, false);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n if (this.state.unshared) {\n return null;\n }\n\n const data = this.props.data;\n\n data.icon_url = Utils.getLibIconUrl(data);\n data.icon_title = Utils.getLibIconTitle(data);\n\n let iconVisibility = this.state.showOpIcon ? '' : ' invisible';\n let shareIconClassName = 'op-icon sf2-icon-share repo-share-btn' + iconVisibility;\n let leaveShareIconClassName = 'op-icon sf2-icon-x3' + iconVisibility;\n let shareRepoUrl = this.repoURL = `${siteRoot}library/${data.repo_id}/${Utils.encodePath(data.repo_name)}/`;\n\n // at present, only repo shared with 'r', 'rw' can be monitored.(Fri Feb 10 16:24:49 CST 2023)\n const enableMonitorRepo = isPro && (data.permission == 'r' || data.permission == 'rw');\n\n const desktopItem = (\n \n \n \n \n \n \n \n {data.icon_title}\n \n \n {data.repo_name}\n {data.monitored && }\n \n \n \n {(isPro && data.is_admin) &&\n \n }\n \n {enableMonitorRepo &&\n \n \n \n {data.monitored ? gettext('Unwatch File Changes') : gettext('Watch File Changes')}\n \n \n }\n \n {data.size}\n {moment(data.last_modified).fromNow()}\n {data.owner_name}\n \n {this.state.isShowSharedDialog && (\n \n \n \n )}\n \n );\n\n const mobileItem = (\n \n \n {data.icon_title}\n \n {data.repo_name}\n {data.monitored && }\n
    \n {data.owner_name}\n {data.size}\n {moment(data.last_modified).fromNow()}\n \n \n \n \n
    \n
    \n
    \n {this.state.isStarred ? gettext('Unstar') : gettext('Star')}\n {(isPro && data.is_admin) && {gettext('Share')}}\n {gettext('Leave Share')}\n {enableMonitorRepo && {data.monitored ? gettext('Unwatch File Changes') : gettext('Watch File Changes')}}\n
    \n
    \n
    \n \n \n {this.state.isShowSharedDialog && (\n \n \n \n )}\n
    \n );\n\n return this.props.isDesktop ? desktopItem : mobileItem;\n }\n}\n\nItem.propTypes = {\n isDesktop: PropTypes.bool.isRequired,\n data: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n freezeItem: PropTypes.func.isRequired,\n onMonitorRepo: PropTypes.func.isRequired\n};\n\nclass SharedLibraries extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: [],\n sortBy: cookie.load('seafile-repo-dir-sort-by') || 'name', // 'name' or 'time' or 'size'\n sortOrder: cookie.load('seafile-repo-dir-sort-order') || 'asc', // 'asc' or 'desc'\n isSortOptionsDialogOpen: false\n };\n }\n\n componentDidMount() {\n seafileAPI.listRepos({type:'shared'}).then((res) => {\n let repoList = res.data.repos.map((item) => {\n return new Repo(item);\n });\n this.setState({\n loading: false,\n items: Utils.sortRepos(repoList, this.state.sortBy, this.state.sortOrder)\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n sortItems = (sortBy, sortOrder) => {\n cookie.save('seafile-repo-dir-sort-by', sortBy);\n cookie.save('seafile-repo-dir-sort-order', sortOrder);\n this.setState({\n sortBy: sortBy,\n sortOrder: sortOrder,\n items: Utils.sortRepos(this.state.items, sortBy, sortOrder)\n });\n };\n\n toggleSortOptionsDialog = () => {\n this.setState({\n isSortOptionsDialogOpen: !this.state.isSortOptionsDialogOpen\n });\n };\n\n onMonitorRepo = (repo, monitored) => {\n let items = this.state.items.map(item => {\n if (item.repo_id === repo.repo_id) {\n item.monitored = monitored;\n }\n return item;\n });\n this.setState({items: items});\n };\n\n render() {\n return (\n \n
    \n
    \n
    \n

    {gettext('Shared with me')}

    \n {(!Utils.isDesktop() && this.state.items.length > 0) && }\n
    \n
    \n \n
    \n
    \n
    \n {this.state.isSortOptionsDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nexport default SharedLibraries;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { gettext, siteRoot } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../../components/toast';\nimport Loading from '../../components/loading';\nimport EmptyTip from '../../components/empty-tip';\n\nclass Content extends Component {\n\n render() {\n const { loading, errorMsg, items } = this.props;\n\n const emptyTip = (\n \n

    {gettext('No libraries have been shared with you')}

    \n

    {gettext('No libraries have been shared with you from other servers.')}

    \n
    \n );\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ;\n })}\n \n
    {gettext('Name')}{gettext('Shared by')}{gettext('At server')}{gettext('Time')}{/* operations */}
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n leaveShare: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false\n };\n }\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n leaveShare = (e) => {\n e.preventDefault();\n this.props.leaveShare(this.props.item);\n };\n\n render() {\n const item = this.props.item;\n const { isOpIconShown } = this.state;\n\n item.icon_url = Utils.getLibIconUrl(item);\n item.icon_title = Utils.getLibIconTitle(item);\n\n let shareRepoUrl =`${siteRoot}remote-library/${this.props.item.provider_id}/${this.props.item.repo_id}/${Utils.encodePath(this.props.item.repo_name)}/`;\n return (\n \n {item.icon_title}\n {item.repo_name}\n {item.from_user}\n {item.from_server_url}\n {moment(item.ctime).fromNow()}\n \n \n \n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n leaveShare: PropTypes.func.isRequired,\n};\n\nclass SharedWithOCM extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: []\n };\n }\n\n componentDidMount() {\n seafileAPI.listOCMSharesReceived().then((res) => {\n this.setState({\n loading: false,\n items: res.data.ocm_share_received_list\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n leaveShare = (item) => {\n const { id, repo_name } = item;\n seafileAPI.deleteOCMShareReceived(id).then((res) => {\n let items = this.state.items.filter(item => {\n return item.id != id;\n });\n this.setState({items: items});\n toaster.success(gettext('Successfully unshared {name}').replace('{name}', repo_name));\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n
    \n
    \n
    \n

    {gettext('Shared from other servers')}

    \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default SharedWithOCM;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { gettext, siteRoot } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../../components/toast';\nimport Loading from '../../components/loading';\nimport EmptyTip from '../../components/empty-tip';\n\nclass OCMViaWebdav extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n shareID: '',\n path: '',\n items: [],\n errorMsg: '',\n };\n }\n\n componentDidMount() {\n this.getAllReceivedShares();\n }\n\n getAllReceivedShares = () => {\n const url = seafileAPI.server + '/ocm-via-webdav/received-shares/';\n seafileAPI.req.get(url).then((res) => {\n this.setState({\n loading: false,\n shareID: '',\n path: '',\n items: res.data.received_share_list,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n leaveShare = (item) => {\n const { id, name } = item;\n const url = seafileAPI.server + '/ocm-via-webdav/received-shares/' + id + '/';\n seafileAPI.req.delete(url).then((res) => {\n let items = this.state.items.filter(item => {\n return item.id != id;\n });\n this.setState({items: items});\n toaster.success(gettext('Successfully unshared {name}').replace('{name}', name));\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n openFolder = (item) => {\n\n this.setState({\n loading: true,\n });\n\n const url = seafileAPI.server + '/ocm-via-webdav/received-shares/' + item.id + '/?path=' + item.path;\n seafileAPI.req.get(url).then((res) => {\n this.setState({\n loading: false,\n shareID: item.id,\n path: res.data.parent_dir,\n items: res.data.received_share_list,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onPathClick = (path) => {\n\n this.setState({\n loading: true,\n });\n\n const url = seafileAPI.server + '/ocm-via-webdav/received-shares/' + this.state.shareID + '/?path=' + path;\n seafileAPI.req.get(url).then((res) => {\n this.setState({\n loading: false,\n items: res.data.received_share_list,\n path: res.data.parent_dir,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\n\nclass Content extends Component {\n\n static propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n path: PropTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { loading, errorMsg, items, path } = this.props;\n const emptyTip = (\n \n

    {gettext('No libraries have been shared with you')}

    \n

    {gettext('No libraries have been shared with you from other servers.')}

    \n
    \n );\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ;\n })}\n \n
    {gettext('Name')}{gettext('Shared By')}{gettext('Time')}{/* operations */}{/* operations */}
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n data: PropTypes.object.isRequired,\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n path: PropTypes.string.isRequired,\n leaveShare: PropTypes.func.isRequired,\n openFolder: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n static propTypes = {\n item: PropTypes.object.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false\n };\n }\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n downloadFile = () => {\n let downloadUrl = siteRoot + 'ocm-via-webdav/download-received-file/?share_id=' + this.props.item.id + '&path=' + this.props.item.path;\n window.location.href = downloadUrl;\n };\n\n leaveShare = (e) => {\n e.preventDefault();\n this.props.leaveShare(this.props.item);\n };\n\n openFolder = (e) => {\n e.preventDefault();\n this.props.openFolder(this.props.item);\n };\n\n render() {\n const item = this.props.item;\n const { isOpIconShown } = this.state;\n\n if (item.is_dir) {\n item.icon_url = Utils.getFolderIconUrl();\n } else {\n item.icon_url = Utils.getFileIconUrl(item.name);\n }\n return (\n \n \"\"\n \n {item.is_dir ? {item.name} : item.name}\n \n {item.shared_by}\n {moment(item.ctime).fromNow()}\n {item.is_dir ? '' : }\n \n {this.props.path ? '' : }\n \n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n leaveShare: PropTypes.func.isRequired,\n openFolder: PropTypes.func.isRequired,\n};\n\nclass DirPath extends React.Component {\n\n static propTypes = {\n currentPath: PropTypes.string.isRequired,\n onPathClick: PropTypes.func.isRequired,\n getAllReceivedShares: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n };\n }\n\n onPathClick = (e) => {\n let path = Utils.getEventData(e, 'path');\n this.props.onPathClick(path);\n };\n\n turnPathToLink = (path) => {\n path = path.slice(1, path.length - 1);\n let pathList = path.split('/');\n let nodePath = '';\n let pathElem = pathList.map((item, index) => {\n if (index === (pathList.length - 1)) {\n return (\n \n /\n {item}\n \n );\n } else {\n if (index === 0) {\n nodePath = '/';\n } else {\n nodePath += item + '/';\n }\n return (\n \n /\n {item}\n \n );\n }\n });\n return pathElem;\n };\n\n render() {\n let pathElem = this.turnPathToLink(this.props.currentPath);\n return (\n
    \n {gettext('All')}\n {pathElem}\n
    \n );\n }\n}\n\nDirPath.propTypes = {\n shareID: PropTypes.string.isRequired,\n currentPath: PropTypes.string.isRequired,\n onPathClick: PropTypes.func.isRequired,\n getAllReceivedShares: PropTypes.func.isRequired,\n};\n\nexport default OCMViaWebdav;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Account from '../../components/common/account';\n\nconst propTypes = {\n children: PropTypes.object\n};\n\nclass MainPanelTopbar extends Component {\n\n render() {\n return (\n
    \n
    \n \n
    \n {this.props.children}\n
    \n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nMainPanelTopbar.propTypes = propTypes;\n\nexport default MainPanelTopbar;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n repoName: PropTypes.string.isRequired,\n currentPath: PropTypes.string.isRequired,\n onPathClick: PropTypes.func.isRequired,\n onTabNavClick: PropTypes.func.isRequired,\n repoID: PropTypes.string.isRequired,\n};\n\nclass DirPath extends React.Component {\n\n onPathClick = (e) => {\n let path = Utils.getEventData(e, 'path');\n this.props.onPathClick(path);\n };\n\n turnPathToLink = (path) => {\n path = path[path.length - 1] === '/' ? path.slice(0, path.length - 1) : path;\n let pathList = path.split('/');\n let nodePath = '';\n let pathElem = pathList.map((item, index) => {\n if (item === '') {\n return null;\n }\n if (index === (pathList.length - 1)) {\n return (\n \n /\n {item}\n \n );\n } else {\n nodePath += '/' + item;\n return (\n \n /\n {item}\n \n );\n }\n });\n return pathElem;\n };\n\n render() {\n let { currentPath, repoName } = this.props;\n let pathElem = this.turnPathToLink(currentPath);\n\n return (\n
    \n this.props.onTabNavClick('shared-with-ocm')}>{gettext('All')}\n /\n {(currentPath === '/' || currentPath === '') ?\n {repoName}:\n {repoName}\n }\n {pathElem}\n
    \n );\n }\n}\n\nDirPath.propTypes = propTypes;\n\nexport default DirPath;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../../components/loading';\n\nclass DirentItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false\n };\n }\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n openFolder = () => {\n this.props.openFolder(this.props.dirent);\n };\n\n downloadDirent = (e) => {\n e.preventDefault();\n this.props.downloadDirent(this.props.dirent);\n };\n\n render () {\n let { isOpIconShown } = this.state;\n let { dirent } = this.props;\n let iconUrl = Utils.getDirentIcon(dirent);\n\n return (\n \n \n \n \n {dirent.is_file ?\n dirent.name :\n {dirent.name}\n }\n \n \n {isOpIconShown && dirent.is_file &&\n \n }\n \n {Utils.bytesToSize(dirent.size)}\n {moment(dirent.mtime).fromNow()}\n \n \n );\n }\n}\n\nDirentItem.propTypes = {\n dirent: PropTypes.object.isRequired,\n openFolder: PropTypes.func.isRequired,\n deleteDirent: PropTypes.func.isRequired,\n downloadDirent: PropTypes.func.isRequired,\n};\n\nclass DirContent extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n let { loading, errorMsg, direntList } = this.props;\n\n if (loading) {\n return ;\n }\n\n if (errorMsg) {\n return

    {errorMsg}

    ;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {direntList.map((dirent, index) => {\n return ;\n })}\n \n
    {/*icon*/}{gettext('Name')}{/*operation*/}{gettext('Size')}{gettext('Last Update')}
    \n
    \n );\n }\n}\n\nDirContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n direntList: PropTypes.array.isRequired,\n openFolder: PropTypes.func.isRequired,\n deleteDirent: PropTypes.func.isRequired,\n downloadDirent: PropTypes.func.isRequired,\n};\n\nexport default DirContent;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport axios from 'axios';\nimport { Utils } from '../../utils/utils';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { siteRoot, gettext } from '../../utils/constants';\nimport toaster from '../../components/toast';\nimport MainPanelTopbar from './remote-dir-topbar';\nimport DirPathBar from './remote-dir-path';\nimport DirContent from './remote-dir-content';\n\nclass Dirent {\n constructor(obj) {\n this.name = obj.name;\n this.mtime = obj.mtime;\n this.size = obj.size;\n this.is_file = obj.type === 'file';\n }\n\n isDir() {\n return !this.is_file;\n }\n}\n\nclass DirView extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n repoName: '',\n path: '',\n direntList: [],\n isNewFolderDialogOpen: false,\n userPerm: '',\n };\n this.fileInput = React.createRef();\n }\n\n componentDidMount () {\n this.loadDirentList('/');\n }\n\n onPathClick = (path) => {\n this.loadDirentList(path);\n };\n\n openFolder = (dirent) => {\n let direntPath = Utils.joinPath(this.state.path, dirent.name);\n if (!dirent.is_file) {\n this.loadDirentList(direntPath);\n }\n };\n\n loadDirentList = (path) => {\n const { providerID, repoID } = this.props;\n seafileAPI.listOCMRepoDir(providerID, repoID, path).then(res => {\n const { repo_name: repoName, dirent_list, user_perm } = res.data;\n let direntList = [];\n dirent_list.forEach(item => {\n let dirent = new Dirent(item);\n direntList.push(dirent);\n });\n this.setState({\n loading: false,\n repoName: repoName,\n direntList: direntList,\n path: path,\n userPerm: user_perm,\n }, () => {\n let url =`${siteRoot}remote-library/${providerID}/${repoID}/${repoName}${Utils.encodePath(path)}`;\n window.history.replaceState({url: url, path: path}, path, url);\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n downloadDirent = (dirent) => {\n let path = Utils.joinPath(this.state.path, dirent.name);\n seafileAPI.getOCMRepoDownloadURL(this.props.providerID, this.props.repoID, path).then(res => {\n location.href = res.data;\n }).catch((err) => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n openFileInput = () => {\n this.fileInput.current.click();\n };\n\n onFileInputChange = () => {\n if (!this.fileInput.current.files.length) {\n return;\n }\n const file = this.fileInput.current.files[0];\n\n let { path } = this.state;\n let { providerID, repoID } = this.props;\n seafileAPI.getOCMRepoUploadURL(providerID, repoID, path).then(res => {\n let formData = new FormData();\n formData.append('parent_dir', path);\n formData.append('file', file);\n axios.post(res.data, formData).then(res => {\n const fileObj = res.data[0];\n let newDirent = new Dirent({\n 'type': 'file',\n 'name': fileObj.name,\n 'size': fileObj.size,\n 'mtime': (new Date()).getTime()\n });\n let direntList = this.state.direntList;\n const dirs = direntList.filter(item => { return !item.is_file; });\n direntList.splice(dirs.length, 0, newDirent);\n this.setState({\n direntList: direntList\n });\n });\n }).catch((err) => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { loading, errorMsg,\n repoName, direntList, path, userPerm } = this.state;\n const { repoID } = this.props;\n\n return (\n \n \n \n \n {userPerm === 'rw' &&\n \n }\n \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nDirView.propTypes = {\n repoID: PropTypes.string,\n providerID: PropTypes.string,\n onTabNavClick: PropTypes.func.isRequired,\n};\n\nexport default DirView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter, Form, FormGroup, Label, Alert } from 'reactstrap';\nimport { gettext, enableEncryptedLibrary, repoPasswordMinLength, storages, libraryTemplates } from '../../utils/constants';\nimport { SeahubSelect } from '../common/select';\n\nconst propTypes = {\n libraryType: PropTypes.string.isRequired,\n onCreateRepo: PropTypes.func.isRequired,\n onCreateToggle: PropTypes.func.isRequired,\n};\n\nclass CreateRepoDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n repoName: '',\n disabled: true,\n encrypt: false,\n password1: '',\n password2: '',\n errMessage: '',\n permission: 'rw',\n storage_id: storages.length ? storages[0].id : '',\n library_template: libraryTemplates.length ? libraryTemplates[0] : '',\n isSubmitBtnActive: false,\n };\n this.templateOptions = [];\n this.storageOptions = [];\n if (Array.isArray(libraryTemplates) && libraryTemplates.length) {\n this.templateOptions = libraryTemplates.map((item) => { return {value: item, label: item}; });\n }\n if (Array.isArray(storages) && storages.length) {\n this.storageOptions = storages.map((item) => { return {value: item.id, label: item.name}; });\n }\n }\n\n handleRepoNameChange = (e) => {\n if (!e.target.value.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n\n this.setState({repoName: e.target.value});\n };\n\n handlePassword1Change = (e) => {\n this.setState({password1: e.target.value});\n };\n\n handlePassword2Change = (e) => {\n this.setState({password2: e.target.value});\n };\n\n handleSubmit = () => {\n let isValid = this.validateInputParams();\n if (isValid) {\n let repoData = this.prepareRepoData();\n if (this.props.libraryType === 'department') {\n this.props.onCreateRepo(repoData, 'department');\n return;\n }\n this.props.onCreateRepo(repoData);\n }\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n toggle = () => {\n this.props.onCreateToggle();\n };\n\n validateInputParams() {\n let errMessage = '';\n let repoName = this.state.repoName.trim();\n if (!repoName.length) {\n errMessage = gettext('Name is required');\n this.setState({errMessage: errMessage});\n return false;\n }\n if (repoName.indexOf('/') > -1) {\n errMessage = gettext('Name should not include \\'/\\'.');\n this.setState({errMessage: errMessage});\n return false;\n }\n if (this.state.encrypt) {\n let password1 = this.state.password1.trim();\n let password2 = this.state.password2.trim();\n if (!password1.length) {\n errMessage = gettext('Please enter password');\n this.setState({errMessage: errMessage});\n return false;\n }\n if (!password2.length) {\n errMessage = gettext('Please enter the password again');\n this.setState({errMessage: errMessage});\n return false;\n }\n if (password1.length < repoPasswordMinLength) {\n errMessage = gettext('Password is too short');\n this.setState({errMessage: errMessage});\n return false;\n }\n if (password1 !== password2) {\n errMessage = gettext('Passwords don\\'t match');\n this.setState({errMessage: errMessage});\n return false;\n }\n }\n return true;\n }\n\n onPermissionChange = (e) => {\n let permission = e.target.value;\n this.setState({permission: permission});\n };\n\n handleStorageInputChange = (selectedItem) => {\n this.setState({storage_id: selectedItem.value});\n };\n\n handlelibraryTemplatesInputChange = (selectedItem) => {\n this.setState({library_template: selectedItem.value});\n };\n\n onEncrypted = (e) => {\n let isChecked = e.target.checked;\n this.setState({\n encrypt: isChecked,\n disabled: !isChecked\n });\n };\n\n prepareRepoData = () => {\n let libraryType = this.props.libraryType;\n\n let repoName = this.state.repoName.trim();\n let password = this.state.encrypt ? this.state.password1 : '';\n let permission = this.state.permission;\n\n let repo = null;\n if (libraryType === 'mine' || libraryType === 'public') {\n repo = {\n name: repoName,\n passwd: password\n };\n }\n if (libraryType === 'group') {\n repo = {\n repo_name: repoName,\n password: password,\n permission: permission,\n };\n }\n if (libraryType === 'department') {\n repo = {\n repo_name: repoName,\n passwd: password,\n };\n }\n\n const storage_id = this.state.storage_id;\n if (storage_id) {\n repo.storage_id = storage_id;\n }\n\n const library_template = this.state.library_template;\n if (library_template) {\n repo.library_template = library_template;\n }\n\n return repo;\n };\n\n render() {\n return (\n \n {gettext('New Library')}\n \n
    \n \n \n \n \n\n {libraryTemplates.length > 0 && (\n \n \n opt.value === this.state.library_template) || null}\n />\n \n )}\n\n {storages.length > 0 && (\n \n \n opt.value === this.state.storage_id) || null}\n />\n \n )}\n\n {this.props.libraryType === 'group' && (\n \n \n \n \n \n \n \n )}\n {enableEncryptedLibrary &&\n
    \n \n \n \n \n {!this.state.disabled &&\n \n {/* todo translate */}\n {' '}{gettext('(at least {placeholder} characters)').replace('{placeholder}', repoPasswordMinLength)}\n \n \n }\n {!this.state.disabled &&\n \n \n \n \n }\n
    \n }\n
    \n {this.state.errMessage && {this.state.errMessage}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nCreateRepoDialog.propTypes = propTypes;\n\nexport default CreateRepoDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../utils/utils';\nimport { Link, navigate } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../utils/constants';\nimport ModalPortal from '../modal-portal';\nimport CreateRepoDialog from '../dialog/create-repo-dialog';\nimport { DropdownToggle, Dropdown, DropdownMenu, DropdownItem } from 'reactstrap';\n\nconst propTypes = {\n libraryType: PropTypes.string.isRequired,\n onCreateRepo: PropTypes.func.isRequired,\n onShowSidePanel: PropTypes.func.isRequired,\n};\n\nclass RepoViewToolbar extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isCreateRepoDialogShow: false,\n isOpen: false,\n };\n }\n\n onCreateRepo = (repo) => {\n this.props.onCreateRepo(repo);\n this.onCreateToggle();\n };\n\n onCreateToggle = () => {\n this.setState({isCreateRepoDialogShow: !this.state.isCreateRepoDialogShow});\n };\n\n toggleMore = () => {\n this.setState({ isOpen: !this.state.isOpen });\n };\n\n onDropdownToggleKeyDown = (e) => {\n if (e.key == 'Enter' || e.key == 'Space') {\n this.toggleMore();\n }\n };\n\n visitDeletedviaKey = (e) => {\n if (e.key == 'Enter' || e.key == 'Space') {\n navigate(`${siteRoot}my-libs/deleted/`);\n }\n };\n\n render() {\n return (\n \n
    \n \n {Utils.isDesktop() ? (\n
    \n \n \n \n {gettext('More')}\n \n \n \n {gettext('Deleted Libraries')}\n \n \n \n
    \n ) : (\n \n )}\n
    \n {this.state.isCreateRepoDialogShow && (\n \n \n \n )}\n
    \n );\n }\n}\n\nRepoViewToolbar.propTypes = propTypes;\n\nexport default RepoViewToolbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Utils } from '../../utils/utils';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport toaster from '../toast';\nimport '../../css/dirent-detail.css';\n\nconst propTypes = {\n currentRepo: PropTypes.object.isRequired,\n closeDetails: PropTypes.func.isRequired,\n};\n\nclass LibDetail extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n fileCount: 0,\n };\n }\n\n componentDidMount() {\n let repo = this.props.currentRepo;\n this.getFileCounts(repo);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.currentRepo.repo_id !== this.props.currentRepo.repo_id) {\n this.getFileCounts(nextProps.currentRepo);\n }\n }\n\n getFileCounts = (repo) => {\n seafileAPI.getRepoInfo(repo.repo_id).then(res => {\n this.setState({fileCount: res.data.file_count});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n let repo = this.props.currentRepo;\n let smallIconUrl = Utils.getLibIconUrl(repo);\n let bigIconUrl = Utils.getLibIconUrl(repo, true);\n\n return (\n
    \n
    \n
    \n
    \n \"\"{' '}\n {repo.repo_name}\n
    \n
    \n
    \n
    \n \"\"\n
    \n
    \n \n \n \n \n \n \n \n \n \n
    {gettext('Files')}{this.state.fileCount}
    {gettext('Size')}{repo.size}
    {gettext('Last Update')}{ moment(repo.last_modified).fromNow()}
    \n
    \n
    \n
    \n );\n }\n}\n\nLibDetail.propTypes = propTypes;\n\nexport default LibDetail;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Form, FormGroup, Label, Input, Alert } from 'reactstrap';\nimport { gettext, enableRepoHistorySetting } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\n\nconst propTypes = {\n itemName: PropTypes.string.isRequired,\n toggleDialog: PropTypes.func.isRequired,\n repoID: PropTypes.string.isRequired,\n};\n\nclass LibHistorySetting extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n keepDays: -1,\n expireDays: 30,\n disabled: true,\n allHistory: true,\n noHistory: false,\n autoHistory: false,\n errorInfo: ''\n };\n }\n\n componentDidMount() {\n seafileAPI.getRepoHistoryLimit(this.props.repoID).then(res => {\n this.setState({\n keepDays: res.data.keep_days,\n allHistory: res.data.keep_days < 0 ? true : false,\n noHistory: res.data.keep_days === 0 ? true : false,\n autoHistory: res.data.keep_days > 0 ? true : false,\n disabled: res.data.keep_days > 0 ? false : true,\n expireDays: res.data.keep_days > 0 ? res.data.keep_days : 30,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n\n submit = () => {\n let days = this.state.keepDays;\n if (this.state.autoHistory) {\n days = this.state.expireDays;\n }\n let repoID = this.props.repoID;\n let reg = /^-?\\d+$/;\n let flag = reg.test(days);\n if (flag) {\n let message = gettext('Successfully set library history.');\n seafileAPI.setRepoHistoryLimit(repoID, days).then(res => {\n toaster.success(message);\n this.setState({keepDays: res.data.keep_days});\n this.props.toggleDialog();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n this.setState({\n errorInfo: gettext('Please enter a non-negative integer'),\n });\n }\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.submit();\n e.preventDefault();\n }\n };\n\n onChange = (e) => {\n let num = e.target.value;\n this.setState({\n keepDays: num,\n expireDays: num,\n });\n };\n\n setLimitDays = (type) => {\n if (type === 'allHistory') {\n this.setState({\n keepDays: -1,\n disabled: true\n });\n } else if (type === 'noHistory') {\n this.setState({\n keepDays: 0,\n disabled: true\n });\n } else {\n this.setState({\n disabled: false\n });\n }\n\n this.setState({\n allHistory: type === 'allHistory' ? true : false,\n noHistory: type === 'noHistory' ? true : false,\n autoHistory: type === 'autoHistory' ? true : false,\n });\n };\n\n render() {\n const itemName = this.props.itemName;\n return (\n \n \n {itemName}{' '}\n {gettext('History Setting')}\n \n \n
    \n {!enableRepoHistorySetting &&\n \n \n \n }\n \n {this.setLimitDays('allHistory');}}/>{' '}\n \n \n \n {this.setLimitDays('noHistory');}}/>{' '}\n \n \n \n {this.setLimitDays('autoHistory');}}/>{' '}\n \n {' '}\n \n \n {this.state.errorInfo && {this.state.errorInfo}}\n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nLibHistorySetting.propTypes = propTypes;\n\nexport default LibHistorySetting;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Alert } from 'reactstrap';\nimport { gettext, repoPasswordMinLength } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport toaster from '../toast';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n repoName: PropTypes.string.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass ChangeRepoPasswordDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n oldPassword: '',\n newPassword: '',\n newPasswordAgain: '',\n submitBtnDisabled: false,\n errorMsg: ''\n };\n }\n\n handleOldPasswordInputChange = (e) => {\n this.setState({\n oldPassword: e.target.value\n });\n };\n\n handleNewPasswordInputChange = (e) => {\n this.setState({\n newPassword: e.target.value\n });\n };\n\n handleNewPasswordAgainInputChange = (e) => {\n this.setState({\n newPasswordAgain: e.target.value\n });\n };\n\n formSubmit = (e) => {\n const { oldPassword, newPassword, newPasswordAgain } = this.state;\n if (!oldPassword) {\n this.setState({\n errorMsg: gettext('Please enter the old password')\n });\n return false;\n }\n if (!newPassword) {\n this.setState({\n errorMsg: gettext('Please enter a new password')\n });\n return false;\n }\n if (newPassword.length < repoPasswordMinLength) {\n this.setState({\n errorMsg: gettext('New password is too short')\n });\n return false;\n }\n if (!newPasswordAgain) {\n this.setState({\n errorMsg: gettext('Please enter the new password again')\n });\n return false;\n }\n if (newPassword != newPasswordAgain) {\n this.setState({\n errorMsg: gettext('New passwords don\\'t match')\n });\n return false;\n }\n\n this.setState({\n submitBtnDisabled: true\n });\n seafileAPI.changeEncryptedRepoPassword(this.props.repoID, oldPassword, newPassword)\n .then(() => {\n this.props.toggleDialog();\n toaster.success(gettext('Successfully changed library password.'));\n }).catch((error) => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({\n errorMsg: errorMsg,\n submitBtnDisabled: false\n });\n });\n };\n\n\n render() {\n const { repoName, toggleDialog } = this.props;\n\n return (\n \n \n \n {Utils.generateDialogTitle(gettext('Change Password of Library {placeholder}'), repoName)}\n \n \n \n
    \n
    \n
    \n {gettext('(at least {placeholder} characters)').replace('{placeholder}', repoPasswordMinLength)}
    \n
    \n
    \n
    \n {this.state.errorMsg && {this.state.errorMsg}}\n
    \n
    \n \n \n \n
    \n );\n }\n}\n\nChangeRepoPasswordDialog.propTypes = propTypes;\n\nexport default ChangeRepoPasswordDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\nimport { gettext, contactEmail } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n toggleDialog: PropTypes.func.isRequired,\n};\n\nclass ResetEncryptedRepoPasswordDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n errMessage: '',\n showLoading: true,\n showSuccess: false,\n showError: false,\n };\n }\n\n componentDidMount() {\n seafileAPI.resetAndSendEncryptedRepoPassword(this.props.repoID).then((res) => {\n this.setState({showLoading: false});\n this.setState({showSuccess: true});\n }).catch((error) => {\n if (error.response) {\n this.setState({\n errMessage: error.response.data.error_msg\n });\n this.setState({showLoading: false});\n this.setState({showError: true});\n }\n });\n }\n\n render() {\n\n let user_email = '' + contactEmail + '';\n let message = gettext('New password has been sent to your email {mail}. Please check your mailbox. If you don’t receive the password, please check if your email address is properly configured.').replace('{mail}', user_email);\n\n return (\n \n \n {gettext('Reset library password')}\n \n \n {this.state.showLoading && (\n {gettext('Sending new password...')}\n )}\n {this.state.showSuccess && (\n
    \n )}\n {this.state.showError && (\n {this.state.errMessage}\n )}\n \n \n );\n }\n}\n\nResetEncryptedRepoPasswordDialog.propTypes = propTypes;\n\nexport default ResetEncryptedRepoPasswordDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport CreatableSelect from 'react-select/creatable';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../loading';\nimport toaster from '../toast';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n repoName: PropTypes.string.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass LabelRepoStateDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true,\n existingLabels: null,\n errorMsg: '',\n submitBtnDisabled: false\n };\n }\n\n componentDidMount() {\n seafileAPI.getAllRepoSnapshotLabels().then((res) => {\n this.setState({\n isLoading: false,\n existingLabels: res.data,\n errorMsg: ''\n });\n }).catch((error) => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({\n isLoading: false,\n errorMsg: errorMsg\n });\n });\n }\n\n handleInputChange = (value) => {\n this.setState({\n inputValue: value\n });\n };\n\n formSubmit = () => {\n const inputValue = this.state.inputValue;\n\n if (!inputValue || !inputValue.length) { // undefined or []\n this.setState({\n formErrorMsg: gettext('It is required.')\n });\n return;\n }\n\n this.setState({\n submitBtnDisabled: true\n });\n\n const {repoID, repoName} = this.props;\n const labels = inputValue.map((item, index) => item.value).join(',');\n seafileAPI.addNewRepoLabels(repoID, labels).then((res) => {\n const msg = gettext('Successfully added label(s) for library {placeholder}').replace('{placeholder}', repoName);\n toaster.success(msg);\n this.props.toggleDialog();\n }).catch((error) => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({\n formErrorMsg: errorMsg,\n submitBtnDisabled: false\n });\n });\n };\n\n render() {\n return (\n \n {gettext('Label Current State')}\n \n \n \n {this.state.existingLabels && (\n \n \n \n \n )}\n \n );\n }\n}\n\nclass Content extends React.Component {\n\n render() {\n const { isLoading, errorMsg, existingLabels, formErrorMsg } = this.props.data;\n\n if (isLoading) {\n return ;\n }\n\n if (errorMsg) {\n return

    {errorMsg}

    ;\n }\n\n return (\n \n { return {label: item, value: item}; })}\n />\n {formErrorMsg &&

    {formErrorMsg}

    }\n
    \n );\n }\n}\n\nContent.propTypes = {\n data: PropTypes.object.isRequired,\n handleChange: PropTypes.func.isRequired,\n};\n\nLabelRepoStateDialog.propTypes = propTypes;\n\nexport default LabelRepoStateDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext, isPro, siteRoot } from '../../utils/constants';\nimport { Button, Input, InputGroup, InputGroupAddon } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport UserSelect from '../user-select';\nimport SharePermissionEditor from '../select-editor/share-permission-editor';\nimport FileChooser from '../file-chooser/file-chooser';\n\nclass UserItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOperationShow: false\n };\n }\n\n onMouseEnter = () => {\n this.setState({isOperationShow: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOperationShow: false});\n };\n\n deleteUserFolderPermission = () => {\n let item = this.props.item;\n this.props.deleteUserFolderPermission(item);\n };\n\n onChangeUserFolderPerm = (permission) => {\n let item = this.props.item;\n this.props.onChangeUserFolderPerm(item.repo_id, permission, item.folder_path, item.user_email);\n };\n\n render() {\n let item = this.props.item;\n let currentPermission = item.permission;\n return (\n \n \n {item.user_name}\n \n {this.props.showPath &&\n \n {item.folder_name}\n \n }\n \n \n \n \n \n \n \n \n );\n }\n}\n\nUserItem.propTypes = {\n item: PropTypes.object.isRequired,\n permissions: PropTypes.array.isRequired,\n deleteUserFolderPermission: PropTypes.func.isRequired,\n onChangeUserFolderPerm: PropTypes.func.isRequired,\n showPath: PropTypes.bool.isRequired,\n repoName: PropTypes.string.isRequired,\n handleChange: PropTypes.func.isRequired,\n};\n\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n isDepartmentRepo: PropTypes.bool,\n folderPath: PropTypes.string.isRequired,\n repoName: PropTypes.string.isRequired,\n};\n\n\nclass LibSubFolderSetUserPermissionDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n selectedUsers: null,\n errorMsg: [],\n permission: 'rw',\n userFolderPermItems: [],\n folderPath: '',\n showFileChooser: false\n };\n if (!isPro) {\n this.permissions = ['r', 'rw'];\n } else {\n this.permissions = ['r', 'rw', 'cloud-edit', 'preview', 'invisible'];\n }\n }\n\n handleUserSelectChange = (option) => {\n this.setState({selectedUsers: option});\n };\n\n componentDidMount() {\n const {repoID, folderPath, isDepartmentRepo} = this.props;\n const request = isDepartmentRepo ?\n seafileAPI.listDepartmentRepoUserFolderPerm(repoID, folderPath) :\n seafileAPI.listUserFolderPerm(repoID, folderPath);\n request.then((res) => {\n if (res.data.length !== 0) {\n this.setState({userFolderPermItems: res.data});\n }\n });\n }\n\n setPermission = (permission) => {\n this.setState({permission: permission});\n };\n\n addUserFolderPerm = () => {\n const { selectedUsers } = this.state;\n const folderPath = this.props.folderPath || this.state.folderPath;\n if (!selectedUsers || !selectedUsers.length || !folderPath) { // selectedUsers: null or []\n return false;\n }\n\n const users = selectedUsers.map((item, index) => item.email);\n\n const request = this.props.isDepartmentRepo ?\n seafileAPI.addDepartmentRepoUserFolderPerm(this.props.repoID, this.state.permission, folderPath, users) :\n seafileAPI.addUserFolderPerm(this.props.repoID, this.state.permission, folderPath, users);\n request.then(res => {\n let errorMsg = [];\n if (res.data.failed.length > 0) {\n for (let i = 0; i < res.data.failed.length; i++) {\n errorMsg[i] = res.data.failed[i];\n }\n }\n this.setState({\n errorMsg: errorMsg,\n userFolderPermItems: this.state.userFolderPermItems.concat(res.data.success),\n selectedUsers: null,\n permission: 'rw',\n folderPath: '',\n });\n this.refs.userSelect.clearSelect();\n }).catch((error) => {\n let errorMsg = '';\n if (error.response) {\n if (error.response.data && error.response.data['error_msg']) {\n errorMsg = error.response.data['error_msg'];\n } else {\n errorMsg = gettext('Error');\n }\n } else {\n errorMsg = gettext('Please check the network.');\n }\n this.setState({\n errorMsg: [errorMsg]\n });\n });\n };\n\n deleteUserFolderPermItem = (item) => {\n const request = this.props.isDepartmentRepo ?\n seafileAPI.deleteDepartmentRepoUserFolderPerm(item.repo_id, item.permission, item.folder_path, item.user_email) :\n seafileAPI.deleteUserFolderPerm(item.repo_id, item.permission, item.folder_path, item.user_email);\n request.then(res => {\n this.setState({\n userFolderPermItems: this.state.userFolderPermItems.filter(deletedItem => {\n return deletedItem != item;\n })\n });\n });\n };\n\n onChangeUserFolderPerm = (repoID, permission, folderPath, userEmail) => {\n const request = this.props.isDepartmentRepo ?\n seafileAPI.updateDepartmentRepoUserFolderPerm(repoID, permission, folderPath, userEmail) :\n seafileAPI.updateUserFolderPerm(repoID, permission, folderPath, userEmail);\n request.then(res => {\n let userFolderPermItems = this.state.userFolderPermItems.map(item => {\n if (item.user_email === userEmail && item.folder_path === folderPath) {\n item.permission = permission;\n }\n return item;\n });\n this.setState({userFolderPermItems: userFolderPermItems});\n });\n };\n\n onSetSubFolder = (e) => {\n this.setState({\n folderPath: e.target.value\n });\n };\n\n toggleFileChooser = () => {\n this.setState({\n showFileChooser: !this.state.showFileChooser,\n folderPath: ''\n });\n };\n\n toggleSubFolder = (repo, path, item) => {\n this.setState({\n folderPath: path,\n });\n };\n\n handleFileChooserSubmit = () => {\n this.setState({\n showFileChooser: !this.state.showFileChooser\n });\n };\n\n onRepoItemClick = () => {\n this.setState({\n folderPath: '/'\n });\n };\n\n render() {\n let showPath = this.props.folderPath ? false : true;\n let { userFolderPermItems } = this.state;\n\n if (this.state.showFileChooser) {\n return (\n
    \n \n
    \n \n \n
    \n
    \n );\n }\n\n const thead = (\n \n \n {gettext('User')}\n {showPath &&\n {gettext('Folder')}\n }\n {gettext('Permission')}\n \n \n \n );\n return (\n \n \n {thead}\n \n \n \n {showPath &&\n \n }\n \n \n \n {this.state.errorMsg.length > 0 &&\n this.state.errorMsg.map((item, index) => {\n let errMessage = '';\n if (item.user_email) {\n errMessage = item.user_email + ': ' + item.error_msg;\n } else {\n errMessage = item;\n }\n return (\n \n \n \n );\n })\n }\n \n
    \n \n \n \n \n \n \n \n \n \n \n

    {errMessage}

    \n
    \n \n {thead}\n \n {userFolderPermItems.map((item, index) => {\n return (\n \n );\n })}\n \n
    \n
    \n
    \n );\n }\n}\n\nLibSubFolderSetUserPermissionDialog.propTypes = propTypes;\n\nexport default LibSubFolderSetUserPermissionDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Input, InputGroup, InputGroupAddon } from 'reactstrap';\nimport { gettext, isPro, siteRoot } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport SharePermissionEditor from '../select-editor/share-permission-editor';\nimport FileChooser from '../file-chooser/file-chooser';\nimport { SeahubSelect, NoGroupMessage } from '../common/select';\n\nclass GroupItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOperationShow: false\n };\n }\n\n onMouseEnter = () => {\n this.setState({isOperationShow: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOperationShow: false});\n };\n\n deleteGroupPermissionItem = () => {\n let item = this.props.item;\n this.props.deleteGroupPermissionItem(item);\n };\n\n onChangeGroupPermission = (permission) => {\n let item = this.props.item;\n this.props.onChangeGroupPermission(item, permission);\n };\n\n render() {\n let item = this.props.item;\n return (\n \n \n {item.group_name}\n \n {this.props.showPath &&\n \n {item.folder_name}\n \n }\n \n \n \n \n \n \n \n \n );\n }\n}\n\nGroupItem.propTypes = {\n item: PropTypes.object.isRequired,\n permissions: PropTypes.array.isRequired,\n deleteUserFolderPermission: PropTypes.func.isRequired,\n onChangeUserFolderPerm: PropTypes.func.isRequired,\n showPath: PropTypes.bool.isRequired,\n repoName: PropTypes.string.isRequired,\n handleChange: PropTypes.func.isRequired,\n deleteGroupPermissionItem: PropTypes.func.isRequired,\n onChangeGroupPermission: PropTypes.func.isRequired,\n};\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n isDepartmentRepo: PropTypes.bool,\n repoName: PropTypes.string,\n folderPath: PropTypes.string,\n};\n\nclass LibSubFolderSetGroupPermissionDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n selectedOption: null,\n errorMsg: [],\n permission: 'rw',\n groupPermissionItems: [],\n folderPath: '',\n showFileChooser: false\n };\n this.options = [];\n if (!isPro) {\n this.permissions = ['r', 'rw'];\n } else {\n this.permissions = ['r', 'rw', 'cloud-edit', 'preview', 'invisible'];\n }\n }\n\n handleSelectChange = (option) => {\n this.setState({selectedOption: option});\n };\n\n componentDidMount() {\n this.loadOptions();\n this.listGroupPermissionItems();\n }\n\n loadOptions = () => {\n seafileAPI.shareableGroups().then((res) => {\n this.options = res.data.map((item, index) => {\n return {\n id: item.id,\n label: item.name,\n value: item.name\n };\n });\n });\n };\n\n listGroupPermissionItems = () => {\n const { isDepartmentRepo, repoID, folderPath } = this.props;\n const request = isDepartmentRepo ?\n seafileAPI.listDepartmentRepoGroupFolderPerm(repoID, folderPath) :\n seafileAPI.listGroupFolderPerm(repoID, folderPath);\n request.then((res) => {\n if (res.data.length !== 0) {\n this.setState({\n groupPermissionItems: res.data\n });\n }\n });\n };\n\n setPermission = (permission) => {\n this.setState({permission: permission});\n };\n\n addGroupFolderPerm = () => {\n const { selectedOption } = this.state;\n const folderPath = this.props.folderPath || this.state.folderPath;\n if (!selectedOption || !folderPath) {\n return false;\n }\n\n const request = this.props.isDepartmentRepo ?\n seafileAPI.addDepartmentRepoGroupFolderPerm(this.props.repoID, this.state.permission, folderPath, selectedOption.id) :\n seafileAPI.addGroupFolderPerm(this.props.repoID, this.state.permission, folderPath, selectedOption.id);\n request.then(res => {\n let errorMsg = [];\n if (res.data.failed.length > 0) {\n for (let i = 0; i < res.data.failed.length; i++) {\n errorMsg[i] = res.data.failed[i];\n }\n }\n\n this.setState({\n errorMsg: errorMsg,\n groupPermissionItems: this.state.groupPermissionItems.concat(res.data.success),\n selectedOption: null,\n permission: 'rw',\n folderPath: ''\n });\n }).catch((error) => {\n let errorMsg = '';\n if (error.response) {\n if (error.response.data && error.response.data['error_msg']) {\n errorMsg = error.response.data['error_msg'];\n } else {\n errorMsg = gettext('Error');\n }\n } else {\n errorMsg = gettext('Please check the network.');\n }\n this.setState({\n errorMsg: [errorMsg]\n });\n });\n };\n\n deleteGroupPermissionItem = (item) => {\n const request = this.props.isDepartmentRepo ?\n seafileAPI.deleteDepartmentRepoGroupFolderPerm(item.repo_id, item.permission, item.folder_path, item.group_id) :\n seafileAPI.deleteGroupFolderPerm(item.repo_id, item.permission, item.folder_path, item.group_id);\n request.then(() => {\n this.setState({\n groupPermissionItems: this.state.groupPermissionItems.filter(deletedItem => { return deletedItem != item; })\n });\n });\n };\n\n onChangeGroupPermission = (item, permission) => {\n const request = this.props.isDepartmentRepo ?\n seafileAPI.updateDepartmentRepoGroupFolderPerm(item.repo_id, permission, item.folder_path, item.group_id) :\n seafileAPI.updateGroupFolderPerm(item.repo_id, permission, item.folder_path, item.group_id);\n request.then(() => {\n this.updateGroupPermission(item, permission);\n });\n };\n\n updateGroupPermission = (item, permission) => {\n let groupID = item.group_id;\n let groupPermissionItems = this.state.groupPermissionItems.map(sharedItem => {\n let sharedItemGroupID = sharedItem.group_id;\n if (groupID === sharedItemGroupID && item.folder_path === sharedItem.folder_path) {\n sharedItem.permission = permission;\n }\n return sharedItem;\n });\n this.setState({groupPermissionItems: groupPermissionItems});\n };\n\n onSetSubFolder = (e) => {\n this.setState({\n folderPath: e.target.value\n });\n };\n\n toggleFileChooser = () => {\n this.setState({\n showFileChooser: !this.state.showFileChooser,\n folderPath: ''\n });\n };\n\n toggleSubFolder = (repo, path, item) => {\n this.setState({\n folderPath: path,\n });\n };\n\n handleSubmit = () => {\n this.setState({\n showFileChooser: !this.state.showFileChooser\n });\n };\n\n onRepoItemClick = () => {\n this.setState({\n folderPath: '/'\n });\n };\n\n render() {\n let showPath = this.props.folderPath ? false : true;\n\n if (this.state.showFileChooser) {\n return (\n
    \n \n
    \n \n \n
    \n
    \n );\n }\n\n const thead = (\n \n \n {gettext('Group')}\n {showPath &&\n {gettext('Folder')}\n }\n {gettext('Permission')}\n \n \n \n );\n return (\n \n \n {thead}\n \n \n \n {showPath &&\n \n }\n \n \n \n {this.state.errorMsg.length > 0 &&\n this.state.errorMsg.map((item, index) => {\n let errMessage = item.group_id + ': ' + item.error_msg;\n return (\n \n \n \n );\n })\n }\n \n
    \n \n \n \n \n \n \n \n \n \n \n

    {errMessage}

    \n
    \n \n {thead}\n \n {this.state.groupPermissionItems.map((item, index) => {\n return (\n \n );\n })}\n \n
    \n
    \n
    \n );\n }\n}\n\nLibSubFolderSetGroupPermissionDialog.propTypes = propTypes;\n\nexport default LibSubFolderSetGroupPermissionDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, TabContent, TabPane, Nav, NavItem, NavLink } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport LibSubFolderSetUserPermissionDialog from './lib-sub-folder-set-user-permission-dialog';\nimport LibSubFolderSetGroupPermissionDialog from './lib-sub-folder-set-group-permission-dialog';\nimport '../../css/share-link-dialog.css';\nimport '../../css/sub-folder-permission.css';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n repoName: PropTypes.string,\n isDepartmentRepo: PropTypes.bool,\n folderPath: PropTypes.string,\n folderName: PropTypes.string,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass LibSubFolderPermissionDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n activeTab: 'userPermission'\n };\n }\n\n toggle = (tab) => {\n if (this.state.activeTab !== tab) {\n this.setState({activeTab: tab});\n }\n };\n\n renderContent = () => {\n const activeTab = this.state.activeTab;\n\n return (\n \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n \n
    \n
    \n );\n };\n\n render() {\n const { repoName, folderName } = this.props;\n return (\n
    \n \n \n {repoName ? Utils.generateDialogTitle(gettext('{placeholder} Folder Permission'), repoName) : Utils.generateDialogTitle(gettext('Set {placeholder}\\'s permission'), folderName)}\n \n \n {this.renderContent()}\n \n \n
    \n );\n }\n}\n\nLibSubFolderPermissionDialog.propTypes = propTypes;\n\nexport default LibSubFolderPermissionDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { gettext, isPro, folderPermEnabled, enableRepoSnapshotLabel, enableResetEncryptedRepoPassword, isEmailConfigured, enableRepoAutoDel, enableSeaTableIntegration } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n isPC: PropTypes.bool,\n repo: PropTypes.object.isRequired,\n isStarred: PropTypes.bool,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n onMenuItemClick: PropTypes.func.isRequired,\n};\n\nclass MylibRepoMenu extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemMenuShow: false,\n isAdvancedMenuShown: false\n };\n }\n\n onMenuItemClick = (e) => {\n let operation = Utils.getEventData(e, 'toggle');\n this.props.onMenuItemClick(operation);\n };\n\n onMenuItemKeyDown = (e) => {\n if (e.key == 'Enter' || e.key == 'Space') {\n this.onMenuItemClick(e);\n }\n };\n\n onDropdownToggleClick = (e) => {\n this.toggleOperationMenu(e);\n };\n\n onDropdownToggleKeyDown = (e) => {\n if (e.key == 'Enter' || e.key == 'Space') {\n this.onDropdownToggleClick(e);\n }\n };\n\n toggleOperationMenu = (e) => {\n let dataset = e.target ? e.target.dataset : null;\n if (dataset && dataset.toggle && dataset.toggle === 'Rename') {\n this.setState({isItemMenuShow: !this.state.isItemMenuShow});\n return;\n }\n\n this.setState(\n {isItemMenuShow: !this.state.isItemMenuShow},\n () => {\n if (this.state.isItemMenuShow) {\n this.props.onFreezedItem();\n } else {\n this.props.onUnfreezedItem();\n }\n }\n );\n };\n\n toggleAdvancedMenuShown = (e) => {\n this.setState({ isAdvancedMenuShown: true });\n };\n\n toggleAdvancedMenu = (e) => {\n e.stopPropagation();\n this.setState({ isAdvancedMenuShown: !this.state.isAdvancedMenuShown }, () => {\n this.toggleOperationMenu(e);\n });\n };\n\n onDropDownMouseMove = (e) => {\n if (this.state.isAdvancedMenuShown && e.target && e.target.className === 'dropdown-item') {\n this.setState({\n isAdvancedMenuShown: false\n });\n }\n };\n\n generatorOperations = () => {\n let repo = this.props.repo;\n let showResetPasswordMenuItem = isPro && repo.encrypted && enableResetEncryptedRepoPassword && isEmailConfigured;\n let operations = ['Rename', 'Transfer'];\n if (folderPermEnabled) {\n operations.push('Folder Permission');\n }\n operations.push('Share Admin', 'Divider');\n\n if (repo.encrypted) {\n operations.push('Change Password');\n }\n if (showResetPasswordMenuItem) {\n operations.push('Reset Password');\n }\n\n if (isPro) {\n const monitorOp = repo.monitored ? 'Unwatch File Changes' : 'Watch File Changes';\n operations.push(monitorOp);\n }\n\n operations.push('Divider', 'History Setting', 'Advanced');\n // Remove adjacent excess 'Divider'\n for (let i = 0; i < operations.length; i++) {\n if (operations[i] === 'Divider' && operations[i + 1] === 'Divider') {\n operations.splice(i, 1);\n i--;\n }\n }\n return operations;\n };\n\n getAdvancedOperations = () => {\n const operations = [];\n operations.push('API Token');\n if (this.props.isPC && enableRepoSnapshotLabel) {\n operations.push('Label Current State');\n }\n if (enableRepoAutoDel) {\n operations.push('Old Files Auto Delete');\n }\n if (enableSeaTableIntegration) {\n operations.push('SeaTable integration');\n }\n return operations;\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'Star':\n translateResult = gettext('Star');\n break;\n case 'Unstar':\n translateResult = gettext('Unstar');\n break;\n case 'Share':\n translateResult = gettext('Share');\n break;\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n case 'Rename':\n translateResult = gettext('Rename');\n break;\n case 'Transfer':\n translateResult = gettext('Transfer');\n break;\n case 'History Setting':\n translateResult = gettext('History Setting');\n break;\n case 'Change Password':\n translateResult = gettext('Change Password');\n break;\n case 'Reset Password':\n translateResult = gettext('Reset Password');\n break;\n case 'Watch File Changes':\n translateResult = gettext('Watch File Changes');\n break;\n case 'Unwatch File Changes':\n translateResult = gettext('Unwatch File Changes');\n break;\n case 'Folder Permission':\n translateResult = gettext('Folder Permission');\n break;\n case 'Label Current State':\n translateResult = gettext('Label Current State');\n break;\n case 'API Token':\n translateResult = 'API Token'; // translation is not needed here\n break;\n case 'Share Admin':\n translateResult = gettext('Share Admin');\n break;\n case 'Old Files Auto Delete':\n translateResult = gettext('Auto Deletion Setting');\n break;\n case 'Advanced':\n translateResult = gettext('Advanced');\n break;\n case 'SeaTable integration':\n translateResult = gettext('SeaTable integration');\n break;\n default:\n break;\n }\n\n return translateResult;\n };\n\n render() {\n let operations = this.generatorOperations();\n const advancedOperations = this.getAdvancedOperations();\n\n // pc menu\n if (this.props.isPC) {\n return (\n \n \n \n {operations.map((item, index)=> {\n if (item == 'Divider') {\n return ;\n } else if (item == 'Advanced') {\n return (\n {e.stopPropagation();}}\n >\n \n {this.translateOperations(item)}\n \n \n {advancedOperations.map((item, index)=> {\n return ({this.translateOperations(item)});\n })}\n \n \n );\n } else {\n return ({this.translateOperations(item)});\n }\n })}\n \n \n );\n }\n\n // mobile menu\n operations.pop(); // removed the last item 'Advanced'\n operations.unshift('Delete');\n operations.unshift('Share');\n this.props.isStarred ? operations.unshift('Unstar') : operations.unshift('Star');\n\n return (\n \n \n
    \n
    \n
    \n {operations.map((item, index) => {\n if (item != 'Divider') {\n return ({this.translateOperations(item)});\n }\n return null;\n })}\n
    \n
    \n
    \n );\n }\n}\n\nMylibRepoMenu.propTypes = propTypes;\n\nexport default MylibRepoMenu;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport OpIcon from '../op-icon';\nimport { SeahubSelect } from '../common/select';\n\nconst propTypes = {\n isTextMode: PropTypes.bool.isRequired,\n isEditIconShow: PropTypes.bool.isRequired,\n currentPermission: PropTypes.string.isRequired,\n onPermissionChanged: PropTypes.func.isRequired,\n};\n\nclass RepoAPITokenPermissionEditor extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isEditing: false,\n };\n this.options = [\n { value: 'rw', label:
    {gettext('Read-Write')}
    },\n { value: 'r', label:
    {gettext('Read-Only')}
    }\n ];\n }\n\n componentDidMount() {\n document.addEventListener('click', this.onHideSelect);\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.onHideSelect);\n }\n\n onHideSelect = () => {\n this.setState({ isEditing: false });\n };\n\n onEditPermission = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n this.setState({ isEditing: true });\n };\n\n onPermissionChanged = (e) => {\n if (e.value !== this.props.currentPermission) {\n this.props.onPermissionChanged(e.value);\n }\n this.setState({ isEditing: false });\n };\n\n onSelectHandler = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n };\n\n render() {\n const { currentPermission, isTextMode } = this.props;\n let optionTranslation = currentPermission === 'rw' ? gettext('Read-Write') : gettext('Read-Only');\n return (\n
    \n {(isTextMode && !this.state.isEditing) ?\n \n {optionTranslation}\n {this.props.isEditIconShow &&\n \n }\n \n :\n opt.value === currentPermission) || null}\n />\n }\n
    \n );\n }\n}\n\nRepoAPITokenPermissionEditor.propTypes = propTypes;\n\nexport default RepoAPITokenPermissionEditor;\n","import React, {Fragment} from 'react';\nimport PropTypes from 'prop-types';\nimport {gettext} from '../../utils/constants';\nimport {Modal, ModalHeader, ModalBody, Button, Input} from 'reactstrap';\nimport RepoAPITokenPermissionEditor from '../select-editor/repo-api-token-permission-editor';\nimport {seafileAPI} from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\nimport copy from 'copy-to-clipboard';\nimport Loading from '../loading';\nimport OpIcon from '../op-icon';\n\nconst apiTokenItemPropTypes = {\n item: PropTypes.object.isRequired,\n deleteAPIToken: PropTypes.func.isRequired,\n updateAPIToken: PropTypes.func.isRequired,\n};\n\nclass APITokenItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOperationShow: false,\n };\n }\n\n onMouseEnter = () => {\n this.setState({isOperationShow: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOperationShow: false});\n };\n\n onDeleteAPIToken = () => {\n this.props.deleteAPIToken(this.props.item.app_name);\n };\n\n onUpdateAPIToken = (permission) => {\n this.props.updateAPIToken(this.props.item.app_name, permission);\n };\n\n onCopyAPIToken = () => {\n let api_token = this.props.item.api_token;\n copy(api_token);\n toaster.success(gettext('API token is copied to the clipboard.'));\n };\n\n render() {\n let item = this.props.item;\n\n return (\n \n {item.app_name}\n \n \n \n \n {item.api_token}\n {this.state.isOperationShow &&\n \n }\n \n \n \n \n \n );\n }\n}\n\nAPITokenItem.propTypes = apiTokenItemPropTypes;\n\nconst propTypes = {\n repo: PropTypes.object.isRequired,\n onRepoAPITokenToggle: PropTypes.func.isRequired,\n};\n\nclass RepoAPITokenDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n apiTokenList: [],\n permission: 'rw',\n appName: '',\n errorMsg: '',\n loading: true,\n isSubmitBtnActive: true,\n };\n this.repo = this.props.repo;\n }\n\n listAPITokens = () => {\n seafileAPI.listRepoAPITokens(this.repo.repo_id).then((res) => {\n this.setState({\n apiTokenList: res.data.repo_api_tokens,\n loading: false,\n });\n }).catch(error => {\n if (error.response.status === 403) {\n this.setState({\n errorMsg: gettext('Permission denied'),\n });\n } else {\n this.handleError(error);\n }\n });\n };\n\n onInputChange = (e) => {\n let appName = e.target.value;\n this.setState({\n appName: appName,\n });\n };\n\n onKeyDown = (e) => {\n if (e.keyCode === 13) {\n e.preventDefault();\n this.addAPIToken();\n }\n };\n\n setPermission = (permission) => {\n this.setState({permission: permission});\n };\n\n addAPIToken = () => {\n if (!this.state.appName) {\n return;\n }\n\n this.setState({\n isSubmitBtnActive: false,\n });\n const {appName, permission, apiTokenList} = this.state;\n\n seafileAPI.addRepoAPIToken(this.repo.repo_id, appName, permission).then((res) => {\n apiTokenList.push(res.data);\n this.setState({\n apiTokenList: apiTokenList,\n isSubmitBtnActive: true,\n });\n }).catch(error => {\n this.handleError(error);\n this.setState({\n isSubmitBtnActive: true,\n });\n });\n };\n\n deleteAPIToken = (appName) => {\n seafileAPI.deleteRepoAPIToken(this.repo.repo_id, appName).then((res) => {\n const apiTokenList = this.state.apiTokenList.filter(item => {\n return item.app_name !== appName;\n });\n this.setState({\n apiTokenList: apiTokenList,\n });\n }).catch(error => {\n this.handleError(error);\n });\n };\n\n updateAPIToken = (appName, permission) => {\n seafileAPI.updateRepoAPIToken(this.repo.repo_id, appName, permission).then((res) => {\n let apiTokenList = this.state.apiTokenList.filter(item => {\n if (item.app_name === appName) {\n item.permission = permission;\n }\n return item;\n });\n this.setState({\n apiTokenList: apiTokenList,\n });\n }).catch(error => {\n this.handleError(error);\n });\n };\n\n handleError = (e) => {\n if (e.response) {\n toaster.danger(e.response.data.error_msg || e.response.data.detail || gettext('Error'), {duration: 3});\n } else {\n toaster.danger(gettext('Please check the network.'), {duration: 3});\n }\n };\n\n componentDidMount() {\n this.listAPITokens();\n }\n\n renderContent = () => {\n const renderAPITokenList = this.state.apiTokenList.map((item, index) => {\n return (\n \n );\n });\n\n const thead = (\n \n \n {gettext('App Name')}\n {gettext('Permission')}\n API Token\n \n \n \n );\n return (\n \n {this.state.errorMsg &&\n

    {this.state.errorMsg}

    \n }\n {!this.state.errorMsg &&\n \n \n {thead}\n \n \n \n \n \n \n \n \n
    \n \n \n \n --\n \n
    \n
    \n {this.state.apiTokenList.length !== 0 &&\n \n {thead}\n \n {renderAPITokenList}\n \n
    \n }\n
    \n {this.state.loading && }\n
    \n }\n
    \n );\n };\n\n render() {\n let repo = this.repo;\n\n const itemName = '' + Utils.HTMLescape(repo.repo_name) + '';\n const title = gettext('{placeholder} API Token').replace('{placeholder}', itemName);\n return (\n \n \n

    \n
    \n \n
    \n {this.renderContent()}\n
    \n
    \n \n );\n }\n}\n\nRepoAPITokenDialog.propTypes = propTypes;\n\nexport default RepoAPITokenDialog;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\n\nclass DeleteSeatablesDialog extends Component {\n\n static propTypes = {\n t: PropTypes.func,\n accountName: PropTypes.string,\n onDeleteSeatables: PropTypes.func,\n closeDialog: PropTypes.func,\n };\n\n render () {\n const { accountName, closeDialog } = this.props;\n return (\n \n {gettext('Delete SeaTable base')}\n \n

    {gettext('Are you sure to delete SeaTable {accountName}?').replace('{accountName}', accountName)}

    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nexport default DeleteSeatablesDialog;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport DeleteSeatablesDialog from './delete-seatables-dialog';\nimport { gettext } from '../../utils/constants';\n\nclass SeatableAccountItem extends Component {\n\n constructor (props) {\n super(props);\n this.state = {\n isShowDialog: false,\n };\n }\n\n static propTypes = {\n t: PropTypes.func,\n editSeatableSettingAccount: PropTypes.func,\n deleteStableAccountSetting: PropTypes.func,\n setting: PropTypes.object,\n index: PropTypes.number,\n };\n\n openDialog = () => {\n this.setState({isShowDialog: true});\n };\n\n closeDialog = () => {\n this.setState({isShowDialog: false});\n };\n\n onDeleteSeatables = () => {\n const { setting } = this.props;\n this.props.deleteStableAccountSetting(setting, 'seatable_account_manage');\n this.closeDialog();\n };\n\n render() {\n const { isShowDialog } = this.state;\n const { setting, t, index } = this.props;\n const { base_api_token, base_name, seatable_server_url } = setting;\n return (\n \n {base_name}\n \n {seatable_server_url}\n \n \n \n \n \n \n \n \n \n {isShowDialog &&\n \n }\n \n );\n }\n}\n\nexport default SeatableAccountItem;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport { gettext, mediaUrl } from '../../utils/constants';\nimport SeatableAccountItem from './seatable-account-setting-item';\n\nclass SeatableAccountSettingList extends Component {\n\n static propTypes = {\n accounts: PropTypes.array,\n changeStatus: PropTypes.func,\n editSeatableSettingAccount: PropTypes.func,\n seatableSettings: PropTypes.array,\n deleteStableAccountSetting: PropTypes.func,\n };\n\n renderContent = () => {\n const { seatableSettings } = this.props;\n if (!Array.isArray(seatableSettings) || seatableSettings.length === 0) {\n return (\n
    \n {gettext('No\n

    {gettext('No SeaTable bases')}

    \n
    \n );\n }\n return (\n <>\n \n \n \n \n \n \n \n \n
    {gettext('SeaTable base name')}{gettext('SeaTable server URL')}
    \n
    \n \n \n {seatableSettings.map((setting, index) => {\n return (\n \n );\n })}\n \n
    \n
    \n \n );\n };\n\n render() {\n return (\n
    \n
    \n {'SeaTable'}\n \n
    \n
    \n {this.renderContent()}\n
    \n
    \n );\n }\n}\n\nexport default SeatableAccountSettingList;\n","import React, { Component } from 'react';\nimport { Alert, Input, FormGroup, Label, InputGroup, InputGroupText } from 'reactstrap';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext } from '../../utils/constants';\n\nclass AddSeatableAccountSetting extends Component {\n\n static propTypes = {\n t: PropTypes.func,\n changeStatus: PropTypes.func,\n onSubmit: PropTypes.func,\n currentDtableInfo: PropTypes.object,\n addSeatableAccountSetting: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n const { currentDtableInfo } = props;\n this.state = {\n errMessage: '',\n base_name: currentDtableInfo?.base_name || '',\n seatable_url: currentDtableInfo?.seatable_url || '',\n seatable_api_token: currentDtableInfo?.base_api_token || '',\n successMessage: null,\n stage: 'toCheck', // toCheck: need to check -> toSubmit: need to submit\n passwordType: 'password'\n };\n }\n\n onChangeBaseName = (event) => {\n let value = event.target.value;\n if (value === this.state.base_name) {\n return;\n }\n this.setState({\n base_name: value,\n errMessage: '',\n });\n };\n\n onChangeSeatableUrl = (event) => {\n let value = event.target.value;\n if (value === this.state.seatable_url) {\n return;\n }\n this.setState({\n seatable_url: value,\n successMessage: null,\n stage: 'toCheck',\n errMessage: '',\n });\n };\n\n onChangeSeatableApiToken = (event) => {\n let value = event.target.value;\n if (value === this.state.seatable_api_token) {\n return;\n }\n this.setState({\n seatable_api_token: value,\n successMessage: null,\n stage: 'toCheck',\n errMessage: '',\n });\n };\n\n addSeatableAccountSetting = () => {\n let { base_name, seatable_url, seatable_api_token } = this.state;\n base_name = base_name.trim();\n seatable_url = seatable_url.trim();\n seatable_api_token = seatable_api_token.trim();\n let errMessage = '';\n if (!base_name) {\n errMessage = gettext('SeaTable base name is required');\n }\n else if (!seatable_url) {\n errMessage = gettext('SeaTable server URL is required');\n }\n else if (!seatable_api_token) {\n errMessage = gettext('SeaTable API token is required');\n }\n\n this.setState({errMessage});\n if (errMessage) return;\n let detail = {\n base_name,\n seatable_url,\n seatable_api_token\n };\n this.props.onSubmit(detail, 'seatable_account_manage');\n };\n\n testSeatableAPIToken = async () => {\n const { seatable_url, seatable_api_token } = this.state;\n seafileAPI.req.defaults.headers.Authorization = `Token ${seatable_api_token}`;\n const [res, err] = await seafileAPI.req.get(`${seatable_url}api/v2.1/dtable/app-access-token/`).then(res => [res, null]).catch((err) => [null, err]);\n if (res) {\n this.setState({\n successMessage: res.data,\n stage: 'toSubmit',\n });\n }\n if (err) {\n this.setState({\n errMessage: gettext('URL or SeaTable API token is invalid'),\n });\n }\n };\n\n togglePasswordShow = () => {\n if (this.state.passwordType === 'password') {\n this.setState({passwordType: 'text'});\n } else {\n this.setState({passwordType: 'password'});\n }\n };\n\n render() {\n const { errMessage, stage, successMessage, base_name, seatable_url, seatable_api_token, passwordType } = this.state;\n return (\n
    \n
    \n \n \n \n \n {gettext('Add SeaTable Integration')}\n \n {stage === 'toCheck' ? gettext('Check') : gettext('Submit')}\n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {errMessage && {errMessage}}\n {successMessage && (\n \n \n {gettext('Successfully connected to SeaTable')}\n \n )}\n
    \n
    \n );\n }\n}\n\nexport default AddSeatableAccountSetting;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\nimport SeatableAccountSettingList from '../seatable-integration-account-setting-widgets/seatable-account-setting-list.js';\nimport AddSeatableAccountSetting from '../../components/seatable-integration-account-setting-widgets/add-seatable-account-setting.js';\nimport toaster from '../toast';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport { gettext, internalFilePath, dirPath } from '../../utils/constants';\n\nimport '../../css/repo-seatable-integration-dialog.css';\n\nconst propTypes = {\n repo: PropTypes.object.isRequired,\n onSeaTableIntegrationToggle: PropTypes.func.isRequired,\n};\n\nconst STATUS = {\n SEATABLE_ACCOUNT_MANAGE: 'seatable_account_manage',\n ADD_SETABLE_ACCOUNT: 'add_seatable_account',\n UPDATE_SEATABLE_ACCOUNT: 'update_seatable_account'\n};\n\nclass RepoSeaTableIntegrationDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n activeTab: 'SeaTable',\n seatableSettings: [],\n baseApiToken: '',\n isPasswordVisible: false,\n isShowDialog: false,\n currentDtableInfo: {},\n status: STATUS.SEATABLE_ACCOUNT_MANAGE,\n };\n this.repo = this.props.repo;\n }\n\n componentDidMount() {\n this.getSeatableSettings();\n }\n\n getSeatableSettings = async (status) => {\n seafileAPI.req.defaults.headers.Authorization = null;\n const [downloadLinkRes] = await seafileAPI.getFileDownloadLink(this.repo.repo_id, internalFilePath).then(res => [res, null]).catch((err) => [null, err]);\n if (downloadLinkRes && downloadLinkRes.data) {\n const fileInfoRes = await seafileAPI.getFileContent(downloadLinkRes.data);\n if (fileInfoRes?.data && fileInfoRes.data) {\n this.setState({\n seatableSettings: fileInfoRes.data\n });\n status && this.setState({ status });\n }\n }\n };\n\n changeTab = (tab) => {\n if (this.state.activeTab !== tab) {\n this.setState({activeTab: tab});\n }\n };\n\n changeStatus = (status) => {\n this.setState({status});\n };\n\n getFile = (detail, fileList) => {\n const { base_name, seatable_url, seatable_api_token } = detail;\n let content = [{\n 'base_name': base_name,\n 'seatable_server_url': seatable_url,\n 'base_api_token': seatable_api_token\n }];\n\n if (fileList && fileList.length !== 0) {\n const index = fileList?.findIndex((item) => item.base_api_token === seatable_api_token);\n if (index !== -1) {\n fileList[index] = content[0];\n } else {\n fileList.push(content[0]);\n }\n content = fileList;\n }\n\n const fileName = internalFilePath.split('/')[2];\n const fileContent = JSON.stringify(content);\n const newFile = new File([fileContent], fileName);\n return newFile;\n };\n\n editSeatableSettingAccount = (baseApiToken) => {\n const { seatableSettings } = this.state;\n this.setState({\n status: STATUS.UPDATE_SEATABLE_ACCOUNT,\n currentDtableInfo: seatableSettings.find((item) => item.base_api_token === baseApiToken)\n });\n };\n\n deleteStableAccountSetting = async (setting, status) => {\n const { base_api_token } = setting;\n seafileAPI.req.defaults.headers.Authorization = null;\n const [downloadLinkRes] = await seafileAPI.getFileDownloadLink(this.repo.repo_id, internalFilePath).then(res => [res, null]).catch((err) => [null, err]);\n if (downloadLinkRes && downloadLinkRes.data) {\n const fileInfoRes = await seafileAPI.getFileContent(downloadLinkRes.data);\n if (fileInfoRes?.data) {\n const fileList = fileInfoRes.data;\n const index = fileList?.findIndex((item) => item.base_api_token === base_api_token);\n if (index !== -1) {\n fileList.splice(index, 1);\n const fileContent = JSON.stringify(fileList);\n const fileName = internalFilePath.split('/')[2];\n const newFile = new File([fileContent], fileName);\n const updateLink = await seafileAPI.getUpdateLink(this.repo.repo_id, internalFilePath.slice(0, 10));\n await seafileAPI.updateFile(updateLink.data, internalFilePath, fileName, newFile).catch(err => {toaster.danger(gettext(err.message));});\n this.getSeatableSettings(status);\n }\n }\n }\n };\n\n onSubmit = async (detail, status) => {\n seafileAPI.req.defaults.headers.Authorization = null;\n const [downloadLinkRes, err] = await seafileAPI.getFileDownloadLink(this.repo.repo_id, internalFilePath).then(res => [res, null]).catch((err) => [null, err]);\n // Contains configuration files\n if (downloadLinkRes && downloadLinkRes.data) {\n const fileInfoRes = await seafileAPI.getFileContent(downloadLinkRes.data);\n if (fileInfoRes?.data) {\n const newFile = this.getFile(detail, fileInfoRes.data);\n const updateLink = await seafileAPI.getUpdateLink(this.repo.repo_id, internalFilePath.slice(0, 10));\n const fileName = internalFilePath.split('/')[2];\n await seafileAPI.updateFile(updateLink.data, internalFilePath, fileName, newFile).catch(err => {toaster.danger(gettext(err.message));});\n this.getSeatableSettings(status);\n }\n }\n // No configuration file\n if (err) {\n const uploadLink = await seafileAPI.getFileServerUploadLink(this.repo.repo_id, dirPath);\n const newFile = this.getFile(detail);\n const formData = new FormData();\n formData.append('file', newFile);\n formData.append('relative_path', internalFilePath.split('/')[1]);\n formData.append('parent_dir', dirPath);\n await seafileAPI.uploadImage(uploadLink.data + '?ret-json=1', formData).catch(err => {toaster.danger(gettext(err.message));});\n this.getSeatableSettings(status);\n }\n };\n\n render() {\n const { seatableSettings, status, currentDtableInfo } = this.state;\n const { onSeaTableIntegrationToggle } = this.props;\n let repo = this.repo;\n const itemName = '' + Utils.HTMLescape(repo.repo_name) + '';\n const title = gettext('{placeholder} SeaTable integration').replace('{placeholder}', itemName);\n\n return (\n \n \n

    \n
    \n \n
    \n {status === STATUS.SEATABLE_ACCOUNT_MANAGE && (\n this.changeStatus(STATUS.ADD_SETABLE_ACCOUNT)}\n editSeatableSettingAccount={this.editSeatableSettingAccount}\n deleteStableAccountSetting={this.deleteStableAccountSetting}\n />\n )}\n {status === STATUS.ADD_SETABLE_ACCOUNT && (\n this.changeStatus(STATUS.SEATABLE_ACCOUNT_MANAGE)}\n onSubmit={this.onSubmit}\n />\n )}\n {status === STATUS.UPDATE_SEATABLE_ACCOUNT && (\n this.changeStatus(STATUS.SEATABLE_ACCOUNT_MANAGE)}\n onSubmit={this.onSubmit}\n />\n )}\n
    \n
    \n
    \n );\n }\n}\n\nRepoSeaTableIntegrationDialog.propTypes = propTypes;\n\nexport default RepoSeaTableIntegrationDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, siteRoot } from '../../../utils/constants';\nimport Loading from '../../../components/loading';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\n\nconst itemPropTypes = {\n item: PropTypes.object.isRequired,\n deleteItem: PropTypes.func.isRequired\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOperationShow: false\n };\n }\n\n onMouseEnter = () => {\n this.setState({isOperationShow: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOperationShow: false});\n };\n\n onDeleteLink = (e) => {\n e.preventDefault();\n this.props.deleteItem(this.props.item);\n };\n\n render() {\n let objUrl;\n let item = this.props.item;\n let path = item.path === '/' ? '/' : item.path.slice(0, item.path.length - 1);\n\n if (item.is_dir) {\n objUrl = `${siteRoot}library/${item.repo_id}/${encodeURIComponent(item.repo_name)}${Utils.encodePath(path)}`;\n } else {\n objUrl = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;\n }\n\n return (\n \n {item.creator_name}\n \n {item.is_dir ?\n {item.obj_name}\n :\n {item.obj_name}\n }\n \n \n {item.link}\n \n \n \n \n \n \n );\n }\n}\n\nItem.propTypes = itemPropTypes;\n\nconst propTypes = {\n repo: PropTypes.object.isRequired,\n};\n\nclass RepoShareAdminShareLinks extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: []\n };\n }\n\n componentDidMount() {\n seafileAPI.listRepoShareLinks(this.props.repo.repo_id).then((res) => {\n this.setState({\n loading: false,\n items: res.data,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n deleteItem = (item) => {\n seafileAPI.deleteRepoShareLink(this.props.repo.repo_id, item.token).then(() => {\n let items = this.state.items.filter(linkItem => {\n return linkItem.token !== item.token;\n });\n this.setState({items: items});\n let message = gettext('Successfully deleted 1 item');\n toaster.success(message);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { loading, errorMsg, items } = this.state;\n return (\n \n {loading && }\n {!loading && errorMsg &&

    {errorMsg}

    }\n {!loading && !errorMsg && !items.length &&\n \n

    {gettext('No share links')}

    \n
    \n }\n {!loading && !errorMsg && items.length > 0 &&\n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Creator')}{gettext('Name')}{gettext('Link')}
    \n }\n
    \n );\n }\n}\n\nRepoShareAdminShareLinks.propTypes = propTypes;\n\nexport default RepoShareAdminShareLinks;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, siteRoot } from '../../../utils/constants';\nimport Loading from '../../../components/loading';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\n\nconst itemPropTypes = {\n item: PropTypes.object.isRequired,\n deleteItem: PropTypes.func.isRequired\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOperationShow: false\n };\n }\n\n onMouseEnter = () => {\n this.setState({isOperationShow: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOperationShow: false});\n };\n\n onDeleteLink = (e) => {\n e.preventDefault();\n this.props.deleteItem(this.props.item);\n };\n\n render() {\n let item = this.props.item;\n let path = item.path === '/' ? '/' : item.path.slice(0, item.path.length - 1);\n let objUrl = `${siteRoot}library/${item.repo_id}/${encodeURIComponent(item.repo_name)}${Utils.encodePath(path)}`;\n\n return (\n \n {item.creator_name}\n \n {item.obj_name}\n \n \n {item.link}\n \n \n \n \n \n \n );\n }\n}\n\nItem.propTypes = itemPropTypes;\n\nconst propTypes = {\n repo: PropTypes.object.isRequired,\n};\n\nclass RepoShareAdminUploadLinks extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: [],\n };\n }\n\n componentDidMount() {\n seafileAPI.listRepoUploadLinks(this.props.repo.repo_id).then((res) => {\n this.setState({\n loading: false,\n items: res.data,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n deleteItem = (item) => {\n seafileAPI.deleteRepoUploadLink(this.props.repo.repo_id, item.token).then(() => {\n let items = this.state.items.filter(linkItem => {\n return linkItem.token !== item.token;\n });\n this.setState({items: items});\n let message = gettext('Successfully deleted 1 item');\n toaster.success(message);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { loading, errorMsg, items } = this.state;\n return (\n \n {loading && }\n {!loading && errorMsg &&

    {errorMsg}

    }\n {!loading && !errorMsg && !items.length &&\n \n

    {gettext('No upload links')}

    \n
    \n }\n {!loading && !errorMsg && items.length > 0 &&\n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Creator')}{gettext('Name')}{gettext('Link')}
    \n }\n
    \n );\n }\n}\n\nRepoShareAdminUploadLinks.propTypes = propTypes;\n\nexport default RepoShareAdminUploadLinks;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, siteRoot, isPro, username } from '../../../utils/constants';\nimport Loading from '../../../components/loading';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport SharePermissionEditor from '../../../components/select-editor/share-permission-editor';\n\nconst itemPropTypes = {\n item: PropTypes.object.isRequired,\n deleteItem: PropTypes.func.isRequired,\n isRepoOwner: PropTypes.bool.isRequired\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n permission: this.props.item.permission,\n isOperationShow: false,\n isShowPermEditor: false,\n };\n this.permissions = ['rw', 'r'];\n if (isPro) {\n if (this.props.item.path === '/' && this.props.isRepoOwner) {\n this.permissions.push('admin');\n }\n this.permissions.push('cloud-edit', 'preview');\n }\n }\n\n onMouseEnter = () => {\n this.setState({isOperationShow: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOperationShow: false});\n };\n\n onDeleteLink = (e) => {\n e.preventDefault();\n this.props.deleteItem(this.props.item);\n };\n\n changePerm = (permission) => {\n const item = this.props.item;\n seafileAPI.updateShareToUserItemPermission(item.repo_id, item.path, 'user', item.share_to, permission).then(() => {\n this.setState({\n permission: permission,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onEditPermission = (event) => {\n event.nativeEvent.stopImmediatePropagation();\n this.setState({isShowPermEditor: true});\n };\n\n render() {\n\n let objUrl;\n let item = this.props.item;\n let path = item.path === '/' ? '/' : item.path.slice(0, item.path.length - 1);\n\n objUrl = `${siteRoot}library/${item.repo_id}/${encodeURIComponent(item.repo_name)}${Utils.encodePath(path)}`;\n\n return (\n \n \n {Utils.getFolderName(item.path)}\n \n {item.share_to_name}\n \n {!this.state.isShowPermEditor && (\n
    \n {item.permission_name || Utils.sharePerms(this.state.permission)}\n {this.state.isOperationShow && (\n \n \n )}\n
    \n )}\n {this.state.isShowPermEditor && (\n \n )}\n \n \n \n \n \n \n );\n }\n}\n\nItem.propTypes = itemPropTypes;\n\nconst propTypes = {\n repo: PropTypes.object.isRequired,\n};\n\nclass RepoShareAdminUserShares extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: [],\n };\n }\n\n componentDidMount() {\n seafileAPI.getAllRepoFolderShareInfo(this.props.repo.repo_id, 'user').then((res) => {\n this.setState({\n loading: false,\n items: res.data.share_info_list,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n deleteItem = (item) => {\n seafileAPI.deleteShareToUserItem(item.repo_id, item.path, 'user', item.share_to).then(res => {\n let items = this.state.items.filter(shareItem => {\n return shareItem.path + shareItem.share_to !== item.path + item.share_to;\n });\n this.setState({items: items});\n let message = gettext('Successfully deleted 1 item');\n toaster.success(message);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { loading, errorMsg, items } = this.state;\n const { repo } = this.props;\n const isRepoOwner = repo.owner_email === username;\n return (\n \n {loading && }\n {!loading && errorMsg &&

    {errorMsg}

    }\n {!loading && !errorMsg && !items.length &&\n \n

    {gettext('No user shares')}

    \n
    \n }\n {!loading && !errorMsg && items.length > 0 &&\n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Name')}{gettext('User')}{gettext('Permission')}
    \n }\n
    \n );\n }\n}\n\nRepoShareAdminUserShares.propTypes = propTypes;\n\nexport default RepoShareAdminUserShares;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, siteRoot, isPro, username } from '../../../utils/constants';\nimport Loading from '../../../components/loading';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport SharePermissionEditor from '../../../components/select-editor/share-permission-editor';\n\nconst itemPropTypes = {\n item: PropTypes.object.isRequired,\n deleteItem: PropTypes.func.isRequired,\n isRepoOwner: PropTypes.bool.isRequired\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n permission: this.props.item.permission,\n isOperationShow: false,\n isShowPermEditor: false,\n };\n this.permissions = ['rw', 'r'];\n if (isPro) {\n if (this.props.item.path === '/' && this.props.isRepoOwner) {\n this.permissions.push('admin');\n }\n this.permissions.push('cloud-edit', 'preview');\n }\n }\n\n onMouseEnter = () => {\n this.setState({isOperationShow: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOperationShow: false});\n };\n\n onDeleteLink = (e) => {\n e.preventDefault();\n this.props.deleteItem(this.props.item);\n };\n\n changePerm = (permission) => {\n const item = this.props.item;\n seafileAPI.updateShareToGroupItemPermission(item.repo_id, item.path, 'group', item.share_to, permission).then(() => {\n this.setState({\n permission: permission,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onEditPermission = (event) => {\n event.nativeEvent.stopImmediatePropagation();\n this.setState({isShowPermEditor: true});\n };\n\n render() {\n\n let objUrl;\n let item = this.props.item;\n let path = item.path === '/' ? '/' : item.path.slice(0, item.path.length - 1);\n\n objUrl = `${siteRoot}library/${item.repo_id}/${encodeURIComponent(item.repo_name)}${Utils.encodePath(path)}`;\n\n return (\n \n \n {Utils.getFolderName(item.path)}\n \n {item.share_to_name}\n \n {!this.state.isShowPermEditor && (\n
    \n {item.permission_name || Utils.sharePerms(this.state.permission)}\n {this.state.isOperationShow && (\n \n \n )}\n
    \n )}\n {this.state.isShowPermEditor && (\n \n )}\n \n \n \n \n \n \n );\n }\n}\n\nItem.propTypes = itemPropTypes;\n\nconst propTypes = {\n repo: PropTypes.object.isRequired,\n};\n\nclass RepoShareAdminGroupShares extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: [],\n };\n }\n\n componentDidMount() {\n seafileAPI.getAllRepoFolderShareInfo(this.props.repo.repo_id, 'group').then((res) => {\n this.setState({\n loading: false,\n items: res.data.share_info_list,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n deleteItem = (item) => {\n seafileAPI.deleteShareToGroupItem(item.repo_id, item.path, 'group', item.share_to).then(res => {\n let items = this.state.items.filter(shareItem => {\n return shareItem.path + shareItem.share_to !== item.path + item.share_to;\n });\n this.setState({items: items});\n let message = gettext('Successfully deleted 1 item');\n toaster.success(message);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { loading, errorMsg, items } = this.state;\n const { repo } = this.props;\n const isRepoOwner = repo.owner_email === username;\n return (\n \n {loading && }\n {!loading && errorMsg &&

    {errorMsg}

    }\n {!loading && !errorMsg && !items.length &&\n \n

    {gettext('No group shares')}

    \n
    \n }\n {!loading && !errorMsg && items.length > 0 &&\n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Name')}{gettext('Group')}{gettext('Permission')}
    \n }\n
    \n );\n }\n}\n\nRepoShareAdminGroupShares.propTypes = propTypes;\n\nexport default RepoShareAdminGroupShares;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, TabContent, TabPane, Nav, NavItem, NavLink } from 'reactstrap';\nimport { gettext, canGenerateShareLink, canGenerateUploadLink } from '../../utils/constants';\nimport RepoShareAdminShareLinks from './repo-share-admin/share-links';\nimport RepoShareAdminUploadLinks from './repo-share-admin/upload-links';\nimport RepoShareAdminUserShares from './repo-share-admin/user-shares';\nimport RepoShareAdminGroupShares from './repo-share-admin/group-shares';\n\nconst propTypes = {\n repo: PropTypes.object.isRequired,\n toggleDialog: PropTypes.func.isRequired,\n};\n\nclass RepoShareAdminDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.enableShareLink = !this.props.repo.encrypted && canGenerateShareLink;\n this.enableUploadLink = !this.props.repo.encrypted && canGenerateUploadLink;\n this.state = {\n activeTab: this.getInitialActiveTab()\n };\n }\n\n getInitialActiveTab = () => {\n if (this.enableShareLink) {\n return 'shareLink';\n } else if (this.enableUploadLink) {\n return 'uploadLink';\n } else {\n return 'shareToUser';\n }\n };\n\n toggle = (tab) => {\n if (this.state.activeTab !== tab) {\n this.setState({ activeTab: tab });\n }\n };\n\n onTabKeyDown = (e) => {\n if (e.key == 'Enter' || e.key == 'Space') {\n e.target.click();\n }\n };\n\n render() {\n const { activeTab } = this.state;\n const { repo_name: repoName } = this.props.repo;\n\n return (\n
    \n \n \n {repoName} {gettext('Share Admin')}\n \n \n \n
    \n \n
    \n
    \n \n {(this.enableShareLink && activeTab === 'shareLink') &&\n \n \n \n }\n {(this.enableUploadLink && activeTab === 'uploadLink') &&\n \n \n \n }\n {activeTab === 'shareToUser' &&\n \n \n \n }\n {activeTab === 'shareToGroup' &&\n \n \n \n }\n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nRepoShareAdminDialog.propTypes = propTypes;\n\nexport default RepoShareAdminDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Form, FormGroup, Label, Input, Alert } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\n\nconst propTypes = {\n toggleDialog: PropTypes.func.isRequired,\n repoID: PropTypes.string.isRequired,\n};\n\nclass LibOldFilesAutoDelDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n autoDelDays: 0,\n isAutoDel: false,\n errorInfo: '',\n };\n }\n\n componentDidMount() {\n seafileAPI.getRepoOldFilesAutoDelDays(this.props.repoID).then(res => {\n this.setState({\n autoDelDays: res.data.auto_delete_days,\n isAutoDel: res.data.auto_delete_days > 0,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n\n submit = () => {\n let daysNeedTobeSet;\n\n if (this.state.isAutoDel) {\n daysNeedTobeSet = this.state.autoDelDays;\n\n let reg = /^-?\\d+$/;\n let isvalid_days = reg.test(daysNeedTobeSet);\n if (!isvalid_days || daysNeedTobeSet <= 0) {\n this.setState({\n errorInfo: gettext('Please enter a positive integer'),\n });\n return;\n }\n\n } else {\n daysNeedTobeSet = 0; // if no auto del, give 0 to server\n }\n\n\n let repoID = this.props.repoID;\n\n seafileAPI.setRepoOldFilesAutoDelDays(repoID, daysNeedTobeSet).then(res => {\n this.props.toggleDialog();\n toaster.success(gettext('Successfully set it.'));\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.submit();\n e.preventDefault();\n }\n };\n\n onChange = (e) => {\n let days = e.target.value;\n this.setState({\n autoDelDays: days,\n });\n };\n\n updateRadioCheck = (type) => {\n if (type === 'noAutoDel') {\n this.setState({\n isAutoDel: false,\n });\n } else if (type === 'autoDel') {\n this.setState({\n isAutoDel: true,\n });\n }\n };\n\n render() {\n return (\n \n \n {gettext('Auto deletion')}\n \n \n
    \n \n {this.updateRadioCheck('noAutoDel');}}/>{' '}\n \n \n \n {this.updateRadioCheck('autoDel');}}/>{' '}\n \n {' '}\n \n \n {this.state.errorInfo && {this.state.errorInfo}}\n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nLibOldFilesAutoDelDialog.propTypes = propTypes;\n\nexport default LibOldFilesAutoDelDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\nimport moment from 'moment';\nimport { Link, navigate } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../utils/utils';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext, siteRoot, storages } from '../../utils/constants';\nimport ModalPortal from '../../components/modal-portal';\nimport ShareDialog from '../../components/dialog/share-dialog';\nimport toaster from '../../components/toast';\nimport DeleteRepoDialog from '../../components/dialog/delete-repo-dialog';\nimport TransferDialog from '../../components/dialog/transfer-dialog';\nimport LibHistorySettingDialog from '../../components/dialog/lib-history-setting-dialog';\nimport ChangeRepoPasswordDialog from '../../components/dialog/change-repo-password-dialog';\nimport ResetEncryptedRepoPasswordDialog from '../../components/dialog/reset-encrypted-repo-password-dialog';\nimport LabelRepoStateDialog from '../../components/dialog/label-repo-state-dialog';\nimport LibSubFolderPermissionDialog from '../../components/dialog/lib-sub-folder-permission-dialog';\nimport Rename from '../../components/rename';\nimport MylibRepoMenu from './mylib-repo-menu';\nimport RepoAPITokenDialog from '../../components/dialog/repo-api-token-dialog';\nimport RepoSeaTableIntegrationDialog from '../../components/dialog/repo-seatable-integration-dialog';\nimport RepoShareAdminDialog from '../../components/dialog/repo-share-admin-dialog';\nimport LibOldFilesAutoDelDialog from '../../components/dialog/lib-old-files-auto-del-dialog';\nimport RepoMonitoredIcon from '../../components/repo-monitored-icon';\n\nconst propTypes = {\n repo: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n onRenameRepo: PropTypes.func.isRequired,\n onDeleteRepo: PropTypes.func.isRequired,\n onTransferRepo: PropTypes.func.isRequired,\n onRepoClick: PropTypes.func.isRequired,\n onMonitorRepo: PropTypes.func.isRequired,\n};\n\nclass MylibRepoListItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShow: false,\n isStarred: this.props.repo.starred,\n isRenaming: false,\n isShareDialogShow: false,\n isDeleteDialogShow: false,\n isTransferDialogShow: false,\n isHistorySettingDialogShow: false,\n isChangePasswordDialogShow: false,\n isResetPasswordDialogShow: false,\n isLabelRepoStateDialogOpen: false,\n isFolderPermissionDialogShow: false,\n isAPITokenDialogShow: false,\n isSeaTableIntegrationShow: false,\n isRepoShareAdminDialogOpen: false,\n isRepoDeleted: false,\n isOldFilesAutoDelDialogOpen: false,\n };\n }\n\n onFocus = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShow: true\n });\n }\n };\n\n onMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShow: true,\n highlight: true,\n });\n }\n };\n\n onMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShow: false,\n highlight: false\n });\n }\n };\n\n onMenuItemClick = (item) => {\n switch(item) {\n case 'Star':\n case 'Unstar':\n this.onToggleStarRepo();\n break;\n case 'Share':\n this.onShareToggle();\n break;\n case 'Delete':\n this.onDeleteToggle();\n break;\n case 'Rename':\n this.onRenameToggle();\n break;\n case 'Transfer':\n this.onTransferToggle();\n break;\n case 'History Setting':\n this.onHistorySettingToggle();\n break;\n case 'Change Password':\n this.onChangePasswordToggle();\n break;\n case 'Reset Password':\n this.onResetPasswordToggle();\n break;\n case 'Watch File Changes':\n this.watchFileChanges();\n break;\n case 'Unwatch File Changes':\n this.unwatchFileChanges();\n break;\n case 'Folder Permission':\n this.onFolderPermissionToggle();\n break;\n case 'Label Current State':\n this.onLabelToggle();\n break;\n case 'API Token':\n this.onAPITokenToggle();\n break;\n case 'Share Admin':\n this.toggleRepoShareAdminDialog();\n break;\n case 'Old Files Auto Delete':\n this.toggleOldFilesAutoDelDialog();\n break;\n case 'SeaTable integration':\n this.onSeaTableIntegrationToggle();\n break;\n default:\n break;\n }\n };\n\n visitRepo = () => {\n if (!this.state.isRenaming && this.props.repo.repo_name) {\n navigate(this.repoURL);\n }\n };\n\n onRepoClick = () => {\n this.props.onRepoClick(this.props.repo);\n };\n\n onToggleStarRepo = (e) => {\n e.preventDefault();\n const repoName = this.props.repo.repo_name;\n if (this.state.isStarred) {\n seafileAPI.unstarItem(this.props.repo.repo_id, '/').then(() => {\n this.setState({isStarred: !this.state.isStarred});\n const msg = gettext('Successfully unstarred {library_name_placeholder}.')\n .replace('{library_name_placeholder}', repoName);\n toaster.success(msg);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n seafileAPI.starItem(this.props.repo.repo_id, '/').then(() => {\n this.setState({isStarred: !this.state.isStarred});\n const msg = gettext('Successfully starred {library_name_placeholder}.')\n .replace('{library_name_placeholder}', repoName);\n toaster.success(msg);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n watchFileChanges = () => {\n const { repo } = this.props;\n seafileAPI.monitorRepo(repo.repo_id).then(() => {\n this.props.onMonitorRepo(repo, true);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n unwatchFileChanges = () => {\n const { repo } = this.props;\n seafileAPI.unMonitorRepo(repo.repo_id).then(() => {\n this.props.onMonitorRepo(repo, false);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onShareToggle = (e) => {\n // when close share dialog after send share link email,\n // there is no event\n if (e != undefined) {\n e.preventDefault();\n }\n this.setState({isShareDialogShow: !this.state.isShareDialogShow});\n };\n\n onDeleteToggle = (e) => {\n e.preventDefault();\n this.setState({isDeleteDialogShow: !this.state.isDeleteDialogShow});\n };\n\n onRenameToggle = () => {\n this.props.onFreezedItem();\n this.setState({isRenaming: !this.state.isRenaming});\n };\n\n onTransferToggle = () => {\n this.setState({isTransferDialogShow: !this.state.isTransferDialogShow});\n };\n\n onHistorySettingToggle = () => {\n this.setState({isHistorySettingDialogShow: !this.state.isHistorySettingDialogShow});\n };\n\n onChangePasswordToggle = () => {\n this.setState({isChangePasswordDialogShow: !this.state.isChangePasswordDialogShow});\n };\n\n onResetPasswordToggle = () => {\n this.setState({isResetPasswordDialogShow: !this.state.isResetPasswordDialogShow});\n };\n\n onLabelToggle = () => {\n this.setState({isLabelRepoStateDialogOpen: !this.state.isLabelRepoStateDialogOpen});\n };\n\n onFolderPermissionToggle = () => {\n this.setState({isFolderPermissionDialogShow: !this.state.isFolderPermissionDialogShow});\n };\n\n onAPITokenToggle = () => {\n this.setState({isAPITokenDialogShow: !this.state.isAPITokenDialogShow});\n };\n\n onSeaTableIntegrationToggle = () => {\n this.setState({isSeaTableIntegrationShow: !this.state.isSeaTableIntegrationShow});\n };\n\n toggleRepoShareAdminDialog = () => {\n this.setState({isRepoShareAdminDialogOpen: !this.state.isRepoShareAdminDialogOpen});\n };\n\n toggleOldFilesAutoDelDialog = () => {\n this.setState({isOldFilesAutoDelDialogOpen: !this.state.isOldFilesAutoDelDialogOpen});\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false,\n });\n this.props.onUnfreezedItem();\n };\n\n onRenameConfirm = (newName) => {\n let repo = this.props.repo;\n let repoID = repo.repo_id;\n seafileAPI.renameRepo(repoID, newName).then(() => {\n this.props.onRenameRepo(repo, newName);\n this.onRenameCancel();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onRenameCancel = () => {\n this.props.onUnfreezedItem();\n this.setState({isRenaming: !this.state.isRenaming});\n };\n\n onTransferRepo = (user) => {\n let repoID = this.props.repo.repo_id;\n seafileAPI.transferRepo(repoID, user.email).then(res => {\n this.props.onTransferRepo(repoID);\n let message = gettext('Successfully transferred the library.');\n toaster.success(message);\n }).catch(error => {\n if (error.response){\n toaster.danger(error.response.data.error_msg || gettext('Error'), {duration: 3});\n } else {\n toaster.danger(gettext('Failed. Please check the network.'), {duration: 3});\n }\n });\n this.onTransferToggle();\n };\n\n onDeleteRepo = (repo) => {\n seafileAPI.deleteRepo(repo.repo_id).then((res) => {\n\n this.setState({\n isRepoDeleted: true,\n isDeleteDialogShow: false,\n });\n\n this.props.onDeleteRepo(repo);\n let name = repo.repo_name;\n var msg = gettext('Successfully deleted {name}.').replace('{name}', name);\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n let name = repo.repo_name;\n errMessage = gettext('Failed to delete {name}.').replace('{name}', name);\n }\n toaster.danger(errMessage);\n\n this.setState({isRepoDeleted: false});\n });\n };\n\n renderPCUI = () => {\n let repo = this.props.repo;\n let iconUrl = Utils.getLibIconUrl(repo);\n let iconTitle = Utils.getLibIconTitle(repo);\n let repoURL = `${siteRoot}library/${repo.repo_id}/${Utils.encodePath(repo.repo_name)}/`;\n return (\n \n \n \n \n \n \n {iconTitle}\n \n {this.state.isRenaming && (\n \n )}\n {!this.state.isRenaming && repo.repo_name && (\n \n {repo.repo_name}\n {repo.monitored && }\n \n )}\n {!this.state.isRenaming && !repo.repo_name &&\n (gettext('Broken (please contact your administrator to fix this library)'))\n }\n \n \n {(repo.repo_name && this.state.isOpIconShow) && (\n
    \n \n \n \n
    \n )}\n \n {repo.size}\n {storages.length > 0 && {repo.storage_name}}\n {moment(repo.last_modified).fromNow()}\n \n );\n };\n\n renderMobileUI = () => {\n let repo = this.props.repo;\n let iconUrl = Utils.getLibIconUrl(repo);\n let iconTitle = Utils.getLibIconTitle(repo);\n let repoURL = this.repoURL = `${siteRoot}library/${repo.repo_id}/${Utils.encodePath(repo.repo_name)}/`;\n\n return (\n \n {iconTitle}\n \n {this.state.isRenaming && (\n \n )}\n {!this.state.isRenaming && repo.repo_name && (\n
    \n {repo.repo_name}\n {repo.monitored && }\n
    \n )}\n {!this.state.isRenaming && !repo.repo_name &&\n
    (gettext('Broken (please contact your administrator to fix this library)'))
    \n }\n {repo.size}\n {moment(repo.last_modified).fromNow()}\n \n \n {repo.repo_name && (\n \n )}\n \n \n );\n };\n\n render() {\n let repo = this.props.repo;\n return (\n \n \n {this.renderPCUI()}\n \n \n {this.renderMobileUI()}\n \n {this.state.isShareDialogShow && (\n \n \n \n )}\n {this.state.isDeleteDialogShow && (\n \n \n \n )}\n {this.state.isTransferDialogShow && (\n \n \n \n )}\n {this.state.isHistorySettingDialogShow && (\n \n \n \n )}\n {this.state.isChangePasswordDialogShow && (\n \n \n \n )}\n {this.state.isResetPasswordDialogShow && (\n \n \n \n )}\n\n {this.state.isLabelRepoStateDialogOpen && (\n \n \n \n )}\n\n {this.state.isFolderPermissionDialogShow && (\n \n \n \n )}\n\n {this.state.isAPITokenDialogShow && (\n \n \n \n )}\n\n {this.state.isSeaTableIntegrationShow && (\n \n \n \n )}\n\n {this.state.isRepoShareAdminDialogOpen && (\n \n \n \n )}\n {this.state.isOldFilesAutoDelDialogOpen && (\n \n \n \n )}\n\n \n );\n }\n}\n\nMylibRepoListItem.propTypes = propTypes;\n\nexport default MylibRepoListItem;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\nimport { gettext, storages } from '../../utils/constants';\nimport MylibRepoListItem from './mylib-repo-list-item';\nimport LibsMobileThead from '../../components/libs-mobile-thead';\n\nconst propTypes = {\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n repoList: PropTypes.array.isRequired,\n sortRepoList: PropTypes.func.isRequired,\n onRenameRepo: PropTypes.func.isRequired,\n onDeleteRepo: PropTypes.func.isRequired,\n onTransferRepo: PropTypes.func.isRequired,\n onRepoClick: PropTypes.func.isRequired,\n onMonitorRepo: PropTypes.func.isRequired,\n};\n\nclass MylibRepoListView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false,\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n sortByName = (e) => {\n e.preventDefault();\n const sortBy = 'name';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortRepoList(sortBy, sortOrder);\n };\n\n sortByTime = (e) => {\n e.preventDefault();\n const sortBy = 'time';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortRepoList(sortBy, sortOrder);\n };\n\n sortBySize = (e) => {\n e.preventDefault();\n const sortBy = 'size';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortRepoList(sortBy, sortOrder);\n };\n\n renderRepoListView = () => {\n return (\n \n {this.props.repoList.map(item => {\n return (\n \n );\n })}\n \n );\n };\n\n renderPCUI = () => {\n const showStorageBackend = storages.length > 0;\n const sortIcon = this.props.sortOrder === 'asc' ? : ;\n return (\n \n \n \n \n \n \n \n \n {showStorageBackend ? : null}\n \n \n \n \n {this.renderRepoListView()}\n \n
    {gettext('Library Type')}{gettext('Name')} {this.props.sortBy === 'name' && sortIcon}{gettext('Actions')}{gettext('Size')} {this.props.sortBy === 'size' && sortIcon}{gettext('Storage Backend')}{gettext('Last Update')} {this.props.sortBy === 'time' && sortIcon}
    \n );\n };\n\n renderMobileUI = () => {\n return (\n \n \n \n {this.renderRepoListView()}\n \n
    \n );\n };\n\n render() {\n return (\n \n \n {this.renderPCUI()}\n \n \n {this.renderMobileUI()}\n \n \n );\n }\n}\n\nMylibRepoListView.propTypes = propTypes;\n\nexport default MylibRepoListView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalBody } from 'reactstrap';\nimport { gettext, mediaUrl, siteName, canAddRepo } from '../../utils/constants';\n\nconst propTypes = {\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass GuideForNewDialog extends React.Component {\n\n toggle = () => {\n this.props.toggleDialog();\n };\n\n render() {\n return (\n \n \n \n
    \n \"\"\n

    {gettext('Welcome to {site_name_placeholder}').replace('{site_name_placeholder}', siteName)}

    \n {canAddRepo ?\n

    {gettext('{site_name_placeholder} organizes files into libraries. Each library can be synced and shared separately. We have created a personal library for you. You can create more libraries later.').replace('{site_name_placeholder}', siteName)}

    :\n

    {gettext('{site_name_placeholder} organizes files into libraries. Each library can be synced and shared separately. However, since you are a guest user now, you can not create libraries.').replace('{site_name_placeholder}', siteName)}

    \n }\n
    \n
    \n
    \n );\n }\n}\n\nGuideForNewDialog.propTypes = propTypes;\n\nexport default GuideForNewDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport cookie from 'react-cookies';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../../components/toast';\nimport Repo from '../../models/repo';\nimport Loading from '../../components/loading';\nimport EmptyTip from '../../components/empty-tip';\nimport CommonToolbar from '../../components/toolbar/common-toolbar';\nimport RepoViewToolbar from '../../components/toolbar/repo-view-toobar';\nimport LibDetail from '../../components/dirent-detail/lib-details';\nimport MylibRepoListView from './mylib-repo-list-view';\nimport SortOptionsDialog from '../../components/dialog/sort-options';\nimport GuideForNewDialog from '../../components/dialog/guide-for-new-dialog';\n\nconst propTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n};\n\nclass MyLibraries extends Component {\n constructor(props) {\n super(props);\n this.state = {\n errorMsg: '',\n isLoading: true,\n repoList: [],\n isShowDetails: false,\n isSortOptionsDialogOpen: false,\n isGuideForNewDialogOpen: window.app.pageOptions.guideEnabled,\n sortBy: cookie.load('seafile-repo-dir-sort-by') || 'name', // 'name' or 'time' or 'size'\n sortOrder: cookie.load('seafile-repo-dir-sort-order') || 'asc', // 'asc' or 'desc'\n };\n\n this.emptyTip = (\n \n

    {gettext('No libraries')}

    \n

    {gettext('You have not created any libraries yet. A library is a container to organize your files and folders. A library can also be shared with others and synced to your connected devices. You can create a library by clicking the \"New Library\" button in the menu bar.')}

    \n
    \n );\n }\n\n componentDidMount() {\n seafileAPI.listRepos({type: 'mine'}).then((res) => {\n let repoList = res.data.repos.map((item) => {\n return new Repo(item);\n });\n this.setState({\n isLoading: false,\n repoList: Utils.sortRepos(repoList, this.state.sortBy, this.state.sortOrder)\n });\n }).catch((error) => {\n this.setState({\n isLoading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n toggleSortOptionsDialog = () => {\n this.setState({\n isSortOptionsDialogOpen: !this.state.isSortOptionsDialogOpen\n });\n };\n\n onCreateRepo = (repo) => {\n seafileAPI.createMineRepo(repo).then((res) => {\n const newRepo = new Repo({\n repo_id: res.data.repo_id,\n repo_name: res.data.repo_name,\n size: res.data.repo_size,\n mtime: res.data.mtime,\n owner_email: res.data.email,\n encrypted: res.data.encrypted,\n permission: res.data.permission,\n storage_name: res.data.storage_name\n });\n this.state.repoList.unshift(newRepo);\n this.setState({repoList: this.state.repoList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n sortRepoList = (sortBy, sortOrder) => {\n cookie.save('seafile-repo-dir-sort-by', sortBy);\n cookie.save('seafile-repo-dir-sort-order', sortOrder);\n this.setState({\n sortBy: sortBy,\n sortOrder: sortOrder,\n repoList: Utils.sortRepos(this.state.repoList, sortBy, sortOrder)\n });\n };\n\n onTransferRepo = (repoID) => {\n let repoList = this.state.repoList.filter(item => {\n return item.repo_id !== repoID;\n });\n this.setState({repoList: repoList});\n };\n\n onRenameRepo = (repo, newName) => {\n let repoList = this.state.repoList.map(item => {\n if (item.repo_id === repo.repo_id) {\n item.repo_name = newName;\n }\n return item;\n });\n this.setState({repoList: repoList});\n };\n\n onMonitorRepo = (repo, monitored) => {\n let repoList = this.state.repoList.map(item => {\n if (item.repo_id === repo.repo_id) {\n item.monitored = monitored;\n }\n return item;\n });\n this.setState({repoList: repoList});\n };\n\n onDeleteRepo = (repo) => {\n let repoList = this.state.repoList.filter(item => {\n return item.repo_id !== repo.repo_id;\n });\n this.setState({repoList: repoList});\n };\n\n onRepoClick = (repo) => {\n if (this.state.isShowDetails) {\n this.onRepoDetails(repo);\n }\n };\n\n onRepoDetails = (repo) => {\n this.setState({\n currentRepo: repo,\n isShowDetails: true,\n });\n };\n\n closeDetails = () => {\n this.setState({isShowDetails: !this.state.isShowDetails});\n };\n\n toggleGuideForNewDialog = () => {\n window.app.pageOptions.guideEnabled = false;\n this.setState({\n isGuideForNewDialogOpen: false\n });\n };\n\n render() {\n return (\n \n
    \n \n \n
    \n
    \n
    \n
    \n

    {gettext('My Libraries')}

    \n {(!Utils.isDesktop() && this.state.repoList.length > 0) && }\n
    \n
    \n {this.state.isLoading && }\n {!this.state.isLoading && this.state.errorMsg &&

    {this.state.errorMsg}

    }\n {!this.state.isLoading && !this.state.errorMsg && this.state.repoList.length === 0 && this.emptyTip}\n {!this.state.isLoading && !this.state.errorMsg && this.state.repoList.length > 0 &&\n \n }\n
    \n
    \n {!this.state.isLoading && !this.state.errorMsg && this.state.isGuideForNewDialogOpen &&\n \n }\n {this.state.isSortOptionsDialogOpen &&\n \n }\n {this.state.isShowDetails && (\n
    \n \n
    \n )}\n
    \n
    \n );\n }\n}\n\nMyLibraries.propTypes = propTypes;\n\nexport default MyLibraries;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { gettext, siteRoot, lang, trashReposExpireDays } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../../components/toast';\nimport Loading from '../../components/loading';\nimport EmptyTip from '../../components/empty-tip';\nimport CommonToolbar from '../../components/toolbar/common-toolbar';\n\nmoment.locale(lang);\n\nclass MyLibsDeleted extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n deletedRepoList: [],\n isLoading: true,\n };\n }\n\n componentDidMount() {\n seafileAPI.listDeletedRepo().then(res => {\n this.setState({\n deletedRepoList: res.data,\n isLoading: false,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n\n refreshDeletedRepoList = (repoID) => {\n let deletedRepoList = this.state.deletedRepoList.filter(item => {\n return item.repo_id !== repoID;\n });\n this.setState({deletedRepoList: deletedRepoList});\n };\n\n render() {\n return (\n \n
    \n \n
    \n
    \n
    \n
    \n
    \n {gettext('My Libraries')}\n /\n {gettext('Deleted Libraries')}\n
    \n
    \n
    \n {this.state.isLoading && }\n {(!this.state.isLoading && this.state.deletedRepoList.length === 0) &&\n \n

    {gettext('No deleted libraries')}

    \n

    {gettext('You have not deleted any libraries in the last {placeholder} days. A deleted library will be cleaned automatically after this period.').replace('{placeholder}', trashReposExpireDays)}

    \n
    \n }\n {this.state.deletedRepoList.length !== 0 &&\n
    \n

    {gettext('Tip: libraries deleted {placeholder} days ago will be cleaned automatically.').replace('{placeholder}', trashReposExpireDays)}

    \n \n
    \n }\n
    \n
    \n
    \n
    \n );\n }\n}\n\nclass DeletedRepoTable extends Component {\n\n render() {\n let deletedRepos = this.props.deletedRepoList;\n return (\n \n \n \n \n \n \n \n \n \n \n { deletedRepos && deletedRepos.map((item) => {\n return (\n \n );\n })}\n \n
    {/*img*/}{gettext('Name')}{gettext('Deleted Time')}
    \n );\n }\n}\n\nDeletedRepoTable.propTypes = {\n deletedRepoList: PropTypes.array.isRequired,\n refreshDeletedRepoList: PropTypes.func.isRequired,\n};\n\nclass DeletedRepoItem extends Component {\n constructor(props) {\n super(props);\n this.state = {\n hideRestoreMenu: true,\n highlight: false,\n };\n }\n\n onMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n hideRestoreMenu: false,\n highlight: true,\n });\n }\n };\n\n onMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n hideRestoreMenu: true,\n highlight: false,\n });\n }\n };\n\n restoreDeletedRepo = (e) => {\n e.preventDefault();\n let repoID = this.props.repo.repo_id;\n let repoName = this.props.repo.repo_name;\n seafileAPI.restoreDeletedRepo(repoID).then(res => {\n let message = gettext('Successfully restored the library.') + ' ' + repoName;\n toaster.success(message);\n this.props.refreshDeletedRepoList(repoID);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n errMessage = gettext('Failed. Please check the network.');\n }\n toaster.danger(errMessage);\n });\n };\n\n render() {\n let localTime = moment.utc(this.props.repo.del_time).toDate();\n localTime = moment(localTime).fromNow();\n let iconUrl = Utils.getLibIconUrl(this.props.repo);\n\n return (\n \n \n {this.props.repo.repo_name}\n {localTime}\n \n \n \n \n );\n }\n}\n\nDeletedRepoItem.propTypes = {\n isItemFreezed: PropTypes.bool.isRequired,\n repo: PropTypes.object.isRequired,\n refreshDeletedRepoList: PropTypes.func.isRequired,\n};\n\nMyLibsDeleted.propTypes = {\n onSearchedClick: PropTypes.func.isRequired,\n};\n\nexport default MyLibsDeleted;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input, Alert } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport Repo from '../../models/repo';\n\nconst shareRepoListItemProps = {\n repo: PropTypes.object.isRequired,\n onRepoSelect: PropTypes.func.isRequired,\n onPermissionChange: PropTypes.func.isRequired,\n};\n\nclass ShareRepoListItem extends React.Component {\n\n onRepoSelect = (e) => {\n let isChecked = e.target.checked;\n this.props.onRepoSelect(this.props.repo, isChecked);\n };\n\n onPermissionChange = (e) => {\n let permission = e.target.value;\n let repo = this.props.repo;\n this.props.onPermissionChange(repo, permission);\n };\n\n render() {\n let repo = this.props.repo;\n let iconUrl = Utils.getLibIconUrl(repo);\n return (\n \n \n {gettext('icon')}\n {repo.repo_name}\n {moment(repo.last_modified).fromNow()}\n \n \n \n \n \n \n \n );\n }\n}\n\nShareRepoListItem.propTypes = shareRepoListItemProps;\n\nconst propTypes = {\n onRepoSelectedHandler: PropTypes.func.isRequired,\n onShareRepoDialogClose: PropTypes.func.isRequired,\n};\n\nclass ShareRepoDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n repoList: [],\n currentRepo: null,\n permission: 'rw',\n selectedRepoList: [],\n errMessage: '',\n };\n }\n\n componentDidMount() {\n seafileAPI.listRepos({type: 'mine'}).then(res => {\n let repoList = res.data.repos.map(item => {\n let repo = new Repo(item);\n repo.sharePermission = 'rw';\n return repo;\n });\n this.setState({repoList: repoList});\n });\n }\n\n onRepoSelect = (repo, isChecked) => {\n let selectedRepoList = [];\n if (isChecked) {\n this.state.selectedRepoList.push(repo);\n selectedRepoList = this.state.selectedRepoList;\n } else {\n selectedRepoList = this.state.selectedRepoList.filter(item => {\n return item.repo_id !== repo.repo_id;\n });\n }\n this.setState({selectedRepoList: selectedRepoList});\n };\n\n onPermissionChange = (repo, permission) => {\n let repoList = this.state.repoList.map(item => {\n if (item.repo_id === repo.repo_id) {\n item.sharePermission = permission;\n }\n return item;\n });\n this.setState({repoList: repoList});\n };\n\n handleSubmit = () => {\n if (this.state.selectedRepoList.length === 0) {\n let errMessage = gettext('Please select a library to share.');\n this.setState({errMessage: errMessage});\n return;\n }\n\n this.props.onRepoSelectedHandler(this.state.selectedRepoList);\n this.onCloseDialog();\n };\n\n onCloseDialog = () => {\n this.props.onShareRepoDialogClose();\n };\n\n render() {\n return (\n \n {gettext('Select libraries to share')}\n \n \n \n \n \n \n \n \n \n \n \n \n {this.state.repoList.map((repo, index) => {\n return (\n \n );\n })}\n \n
    {/* select */}{/* icon */}{gettext('Name')}{gettext('Last Update')}{gettext('Permission')}
    \n
    \n {this.state.errMessage && {this.state.errMessage}}\n \n \n \n \n
    \n );\n }\n}\n\nShareRepoDialog.propTypes = propTypes;\n\nexport default ShareRepoDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { Link, navigate } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../utils/utils';\nimport { gettext, siteRoot, isPro, username, folderPermEnabled, isSystemStaff, enableResetEncryptedRepoPassword, isEmailConfigured, enableRepoAutoDel } from '../../utils/constants';\nimport ModalPortal from '../../components/modal-portal';\nimport ShareDialog from '../../components/dialog/share-dialog';\nimport LibSubFolderPermissionDialog from '../../components/dialog/lib-sub-folder-permission-dialog';\nimport DeleteRepoDialog from '../../components/dialog/delete-repo-dialog';\nimport ChangeRepoPasswordDialog from '../../components/dialog/change-repo-password-dialog';\nimport ResetEncryptedRepoPasswordDialog from '../../components/dialog/reset-encrypted-repo-password-dialog';\nimport LibOldFilesAutoDelDialog from '../../components/dialog/lib-old-files-auto-del-dialog';\nimport Rename from '../rename';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport LibHistorySettingDialog from '../dialog/lib-history-setting-dialog';\nimport toaster from '../toast';\nimport RepoAPITokenDialog from '../dialog/repo-api-token-dialog';\nimport RepoShareAdminDialog from '../dialog/repo-share-admin-dialog';\nimport RepoMonitoredIcon from '../../components/repo-monitored-icon';\n\nconst propTypes = {\n currentGroup: PropTypes.object,\n libraryType: PropTypes.string,\n repo: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n onItemUnshare: PropTypes.func.isRequired,\n onItemDetails: PropTypes.func,\n onItemRename: PropTypes.func,\n onItemDelete: PropTypes.func,\n onMonitorRepo: PropTypes.func\n};\n\nclass SharedRepoListItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n highlight: false,\n isOperationShow: false,\n isItemMenuShow: false,\n isAdvancedMenuShown: false,\n isShowSharedDialog: false,\n isRenaming: false,\n isStarred: this.props.repo.starred,\n isFolderPermissionDialogOpen: false,\n isHistorySettingDialogShow: false,\n isDeleteDialogShow: false,\n isAPITokenDialogShow: false,\n isRepoShareAdminDialogOpen: false,\n isRepoDeleted: false,\n isChangePasswordDialogShow: false,\n isResetPasswordDialogShow: false,\n isOldFilesAutoDelDialogOpen: false,\n };\n this.isDeparementOnwerGroupMember = false;\n }\n\n onMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n highlight: true,\n isOperationShow: true,\n });\n }\n };\n\n onMouseOver = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n highlight: true,\n isOperationShow: true,\n });\n }\n };\n\n onMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n highlight: false,\n isOperationShow: false,\n });\n }\n };\n\n clickOperationMenuToggle = (e) => {\n this.toggleOperationMenu(e);\n };\n\n onDropdownToggleKeyDown = (e) => {\n if (e.key == 'Enter' || e.key == 'Space') {\n this.clickOperationMenuToggle(e);\n }\n };\n\n toggleOperationMenu = (e) => {\n let dataset = e.target ? e.target.dataset : null;\n if (dataset && dataset.toggle && dataset.toggle === 'Rename') {\n this.setState({isItemMenuShow: !this.state.isItemMenuShow});\n return;\n }\n\n this.setState(\n {isItemMenuShow: !this.state.isItemMenuShow},\n () => {\n if (this.state.isItemMenuShow) {\n this.props.onFreezedItem();\n } else {\n this.props.onUnfreezedItem();\n this.setState({\n highlight: false,\n isOperationShow: false,\n });\n }\n }\n );\n };\n\n toggleAdvancedMenuShown = (e) => {\n this.setState({ isAdvancedMenuShown: true });\n };\n\n toggleAdvancedMenu = (e) => {\n e.stopPropagation();\n this.setState({ isAdvancedMenuShown: !this.state.isAdvancedMenuShown }, () => {\n this.toggleOperationMenu(e);\n });\n };\n\n onDropDownMouseMove = (e) => {\n if (this.state.isAdvancedMenuShown && e.target && e.target.className === 'dropdown-item') {\n this.setState({\n isAdvancedMenuShown: false\n });\n }\n };\n\n getRepoComputeParams = () => {\n let repo = this.props.repo;\n\n let iconUrl = Utils.getLibIconUrl(repo);\n let iconTitle = Utils.getLibIconTitle(repo);\n let libPath = `${siteRoot}library/${repo.repo_id}/${Utils.encodePath(repo.repo_name)}/`;\n\n return { iconUrl, iconTitle, libPath };\n };\n\n onMenuItemKeyDown = (e) => {\n if (e.key == 'Enter' || e.key == 'Space') {\n this.onMenuItemClick(e);\n }\n };\n\n onMenuItemClick = (e) => {\n let operation = e.target.dataset.toggle;\n switch(operation) {\n case 'Rename':\n this.onItemRenameToggle();\n break;\n case 'Folder Permission':\n this.onItemFolderPermissionToggle();\n break;\n case 'Details':\n this.onItemDetails();\n break;\n case 'Share':\n this.onItemShare();\n break;\n case 'Unshare':\n this.onItemUnshare();\n break;\n case 'History Setting':\n this.onHistorySettingToggle();\n break;\n case 'API Token':\n this.onAPITokenToggle();\n break;\n case 'Share Admin':\n this.toggleRepoShareAdminDialog();\n break;\n case 'Change Password':\n this.onChangePasswordToggle();\n break;\n case 'Reset Password':\n this.onResetPasswordToggle();\n break;\n case 'Watch File Changes':\n this.watchFileChanges();\n break;\n case 'Unwatch File Changes':\n this.unwatchFileChanges();\n break;\n case 'Old Files Auto Delete':\n this.toggleOldFilesAutoDelDialog();\n break;\n // no default\n }\n };\n\n watchFileChanges = () => {\n const { repo } = this.props;\n seafileAPI.monitorRepo(repo.repo_id).then(() => {\n this.props.onMonitorRepo(repo, true);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n unwatchFileChanges = () => {\n const { repo } = this.props;\n seafileAPI.unMonitorRepo(repo.repo_id).then(() => {\n this.props.onMonitorRepo(repo, false);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onItemRenameToggle = () => {\n this.props.onFreezedItem();\n this.setState({\n isRenaming: !this.state.isRenaming,\n isOperationShow: !this.state.isOperationShow\n });\n };\n\n onRenameConfirm = (name) => {\n this.props.onItemRename(this.props.repo, name);\n this.onRenameCancel();\n };\n\n onRenameCancel = () => {\n this.props.onUnfreezedItem();\n this.setState({isRenaming: !this.state.isRenaming});\n };\n\n onItemFolderPermissionToggle = () => {\n this.setState({isFolderPermissionDialogOpen: !this.state.isFolderPermissionDialogOpen});\n };\n\n onHistorySettingToggle = () => {\n this.setState({isHistorySettingDialogShow: !this.state.isHistorySettingDialogShow});\n };\n\n onItemDetails = () => {\n this.props.onItemDetails(this.props.repo);\n };\n\n onItemShare = (e) => {\n e.preventDefault();\n this.setState({isShowSharedDialog: true});\n };\n\n onItemUnshare = (e) => {\n e.preventDefault();\n this.props.onItemUnshare(this.props.repo);\n };\n\n onItemDeleteToggle = (e) => {\n e.preventDefault();\n this.setState({isDeleteDialogShow: !this.state.isDeleteDialogShow});\n };\n\n onItemDelete = () => {\n const { currentGroup, repo } = this.props;\n if (!currentGroup) { // repo can not be deleted in share all module\n return;\n }\n\n const groupID = currentGroup.id;\n\n seafileAPI.deleteGroupOwnedLibrary(groupID, repo.repo_id).then(() => {\n\n this.setState({\n isRepoDeleted: true,\n isDeleteDialogShow: false,\n });\n\n this.props.onItemDelete(repo);\n let name = repo.repo_name;\n var msg = gettext('Successfully deleted {name}.').replace('{name}', name);\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n let name = repo.repo_name;\n errMessage = gettext('Failed to delete {name}.').replace('{name}', name);\n }\n toaster.danger(errMessage);\n\n this.setState({isRepoDeleted: false});\n });\n };\n\n toggleShareDialog = () => {\n this.setState({isShowSharedDialog: false});\n };\n\n toggleRepoShareAdminDialog = () => {\n this.setState({isRepoShareAdminDialogOpen: !this.state.isRepoShareAdminDialogOpen});\n };\n\n toggleOldFilesAutoDelDialog = () => {\n this.setState({isOldFilesAutoDelDialogOpen: !this.state.isOldFilesAutoDelDialogOpen});\n };\n\n onAPITokenToggle = () => {\n this.setState({isAPITokenDialogShow: !this.state.isAPITokenDialogShow});\n };\n\n onChangePasswordToggle = () => {\n this.setState({isChangePasswordDialogShow: !this.state.isChangePasswordDialogShow});\n };\n\n onResetPasswordToggle = () => {\n this.setState({isResetPasswordDialogShow: !this.state.isResetPasswordDialogShow});\n };\n\n translateMenuItem = (menuItem) => {\n let translateResult = '';\n switch(menuItem) {\n case 'Rename':\n translateResult = gettext('Rename');\n break;\n case 'Folder Permission':\n translateResult = gettext('Folder Permission');\n break;\n case 'Details':\n translateResult = gettext('Details');\n break;\n case 'Unshare':\n translateResult = gettext('Unshare');\n break;\n case 'Share':\n translateResult = gettext('Share');\n break;\n case 'History Setting':\n translateResult = gettext('History Setting');\n break;\n case 'Share Admin':\n translateResult = gettext('Share Admin');\n break;\n case 'Change Password':\n translateResult = gettext('Change Password');\n break;\n case 'Reset Password':\n translateResult = gettext('Reset Password');\n break;\n case 'Watch File Changes':\n translateResult = gettext('Watch File Changes');\n break;\n case 'Unwatch File Changes':\n translateResult = gettext('Unwatch File Changes');\n break;\n case 'Old Files Auto Delete':\n translateResult = gettext('Auto Deletion Setting');\n break;\n case 'API Token':\n translateResult = 'API Token'; // translation is not needed here\n break;\n case 'Advanced':\n translateResult = gettext('Advanced');\n break;\n default:\n break;\n }\n return translateResult;\n };\n\n getAdvancedOperations = () => {\n const operations = [];\n operations.push('API Token');\n if (enableRepoAutoDel) {\n operations.push('Old Files Auto Delete');\n }\n return operations;\n };\n\n generatorOperations = () => {\n let { repo, currentGroup } = this.props;\n //todo this have a bug; use current api is not return admins param;\n let isStaff = currentGroup && currentGroup.admins && currentGroup.admins.indexOf(username) > -1; //for group repolist;\n let isRepoOwner = repo.owner_email === username;\n let isAdmin = repo.is_admin;\n let operations = [];\n if (isPro) {\n if (repo.owner_email.indexOf('@seafile_group') != -1) {\n if (isStaff) {\n if (repo.owner_email == currentGroup.id + '@seafile_group') {\n this.isDeparementOnwerGroupMember = true;\n operations = ['Rename'];\n if (folderPermEnabled) {\n operations.push('Folder Permission');\n }\n operations.push('Share Admin', 'Divider');\n if (repo.encrypted) {\n operations.push('Change Password');\n }\n if (repo.encrypted && enableResetEncryptedRepoPassword && isEmailConfigured) {\n operations.push('Reset Password');\n }\n if (repo.permission == 'r' || repo.permission == 'rw') {\n const monitorOp = repo.monitored ? 'Unwatch File Changes' : 'Watch File Changes';\n operations.push(monitorOp);\n }\n operations.push('Divider', 'History Setting', 'Details');\n if (Utils.isDesktop()) {\n operations.push('Advanced');\n }\n return operations;\n } else {\n operations.push('Unshare');\n }\n }\n } else {\n if (isRepoOwner || isAdmin) {\n operations.push('Share');\n }\n if (isStaff || isRepoOwner || isAdmin) {\n operations.push('Unshare');\n }\n }\n if (repo.permission == 'r' || repo.permission == 'rw') {\n const monitorOp = repo.monitored ? 'Unwatch File Changes' : 'Watch File Changes';\n operations.push(monitorOp);\n }\n } else {\n if (isRepoOwner) {\n operations.push('Share');\n }\n if (isStaff || isRepoOwner) {\n operations.push('Unshare');\n }\n }\n return operations;\n };\n\n generatorMobileMenu = () => {\n let operations = [];\n if (this.props.libraryType && this.props.libraryType === 'public') {\n let isRepoOwner = this.props.repo.owner_email === username;\n if (isSystemStaff || isRepoOwner) {\n operations.push('Unshare');\n }\n } else {\n operations = this.generatorOperations();\n if (this.isDeparementOnwerGroupMember) {\n operations.unshift('Unshare');\n operations.unshift('Share');\n }\n }\n\n if (!operations.length) {\n return null;\n }\n return (\n \n \n
    \n
    \n
    \n {operations.map((item, index) => {\n return (\n {this.translateMenuItem(item)}\n );\n })}\n
    \n
    \n
    \n );\n };\n\n generatorPCMenu = () => {\n let operations = [];\n if (this.props.libraryType && this.props.libraryType === 'public') {\n let isRepoOwner = this.props.repo.owner_email === username;\n if (isSystemStaff || isRepoOwner) {\n operations.push('Unshare');\n }\n } else {\n operations = this.generatorOperations();\n }\n const shareOperation = ;\n const unshareOperation = ;\n const deleteOperation = ;\n\n if (this.isDeparementOnwerGroupMember) {\n const advancedOperations = this.getAdvancedOperations();\n return (\n \n {shareOperation}\n {deleteOperation}\n \n \n \n {operations.map((item, index)=> {\n if (item == 'Divider') {\n return ;\n } else if (item == 'Advanced') {\n return (\n {e.stopPropagation();}}\n >\n \n {this.translateMenuItem(item)}\n \n \n {advancedOperations.map((item, index)=> {\n return ({this.translateMenuItem(item)});\n })}\n \n \n );\n } else {\n return ({this.translateMenuItem(item)});\n }\n })}\n \n \n \n );\n } else {\n return (\n \n {operations.map(item => {\n switch (item) {\n case 'Share':\n return {shareOperation};\n case 'Unshare':\n return {unshareOperation};\n case 'Watch File Changes':\n case 'Unwatch File Changes':\n return (\n \n \n \n {[item].map((item, index) => {\n return {this.translateMenuItem(item)};\n })}\n \n \n );\n // no default\n default:\n return null;\n }\n })}\n \n );\n }\n };\n\n onToggleStarRepo = (e) => {\n e.preventDefault();\n const { repo_name: repoName } = this.props.repo;\n if (this.state.isStarred) {\n seafileAPI.unstarItem(this.props.repo.repo_id, '/').then(() => {\n this.setState({isStarred: !this.state.isStarred});\n const msg = gettext('Successfully unstarred {library_name_placeholder}.')\n .replace('{library_name_placeholder}', repoName);\n toaster.success(msg);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n seafileAPI.starItem(this.props.repo.repo_id, '/').then(() => {\n this.setState({isStarred: !this.state.isStarred});\n const msg = gettext('Successfully starred {library_name_placeholder}.')\n .replace('{library_name_placeholder}', repoName);\n toaster.success(msg);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n renderPCUI = () => {\n let { iconUrl, iconTitle, libPath } = this.getRepoComputeParams();\n let { repo } = this.props;\n return (\n \n \n \n \n \n \n \n {iconTitle}\n \n {this.state.isRenaming ?\n :\n \n {repo.repo_name}\n {repo.monitored && }\n \n }\n \n {this.state.isOperationShow && this.generatorPCMenu()}\n {repo.size}\n {moment(repo.last_modified).fromNow()}\n {repo.owner_name}\n \n \n );\n };\n\n visitRepo = () => {\n if (!this.state.isRenaming) {\n navigate(this.repoURL);\n }\n };\n\n renderMobileUI = () => {\n let { iconUrl, iconTitle, libPath } = this.getRepoComputeParams();\n let { repo } = this.props;\n this.repoURL = libPath;\n return (\n \n \n {iconTitle}/\n \n {this.state.isRenaming ?\n :\n \n {repo.repo_name}\n {repo.monitored && }\n \n }\n
    \n {repo.owner_name}\n {repo.size}\n {moment(repo.last_modified).fromNow()}\n \n {this.generatorMobileMenu()}\n \n
    \n );\n };\n\n render() {\n let { repo } = this.props;\n let isGroupOwnedRepo = repo.owner_email.indexOf('@seafile_group') > -1;\n return (\n \n {Utils.isDesktop() ? this.renderPCUI() : this.renderMobileUI()}\n {this.state.isShowSharedDialog && (\n \n \n \n )}\n {this.state.isFolderPermissionDialogOpen && (\n \n \n \n )}\n {this.state.isDeleteDialogShow &&\n \n \n \n }\n {this.state.isHistorySettingDialogShow && (\n \n \n \n )}\n {this.state.isAPITokenDialogShow && (\n \n \n \n )}\n {this.state.isRepoShareAdminDialogOpen && (\n \n \n \n )}\n {this.state.isChangePasswordDialogShow && (\n \n \n \n )}\n {this.state.isResetPasswordDialogShow && (\n \n \n \n )}\n {this.state.isOldFilesAutoDelDialogOpen && (\n \n \n \n )}\n\n \n );\n }\n}\n\nSharedRepoListItem.propTypes = propTypes;\n\nexport default SharedRepoListItem;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport SharedRepoListItem from './shared-repo-list-item';\nimport toaster from '../toast';\nimport LibsMobileThead from '../libs-mobile-thead';\nimport Loading from '../loading';\n\nconst propTypes = {\n libraryType: PropTypes.string,\n currentGroup: PropTypes.object,\n isShowTableThread: PropTypes.bool,\n sortBy: PropTypes.string,\n sortOrder: PropTypes.string,\n sortItems: PropTypes.func,\n repoList: PropTypes.array.isRequired,\n onItemUnshare: PropTypes.func.isRequired,\n onItemDelete: PropTypes.func,\n onItemDetails: PropTypes.func,\n onItemRename: PropTypes.func,\n hasNextPage: PropTypes.bool,\n onMonitorRepo: PropTypes.func,\n};\n\nclass SharedRepoListView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false,\n };\n }\n\n sortByName = (e) => {\n e.preventDefault();\n const sortBy = 'name';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n sortByTime = (e) => {\n e.preventDefault();\n const sortBy = 'time';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n sortBySize = (e) => {\n e.preventDefault();\n const sortBy = 'size';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n getSortMetaData = () => {\n return {\n sortByName: this.props.sortBy == 'name',\n sortByTime: this.props.sortBy == 'time',\n sortBySize: this.props.sortBy == 'size',\n sortIcon: this.props.sortOrder == 'asc' ? : \n };\n };\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n onItemRename = (repo, newName) => {\n let isDuplicated = this.props.repoList.some(item => {\n return item.name === newName;\n });\n if (isDuplicated) {\n let errMessage = gettext('The name \"{name}\" is already taken. Please choose a different name.');\n errMessage = errMessage.replace('{name}', Utils.HTMLescape(newName));\n toaster.danger(errMessage);\n return false;\n }\n this.props.onItemRename(repo, newName);\n };\n\n renderRepoListView = () => {\n return (\n \n {this.props.repoList.map(repo => {\n return (\n \n );\n })}\n \n );\n };\n\n renderPCUI = () => {\n let isShowTableThread = this.props.isShowTableThread !== undefined ? this.props.isShowTableThread : true;\n\n const { sortByName, sortByTime, sortBySize, sortIcon } = this.getSortMetaData();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.renderRepoListView()}\n \n
    {gettext('Library Type')}{gettext('Name')} {sortByName && sortIcon}{gettext('Actions')}{gettext('Size')} {sortBySize && sortIcon}{gettext('Last Update')} {sortByTime && sortIcon}{gettext('Owner')}
    \n );\n };\n\n renderMobileUI = () => {\n return (\n \n \n \n {this.renderRepoListView()}\n \n
    \n );\n };\n\n render() {\n const table = Utils.isDesktop() ? this.renderPCUI() : this.renderMobileUI();\n if (this.props.hasNextPage) {\n return (\n \n {table}\n \n \n );\n } else {\n return table;\n }\n }\n}\n\nSharedRepoListView.propTypes = propTypes;\n\nexport default SharedRepoListView;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport cookie from 'react-cookies';\nimport MediaQuery from 'react-responsive';\nimport { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext, canAddPublicRepo } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport Repo from '../../models/repo';\nimport toaster from '../../components/toast';\nimport Loading from '../../components/loading';\nimport EmptyTip from '../../components/empty-tip';\nimport ModalPortal from '../../components/modal-portal';\nimport CommonToolbar from '../../components/toolbar/common-toolbar';\nimport CreateRepoDialog from '../../components/dialog/create-repo-dialog';\nimport ShareRepoDialog from '../../components/dialog/share-repo-dialog';\nimport SharedRepoListView from '../../components/shared-repo-list-view/shared-repo-list-view';\nimport SortOptionsDialog from '../../components/dialog/sort-options';\n\nconst propTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n};\n\nclass PublicSharedView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true,\n errMessage: '',\n emptyTip: '',\n repoList: [],\n sortBy: cookie.load('seafile-repo-dir-sort-by') || 'name', // 'name' or 'time' or 'size'\n sortOrder: cookie.load('seafile-repo-dir-sort-order') || 'asc', // 'asc' or 'desc'\n isSortOptionsDialogOpen: false,\n libraryType: 'public',\n isCreateMenuShow: false,\n isCreateRepoDialogShow: false,\n isSelectRepoDialpgShow: false,\n };\n }\n\n componentDidMount() {\n seafileAPI.listRepos({type: 'public'}).then((res) => {\n let repoList = res.data.repos.map(item => {\n let repo = new Repo(item);\n return repo;\n });\n this.setState({\n isLoading: false,\n repoList: Utils.sortRepos(repoList, this.state.sortBy, this.state.sortOrder)\n });\n }).catch((error) => {\n this.setState({\n isLoading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n onCreateRepo = (repo) => {\n seafileAPI.createPublicRepo(repo).then(res => {\n let object = { // need modify api return value\n repo_id: res.data.id,\n repo_name: res.data.name,\n permission: res.data.permission,\n size: res.data.size,\n owner_name: res.data.owner_name,\n owner_email: res.data.owner,\n mtime: res.data.mtime,\n encrypted: res.data.encrypted,\n };\n let repo = new Repo(object);\n let repoList = this.addRepoItem(repo);\n this.setState({repoList: repoList});\n this.onCreateRepoToggle();\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onRepoSelectedHandler = (selectedRepoList) => {\n selectedRepoList.forEach(repo => {\n seafileAPI.selectOwnedRepoToPublic(repo.repo_id, {share_type: 'public', permission: repo.sharePermission}).then(() => {\n let repoList = this.addRepoItem(repo);\n this.setState({repoList: repoList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n });\n };\n\n onItemUnshare = (repo) => {\n seafileAPI.unshareRepo(repo.repo_id, {share_type: 'public'}).then(() => {\n let repoList = this.state.repoList.filter(item => {\n return item.repo_id !== repo.repo_id;\n });\n this.setState({repoList: repoList});\n let message = gettext('Successfully unshared {name}').replace('{name}', repo.repo_name);\n toaster.success(message);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n errMessage = gettext('Failed to unshare {name}').replace('{name}', repo.repo_name);\n }\n toaster(errMessage);\n });\n };\n\n onItemDelete = () => {\n // todo need to optimized\n };\n\n addRepoItem = (repo) => {\n let isExist = false;\n let repoIndex = 0;\n let repoList = this.state.repoList;\n for (let i = 0; i < repoList.length; i ++) {\n if (repo.repo_id === repoList[i].repo_id) {\n isExist = true;\n repoIndex = i;\n break;\n }\n }\n if (isExist) {\n this.state.repoList.splice(repoIndex, 1);\n }\n\n let newRepoList = this.state.repoList.map(item => {return item;});\n newRepoList.unshift(repo);\n return newRepoList;\n };\n\n onAddRepoToggle = () => {\n this.setState({isCreateMenuShow: !this.state.isCreateMenuShow});\n };\n\n onCreateRepoToggle = () => {\n this.setState({isCreateRepoDialogShow: !this.state.isCreateRepoDialogShow});\n };\n\n onSelectRepoToggle = () => {\n this.setState({isSelectRepoDialpgShow: !this.state.isSelectRepoDialpgShow});\n };\n\n sortItems = (sortBy, sortOrder) => {\n cookie.save('seafile-repo-dir-sort-by', sortBy);\n cookie.save('seafile-repo-dir-sort-order', sortOrder);\n this.setState({\n sortBy: sortBy,\n sortOrder: sortOrder,\n repoList: Utils.sortRepos(this.state.repoList, sortBy, sortOrder)\n });\n };\n\n toggleSortOptionsDialog = () => {\n this.setState({\n isSortOptionsDialogOpen: !this.state.isSortOptionsDialogOpen\n });\n };\n\n render() {\n let errMessage = this.state.errMessage;\n let emptyTip = (\n \n

    {gettext('No public libraries')}

    \n

    {gettext('No public libraries have been created yet. A public library is accessible by all users. You can create a public library by clicking the \"Add Library\" button in the menu bar.')}

    \n
    \n );\n return (\n \n
    \n {canAddPublicRepo &&\n
    \n \n
    \n \n \n \n {gettext('Add Library')}\n \n \n \n \n \n \n {gettext('Share existing libraries')}\n {gettext('New Library')}\n \n \n
    \n
    \n }\n \n
    \n
    \n
    \n
    \n

    {gettext('Shared with all')}

    \n {(!Utils.isDesktop() && this.state.repoList.length > 0) && }\n
    \n
    \n {this.state.isLoading && }\n {(!this.state.isLoading && errMessage) && errMessage}\n {(!this.state.isLoading && this.state.repoList.length === 0) && emptyTip}\n {(!this.state.isLoading && this.state.repoList.length > 0) &&\n \n }\n
    \n
    \n
    \n {this.state.isSortOptionsDialogOpen &&\n \n }\n {this.state.isCreateRepoDialogShow && (\n \n \n \n )}\n {this.state.isSelectRepoDialpgShow && (\n \n \n \n )}\n
    \n );\n }\n}\n\nPublicSharedView.propTypes = propTypes;\n\nexport default PublicSharedView;\n","import io from 'socket.io-client';\nimport { name, username, contactEmail, seafileCollabServer } from './constants';\n\nconst socket = (seafileCollabServer !== '') ? io(seafileCollabServer) : undefined;\n\nclass CollabServer {\n\n watchRepo(repoID, fn) {\n if (!socket) {\n return;\n }\n socket.emit('repo_update', {\n request: 'watch_update',\n repo_id: repoID,\n user: {\n name: name,\n username: username,\n contact_email: contactEmail,\n },\n });\n socket.on('repo_update', fn);\n }\n\n unwatchRepo(repoID, fn) {\n if (!socket) {\n return;\n }\n socket.emit('repo_update', {\n request: 'unwatch_update',\n repo_id: repoID,\n user: {\n name: name,\n username: username,\n contact_email: contactEmail,\n },\n });\n socket.off('repo_update', fn);\n }\n}\n\nconst collabServer = new CollabServer();\n\nexport default collabServer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalBody, Form } from 'reactstrap';\nimport { gettext, siteRoot, mediaUrl } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\n\nimport '../../css/lib-decrypt.css';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n onLibDecryptDialog: PropTypes.func.isRequired\n};\n\n\nclass LibDecryptDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n password: '',\n showError: false,\n };\n }\n\n handleSubmit = (e) => {\n let repoID = this.props.repoID;\n let password = this.state.password;\n seafileAPI.setRepoDecryptPassword(repoID, password).then(res => {\n this.props.onLibDecryptDialog();\n }).catch(res => {\n this.setState({\n showError: true\n });\n });\n\n e.preventDefault();\n };\n\n handleKeyDown = (e) => {\n if (e.key == 'Enter') {\n this.handleSubmit(e);\n }\n };\n\n handleChange = (e) => {\n this.setState({\n password: e.target.value,\n showError: false\n });\n };\n\n toggle = () => {\n window.location.href = siteRoot;\n };\n\n render() {\n return (\n \n \n \n
    \n \"\"\n

    {gettext('This library is password protected')}

    \n {this.state.showError &&\n

    {gettext('Wrong password')}

    \n }\n \n \n

    {'* '}{gettext('The password will be kept in the server for only 1 hour.')}

    \n
    \n
    \n
    \n );\n }\n}\n\nLibDecryptDialog.propTypes = propTypes;\n\nexport default LibDecryptDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\n\nconst propTypes = {\n currentMode: PropTypes.string.isRequired,\n switchViewMode: PropTypes.func.isRequired,\n isCustomPermission: PropTypes.bool,\n};\n\nclass ViewModeToolbar extends React.Component {\n\n static defaultProps = {\n isCustomPermission: false,\n };\n\n switchViewMode = (e) => {\n e.preventDefault();\n let id = e.target.id;\n if (id === this.props.currentMode) {\n return;\n }\n this.props.switchViewMode(id);\n };\n\n render() {\n let baseClass = 'btn btn-secondary btn-icon sf-view-mode-btn ';\n return (\n \n
    \n \n \n \n
    \n {!this.props.isCustomPermission && (\n
    \n \n
    \n )}\n
    \n );\n }\n}\n\nViewModeToolbar.propTypes = propTypes;\n\nexport default ViewModeToolbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter, Form, FormGroup, Label, Alert } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n fileType: PropTypes.string,\n parentPath: PropTypes.string.isRequired,\n onAddFile: PropTypes.func.isRequired,\n checkDuplicatedName: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired,\n};\n\nclass CreateFile extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n parentPath: '',\n childName: props.fileType || '',\n isMarkdownDraft: false,\n isSdocDraft: false,\n errMessage: '',\n isSubmitBtnActive: false,\n };\n this.newInput = React.createRef();\n }\n\n componentDidMount() {\n let parentPath = this.props.parentPath;\n if (parentPath[parentPath.length - 1] === '/') { // mainPanel\n this.setState({parentPath: parentPath});\n } else {\n this.setState({parentPath: parentPath + '/'}); // sidePanel\n }\n }\n\n handleChange = (e) => {\n if (!e.target.value.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n\n this.setState({\n childName: e.target.value,\n }) ;\n };\n\n handleSubmit = () => {\n if (!this.state.isSubmitBtnActive) {\n return;\n }\n\n let isDuplicated = this.checkDuplicatedName();\n let newName = this.state.childName;\n\n if (isDuplicated) {\n let errMessage = gettext('The name \"{name}\" is already taken. Please choose a different name.');\n errMessage = errMessage.replace('{name}', Utils.HTMLescape(newName));\n this.setState({errMessage: errMessage});\n } else {\n let path = this.state.parentPath + newName;\n const { isMarkdownDraft, isSdocDraft } = this.state;\n this.props.onAddFile(path, isMarkdownDraft, isSdocDraft);\n this.props.toggleDialog();\n }\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n handleCheck = () => {\n let pos = this.state.childName.lastIndexOf('.');\n\n if (this.state.isMarkdownDraft) {\n // from draft to not draft\n // case 1, normally, the file name is ended with `(draft)`, like `test(draft).md`\n // case 2, the file name is not ended with `(draft)`, the user has deleted some characters, like `test(dra.md`\n let p = this.state.childName.substring(pos-7, pos);\n let fileName = this.state.childName.substring(0, pos-7);\n let fileType = this.state.childName.substring(pos);\n if (p === '(draft)') {\n // remove `(draft)` from file name\n this.setState({\n childName: fileName + fileType,\n isMarkdownDraft: !this.state.isMarkdownDraft\n });\n } else {\n // don't change file name\n this.setState({\n isMarkdownDraft: !this.state.isMarkdownDraft\n });\n }\n }\n\n if (!this.state.isMarkdownDraft) {\n // from not draft to draft\n // case 1, test.md ===> test(draft).md\n // case 2, .md ===> (draft).md\n // case 3, no '.' in the file name, don't change the file name\n if (pos > 0) {\n let fileName = this.state.childName.substring(0, pos);\n let fileType = this.state.childName.substring(pos);\n this.setState({\n childName: fileName + '(draft)' + fileType,\n isMarkdownDraft: !this.state.isMarkdownDraft\n });\n } else if (pos === 0 ) {\n this.setState({\n childName: '(draft)' + this.state.childName,\n isMarkdownDraft: !this.state.isMarkdownDraft\n });\n } else {\n this.setState({\n isMarkdownDraft: !this.state.isMarkdownDraft\n });\n }\n }\n };\n\n checkDuplicatedName = () => {\n let isDuplicated = this.props.checkDuplicatedName(this.state.childName);\n return isDuplicated;\n };\n\n onAfterModelOpened = () => {\n if (!this.newInput.current) return;\n this.newInput.current.focus();\n this.newInput.current.setSelectionRange(0,0);\n };\n\n toggleMarkSdocDraft = (e) => {\n this.setState({\n isSdocDraft: e.target.checked\n });\n };\n\n render() {\n const { toggleDialog } = this.props;\n return (\n \n {gettext('New File')}\n \n
    \n \n \n \n \n {/*this.props.fileType == '.md' && isDocs && (\n \n \n \n )*/}\n {/*this.props.fileType == '.sdoc' && (\n \n \n \n )*/}\n
    \n {this.state.errMessage && {this.state.errMessage}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nCreateFile.propTypes = propTypes;\n\nexport default CreateFile;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\nimport { Utils } from '../../utils/utils';\nimport { enableSeadoc, gettext } from '../../utils/constants';\nimport ModalPortal from '../modal-portal';\nimport CreateFolder from '../../components/dialog/create-folder-dialog';\nimport CreateFile from '../../components/dialog/create-file-dialog';\nimport ShareDialog from '../../components/dialog/share-dialog';\nimport ViewModeToolbar from './view-mode-toolbar';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n repoName: PropTypes.string.isRequired,\n repoEncrypted: PropTypes.bool.isRequired,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n userPerm: PropTypes.string.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n showShareBtn: PropTypes.bool.isRequired,\n onAddFile: PropTypes.func.isRequired,\n onAddFolder: PropTypes.func.isRequired,\n onUploadFile: PropTypes.func.isRequired,\n onUploadFolder: PropTypes.func.isRequired,\n direntList: PropTypes.array.isRequired,\n currentMode: PropTypes.string.isRequired,\n switchViewMode: PropTypes.func.isRequired,\n};\n\nclass DirOperationToolbar extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n fileType: '.md',\n isCreateFileDialogShow: false,\n isCreateFolderDialogShow: false,\n isUploadMenuShow: false,\n isCreateMenuShow: false,\n isShareDialogShow: false,\n operationMenuStyle: '',\n isMobileOpMenuOpen: false\n };\n }\n\n componentDidMount() {\n document.addEventListener('click', this.hideOperationMenu);\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.hideOperationMenu);\n }\n\n toggleMobileOpMenu = () => {\n this.setState({isMobileOpMenuOpen: !this.state.isMobileOpMenuOpen});\n };\n\n hideOperationMenu = () => {\n this.setState({\n isUploadMenuShow: false,\n isCreateMenuShow: false,\n });\n };\n\n toggleOperationMenu = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n let targetRect = e.target.getBoundingClientRect();\n let left = targetRect.left;\n let top = targetRect.bottom;\n let style = {position: 'fixed', display: 'block', left: left, top: top};\n this.setState({operationMenuStyle: style});\n };\n\n onUploadClick = (e) => {\n this.toggleOperationMenu(e);\n this.setState({\n isUploadMenuShow: !this.state.isUploadMenuShow,\n isCreateMenuShow: false,\n });\n };\n\n onUploadFile = (e) => {\n this.setState({isUploadMenuShow: false});\n this.props.onUploadFile(e);\n };\n\n onUploadFolder = (e) => {\n this.setState({isUploadMenuShow: false});\n this.props.onUploadFolder(e);\n };\n\n onCreateClick = (e) => {\n this.toggleOperationMenu(e);\n this.setState({\n isCreateMenuShow: !this.state.isCreateMenuShow,\n isUploadMenuShow: false,\n });\n };\n\n onShareClick = () => {\n this.setState({\n isShareDialogShow: !this.state.isShareDialogShow\n });\n };\n\n onCreateFolderToggle = () => {\n this.setState({isCreateFolderDialogShow: !this.state.isCreateFolderDialogShow});\n };\n\n onCreateFileToggle = () => {\n this.setState({\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n fileType: ''\n });\n };\n\n onCreateMarkdownToggle = () => {\n this.setState({\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n fileType: '.md'\n });\n };\n\n onCreateExcelToggle = () => {\n this.setState({\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n fileType: '.xlsx'\n });\n };\n\n onCreatePPTToggle = () => {\n this.setState({\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n fileType: '.pptx'\n });\n };\n\n onCreateWordToggle = () => {\n this.setState({\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n fileType: '.docx'\n });\n };\n\n onCreateSeaDocToggle = () => {\n this.setState({\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n fileType: '.sdoc'\n });\n };\n\n onAddFolder = (dirPath) => {\n this.setState({isCreateFolderDialogShow: false});\n this.props.onAddFolder(dirPath);\n };\n\n checkDuplicatedName = (newName) => {\n let direntList = this.props.direntList;\n let isDuplicated = direntList.some(object => {\n return object.name === newName;\n });\n return isDuplicated;\n };\n\n render() {\n let { path, repoName, userPerm } = this.props;\n\n let itemType = path === '/' ? 'library' : 'dir';\n let itemName = path == '/' ? repoName : Utils.getFolderName(path);\n\n const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm);\n let canUpload = true;\n let canCreate = true;\n if (isCustomPermission) {\n const { permission } = customPermission;\n canUpload = permission.upload;\n canCreate = permission.create;\n }\n\n let content = null;\n if (Utils.isDesktop()) {\n let { showShareBtn } = this.props;\n content = (\n \n {canUpload && (\n \n {Utils.isSupportUploadFolder() ?\n \n \n {this.state.isUploadMenuShow && (\n
    \n \n \n
    \n )}\n
    \n :\n }\n
    \n )}\n {canCreate &&\n \n \n {this.state.isCreateMenuShow && (\n
    \n \n \n
    \n \n \n \n \n {enableSeadoc && }\n
    \n )}\n
    \n }\n {showShareBtn && }\n
    \n );\n } else {\n content = (\n \n \n \n {canUpload && (\n {gettext('Upload')}\n )}\n {canCreate && (\n \n {gettext('New Folder')}\n {gettext('New File')}\n \n )}\n \n \n );\n }\n\n return (\n \n {(userPerm === 'rw' || userPerm === 'admin' || userPerm === 'cloud-edit' || isCustomPermission) && (\n
    \n {content}\n
    \n )}\n {Utils.isDesktop() && }\n {this.state.isCreateFileDialogShow && (\n \n \n \n )}\n {this.state.isCreateFolderDialogShow && (\n \n \n \n )}\n {this.state.isShareDialogShow &&\n \n \n \n }\n
    \n );\n }\n}\n\nDirOperationToolbar.propTypes = propTypes;\n\nexport default DirOperationToolbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalFooter, ModalBody, Alert } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport FileChooser from '../file-chooser/file-chooser';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n dirent: PropTypes.object,\n selectedDirentList: PropTypes.array,\n isMutipleOperation: PropTypes.bool.isRequired,\n onItemMove: PropTypes.func,\n onItemsMove: PropTypes.func,\n onCancelMove: PropTypes.func.isRequired,\n repoEncrypted: PropTypes.bool.isRequired,\n};\n\n// need dirent file Path;\nclass MoveDirent extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n repo: { repo_id: this.props.repoID },\n selectedPath: this.props.path,\n errMessage: ''\n };\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n if (this.state.errMessage === nextState.errMessage) {\n return false;\n }\n return true;\n }\n\n handleSubmit = () => {\n if (this.props.isMutipleOperation) {\n this.moveItems();\n } else {\n this.moveItem();\n }\n };\n\n moveItems = () => {\n let { repoID } = this.props;\n let { repo, selectedPath } = this.state;\n let message = gettext('Invalid destination path');\n\n if (!repo || selectedPath === '') {\n this.setState({errMessage: message});\n return;\n }\n\n let selectedDirentList = this.props.selectedDirentList;\n let direntPaths = [];\n selectedDirentList.forEach(dirent => {\n let path = Utils.joinPath(this.props.path, dirent.name);\n direntPaths.push(path);\n });\n\n // move dirents to one of them. eg: A/B, A/C -> A/B\n if (direntPaths.some(direntPath => { return direntPath === selectedPath;})) {\n this.setState({errMessage: message});\n return;\n }\n\n // move dirents to current path\n if (selectedPath && selectedPath === this.props.path && (repo.repo_id === repoID)) {\n this.setState({errMessage: message});\n return;\n }\n\n // move dirents to one of their child. eg: A/B, A/D -> A/B/C\n let moveDirentPath = '';\n let isChildPath = direntPaths.some(direntPath => {\n let flag = selectedPath.length > direntPath.length && selectedPath.indexOf(direntPath) > -1;\n if (flag) {\n moveDirentPath = direntPath;\n }\n return flag;\n });\n\n if (isChildPath) {\n message = gettext('Can not move directory %(src)s to its subdirectory %(des)s');\n message = message.replace('%(src)s', moveDirentPath);\n message = message.replace('%(des)s', selectedPath);\n this.setState({errMessage: message});\n return;\n }\n\n this.props.onItemsMove(repo, selectedPath);\n this.toggle();\n };\n\n moveItem = () => {\n let { repoID } = this.props;\n let { repo, selectedPath } = this.state;\n let direntPath = Utils.joinPath(this.props.path, this.props.dirent.name);\n let message = gettext('Invalid destination path');\n\n if (!repo || (repo.repo_id === repoID && selectedPath === '')) {\n this.setState({errMessage: message});\n return;\n }\n\n // copy the dirent to itself. eg: A/B -> A/B\n if (selectedPath && direntPath === selectedPath) {\n this.setState({errMessage: message});\n return;\n }\n\n // copy the dirent to current path\n if (selectedPath && this.props.path === selectedPath && repo.repo_id === repoID) {\n this.setState({errMessage: message});\n return;\n }\n\n // copy the dirent to it's child. eg: A/B -> A/B/C\n if ( selectedPath && selectedPath.length > direntPath.length && selectedPath.indexOf(direntPath) > -1) {\n message = gettext('Can not move directory %(src)s to its subdirectory %(des)s');\n message = message.replace('%(src)s', direntPath);\n message = message.replace('%(des)s', selectedPath);\n this.setState({errMessage: message});\n return;\n }\n\n this.props.onItemMove(repo, this.props.dirent, selectedPath, this.props.path);\n this.toggle();\n };\n\n toggle = () => {\n this.props.onCancelMove();\n };\n\n onDirentItemClick = (repo, selectedPath) => {\n this.setState({\n repo: repo,\n selectedPath: selectedPath,\n errMessage: ''\n });\n };\n\n onRepoItemClick = (repo) => {\n this.setState({\n repo: repo,\n selectedPath: '/',\n errMessage: ''\n });\n };\n\n render() {\n let title = gettext('Move {placeholder} to');\n if (!this.props.isMutipleOperation) {\n title = title.replace('{placeholder}', '' + Utils.HTMLescape(this.props.dirent.name) + '');\n } else {\n title = gettext('Move selected item(s) to:');\n }\n let mode = this.props.repoEncrypted ? 'only_current_library':'current_repo_and_other_repos';\n const { dirent, selectedDirentList } = this.props;\n const movedDirent = dirent ? dirent : selectedDirentList[0];\n const { permission } = movedDirent;\n const { isCustomPermission } = Utils.getUserPermission(permission);\n if (isCustomPermission) {\n mode = 'only_current_library';\n }\n return (\n \n
    \n \n \n {this.state.errMessage && {this.state.errMessage}}\n \n \n \n \n \n
    \n );\n }\n}\n\nMoveDirent.propTypes = propTypes;\n\nexport default MoveDirent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalFooter, ModalBody, Alert } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport FileChooser from '../file-chooser/file-chooser';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n dirent: PropTypes.object,\n selectedDirentList: PropTypes.array,\n isMutipleOperation: PropTypes.bool.isRequired,\n onItemCopy: PropTypes.func,\n onItemsCopy: PropTypes.func,\n onCancelCopy: PropTypes.func.isRequired,\n repoEncrypted: PropTypes.bool.isRequired,\n};\n\n// need dirent file Path;\nclass CopyDirent extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n repo: { repo_id: this.props.repoID },\n selectedPath: this.props.path,\n errMessage: ''\n };\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n if (this.state.errMessage === nextState.errMessage) {\n return false;\n }\n return true;\n }\n\n handleSubmit = () => {\n if (this.props.isMutipleOperation) {\n this.copyItems();\n } else {\n this.copyItem();\n }\n };\n\n copyItems = () => {\n let { repo, selectedPath } = this.state;\n let message = gettext('Invalid destination path');\n\n if (!repo || selectedPath === '') {\n this.setState({errMessage: message});\n return;\n }\n\n let selectedDirentList = this.props.selectedDirentList;\n let direntPaths = [];\n selectedDirentList.forEach(dirent => {\n let path = Utils.joinPath(this.props.path, dirent.name);\n direntPaths.push(path);\n });\n\n // copy dirents to one of them. eg: A/B, A/C -> A/B\n if (direntPaths.some(direntPath => { return direntPath === selectedPath;})) {\n this.setState({errMessage: message});\n return;\n }\n\n // copy dirents to one of their child. eg: A/B, A/D -> A/B/C\n let copyDirentPath = '';\n let isChildPath = direntPaths.some(direntPath => {\n let flag = selectedPath.length > direntPath.length && selectedPath.indexOf(direntPath) > -1;\n if (flag) {\n copyDirentPath = direntPath;\n }\n return flag;\n });\n\n if (isChildPath) {\n message = gettext('Can not move directory %(src)s to its subdirectory %(des)s');\n message = message.replace('%(src)s', copyDirentPath);\n message = message.replace('%(des)s', selectedPath);\n this.setState({errMessage: message});\n return;\n }\n\n this.props.onItemsCopy(repo, selectedPath);\n this.toggle();\n };\n\n copyItem = () => {\n let { repo, repoID, selectedPath } = this.state;\n let direntPath = Utils.joinPath(this.props.path, this.props.dirent.name);\n let message = gettext('Invalid destination path');\n\n if (!repo || (repo.repo_id === repoID && selectedPath === '')) {\n this.setState({errMessage: message});\n return;\n }\n\n // copy the dirent to itself. eg: A/B -> A/B\n if (selectedPath && direntPath === selectedPath) {\n this.setState({errMessage: message});\n return;\n }\n\n // copy the dirent to it's child. eg: A/B -> A/B/C\n if ( selectedPath && selectedPath.length > direntPath.length && selectedPath.indexOf(direntPath) > -1) {\n message = gettext('Can not copy directory %(src)s to its subdirectory %(des)s');\n message = message.replace('%(src)s', direntPath);\n message = message.replace('%(des)s', selectedPath);\n this.setState({errMessage: message});\n return;\n }\n\n this.props.onItemCopy(repo, this.props.dirent, selectedPath, this.props.path);\n this.toggle();\n };\n\n toggle = () => {\n this.props.onCancelCopy();\n };\n\n onDirentItemClick = (repo, selectedPath) => {\n this.setState({\n repo: repo,\n selectedPath: selectedPath,\n errMessage: ''\n });\n };\n\n onRepoItemClick = (repo) => {\n this.setState({\n repo: repo,\n selectedPath: '/',\n errMessage: ''\n });\n };\n\n render() {\n let title = gettext('Copy {placeholder} to');\n if (!this.props.isMutipleOperation) {\n title = title.replace('{placeholder}', '' + Utils.HTMLescape(this.props.dirent.name) + '');\n } else {\n title = gettext('Copy selected item(s) to:');\n }\n let mode = this.props.repoEncrypted ? 'only_current_library':'current_repo_and_other_repos';\n return (\n \n
    \n \n \n {this.state.errMessage && {this.state.errMessage}}\n \n \n \n \n \n
    \n );\n }\n}\n\nCopyDirent.propTypes = propTypes;\n\nexport default CopyDirent;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, ModalHeader, ModalBody, ModalFooter, Input } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { TAG_COLORS } from '../../constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n onRepoTagCreated: PropTypes.func,\n toggleCancel: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired\n};\n\nclass CreateTagDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n tagName: '',\n tagColor: TAG_COLORS[0],\n newTag: {},\n errorMsg: '',\n };\n }\n\n inputNewName = (e) => {\n this.setState({\n tagName: e.target.value,\n });\n if (this.state.errorMsg) {\n this.setState({errorMsg: ''});\n }\n };\n\n selectTagcolor = (e) => {\n this.setState({\n tagColor: e.target.value,\n });\n };\n\n createTag = () => {\n let name = this.state.tagName;\n let color = this.state.tagColor;\n let repoID = this.props.repoID;\n seafileAPI.createRepoTag(repoID, name, color).then((res) => {\n let repoTagID = res.data.repo_tag.repo_tag_id;\n if (this.props.onRepoTagCreated) this.props.onRepoTagCreated(repoTagID);\n this.props.toggleCancel();\n }).catch((error) => {\n let errMessage;\n if (error.response.status === 500) {\n errMessage = gettext('Internal Server Error');\n } else if (error.response.status === 400) {\n errMessage = gettext('Tag \"{name}\" already exists.');\n errMessage = errMessage.replace('{name}', Utils.HTMLescape(name));\n }\n this.setState({errorMsg: errMessage});\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.createTag();\n }\n };\n\n render() {\n let canSave = this.state.tagName.trim() ? true : false;\n return (\n \n \n \n {gettext('New Tag')}\n \n \n
    \n
    \n \n \n
    {this.state.errorMsg}
    \n
    \n
    \n \n
    \n {TAG_COLORS.map((item, index)=>{\n return (\n
    \n \n
    \n );\n })\n }\n
    \n
    \n
    \n
    \n \n \n {canSave ?\n :\n \n }\n \n
    \n );\n }\n}\n\nCreateTagDialog.propTypes = propTypes;\n\nexport default CreateTagDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport RepoTag from '../../models/repo-tag';\nimport CreateTagDialog from './create-tag-dialog';\nimport toaster from '../toast';\nrequire('../../css/repo-tag.css');\n\nconst TagItemPropTypes = {\n repoID: PropTypes.string.isRequired,\n repoTag: PropTypes.object.isRequired,\n filePath: PropTypes.string.isRequired,\n fileTagList: PropTypes.array.isRequired,\n onFileTagChanged: PropTypes.func.isRequired,\n};\n\nclass TagItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isTagHighlighted: false\n };\n }\n\n onMouseEnter = () => {\n this.setState({\n isTagHighlighted: true\n });\n };\n\n onMouseLeave = () => {\n this.setState({\n isTagHighlighted: false\n });\n };\n\n getRepoTagIdList = () => {\n let repoTagIdList = [];\n let fileTagList = this.props.fileTagList || [];\n repoTagIdList = fileTagList.map((fileTag) => fileTag.repo_tag_id);\n return repoTagIdList;\n };\n\n onEditFileTag = () => {\n let { repoID, repoTag, filePath } = this.props;\n let repoTagIdList = this.getRepoTagIdList();\n if (repoTagIdList.indexOf(repoTag.id) === -1) {\n let id = repoTag.id;\n seafileAPI.addFileTag(repoID, filePath, id).then(() => {\n repoTagIdList = this.getRepoTagIdList();\n this.props.onFileTagChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n let fileTag = null;\n let fileTagList = this.props.fileTagList;\n for(let i = 0; i < fileTagList.length; i++) {\n if (fileTagList[i].repo_tag_id === repoTag.id) {\n fileTag = fileTagList[i];\n break;\n }\n }\n seafileAPI.deleteFileTag(repoID, fileTag.id).then(() => {\n repoTagIdList = this.getRepoTagIdList();\n this.props.onFileTagChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n render() {\n const { isTagHighlighted } = this.state;\n const { repoTag } = this.props;\n const repoTagIdList = this.getRepoTagIdList();\n const isTagSelected = repoTagIdList.indexOf(repoTag.id) != -1;\n return (\n \n
    \n \n {repoTag.name}\n
    \n {isTagSelected && }\n \n );\n }\n\n}\n\nTagItem.propTypes = TagItemPropTypes;\n\nconst TagListPropTypes = {\n repoID: PropTypes.string.isRequired,\n filePath: PropTypes.string.isRequired,\n fileTagList: PropTypes.array.isRequired,\n onFileTagChanged: PropTypes.func.isRequired,\n toggleCancel: PropTypes.func.isRequired,\n createNewTag: PropTypes.func.isRequired,\n};\n\nclass TagList extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n repotagList: [],\n };\n }\n\n componentDidMount() {\n this.getRepoTagList();\n }\n\n getRepoTagList = () => {\n let repoID = this.props.repoID;\n seafileAPI.listRepoTags(repoID).then(res => {\n let repotagList = [];\n res.data.repo_tags.forEach(item => {\n let repoTag = new RepoTag(item);\n repotagList.push(repoTag);\n });\n this.setState({repotagList: repotagList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n {gettext('Select Tags')}\n \n
      \n {this.state.repotagList.map((repoTag) => {\n return (\n \n );\n })}\n
    \n \n \n {gettext('Create a new tag')}\n \n
    \n \n \n \n
    \n );\n }\n}\n\nTagList.propTypes = TagListPropTypes;\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n filePath: PropTypes.string.isRequired,\n fileTagList: PropTypes.array.isRequired,\n toggleCancel: PropTypes.func.isRequired,\n onFileTagChanged: PropTypes.func.isRequired,\n};\n\nclass EditFileTagDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isCreateRepoTagShow: false,\n isListRepoTagShow: true,\n };\n }\n\n createNewTag = () => {\n this.setState({\n isCreateRepoTagShow: !this.state.isCreateRepoTagShow,\n isListRepoTagShow: !this.state.isListRepoTagShow,\n });\n };\n\n onRepoTagCreated = (repoTagID) => {\n let {repoID, filePath} = this.props;\n seafileAPI.addFileTag(repoID, filePath, repoTagID).then(() => {\n this.props.onFileTagChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n {this.state.isListRepoTagShow &&\n \n }\n {this.state.isCreateRepoTagShow &&\n \n }\n \n );\n }\n}\n\nEditFileTagDialog.propTypes = propTypes;\n\nexport default EditFileTagDialog;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter, Alert } from 'reactstrap';\n\nconst propTypes = {\n onRename: PropTypes.func.isRequired,\n toggleCancel: PropTypes.func.isRequired,\n checkDuplicatedName: PropTypes.func.isRequired,\n dirent: PropTypes.object,\n};\n\nclass Rename extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n newName: '',\n errMessage: '',\n isSubmitBtnActive: false,\n };\n this.newInput = React.createRef();\n }\n\n UNSAFE_componentWillMount() {\n this.setState({newName: this.props.dirent.name});\n }\n\n componentDidMount() {\n let { dirent } = this.props;\n this.changeState(dirent);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.changeState(nextProps.dirent);\n }\n\n handleChange = (e) => {\n if (!e.target.value.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n\n this.setState({newName: e.target.value});\n };\n\n handleSubmit = () => {\n let { isValid, errMessage } = this.validateInput();\n if (!isValid) {\n this.setState({errMessage : errMessage});\n } else {\n let isDuplicated = this.checkDuplicatedName();\n if (isDuplicated) {\n let errMessage = gettext('The name \"{name}\" is already taken. Please choose a different name.');\n errMessage = errMessage.replace('{name}', Utils.HTMLescape(this.state.newName));\n this.setState({errMessage: errMessage});\n } else {\n this.props.onRename(this.state.newName);\n this.props.toggleCancel();\n }\n }\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n }\n };\n\n toggle = () => {\n this.props.toggleCancel();\n };\n\n changeState = (dirent) => {\n let name = dirent.name;\n this.setState({newName: name});\n };\n\n validateInput = () => {\n let newName = this.state.newName.trim();\n let isValid = true;\n let errMessage = '';\n if (!newName) {\n isValid = false;\n errMessage = gettext('Name is required.');\n return { isValid, errMessage };\n }\n\n if (newName.indexOf('/') > -1) {\n isValid = false;\n errMessage = gettext('Name should not include ' + '\\'/\\'' + '.');\n return { isValid, errMessage };\n }\n\n return { isValid, errMessage };\n };\n\n checkDuplicatedName = () => {\n let isDuplicated = this.props.checkDuplicatedName(this.state.newName);\n return isDuplicated;\n };\n\n onAfterModelOpened = () => {\n if (!this.newInput.current) return;\n this.newInput.current.focus();\n\n let { dirent } = this.props;\n let type = dirent.type;\n if (type === 'file') {\n var endIndex = dirent.name.lastIndexOf('.md');\n this.newInput.current.setSelectionRange(0, endIndex, 'forward');\n } else {\n this.newInput.current.setSelectionRange(0, -1);\n }\n };\n\n render() {\n let type = this.props.dirent.type;\n return (\n \n {type === 'file' ? gettext('Rename File') : gettext('Rename Folder') }\n \n

    {type === 'file' ? gettext('New file name'): gettext('New folder name')}

    \n \n {this.state.errMessage && {this.state.errMessage}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nRename.propTypes = propTypes;\n\nexport default Rename;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, ButtonGroup } from 'reactstrap';\nimport { gettext, siteRoot, name, fileServerRoot, useGoFileserver } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport URLDecorator from '../../utils/url-decorator';\nimport MoveDirentDialog from '../dialog/move-dirent-dialog';\nimport CopyDirentDialog from '../dialog/copy-dirent-dialog';\nimport ShareDialog from '../dialog/share-dialog';\nimport EditFileTagDialog from '../dialog/edit-filetag-dialog';\nimport ZipDownloadDialog from '../dialog/zip-download-dialog';\nimport Rename from '../dialog/rename-dirent';\nimport LibSubFolderPermissionDialog from '../dialog/lib-sub-folder-permission-dialog';\nimport ViewModeToolbar from './view-mode-toolbar';\n\nimport ModalPortal from '../modal-portal';\nimport ItemDropdownMenu from '../dropdown-menu/item-dropdown-menu';\nimport toaster from '../toast';\n\nimport '../../css/dirents-menu.css';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n userPerm: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n repoEncrypted: PropTypes.bool.isRequired,\n selectedDirentList: PropTypes.array.isRequired,\n onItemsMove: PropTypes.func.isRequired,\n onItemsCopy: PropTypes.func.isRequired,\n onItemsDelete: PropTypes.func.isRequired,\n isRepoOwner: PropTypes.bool.isRequired,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n currentRepoInfo: PropTypes.object.isRequired,\n onFilesTagChanged: PropTypes.func.isRequired,\n unSelectDirent: PropTypes.func.isRequired,\n updateDirent: PropTypes.func.isRequired,\n currentMode: PropTypes.string.isRequired,\n switchViewMode: PropTypes.func.isRequired,\n direntList: PropTypes.array.isRequired,\n onItemRename: PropTypes.func.isRequired,\n showDirentDetail: PropTypes.func.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n};\n\nclass MultipleDirOperationToolbar extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isZipDialogOpen: false,\n isMoveDialogShow: false,\n isCopyDialogShow: false,\n isMutipleOperation: true,\n showLibContentViewDialogs: false,\n showShareDialog: false,\n showEditFileTagDialog: false,\n fileTagList: [],\n multiFileTagList: [],\n isRenameDialogOpen: false,\n isPermissionDialogOpen: false\n };\n }\n\n onMoveToggle = () => {\n this.setState({isMoveDialogShow: !this.state.isMoveDialogShow});\n };\n\n onCopyToggle = () => {\n this.setState({isCopyDialogShow: !this.state.isCopyDialogShow});\n };\n\n onItemsDelete = () => {\n this.props.onItemsDelete();\n };\n\n onItemsDownload = () => {\n let { path, repoID, selectedDirentList } = this.props;\n if (selectedDirentList.length) {\n if (selectedDirentList.length === 1 && !selectedDirentList[0].isDir()) {\n let direntPath = Utils.joinPath(path, selectedDirentList[0].name);\n let url = URLDecorator.getUrl({type: 'download_file_url', repoID: repoID, filePath: direntPath});\n location.href= url;\n return;\n }\n if (!useGoFileserver) {\n this.setState({\n isZipDialogOpen: true\n });\n } else {\n const target = this.props.selectedDirentList.map(dirent => dirent.name);\n seafileAPI.zipDownload(repoID, path, target).then((res) => {\n const zipToken = res.data['zip_token'];\n location.href = `${fileServerRoot}zip/${zipToken}`;\n }).catch((error) => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({\n isLoading: false,\n errorMsg: errorMsg\n });\n });\n }\n }\n };\n\n closeZipDialog = () => {\n this.setState({\n isZipDialogOpen: false\n });\n };\n\n checkDuplicatedName = (newName) => {\n return Utils.checkDuplicatedNameInList(this.props.direntList, newName);\n };\n\n onItemRename = (newName) => {\n const dirent = this.props.selectedDirentList[0];\n this.props.onItemRename(dirent, newName);\n };\n\n onPermissionItem = () => {\n this.setState({\n showLibContentViewDialogs: !this.state.showLibContentViewDialogs,\n isPermissionDialogOpen: !this.state.isPermissionDialogOpen\n });\n };\n\n onMarkAsDraft = (dirent) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(dirent);\n seafileAPI.sdocMarkAsDraft(repoID, filePath).then((res) => {\n this.props.updateDirent(dirent, 'is_sdoc_draft', true);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onUnmarkAsDraft = (dirent) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(dirent);\n seafileAPI.sdocUnmarkAsDraft(repoID, filePath).then((res) => {\n this.props.updateDirent(dirent, 'is_sdoc_draft', false);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onStartRevise = (dirent) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(dirent);\n seafileAPI.sdocStartRevise(repoID, filePath).then((res) => {\n let url = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(res.data.file_path);\n window.open(url);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n getDirentMenuList = (dirent) => {\n const isRepoOwner = this.props.isRepoOwner;\n const currentRepoInfo = this.props.currentRepoInfo;\n const isContextmenu = true;\n let opList = Utils.getDirentOperationList(isRepoOwner, currentRepoInfo, dirent, isContextmenu);\n const list = ['Move', 'Copy', 'Delete', 'Download'];\n if (dirent.type == 'dir') {\n opList = opList.filter((item, index) => {\n return list.indexOf(item.key) == -1 && item != 'Divider';\n });\n } else {\n opList = opList.filter((item, index) => {\n return list.indexOf(item.key) == -1;\n });\n }\n return opList;\n };\n\n onMenuItemClick = (operation) => {\n const dirents = this.props.selectedDirentList;\n const dirent = dirents[0];\n switch (operation) {\n case 'Share':\n this.setState({\n showLibContentViewDialogs: true,\n showShareDialog: true,\n });\n break;\n case 'Rename':\n this.setState({\n showLibContentViewDialogs: true,\n isRenameDialogOpen: true\n });\n break;\n case 'Permission':\n this.onPermissionItem();\n break;\n case 'Tags':\n this.listFileTags(dirent);\n break;\n case 'Lock':\n this.lockFile(dirent);\n break;\n case 'Unlock':\n this.unlockFile(dirent);\n break;\n case 'Mark as draft':\n this.onMarkAsDraft(dirent);\n break;\n case 'Unmark as draft':\n this.onUnmarkAsDraft(dirent);\n break;\n case 'History':\n this.onHistory(dirent);\n break;\n case 'Access Log':\n this.onAccessLog(dirent);\n break;\n case 'Properties':\n this.props.showDirentDetail('info');\n break;\n case 'Open via Client':\n this.onOpenViaClient(dirent);\n break;\n default:\n break;\n }\n };\n\n lockFile = (dirent) => {\n const filePath = this.getDirentPath(dirent);\n seafileAPI.lockfile(this.props.repoID, filePath).then((res) => {\n if (res.data.is_locked) {\n this.props.updateDirent(dirent, 'is_locked', true);\n this.props.updateDirent(dirent, 'locked_by_me', true);\n this.props.updateDirent(dirent, 'lock_owner_name', name);\n this.props.unSelectDirent();\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n unlockFile = (dirent) => {\n const filePath = this.getDirentPath(dirent);\n seafileAPI.unlockfile(this.props.repoID, filePath).then((res) => {\n if (!res.data.is_locked) {\n this.props.updateDirent(dirent, 'is_locked', false);\n this.props.updateDirent(dirent, 'locked_by_me', false);\n this.props.updateDirent(dirent, 'lock_owner_name', '');\n this.props.unSelectDirent();\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onOpenViaClient = (dirent) => {\n const filePath = this.getDirentPath(dirent);\n let url = URLDecorator.getUrl({\n type: 'open_via_client',\n repoID: this.props.repoID,\n filePath: filePath\n });\n location.href = url;\n };\n\n onHistory = (dirent) => {\n let filePath = this.getDirentPath(dirent);\n let url = URLDecorator.getUrl({\n type: 'file_revisions',\n repoID: this.props.repoID,\n filePath: filePath\n });\n location.href = url;\n };\n\n onAccessLog = (dirent) => {\n let filePath = this.getDirentPath(dirent);\n let path = siteRoot + 'repo/file-access/' + this.props.repoID + '/?p=' + encodeURIComponent(filePath) ;\n window.open(path);\n };\n\n toggleCancel = () => {\n this.setState({\n showLibContentViewDialogs: false,\n showShareDialog: false,\n showEditFileTagDialog: false,\n isRenameDialogOpen: false,\n isPermissionDialogOpen: false,\n });\n };\n\n listFileTags = (dirent) => {\n let filePath = this.getDirentPath(dirent);\n seafileAPI.listFileTags(this.props.repoID, filePath).then(res => {\n let fileTagList = res.data.file_tags;\n for (let i = 0, length = fileTagList.length; i < length; i++) {\n fileTagList[i].id = fileTagList[i].file_tag_id;\n }\n this.setState({\n fileTagList: fileTagList,\n showLibContentViewDialogs: true,\n showEditFileTagDialog: true,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onMenuFileTagChanged = () => {\n this.listFileTags(this.props.selectedDirentList[0]);\n let length = this.props.selectedDirentList.length;\n for (let i = 0; i < length; i++) {\n const dirent = this.props.selectedDirentList[i];\n const direntPath = this.getDirentPath(dirent);\n this.props.onFilesTagChanged(dirent, direntPath);\n }\n };\n\n getDirentPath = (dirent) => {\n if (dirent) return Utils.joinPath(this.props.path, dirent.name);\n };\n\n render() {\n\n const { repoID, userPerm } = this.props;\n const dirent = this.props.selectedDirentList[0];\n const direntPath = this.getDirentPath(dirent);\n\n const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm);\n let canDelete = true;\n let canDownload = true;\n let canCopy = true;\n let canModify = true;\n if (isCustomPermission) {\n const { permission } = customPermission;\n canDelete = permission.delete;\n canDownload = permission.download;\n canCopy = permission.copy;\n canModify = permission.modify;\n }\n\n return (\n \n
    \n
    \n \n {(userPerm === 'rw' || userPerm === 'admin' || isCustomPermission) && (\n \n {canModify && }\n {canCopy && }\n {canDelete && }\n {canDownload && }\n \n )}\n {userPerm === 'cloud-edit' && (\n \n {canModify && }\n {canCopy && }\n {canDelete && }\n \n )}\n {userPerm === 'r' && (\n \n \n \n \n )}\n {this.props.selectedDirentList.length === 1 &&\n \n }\n \n
    \n
    \n {Utils.isDesktop() && }\n {this.state.isMoveDialogShow &&\n \n }\n {this.state.isCopyDialogShow &&\n \n }\n {this.state.isZipDialogOpen &&\n \n dirent.name)}\n toggleDialog={this.closeZipDialog}\n />\n \n }\n {this.state.showLibContentViewDialogs && (\n \n {this.state.showShareDialog &&\n \n \n \n }\n {this.state.isRenameDialogOpen &&\n \n \n \n }\n {this.state.isPermissionDialogOpen &&\n \n \n \n }\n {this.state.showEditFileTagDialog &&\n \n \n \n }\n \n )}\n
    \n );\n }\n}\n\nMultipleDirOperationToolbar.propTypes = propTypes;\n\nexport default MultipleDirOperationToolbar;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { DropdownToggle, Dropdown, DropdownMenu, DropdownItem, Tooltip} from 'reactstrap';\nimport { gettext, siteRoot, isDocs } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\nimport ModalPotal from '../modal-portal';\nimport ShareDialog from '../dialog/share-dialog';\nimport EditFileTagDialog from '../dialog/edit-filetag-dialog';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n userPerm: PropTypes.string.isRequired,\n repoEncrypted: PropTypes.bool.isRequired,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n filePermission: PropTypes.string,\n isDraft: PropTypes.bool.isRequired,\n hasDraft: PropTypes.bool.isRequired,\n fileTags: PropTypes.array.isRequired,\n onFileTagChanged: PropTypes.func.isRequired,\n showShareBtn: PropTypes.bool.isRequired,\n dirent: PropTypes.object.isRequired,\n};\n\nclass ViewFileToolbar extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isDraftMessageShow: false,\n isMoreMenuShow: false,\n isShareDialogShow: false,\n isEditTagDialogShow: false,\n };\n }\n\n onEditClick = (e) => {\n e.preventDefault();\n let { path, repoID } = this.props;\n let url = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(path) + '?mode=edit';\n window.open(url);\n };\n\n onNewDraft = (e) => {\n e.preventDefault();\n let { path, repoID } = this.props;\n seafileAPI.createDraft(repoID, path).then(res => {\n window.location.href = siteRoot + 'lib/' + res.data.origin_repo_id + '/file' + res.data.draft_file_path + '?mode=edit';\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onDraftHover = () => {\n this.setState({isDraftMessageShow: !this.state.isDraftMessageShow});\n };\n\n toggleMore = () => {\n this.setState({isMoreMenuShow: !this.state.isMoreMenuShow});\n };\n\n onShareToggle = () => {\n this.setState({isShareDialogShow: !this.state.isShareDialogShow});\n };\n\n onEditFileTagToggle = () => {\n this.setState({isEditTagDialogShow: !this.state.isEditTagDialogShow});\n };\n\n onHistoryClick = () => {\n let historyUrl = siteRoot + 'repo/file_revisions/' + this.props.repoID + '/?p=' + Utils.encodePath(this.props.path);\n location.href = historyUrl;\n };\n\n render() {\n let { filePermission } = this.props;\n return (\n \n
    \n {((filePermission === 'rw' || filePermission === 'cloud-edit') && !this.props.hasDraft) && (\n \n \n \n )}\n {(filePermission === 'rw' && !this.props.isDraft && !this.props.hasDraft && isDocs) && (\n \n \n {gettext('Create a draft from this file, instead of editing it directly.')}\n \n )}\n {filePermission === 'rw' && (\n \n \n {gettext('More')}\n \n \n {this.props.showShareBtn &&\n {gettext('Share')}\n }\n {gettext('Tags')}\n {gettext('History')}\n \n \n )}\n
    \n {this.state.isShareDialogShow && (\n \n \n \n )}\n {this.state.isEditTagDialogShow && (\n \n \n \n )}\n
    \n );\n }\n}\n\nViewFileToolbar.propTypes = propTypes;\n\nexport default ViewFileToolbar;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport CommonToolbar from '../../components/toolbar/common-toolbar';\nimport ViewModeToolbar from '../../components/toolbar/view-mode-toolbar';\nimport DirOperationToolBar from '../../components/toolbar/dir-operation-toolbar';\nimport MultipleDirOperationToolbar from '../../components/toolbar/multiple-dir-operation-toolbar';\nimport ViewFileToolbar from '../../components/toolbar/view-file-toolbar';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n isViewFile: PropTypes.bool.isRequired,\n filePermission: PropTypes.string,\n isDraft: PropTypes.bool.isRequired,\n hasDraft: PropTypes.bool.isRequired,\n fileTags: PropTypes.array.isRequired,\n onFileTagChanged: PropTypes.func.isRequired, // for file-view-toolbar\n // side-panel\n onSideNavMenuClick: PropTypes.func.isRequired,\n // mutiple-dir\n isDirentSelected: PropTypes.bool.isRequired,\n repoID: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n selectedDirentList: PropTypes.array.isRequired,\n onItemsMove: PropTypes.func.isRequired,\n onItemsCopy: PropTypes.func.isRequired,\n onItemsDelete: PropTypes.func.isRequired,\n // dir\n direntList: PropTypes.array.isRequired,\n repoName: PropTypes.string.isRequired,\n repoEncrypted: PropTypes.bool.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n userPerm: PropTypes.string.isRequired,\n showShareBtn: PropTypes.bool.isRequired,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n onAddFile: PropTypes.func.isRequired,\n onAddFolder: PropTypes.func.isRequired,\n onUploadFile: PropTypes.func.isRequired,\n onUploadFolder: PropTypes.func.isRequired,\n // view-mode\n currentMode: PropTypes.string.isRequired,\n switchViewMode: PropTypes.func.isRequired,\n // search\n onSearchedClick: PropTypes.func.isRequired,\n isRepoOwner: PropTypes.bool.isRequired,\n // selected menu\n onFilesTagChanged: PropTypes.func.isRequired, // for mutiple select toolbar\n updateDirent: PropTypes.func.isRequired,\n unSelectDirent: PropTypes.func,\n currentRepoInfo: PropTypes.object,\n onItemRename: PropTypes.func,\n showDirentDetail: PropTypes.func,\n};\n\nclass LibContentToolbar extends React.Component {\n\n render() {\n\n const { userPerm } = this.props;\n const { isCustomPermission } = Utils.getUserPermission(userPerm);\n\n if (this.props.isViewFile) {\n return (\n \n
    \n \n \n \n
    \n \n
    \n );\n }\n\n return (\n \n
    \n \n {this.props.isDirentSelected ?\n :\n \n }\n
    \n \n
    \n );\n }\n}\n\nLibContentToolbar.propTypes = propTypes;\n\nexport default LibContentToolbar;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { UncontrolledTooltip } from 'reactstrap';\nimport { siteRoot, gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport { InternalLinkOperation } from '../operations';\n\nconst propTypes = {\n repoName: PropTypes.string.isRequired,\n currentPath: PropTypes.string.isRequired,\n onPathClick: PropTypes.func.isRequired,\n onTabNavClick: PropTypes.func,\n pathPrefix: PropTypes.array,\n repoID: PropTypes.string.isRequired,\n isViewFile: PropTypes.bool,\n fileTags: PropTypes.array.isRequired,\n};\n\nclass DirPath extends React.Component {\n\n onPathClick = (e) => {\n let path = Utils.getEventData(e, 'path');\n this.props.onPathClick(path);\n };\n\n onTabNavClick = (e, tabName, id) => {\n if (window.uploader &&\n window.uploader.isUploadProgressDialogShow &&\n window.uploader.totalProgress !== 100) {\n if (!window.confirm(gettext('A file is being uploaded. Are you sure you want to leave this page?'))) {\n e.preventDefault();\n return false;\n }\n window.uploader.isUploadProgressDialogShow = false;\n }\n this.props.onTabNavClick(tabName, id);\n };\n\n turnPathToLink = (path) => {\n path = path[path.length - 1] === '/' ? path.slice(0, path.length - 1) : path;\n let pathList = path.split('/');\n let nodePath = '';\n let pathElem = pathList.map((item, index) => {\n if (item === '') {\n return null;\n }\n if (index === (pathList.length - 1)) {\n return (\n \n /\n {item}\n \n );\n } else {\n nodePath += '/' + item;\n return (\n \n /\n {item}\n \n );\n }\n });\n return pathElem;\n };\n\n render() {\n let { currentPath, repoName, fileTags } = this.props;\n let pathElem = this.turnPathToLink(currentPath);\n\n let tagTitle = '';\n if (fileTags.length > 0) {\n fileTags.forEach(item => {\n tagTitle += item.name + ' ';\n });\n }\n\n return (\n
    \n {this.props.pathPrefix && this.props.pathPrefix.map((item, index) => {\n return (\n \n this.onTabNavClick(e, item.name, item.id)}>{gettext(item.showName)}\n /\n \n );\n })}\n {this.props.pathPrefix && this.props.pathPrefix.length === 0 && (\n \n this.onTabNavClick(e, 'my-libs')}>{gettext('Libraries')}\n /\n \n )}\n {!this.props.pathPrefix && (\n \n this.onTabNavClick(e, 'my-libs')}>{gettext('Libraries')}\n /\n \n )}\n {(currentPath === '/' || currentPath === '') ?\n {repoName}:\n {repoName}\n }\n {pathElem}\n {this.props.isViewFile && (\n \n )}\n {(this.props.isViewFile && fileTags.length !== 0) &&\n \n {fileTags.map((fileTag, index) => {\n return ();\n })}\n \n {tagTitle}\n \n \n }\n
    \n );\n }\n}\n\nDirPath.propTypes = propTypes;\n\nexport default DirPath;\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Popover, PopoverBody } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport { TAG_COLORS } from '../../constants';\nimport toaster from '../toast';\n\nimport '../../css/repo-tag.css';\n\nconst tagColorPropTypes = {\n tag: PropTypes.object.isRequired,\n repoID: PropTypes.string.isRequired\n};\n\nclass TagColor extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n tagColor: this.props.tag.color,\n isPopoverOpen: false\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.tag.color !== this.props.tag.color) {\n this.setState({\n tagColor: nextProps.tag.color,\n });\n }\n }\n\n togglePopover = () => {\n this.setState({\n isPopoverOpen: !this.state.isPopoverOpen\n });\n };\n\n selectTagColor = (e) => {\n const newColor = e.target.value;\n const { repoID, tag } = this.props;\n const { id, name } = tag;\n seafileAPI.updateRepoTag(repoID, id, name, newColor).then(() => {\n this.setState({\n tagColor: newColor,\n isPopoverOpen: !this.state.isPopoverOpen\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { isPopoverOpen, tagColor } = this.state;\n const { tag } = this.props;\n const { id, color } = tag;\n\n let colorList = [...TAG_COLORS];\n // for color from previous color options\n if (colorList.indexOf(color) == -1) {\n colorList.unshift(color);\n }\n\n return (\n
    \n \n \n \n \n \n
    \n {colorList.map((item, index)=>{\n return (\n
    \n \n
    \n );\n })\n }\n
    \n
    \n \n
    \n );\n }\n}\n\nTagColor.propTypes = tagColorPropTypes;\n\nexport default TagColor;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\n\nimport '../../css/repo-tag.css';\n\nconst tagNamePropTypes = {\n tag: PropTypes.object.isRequired,\n repoID: PropTypes.string.isRequired\n};\n\nclass TagName extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n tagName: this.props.tag.name,\n isEditing: false\n };\n this.input = React.createRef();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.tag.name !== this.props.tag.name) {\n this.setState({\n tagName: nextProps.tag.name,\n });\n }\n }\n\n toggleMode = () => {\n this.setState({\n isEditing: !this.state.isEditing\n }, () => {\n if (this.state.isEditing) {\n this.input.current.focus();\n }\n });\n };\n\n updateTagName = (e) => {\n const newName = e.target.value;\n const { repoID, tag } = this.props;\n const { id, color } = tag;\n seafileAPI.updateRepoTag(repoID, id, newName, color).then(() => {\n this.setState({\n tagName: newName\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onInputKeyDown = (e) => {\n if (e.key == 'Enter') {\n this.toggleMode();\n this.updateTagName(e);\n }\n else if (e.key == 'Escape') {\n e.nativeEvent.stopImmediatePropagation();\n this.toggleMode();\n }\n };\n\n onInputBlur = (e) => {\n this.toggleMode();\n this.updateTagName(e);\n };\n\n render() {\n const { isEditing, tagName } = this.state;\n return (\n
    \n {isEditing ?\n :\n {tagName}\n }\n
    \n );\n }\n}\n\nTagName.propTypes = tagNamePropTypes;\n\nexport default TagName;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport TagColor from '../dialog/tag-color';\nimport TagName from '../dialog/tag-name';\n\nimport '../../css/repo-tag.css';\nimport './list-tag-popover.css';\n\nconst tagListItemPropTypes = {\n item: PropTypes.object.isRequired,\n repoID: PropTypes.string.isRequired,\n onDeleteTag : PropTypes.func.isRequired\n};\n\nclass TagListItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isTagHighlighted: false\n };\n }\n\n onMouseOver = () => {\n this.setState({\n isTagHighlighted: true\n });\n };\n\n onMouseOut = () => {\n this.setState({\n isTagHighlighted: false\n });\n };\n\n deleteTag = () => {\n this.props.onDeleteTag(this.props.item);\n };\n\n render() {\n const { isTagHighlighted } = this.state;\n const { item, repoID } = this.props;\n return (\n \n \n \n \n \n );\n }\n}\n\nTagListItem.propTypes = tagListItemPropTypes;\n\nexport default TagListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Popover, PopoverBody } from 'reactstrap';\nimport { TAG_COLORS } from '../../constants';\n\nimport '../../css/repo-tag.css';\n\nexport default class VirtualTagColor extends React.Component {\n\n static propTypes = {\n updateVirtualTag: PropTypes.func.isRequired,\n tag: PropTypes.object.isRequired,\n repoID: PropTypes.string.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n tagColor: this.props.tag.color,\n isPopoverOpen: false\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.tag.color !== this.props.tag.color) {\n this.setState({\n tagColor: nextProps.tag.color,\n });\n }\n }\n\n togglePopover = () => {\n this.setState({\n isPopoverOpen: !this.state.isPopoverOpen\n });\n };\n\n selectTagColor = (e) => {\n const newColor = e.target.value;\n this.props.updateVirtualTag(this.props.tag, { color: newColor });\n this.setState({\n tagColor: newColor,\n isPopoverOpen: !this.state.isPopoverOpen,\n });\n };\n\n render() {\n const { isPopoverOpen, tagColor } = this.state;\n const { tag } = this.props;\n const { id, color } = tag;\n\n let colorList = [...TAG_COLORS];\n // for color from previous color options\n if (colorList.indexOf(color) == -1) {\n colorList.unshift(color);\n }\n\n return (\n
    \n \n \n \n \n \n
    \n {colorList.map((item, index)=>{\n return (\n
    \n \n
    \n );\n })\n }\n
    \n
    \n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport '../../css/repo-tag.css';\n\nexport default class VirtualTagName extends React.Component {\n\n static propTypes = {\n updateVirtualTag: PropTypes.func.isRequired,\n tag: PropTypes.object.isRequired,\n repoID: PropTypes.string.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n tagName: this.props.tag.name,\n isEditing: true,\n };\n this.input = React.createRef();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.tag.name !== this.props.tag.name) {\n this.setState({\n tagName: nextProps.tag.name,\n });\n }\n }\n\n componentDidMount() {\n setTimeout(() => {\n this.input.current.focus();\n }, 1);\n }\n\n toggleMode = () => {\n this.setState({\n isEditing: !this.state.isEditing\n });\n };\n\n updateTagName = (e) => {\n const newName = e.target.value;\n this.props.updateVirtualTag(this.props.tag, { name: newName });\n this.setState({\n tagName: newName\n });\n };\n\n onInputKeyDown = (e) => {\n if (e.key == 'Enter') {\n this.toggleMode();\n this.updateTagName(e);\n }\n else if (e.key == 'Escape') {\n e.nativeEvent.stopImmediatePropagation();\n this.toggleMode();\n }\n };\n\n onInputBlur = (e) => {\n this.toggleMode();\n this.updateTagName(e);\n };\n\n render() {\n const { isEditing, tagName } = this.state;\n return (\n
    \n {isEditing ?\n :\n {tagName}\n }\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport VirtualTagColor from './virtual-tag-color';\nimport VirtualTagName from './virtual-tag-name';\n\nimport '../../css/repo-tag.css';\nimport './list-tag-popover.css';\n\nexport default class VirtualTagListItem extends React.Component {\n\n static propTypes = {\n item: PropTypes.object.isRequired,\n repoID: PropTypes.string.isRequired,\n deleteVirtualTag: PropTypes.func.isRequired,\n updateVirtualTag: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n isTagHighlighted: false\n };\n }\n\n onMouseOver = () => {\n this.setState({ isTagHighlighted: true });\n };\n\n onMouseOut = () => {\n this.setState({ isTagHighlighted: false });\n };\n\n deleteVirtualTag = () => {\n this.props.deleteVirtualTag(this.props.item);\n };\n\n render() {\n const { isTagHighlighted } = this.state;\n const { item, repoID } = this.props;\n return (\n \n \n \n \n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Tooltip } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport RepoTag from '../../models/repo-tag';\nimport toaster from '../toast';\n\nexport default class TagListFooter extends Component {\n\n static propTypes = {\n repoID: PropTypes.string.isRequired,\n toggle: PropTypes.func.isRequired,\n repotagList: PropTypes.array.isRequired,\n updateTags: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n showTooltip: false,\n };\n }\n\n toggleTooltip = () => {\n this.setState({showTooltip: !this.state.showTooltip});\n };\n\n onClickImport = () => {\n this.importOptionsInput.click();\n };\n\n importTagsInputChange = () => {\n if (!this.importOptionsInput.files || !this.importOptionsInput.files.length) {\n toaster.warning(gettext('Please select a file'));\n return;\n }\n const fileReader = new FileReader();\n fileReader.onload = this.onImportTags.bind(this);\n fileReader.onerror = this.onImportTagsError.bind(this);\n fileReader.readAsText(this.importOptionsInput.files[0]);\n };\n\n getValidTags = (tags) => {\n let validTags = [];\n let tagNameMap = {};\n this.props.repotagList.forEach(tag => tagNameMap[tag.name] = true);\n for (let i = 0; i < tags.length; i++) {\n if (!tags[i] || typeof tags[i] !== 'object' || !tags[i].name || !tags[i].color) {\n continue;\n }\n if (!tagNameMap[tags[i].name]) {\n validTags.push(\n {\n name: tags[i].name,\n color: tags[i].color,\n }\n );\n tagNameMap[tags[i].name] = true;\n }\n }\n return validTags;\n };\n\n onImportTags = (event) => {\n let tags = [];\n try {\n tags = JSON.parse(event.target.result); // handle JSON file format is error\n } catch (error) {\n toaster.danger(gettext('The imported tags are invalid'));\n return;\n }\n if (!Array.isArray(tags) || tags.length === 0) {\n toaster.danger(gettext('The imported tags are invalid'));\n return;\n }\n let validTags = this.getValidTags(tags);\n if (validTags.length === 0) {\n toaster.warning(gettext('The imported tag already exists'));\n return;\n }\n seafileAPI.createRepoTags(this.props.repoID, validTags).then((res) => {\n toaster.success(gettext('Tags imported'));\n let repotagList = [];\n res.data.repo_tags.forEach(item => {\n let repo_tag = new RepoTag(item);\n repotagList.push(repo_tag);\n });\n this.props.updateTags(repotagList);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n this.importOptionsInput.value = null;\n };\n\n onImportTagsError = () => {\n toaster.success(gettext('Failed to import tags. Please reupload.'));\n };\n\n getDownloadUrl = () => {\n const tags = this.props.repotagList.map(item => {\n return { name: item.name, color: item.color };\n });\n return `data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(tags))}`;\n };\n\n render() {\n return (\n
    \n \n \n {gettext('Use the import/export function to transfer tags quickly to another library. (The export is in JSON format.)')}\n \n this.importOptionsInput = ref}\n accept='.json'\n className=\"d-none\"\n onChange={this.importTagsInputChange}\n />\n {gettext('Import tags')}\n |\n \n {gettext('Export tags')}\n \n
    \n );\n }\n}\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 as uuidv4 } from 'uuid';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\nimport RepoTag from '../../models/repo-tag';\nimport TagListItem from './tag-list-item';\nimport VirtualTagListItem from './virtual-tag-list-item';\nimport TagListFooter from './tag-list-footer';\nimport { TAG_COLORS } from '../../constants/';\n\nimport '../../css/repo-tag.css';\nimport './list-tag-popover.css';\n\nexport default class ListTagPopover extends React.Component {\n\n static propTypes = {\n repoID: PropTypes.string.isRequired,\n onListTagCancel: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n repotagList: []\n };\n }\n\n componentDidMount() {\n this.loadTags();\n }\n\n loadTags = () => {\n seafileAPI.listRepoTags(this.props.repoID).then(res => {\n let repotagList = [];\n res.data.repo_tags.forEach(item => {\n let repo_tag = new RepoTag(item);\n repotagList.push(repo_tag);\n });\n this.setState({ repotagList });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateTags = (newRepotagList) => {\n this.setState({\n repotagList: [...this.state.repotagList, ...newRepotagList],\n });\n };\n\n onDeleteTag = (tag) => {\n const { repoID } = this.props;\n const { id: targetTagID } = tag;\n seafileAPI.deleteRepoTag(repoID, targetTagID).then((res) => {\n this.setState({\n repotagList: this.state.repotagList.filter(tag => tag.id != targetTagID)\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n createVirtualTag = (e) => {\n e.preventDefault();\n let { repotagList } = this.state;\n let virtual_repo_tag = {\n name: '',\n color: TAG_COLORS[Math.floor(Math.random() * TAG_COLORS.length)], // generate random tag color for virtual tag\n id: `virtual-tag-${uuidv4()}`,\n is_virtual: true,\n };\n repotagList.push(virtual_repo_tag);\n this.setState({ repotagList });\n };\n\n deleteVirtualTag = (virtualTag) => {\n let { repotagList } = this.state;\n let index = repotagList.findIndex(item => item.id === virtualTag.id);\n repotagList.splice(index, 1);\n this.setState({ repotagList });\n };\n\n updateVirtualTag = (virtualTag, data) => {\n const repoID = this.props.repoID;\n const { repotagList } = this.state;\n const index = repotagList.findIndex(item => item.id === virtualTag.id);\n if (index < 0) return null;\n\n // If virtual tag color is updated and virtual tag name is empty, it will be saved to local state, don't save it to the server\n if (data.color) {\n virtualTag.color = data.color;\n repotagList[index] = virtualTag;\n this.setState({ repotagList });\n return;\n }\n\n // If virtual tag name is updated and name is not empty, virtual tag color use default, save it to the server\n if (data.name && data.name.length > 0) {\n let color = virtualTag.color;\n let name = data.name;\n seafileAPI.createRepoTag(repoID, name, color).then((res) => {\n // After saving sag to the server, replace the virtual tag with newly created tag\n repotagList[index] = new RepoTag(res.data.repo_tag);\n this.setState({ repotagList });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n render() {\n return (\n \n
      \n {this.state.repotagList.map((repoTag, index) => {\n if (repoTag.is_virtual) {\n return (\n \n );\n } else {\n return (\n \n );\n }\n })}\n
    \n
    \n {gettext('Create a new tag')}\n
    \n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 as uuidv4 } from 'uuid';\nimport { gettext, siteRoot } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport SeahubPopover from '../common/seahub-popover';\nimport ListTagPopover from '../popover/list-tag-popover';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n userPerm: PropTypes.string,\n currentPath: PropTypes.string.isRequired,\n updateUsedRepoTags: PropTypes.func.isRequired,\n onDeleteRepoTag: PropTypes.func.isRequired,\n};\n\nclass DirTool extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isListRepoTagShow: false,\n };\n this.tagsIconID = `tags-icon-${uuidv4()}`;\n }\n\n onMouseDown = (e) => {\n e.stopPropagation();\n };\n\n toggleRepoTag = (e) => {\n e.stopPropagation();\n this.setState({ isListRepoTagShow: !this.state.isListRepoTagShow });\n };\n\n hidePopover = (e) => {\n if (e) {\n let dom = e.target;\n while (dom) {\n if (typeof dom.className === 'string' && dom.className.includes('tag-color-popover')) return;\n dom = dom.parentNode;\n }\n }\n this.setState({ isListRepoTagShow: false });\n };\n\n toggleCancel = () => {\n this.setState({ isListRepoTagShow: false });\n };\n\n isMarkdownFile(filePath) {\n return Utils.getFileName(filePath).includes('.md');\n }\n\n render() {\n let { repoID, userPerm, currentPath } = this.props;\n if (userPerm !== 'rw') {\n return '';\n }\n if (this.isMarkdownFile(currentPath)) {\n return '';\n }\n let toolbarDom = null;\n if (Utils.getFileName(currentPath)) { // name not '' is not root path\n let trashUrl = siteRoot + 'repo/' + repoID + '/trash/?path=' + encodeURIComponent(currentPath);\n toolbarDom = (\n
      \n
    • \n \n
    • \n
    • \n \n
    • \n
    \n );\n } else { // currentPath === '/' is root path\n let trashUrl = siteRoot + 'repo/' + repoID + '/trash/';\n let historyUrl = siteRoot + 'repo/history/' + repoID + '/';\n toolbarDom = (\n
      \n
    • \n \n
    • \n
    • \n \n
    • \n
    • \n \n
    • \n
    \n );\n }\n return (\n <>\n {toolbarDom}\n {this.state.isListRepoTagShow &&\n \n \n \n }\n \n );\n }\n}\n\nDirTool.propTypes = propTypes;\n\nexport default DirTool;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../utils/utils';\nimport SortOptionsDialog from '../../components/dialog/sort-options';\nimport DirPath from './dir-path';\nimport DirTool from './dir-tool';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n repoName: PropTypes.string.isRequired,\n userPerm: PropTypes.string,\n currentPath: PropTypes.string.isRequired,\n onPathClick: PropTypes.func.isRequired,\n onTabNavClick: PropTypes.func,\n pathPrefix: PropTypes.array,\n isViewFile: PropTypes.bool,\n updateUsedRepoTags: PropTypes.func.isRequired,\n fileTags: PropTypes.array.isRequired,\n onDeleteRepoTag: PropTypes.func.isRequired,\n direntList: PropTypes.array,\n sortBy: PropTypes.string,\n sortOrder: PropTypes.string,\n sortItems: PropTypes.func,\n};\n\nclass CurDirPath extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isSortOptionsDialogOpen: false\n };\n }\n\n toggleSortOptionsDialog = () => {\n this.setState({\n isSortOptionsDialogOpen: !this.state.isSortOptionsDialogOpen\n });\n };\n\n render() {\n const isDesktop = Utils.isDesktop();\n return (\n \n \n {isDesktop &&\n }\n {!isDesktop && this.props.direntList.length > 0 &&\n }\n {this.state.isSortOptionsDialogOpen &&\n \n }\n \n );\n }\n}\n\nCurDirPath.propTypes = propTypes;\n\nexport default CurDirPath;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Col } from 'reactstrap';\n\nfunction ColumnName(props) {\n const { column } = props;\n const { name } = column;\n\n return (\n \n
    \n {name || ''}\n
    \n \n );\n}\n\nColumnName.propTypes = {\n column: PropTypes.object.isRequired,\n};\n\nexport default ColumnName;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { KeyCodes } from '../../../../constants';\n\nclass SimpleText extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.row[props.column.key] || '',\n };\n this.inputRef = React.createRef();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const nextValue = nextProps.row[nextProps.column.key];\n if (nextValue !== this.state.value) {\n this.setState({ value: nextValue });\n }\n }\n\n blurInput = () => {\n setTimeout(() => {\n this.inputRef.current && this.inputRef.current.blur();\n }, 1);\n };\n\n onBlur = () => {\n let { column, onCommit } = this.props;\n const updated = {};\n updated[column.key] = this.state.value.trim();\n onCommit(updated, column);\n };\n\n onChange = (e) => {\n let value = e.target.value;\n if (value === this.state.value) return;\n this.setState({value});\n };\n\n onCut = (e) => {\n e.stopPropagation();\n };\n\n onPaste = (e) => {\n e.stopPropagation();\n };\n\n onKeyDown = (e) => {\n if (e.keyCode === KeyCodes.Esc) {\n e.stopPropagation();\n this.blurInput();\n return;\n }\n let { selectionStart, selectionEnd, value } = e.currentTarget;\n if (\n (e.keyCode === KeyCodes.ChineseInputMethod) ||\n (e.keyCode === KeyCodes.LeftArrow && selectionStart === 0) ||\n (e.keyCode === KeyCodes.RightArrow && selectionEnd === value.length)\n ) {\n e.stopPropagation();\n }\n };\n\n render() {\n const { column } = this.props;\n const { value } = this.state;\n\n return (\n \n );\n }\n}\n\nSimpleText.propTypes = {\n column: PropTypes.object,\n row: PropTypes.object,\n onCommit: PropTypes.func.isRequired,\n};\n\nexport default SimpleText;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FORMULA_RESULT_TYPE } from '../../../../constants';\nimport { getDateDisplayString } from '../../../../utils/extra-attributes';\n\nfunction FormulaFormatter(props) {\n const { column, row } = props;\n const value = row[column.key];\n\n const { data } = column;\n const { result_type, format } = data || {};\n if (result_type === FORMULA_RESULT_TYPE.DATE) {\n return (\n
    {getDateDisplayString(value, format)}
    \n );\n }\n if (result_type === FORMULA_RESULT_TYPE.STRING) {\n return value;\n }\n if (typeof value === 'object') {\n return null;\n }\n return <>;\n}\n\nFormulaFormatter.propTypes = {\n column: PropTypes.object,\n row: PropTypes.object,\n};\n\nexport default FormulaFormatter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nclass SearchInput extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n searchValue: props.value,\n };\n this.isInputtingChinese = false;\n this.timer = null;\n this.inputRef = null;\n }\n\n componentDidMount() {\n if (this.props.autoFocus && this.inputRef && this.inputRef !== document.activeElement) {\n setTimeout(() => {\n this.inputRef.focus();\n }, 0);\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.value !== this.props.value) {\n this.setState({searchValue: nextProps.value});\n }\n }\n\n componentWillUnmount() {\n this.timer && clearTimeout(this.timer);\n this.timer = null;\n this.inputRef = null;\n }\n\n onCompositionStart = () => {\n this.isInputtingChinese = true;\n };\n\n onChange = (e) => {\n this.timer && clearTimeout(this.timer);\n const { onChange, wait } = this.props;\n let text = e.target.value;\n this.setState({searchValue: text || ''}, () => {\n if (this.isInputtingChinese) return;\n this.timer = setTimeout(() => {\n onChange && onChange(this.state.searchValue.trim());\n }, wait);\n });\n };\n\n onCompositionEnd = (e) => {\n this.isInputtingChinese = false;\n this.onChange(e);\n };\n\n setFocus = (isSelectAllText) => {\n if (this.inputRef === document.activeElement) return;\n this.inputRef.focus();\n if (isSelectAllText) {\n const txtLength = this.state.searchValue.length;\n this.inputRef.setSelectionRange(0, txtLength);\n }\n };\n\n render() {\n const { placeholder, autoFocus, className, onKeyDown, disabled, style } = this.props;\n const { searchValue } = this.state;\n\n return (\n this.inputRef = ref}\n />\n );\n }\n}\n\nSearchInput.propTypes = {\n placeholder: PropTypes.string,\n autoFocus: PropTypes.bool,\n className: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onKeyDown: PropTypes.func,\n wait: PropTypes.number,\n disabled: PropTypes.bool,\n style: PropTypes.object,\n value: PropTypes.string,\n};\n\nSearchInput.defaultProps = {\n wait: 100,\n disabled: false,\n value: '',\n};\n\nexport default SearchInput;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { UncontrolledPopover } from 'reactstrap';\nimport { gettext } from '../../../../../utils/constants';\nimport SearchInput from '../search-input';\nimport { getSelectColumnOptions } from '../../../../../utils/extra-attributes';\n\nclass SingleSelectEditor extends Component {\n\n constructor(props) {\n super(props);\n const options = this.getSelectColumnOptions(props);\n this.state = {\n value: props.row[props.column.key],\n searchVal: '',\n highlightIndex: -1,\n maxItemNum: 0,\n itemHeight: 0,\n filteredOptions: options,\n };\n this.options = options;\n this.timer = null;\n this.editorKey = `single-select-editor-${props.column.key}`;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const currentCascadeColumnValue = this.getCascadeColumnValue(this.props);\n const nextCascadeColumnValue = this.getCascadeColumnValue(nextProps);\n if (currentCascadeColumnValue !== nextCascadeColumnValue) {\n this.options = this.getSelectColumnOptions(nextProps);\n this.setState({ filteredOptions: this.options });\n }\n }\n\n getCascadeColumnValue = (props) => {\n const { column, row, columns } = props;\n const { data } = column;\n const { cascade_column_key } = data || {};\n if (!cascade_column_key) return '';\n const cascadeColumn = columns.find(item => item.key === cascade_column_key);\n if (!cascadeColumn) return '';\n return row[cascade_column_key];\n };\n\n getSelectColumnOptions = (props) => {\n const { column, row, columns } = props;\n let options = getSelectColumnOptions(column);\n const { data } = column;\n const { cascade_column_key, cascade_settings } = data || {};\n if (cascade_column_key) {\n const cascadeColumn = columns.find(item => item.key === cascade_column_key);\n if (cascadeColumn) {\n const cascadeColumnValue = row[cascade_column_key];\n if (!cascadeColumnValue) return [];\n const cascadeSetting = cascade_settings[cascadeColumnValue];\n if (!cascadeSetting || !Array.isArray(cascadeSetting) || cascadeSetting.length === 0) return [];\n return options.filter(option => cascadeSetting.includes(option.id));\n }\n }\n return options;\n };\n\n toggle = () => {\n this.ref.toggle();\n this.props.onUpdateState();\n };\n\n onChangeSearch = (searchVal) => {\n const { searchVal: oldSearchVal } = this.state;\n if (oldSearchVal === searchVal) return;\n const val = searchVal.toLowerCase();\n const filteredOptions = val ?\n this.options.filter((item) => item.name && item.name.toLowerCase().indexOf(val) > -1) : this.options;\n this.setState({ searchVal, filteredOptions });\n };\n\n onSelectOption = (optionID) => {\n const { column } = this.props;\n this.setState({ value: optionID }, () => {\n this.props.onCommit({ [column.key]: optionID }, column);\n this.toggle();\n });\n };\n\n render() {\n const { value, filteredOptions } = this.state;\n const { column } = this.props;\n\n return (\n this.ref = ref}\n >\n
    \n
    \n \n
    \n
    \n {filteredOptions.map(option => {\n const isSelected = value === option.id;\n const style = {\n backgroundColor: option.color,\n color: option.textColor || null,\n maxWidth: Math.max(200 - 62, column.width ? column.width -62 : 0)\n };\n return (\n
    \n
    {option.name}
    \n
    \n {isSelected && ()}\n
    \n
    \n );\n })}\n
    \n
    \n \n );\n }\n}\n\nSingleSelectEditor.propTypes = {\n value: PropTypes.string,\n row: PropTypes.object,\n column: PropTypes.object,\n columns: PropTypes.array,\n onUpdateState: PropTypes.func,\n onCommit: PropTypes.func,\n};\n\nexport default SingleSelectEditor;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { DELETED_OPTION_BACKGROUND_COLOR, DELETED_OPTION_TIPS } from '../../../../../constants';\nimport { gettext } from '../../../../../utils/constants';\nimport SingleSelectEditor from './single-select-editor';\nimport { getSelectColumnOptions } from '../../../../../utils/extra-attributes';\n\nimport './index.css';\n\nclass SingleSelect extends Component {\n\n constructor(props) {\n super(props);\n const { column } = props;\n this.options = getSelectColumnOptions(column);\n this.state = {\n isShowSingleSelect: false,\n };\n this.editorKey = `single-select-editor-${column.key}`;\n }\n\n updateState = () => {\n this.setState({ isShowSingleSelect: !this.state.isShowSingleSelect });\n };\n\n onCommit = (value, column) => {\n this.props.onCommit(value, column);\n };\n\n render() {\n const { isShowSingleSelect } = this.state;\n const { column, row } = this.props;\n const currentOptionID = row[column.key];\n const option = this.options.find(option => option.id === currentOptionID);\n const optionStyle = option ?\n { backgroundColor: option.color, color: option.textColor || null } :\n { backgroundColor: DELETED_OPTION_BACKGROUND_COLOR };\n const optionName = option ? option.name : gettext(DELETED_OPTION_TIPS);\n\n return (\n <>\n \n
    \n
    \n {currentOptionID && (\n {optionName}
    \n )}\n
    \n {column.editable && (\n \n )}\n
    \n \n {column.editable && (\n \n )}\n \n );\n }\n}\n\nSingleSelect.propTypes = {\n column: PropTypes.object,\n row: PropTypes.object,\n columns: PropTypes.array,\n onCommit: PropTypes.func,\n};\n\nexport default SingleSelect;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getNumberDisplayString, replaceNumberNotAllowInput, formatStringToNumber, isMac } from '../../../../utils/extra-attributes';\nimport { KeyCodes, DEFAULT_NUMBER_FORMAT } from '../../../../constants';\n\nclass NumberEditor extends React.Component {\n\n constructor(props) {\n super(props);\n const { row, column } = props;\n const value = row[column.key];\n this.state = {\n value: getNumberDisplayString(value, column.data),\n };\n }\n\n onChange = (event) => {\n const { data } = this.props.column; // data maybe 'null'\n const format = (data && data.format) ? data.format : DEFAULT_NUMBER_FORMAT;\n let currency_symbol = null;\n if (data && data.format === 'custom_currency') {\n currency_symbol = data['currency_symbol'];\n }\n const initValue = event.target.value.trim();\n\n //Prevent the repetition of periods bug in the Chinese input method of the Windows system\n if (!isMac() && initValue.indexOf('.。') > -1) return;\n let value = replaceNumberNotAllowInput(initValue, format, currency_symbol);\n if (value === this.state.value) return;\n this.setState({ value });\n };\n\n onKeyDown = (event) => {\n let { selectionStart, selectionEnd, value } = event.currentTarget;\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Esc) {\n event.preventDefault();\n this.input.blur();\n } else if ((event.keyCode === KeyCodes.LeftArrow && selectionStart === 0) ||\n (event.keyCode === KeyCodes.RightArrow && selectionEnd === value.length)\n ) {\n event.stopPropagation();\n }\n };\n\n onBlur = () => {\n const { value } = this.state;\n const { column } = this.props;\n this.props.onCommit({ [column.key]: formatStringToNumber(value, column.data) }, column);\n };\n\n setInputRef = (input) => {\n this.input = input;\n return this.input;\n };\n\n onPaste = (e) => {\n e.stopPropagation();\n };\n\n onCut = (e) => {\n e.stopPropagation();\n };\n\n render() {\n const { column } = this.props;\n\n return (\n \n );\n }\n}\n\nNumberEditor.propTypes = {\n column: PropTypes.object,\n row: PropTypes.object,\n onCommit: PropTypes.func,\n};\n\nexport default NumberEditor;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { getDateDisplayString } from '../../../../utils/extra-attributes';\n\n\nclass DateEditor extends Component {\n render() {\n const { column, row } = this.props;\n const { data, key } = column;\n const value = getDateDisplayString(row[key], data ? data.format : '');\n\n return (\n \n );\n }\n}\n\nDateEditor.propTypes = {\n column: PropTypes.object,\n row: PropTypes.object,\n};\n\nexport default DateEditor;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { getDateDisplayString } from '../../../../utils/extra-attributes';\n\nclass CtimeFormatter extends Component {\n render() {\n const { column, row } = this.props;\n const { key } = column;\n const value = getDateDisplayString(row[key], 'YYYY-MM-DD HH:mm:ss') || '';\n\n return (\n
    {value}
    \n );\n }\n}\n\nCtimeFormatter.propTypes = {\n column: PropTypes.object,\n row: PropTypes.object,\n};\n\nexport default CtimeFormatter;\n","import SimpleText from './simple-text';\nimport FormulaFormatter from './formula-formatter';\nimport SingleSelect from './single-select';\nimport NumberEditor from './number-editor';\nimport DateEditor from './date-editor';\nimport CtimeFormatter from './ctime-formatter';\nimport { EXTRA_ATTRIBUTES_COLUMN_TYPE } from '../../../../constants';\n\n\nconst CONFIG = {\n [EXTRA_ATTRIBUTES_COLUMN_TYPE.TEXT]: SimpleText,\n [EXTRA_ATTRIBUTES_COLUMN_TYPE.FORMULA]: FormulaFormatter,\n [EXTRA_ATTRIBUTES_COLUMN_TYPE.SINGLE_SELECT]: SingleSelect,\n [EXTRA_ATTRIBUTES_COLUMN_TYPE.NUMBER]: NumberEditor,\n [EXTRA_ATTRIBUTES_COLUMN_TYPE.DATE]: DateEditor,\n [EXTRA_ATTRIBUTES_COLUMN_TYPE.CTIME]: CtimeFormatter,\n [EXTRA_ATTRIBUTES_COLUMN_TYPE.MTIME]: CtimeFormatter,\n};\n\nexport default CONFIG;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Col } from 'reactstrap';\nimport ColumnName from './column-name';\nimport CONFIG from '../editor';\n\nimport './index.css';\n\nclass Column extends Component {\n render() {\n const { column, row, columns } = this.props;\n const Editor = CONFIG[column.type] || CONFIG['text'];\n\n return (\n
    \n \n \n \n \n
    \n );\n }\n}\n\nColumn.propTypes = {\n column: PropTypes.object,\n row: PropTypes.object,\n columns: PropTypes.array,\n onCommit: PropTypes.func,\n};\n\nexport default Column;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\nimport isHotkey from 'is-hotkey';\nimport { zIndexes, DIALOG_MAX_HEIGHT, EXTRA_ATTRIBUTES_COLUMN_TYPE } from '../../../constants';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport { getSelectColumnOptions, getValidColumns } from '../../../utils/extra-attributes';\nimport Column from './column';\nimport Loading from '../../loading';\nimport toaster from '../../toast';\n\nimport './index.css';\n\nclass ExtraAttributesDialog extends Component {\n\n constructor(props) {\n super(props);\n const { direntDetail, direntType } = props;\n this.state = {\n animationEnd: false,\n isLoading: true,\n update: {},\n row: {},\n columns: [],\n errorMsg: '',\n };\n if (direntType === 'dir') {\n this.isEmptyFile = false;\n } else {\n const direntDetailId = direntDetail?.id || '';\n this.isEmptyFile = direntDetailId === '0'.repeat(direntDetailId.length);\n }\n this.isExist = false;\n this.modalRef = React.createRef();\n }\n\n componentDidMount() {\n this.startAnimation(this.getData);\n window.addEventListener('keydown', this.onHotKey);\n }\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this.onHotKey);\n }\n\n startAnimation = (callback) => {\n if (this.state.animationEnd === true) {\n callback && callback();\n }\n\n // use setTimeout to make sure real dom rendered\n setTimeout(() => {\n let dom = this.modalRef.current.firstChild;\n const { width, maxWidth, marginLeft, height } = this.getDialogStyle();\n dom.style.width = `${width}px`;\n dom.style.maxWidth = `${maxWidth}px`;\n dom.style.marginLeft = `${marginLeft}px`;\n dom.style.height = `${height}px`;\n dom.style.marginRight = 'unset';\n dom.style.marginTop = '28px';\n\n // after animation, change style and run callback\n setTimeout(() => {\n this.setState({ animationEnd: true }, () => {\n dom.style.transition = 'none';\n callback && callback();\n });\n }, 280);\n }, 1);\n };\n\n getFormatUpdateData = (update = {}) => {\n const { columns } = this.state;\n const updateData = {};\n for (let key in update) {\n const column = columns.find(column => column.key === key);\n if (column && column.editable) {\n const { type, name } = column;\n const value = update[key];\n if (type === EXTRA_ATTRIBUTES_COLUMN_TYPE.SINGLE_SELECT) {\n const options = getSelectColumnOptions(column);\n const option = options.find(item => item.id === value);\n updateData[name] = option ? option.name : '';\n } else {\n updateData[column.name] = update[key];\n }\n }\n }\n return updateData;\n };\n\n getData = () => {\n const { repoID, filePath } = this.props;\n seafileAPI.getFileExtendedProperties(repoID, filePath).then(res => {\n const { row, metadata, editable_columns } = res.data;\n this.isExist = Boolean(row._id);\n this.setState({ row: row, columns: getValidColumns(metadata, editable_columns, this.isEmptyFile), isLoading: false, errorMsg: '' });\n }).catch(error => {\n const errorMsg =Utils.getErrorMsg(error);\n this.setState({ isLoading: false, errorMsg });\n });\n };\n\n createData = (data) => {\n const { repoID, filePath } = this.props;\n seafileAPI.newFileExtendedProperties(repoID, filePath, data).then(res => {\n this.isExist = true;\n const { row } = res.data;\n this.setState({ row: row, isLoading: false, errorMsg: '' });\n }).catch(error => {\n const errorMsg =Utils.getErrorMsg(error);\n toaster.danger(gettext(errorMsg));\n });\n };\n\n updateData = (update, column) => {\n const newRow = { ...this.state.row, ...update };\n this.setState({ row: newRow }, () => {\n const data = this.getFormatUpdateData(update);\n const { repoID, filePath } = this.props;\n if (this.isExist) {\n seafileAPI.updateFileExtendedProperties(repoID, filePath, data).then(res => {\n this.setState({ update: {}, row: res.data.row });\n }).catch(error => {\n const errorMsg = Utils.getErrorMsg(error);\n toaster.danger(gettext(errorMsg));\n });\n } else {\n this.createData(data);\n }\n });\n };\n\n onHotKey = (event) => {\n if (isHotkey('esc', event)) {\n this.onToggle();\n return;\n }\n };\n\n onToggle = () => {\n this.props.onToggle();\n };\n\n getDialogStyle = () => {\n const width = 800;\n return {\n width,\n maxWidth: width,\n marginLeft: (window.innerWidth - width) / 2,\n height: DIALOG_MAX_HEIGHT,\n };\n };\n\n getInitStyle = () => {\n const transition = 'all .3s';\n const defaultMargin = 80; // sequence cell width\n const defaultHeight = 100;\n const marginTop = '30%';\n const width = window.innerWidth;\n return {\n width: `${width - defaultMargin}px`,\n maxWidth: `${width - defaultMargin}px`,\n marginLeft: `${defaultMargin}px`,\n height: `${defaultHeight}px`,\n marginRight: `${defaultMargin}px`,\n marginTop,\n transition,\n };\n };\n\n renderColumns = () => {\n const { isLoading, errorMsg, columns, row, update } = this.state;\n if (isLoading) {\n return (\n
    \n \n
    \n );\n }\n\n if (errorMsg) {\n return (\n
    \n {gettext(errorMsg)}\n
    \n );\n }\n\n const newRow = { ...row, ...update };\n\n return (\n <>\n {columns.map(column => {\n return (\n \n );\n })}\n \n );\n\n };\n\n renderContent = () => {\n if (!this.state.animationEnd) return null;\n\n return (\n <>\n {gettext('Edit extra properties')}\n \n {this.renderColumns()}\n \n \n );\n };\n\n render() {\n const { animationEnd } = this.state;\n\n return (\n \n {this.renderContent()}\n
    \n );\n }\n}\n\nExtraAttributesDialog.propTypes = {\n repoID: PropTypes.string,\n filePath: PropTypes.string,\n direntType: PropTypes.string,\n direntDetail: PropTypes.object,\n onToggle: PropTypes.func,\n};\n\nexport default ExtraAttributesDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport toaster from '../toast';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../loading';\n\nimport '../../css/apply-folder-properties.css';\n\nconst propTypes = {\n toggle: PropTypes.func,\n repoID: PropTypes.string,\n path: PropTypes.string\n};\n\nclass ConfirmApplyFolderPropertiesDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n submitting: false\n };\n }\n\n submit = () => {\n const { repoID, path } = this.props;\n this.setState({ submitting: true });\n seafileAPI.applyFolderExtendedProperties(repoID, path).then(() => {\n toaster.success(gettext('Successfully applied the properties.'));\n this.props.toggle();\n }).catch(error => {\n let errorMsg = Utils.getErrorMsg(error);\n toaster.danger(errorMsg);\n this.setState({ submitting: false });\n });\n };\n\n render() {\n const { submitting } = this.state;\n\n return (\n \n \n {gettext('Apply properties')}\n \n \n

    \n {gettext('Are you sure you want to apply the properties to all the files inside the folder?')}\n

    \n
    \n \n \n \n \n
    \n );\n }\n\n}\n\nConfirmApplyFolderPropertiesDialog.propTypes = propTypes;\n\nexport default ConfirmApplyFolderPropertiesDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { v4 as uuidv4 } from 'uuid';\nimport Icon from '../icon';\nimport { gettext, canSetExProps } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport EditFileTagPopover from '../popover/edit-filetag-popover';\nimport ExtraAttributesDialog from '../dialog/extra-attributes-dialog';\nimport FileTagList from '../file-tag-list';\nimport ConfirmApplyFolderPropertiesDialog from '../dialog/confirm-apply-folder-properties-dialog';\n\nconst propTypes = {\n repoInfo: PropTypes.object.isRequired,\n repoID: PropTypes.string.isRequired,\n dirent: PropTypes.object.isRequired,\n direntType: PropTypes.string.isRequired,\n direntDetail: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n fileTagList: PropTypes.array.isRequired,\n onFileTagChanged: PropTypes.func.isRequired,\n};\n\nclass DetailListView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isEditFileTagShow: false,\n isShowExtraProperties: false,\n isShowApplyProperties: false\n };\n this.tagListTitleID = `detail-list-view-tags-${uuidv4()}`;\n }\n\n getDirentPosition = () => {\n let { repoInfo } = this.props;\n let direntPath = this.getDirentPath();\n let position = repoInfo.repo_name;\n if (direntPath !== '/') {\n let index = direntPath.lastIndexOf('/');\n let path = direntPath.slice(0, index);\n position = position + path;\n }\n return position;\n };\n\n onEditFileTagToggle = () => {\n this.setState({\n isEditFileTagShow: !this.state.isEditFileTagShow\n });\n };\n\n onFileTagChanged = () => {\n let direntPath = this.getDirentPath();\n this.props.onFileTagChanged(this.props.dirent, direntPath);\n };\n\n getDirentPath = () => {\n if (Utils.isMarkdownFile(this.props.path)) {\n return this.props.path; // column mode: view file\n }\n let { dirent, path } = this.props;\n return Utils.joinPath(path, dirent.name);\n };\n\n toggleExtraPropertiesDialog = () => {\n this.setState({ isShowExtraProperties: !this.state.isShowExtraProperties });\n };\n\n toggleApplyPropertiesDialog = () => {\n this.setState({ isShowApplyProperties: !this.state.isShowApplyProperties });\n };\n\n renderTags = () => {\n const { direntType, direntDetail } = this.props;\n const position = this.getDirentPosition();\n if (direntType === 'dir') {\n return (\n \n \n \n \n \n \n \n {direntDetail.permission === 'rw' && canSetExProps && (\n \n \n \n \n \n \n \n \n )}\n \n
    {gettext('Location')}{position}
    {gettext('Last Update')}{moment(direntDetail.mtime).format('YYYY-MM-DD')}
    \n
    \n {gettext('Edit extra properties')}\n
    \n
    \n \n {gettext('Apply properties to files inside the folder')}\n \n
    \n );\n }\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {direntDetail.permission === 'rw' && canSetExProps && (\n \n \n \n )}\n \n
    {gettext('Size')}{Utils.bytesToSize(direntDetail.size)}
    {gettext('Location')}{position}
    {gettext('Last Update')}{moment(direntDetail.last_modified).fromNow()}
    {gettext('Tags')}\n \n \n
    \n
    \n {gettext('Edit extra properties')}\n
    \n
    \n );\n };\n\n render() {\n const { direntType, direntDetail, fileTagList } = this.props;\n const direntPath = this.getDirentPath();\n\n return (\n \n {this.renderTags()}\n {this.state.isEditFileTagShow &&\n \n }\n {this.state.isShowExtraProperties && (\n \n )}\n {this.state.isShowApplyProperties && (\n \n )}\n \n );\n }\n}\n\nDetailListView.defaultProps = {\n fileTagList: [],\n};\n\nDetailListView.propTypes = propTypes;\n\nexport default DetailListView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { siteRoot, enableVideoThumbnail } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\nimport Dirent from '../../models/dirent';\nimport DetailListView from './detail-list-view';\n\nimport '../../css/dirent-detail.css';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n dirent: PropTypes.object,\n path: PropTypes.string.isRequired,\n currentRepoInfo: PropTypes.object.isRequired,\n onItemDetailsClose: PropTypes.func.isRequired,\n onFileTagChanged: PropTypes.func.isRequired,\n direntDetailPanelTab: PropTypes.string,\n fileTags: PropTypes.array,\n};\n\nclass DirentDetail extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n direntType: '',\n direntDetail: '',\n folderDirent: null,\n };\n }\n\n componentDidMount() {\n let { dirent, path, repoID } = this.props;\n this.loadDirentInfo(dirent, path, repoID);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n let { dirent, path, repoID } = nextProps;\n if (this.props.dirent !== nextProps.dirent) {\n this.loadDirentInfo(dirent, path, repoID);\n }\n }\n\n loadDirentInfo = (dirent, path, repoID) => {\n if (dirent) {\n let direntPath = Utils.joinPath(path, dirent.name);\n this.updateDetailView(dirent, direntPath);\n } else {\n let dirPath = Utils.getDirName(path);\n seafileAPI.listDir(repoID, dirPath).then(res => {\n let direntList = res.data.dirent_list;\n let folderDirent = null;\n for (let i = 0; i < direntList.length; i++) {\n let dirent = direntList[i];\n if (dirent.parent_dir + dirent.name === path) {\n folderDirent = new Dirent(dirent);\n break;\n }\n }\n this.setState({folderDirent: folderDirent});\n this.updateDetailView(folderDirent, path);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n updateDetailView = (dirent, direntPath) => {\n let repoID = this.props.repoID;\n if (dirent.type === 'file') {\n seafileAPI.getFileInfo(repoID, direntPath).then(res => {\n this.setState({\n direntType: 'file',\n direntDetail: res.data,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n seafileAPI.getDirInfo(repoID, direntPath).then(res => {\n this.setState({\n direntType: 'dir',\n direntDetail: res.data\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n renderHeader = (smallIconUrl, direntName) => {\n return (\n
    \n
    \n
    \n \"\"{' '}\n {direntName}\n
    \n
    \n );\n };\n\n renderDetailBody = (bigIconUrl, folderDirent) => {\n const { dirent, fileTags } = this.props;\n return (\n
    \n
    \"\"
    \n {this.state.direntDetail &&\n
    \n \n
    \n }\n
    \n );\n };\n\n render() {\n let { dirent, repoID, path } = this.props;\n let { folderDirent } = this.state;\n if (!dirent && !folderDirent) {\n return '';\n }\n let smallIconUrl = dirent ? Utils.getDirentIcon(dirent) : Utils.getDirentIcon(folderDirent);\n let bigIconUrl = dirent ? Utils.getDirentIcon(dirent, true) : Utils.getDirentIcon(folderDirent, true);\n const isImg = dirent ? Utils.imageCheck(dirent.name) : Utils.imageCheck(folderDirent.name);\n const isVideo = dirent ? Utils.videoCheck(dirent.name) : Utils.videoCheck(folderDirent.name);\n if (isImg || (enableVideoThumbnail && isVideo)) {\n bigIconUrl = `${siteRoot}thumbnail/${repoID}/1024` + Utils.encodePath(`${path === '/' ? '' : path}/${dirent.name}`);\n }\n let direntName = dirent ? dirent.name : folderDirent.name;\n return (\n
    \n {this.renderHeader(smallIconUrl, direntName)}\n {this.renderDetailBody(bigIconUrl, folderDirent)}\n
    \n );\n }\n}\n\nDirentDetail.propTypes = propTypes;\n\nexport default DirentDetail;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { enableSeadoc, gettext } from '../../utils/constants';\nimport Loading from '../loading';\nimport ModalPortal from '../modal-portal';\nimport CreateFile from '../../components/dialog/create-file-dialog';\n\nimport '../../css/tip-for-new-file.css';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n isDirentListLoading: PropTypes.bool.isRequired,\n onAddFile: PropTypes.func.isRequired\n};\n\nclass DirentNodeView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n fileType: '',\n isCreateFileDialogShow: false,\n };\n }\n\n onCreateNewFile = (type) => {\n this.setState({\n fileType: type,\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n });\n };\n\n onCreateFileToggle = () => {\n this.setState({\n fileType: '',\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n });\n };\n\n checkDuplicatedName = () => {\n return false; // current repo is null, and unnecessary to check duplicated name\n };\n\n render() {\n if (this.props.isDirentListLoading) {\n return ();\n }\n\n return (\n \n
    \n

    {gettext('This folder has no content at this time.')}

    \n

    {gettext('You can create files quickly')}{' +'}

    \n \n \n
    \n \n \n
    \n {enableSeadoc && }\n
    \n {this.state.isCreateFileDialogShow && (\n \n \n \n )}\n
    \n );\n }\n}\n\nDirentNodeView.propTypes = propTypes;\n\nexport default DirentNodeView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 as uuidv4 } from 'uuid';\nimport { UncontrolledTooltip } from 'reactstrap';\n\nexport default class FileTag extends React.PureComponent {\n\n static propTypes = {\n fileTag: PropTypes.object.isRequired,\n length: PropTypes.number.isRequired,\n index: PropTypes.number.isRequired,\n };\n\n render() {\n const { fileTag, length, index } = this.props;\n const fileTagID = `file-tag-${fileTag.id}-${uuidv4()}`;\n return (\n <>\n \n \n {fileTag.name}\n \n \n );\n }\n}\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\nimport { v4 as uuidv4 } from 'uuid';\nimport moment from 'moment';\nimport { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { gettext, siteRoot, mediaUrl, username, useGoFileserver, fileServerRoot } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport URLDecorator from '../../utils/url-decorator';\nimport ItemDropdownMenu from '../dropdown-menu/item-dropdown-menu';\nimport Rename from '../rename';\nimport ModalPortal from '../modal-portal';\nimport MoveDirentDialog from '../dialog/move-dirent-dialog';\nimport CopyDirentDialog from '../dialog/copy-dirent-dialog';\nimport ShareDialog from '../dialog/share-dialog';\nimport ZipDownloadDialog from '../dialog/zip-download-dialog';\nimport EditFileTagDialog from '../dialog/edit-filetag-dialog';\nimport EditFileTagPopover from '../popover/edit-filetag-popover';\nimport LibSubFolderPermissionDialog from '../dialog/lib-sub-folder-permission-dialog';\nimport toaster from '../toast';\nimport FileTag from './file-tag';\n\nimport '../../css/dirent-list-item.css';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n dirent: PropTypes.object.isRequired,\n onItemClick: PropTypes.func.isRequired,\n freezeItem: PropTypes.func.isRequired,\n unfreezeItem: PropTypes.func.isRequired,\n onItemRenameToggle: PropTypes.func.isRequired,\n onItemSelected: PropTypes.func.isRequired,\n onItemDelete: PropTypes.func.isRequired,\n onItemRename: PropTypes.func.isRequired,\n onItemMove: PropTypes.func.isRequired,\n onItemCopy: PropTypes.func.isRequired,\n onItemConvert: PropTypes.func.isRequired,\n onDirentClick: PropTypes.func.isRequired,\n updateDirent: PropTypes.func.isRequired,\n showImagePopup: PropTypes.func.isRequired,\n currentRepoInfo: PropTypes.object,\n isRepoOwner: PropTypes.bool,\n isAdmin: PropTypes.bool.isRequired,\n repoEncrypted: PropTypes.bool.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n onItemMouseDown: PropTypes.func.isRequired,\n onItemContextMenu: PropTypes.func.isRequired,\n selectedDirentList: PropTypes.array.isRequired,\n activeDirent: PropTypes.object,\n getDirentItemMenuList: PropTypes.func.isRequired,\n onFileTagChanged: PropTypes.func,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n showDirentDetail: PropTypes.func.isRequired,\n onItemsMove: PropTypes.func.isRequired,\n onShowDirentsDraggablePreview: PropTypes.func,\n loadDirentList: PropTypes.func,\n};\n\nclass DirentListItem extends React.Component {\n\n constructor(props) {\n super(props);\n\n const { dirent } = this.props;\n const { isCustomPermission, customPermission } = Utils.getUserPermission(dirent.permission);\n this.isCustomPermission = isCustomPermission;\n this.customPermission = customPermission;\n this.canPreview = true;\n this.canDrag = dirent.permission === 'rw';\n if (isCustomPermission) {\n const { preview, modify } = customPermission.permission;\n this.canPreview = preview || modify;\n this.canDrag = modify;\n }\n\n this.state = {\n isOperationShow: false,\n highlight: false,\n isZipDialogOpen: false,\n isMoveDialogShow: false,\n isCopyDialogShow: false,\n isShareDialogShow: false,\n isMutipleOperation: false,\n canDrag: this.canDrag,\n isShowTagTooltip: false,\n isDragTipShow: false,\n isDropTipshow: false,\n isEditFileTagShow: false,\n isPermissionDialogOpen: false,\n isOpMenuOpen: false // for mobile\n };\n this.tagListTitleID = `tag-list-title-${uuidv4()}`;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.isItemFreezed !== this.props.isItemFreezed && !nextProps.isItemFreezed) {\n this.setState({\n highlight: false,\n isOperationShow: false,\n }, () => {\n if (nextProps.activeDirent && nextProps.activeDirent.name === nextProps.dirent.name) {\n this.setState({isOperationShow: true});\n }\n });\n }\n }\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n });\n };\n\n //UI Interactive\n onMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n highlight: true,\n isOperationShow: true,\n });\n }\n if (this.state.canDrag) {\n this.setState({isDragTipShow: true});\n }\n };\n\n onMouseOver = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n highlight: true,\n isOperationShow: true,\n });\n }\n if (this.state.canDrag) {\n this.setState({isDragTipShow: true});\n }\n };\n\n onMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n highlight: false,\n isOperationShow: false,\n });\n }\n this.setState({isDragTipShow: false});\n };\n\n unfreezeItem = () => {\n this.setState({\n highlight: false,\n isOperationShow: false,\n });\n this.props.unfreezeItem();\n };\n\n //buiness handler\n onItemSelected = () => {\n this.props.onItemSelected(this.props.dirent);\n };\n\n onItemStarred = (e) => {\n let dirent = this.props.dirent;\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(dirent);\n\n e.preventDefault();\n\n if (dirent.starred) {\n seafileAPI.unstarItem(repoID, filePath).then(() => {\n this.props.updateDirent(this.props.dirent, 'starred', false);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n seafileAPI.starItem(repoID, filePath).then(() => {\n this.props.updateDirent(this.props.dirent, 'starred', true);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n // on ''\n onDirentClick = (e) => {\n // '' is clicked\n e.stopPropagation();\n if (e.target.tagName == 'TD') {\n this.props.onDirentClick(this.props.dirent);\n }\n };\n\n onItemClick = (e) => {\n e.preventDefault();\n const dirent = this.props.dirent;\n if (this.state.isRenameing) {\n return;\n }\n\n if (dirent.isDir()) {\n this.props.onItemClick(dirent);\n return;\n }\n\n if (!this.canPreview) {\n return;\n }\n\n if (Utils.imageCheck(dirent.name)) {\n this.props.showImagePopup(dirent);\n } else {\n this.props.onItemClick(dirent);\n }\n };\n\n onItemDelete = (e) => {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation(); //for document event\n this.props.onItemDelete(this.props.dirent);\n };\n\n onItemShare = (e) => {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation(); //for document event\n this.setState({isShareDialogShow: !this.state.isShareDialogShow});\n };\n\n closeSharedDialog = () => {\n this.setState({isShareDialogShow: !this.state.isShareDialogShow});\n };\n\n onMobileMenuItemClick = (e) => {\n const operation = e.target.getAttribute('data-op');\n this.onMenuItemClick(operation, e);\n };\n\n onMenuItemClick = (operation, event) => {\n switch(operation) {\n case 'Download':\n this.onItemDownload(event);\n break;\n case 'Share':\n this.onItemShare(event);\n break;\n case 'Delete':\n this.onItemDelete(event);\n break;\n case 'Rename':\n this.onItemRenameToggle();\n break;\n case 'Move':\n this.onItemMoveToggle();\n break;\n case 'Copy':\n this.onItemCopyToggle();\n break;\n case 'Tags':\n this.onEditFileTagToggle();\n break;\n case 'Permission':\n this.onPermissionItem();\n break;\n case 'Unlock':\n this.onUnlockItem();\n break;\n case 'Lock':\n this.onLockItem();\n break;\n case 'Freeze Document':\n this.onFreezeDocument();\n break;\n case 'Convert to Markdown':\n this.onItemConvert(event, 'markdown');\n break;\n case 'Convert to sdoc':\n this.onItemConvert(event, 'sdoc');\n break;\n case 'Mark as draft':\n this.onMarkAsDraft();\n break;\n case 'Unmark as draft':\n this.onUnmarkAsDraft();\n break;\n case 'History':\n this.onHistory();\n break;\n case 'Access Log':\n this.onAccessLog();\n break;\n case 'Properties':\n this.props.onDirentClick(this.props.dirent);\n this.props.showDirentDetail('info');\n break;\n case 'Open via Client':\n this.onOpenViaClient();\n break;\n case 'Convert with ONLYOFFICE':\n this.onConvertWithONLYOFFICE();\n break;\n default:\n break;\n }\n };\n\n onItemConvert = (e, dstType)=> {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation(); //for document event\n this.props.onItemConvert(this.props.dirent, dstType);\n };\n\n onEditFileTagToggle = () => {\n this.setState({\n isEditFileTagShow: !this.state.isEditFileTagShow\n });\n };\n\n onFileTagChanged = () => {\n let direntPath = this.getDirentPath(this.props.dirent);\n this.props.onFileTagChanged(this.props.dirent, direntPath);\n };\n\n onItemRenameToggle = () => {\n this.props.onItemRenameToggle(this.props.dirent);\n this.setState({\n isOperationShow: false,\n isRenameing: true,\n canDrag: false\n });\n };\n\n onRenameConfirm = (newName) => {\n this.props.onItemRename(this.props.dirent, newName);\n this.onRenameCancel();\n };\n\n onRenameCancel = () => {\n this.setState({\n isRenameing: false,\n canDrag: this.canDrag // set it back to the initial value\n });\n this.unfreezeItem();\n };\n\n onItemMoveToggle = () => {\n this.setState({isMoveDialogShow: !this.state.isMoveDialogShow});\n };\n\n onItemCopyToggle = () => {\n this.setState({isCopyDialogShow: !this.state.isCopyDialogShow});\n };\n\n onPermissionItem = () => {\n this.setState({isPermissionDialogOpen: !this.state.isPermissionDialogOpen});\n };\n\n onLockItem = () => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(this.props.dirent);\n seafileAPI.lockfile(repoID, filePath).then(() => {\n this.props.updateDirent(this.props.dirent, 'is_locked', true);\n this.props.updateDirent(this.props.dirent, 'locked_by_me', true);\n let lockName = username.split('@');\n this.props.updateDirent(this.props.dirent, 'lock_owner_name', lockName[0]);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onFreezeDocument = () => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(this.props.dirent);\n seafileAPI.lockfile(repoID, filePath, -1).then(() => {\n this.props.updateDirent(this.props.dirent, 'is_freezed', true);\n this.props.updateDirent(this.props.dirent, 'is_locked', true);\n this.props.updateDirent(this.props.dirent, 'locked_by_me', true);\n let lockName = username.split('@');\n this.props.updateDirent(this.props.dirent, 'lock_owner_name', lockName[0]);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onUnlockItem = () => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(this.props.dirent);\n seafileAPI.unlockfile(repoID, filePath).then(() => {\n this.props.updateDirent(this.props.dirent, 'is_locked', false);\n this.props.updateDirent(this.props.dirent, 'locked_by_me', false);\n this.props.updateDirent(this.props.dirent, 'lock_owner_name', '');\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onMarkAsDraft = () => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(this.props.dirent);\n seafileAPI.sdocMarkAsDraft(repoID, filePath).then((res) => {\n this.props.updateDirent(this.props.dirent, 'is_sdoc_draft', true);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onUnmarkAsDraft = () => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(this.props.dirent);\n seafileAPI.sdocUnmarkAsDraft(repoID, filePath).then((res) => {\n this.props.updateDirent(this.props.dirent, 'is_sdoc_draft', false);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onHistory = () => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(this.props.dirent);\n let url = URLDecorator.getUrl({type: 'file_revisions', repoID: repoID, filePath: filePath});\n location.href = url;\n };\n\n onAccessLog = () => {\n let filePath = this.getDirentPath(this.props.dirent);\n let path = siteRoot + 'repo/file-access/' + this.props.repoID + '/?p=' + encodeURIComponent(filePath) ;\n window.open(path);\n };\n\n onOpenViaClient = () => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(this.props.dirent);\n let url = URLDecorator.getUrl({type: 'open_via_client', repoID: repoID, filePath: filePath});\n location.href = url;\n };\n\n onConvertWithONLYOFFICE = ()=> {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(this.props.dirent);\n seafileAPI.onlyofficeConvert(repoID, filePath).then(res => {\n this.props.loadDirentList(res.data.parent_dir);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onItemDownload = (e) => {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n let dirent = this.props.dirent;\n let repoID = this.props.repoID;\n let direntPath = this.getDirentPath(dirent);\n if (dirent.type === 'dir') {\n if (!useGoFileserver) {\n this.setState({\n isZipDialogOpen: true\n });\n } else {\n seafileAPI.zipDownload(repoID, this.props.path, this.props.dirent.name).then((res) => {\n const zipToken = res.data['zip_token'];\n location.href = `${fileServerRoot}zip/${zipToken}`;\n }).catch((error) => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({\n isLoading: false,\n errorMsg: errorMsg\n });\n });\n }\n } else {\n let url = URLDecorator.getUrl({type: 'download_file_url', repoID: repoID, filePath: direntPath});\n location.href = url;\n }\n };\n\n closeZipDialog = () => {\n this.setState({\n isZipDialogOpen: false\n });\n };\n\n getDirentPath = (dirent) => {\n let path = this.props.path;\n return path === '/' ? path + dirent.name : path + '/' + dirent.name;\n };\n\n onTagTooltipToggle = (e) => {\n e.stopPropagation();\n this.setState({isShowTagTooltip: !this.state.isShowTagTooltip});\n };\n\n onItemMove = (destRepo, dirent, selectedPath, currentPath) => {\n this.props.onItemMove(destRepo, dirent, selectedPath, currentPath);\n };\n\n onItemDragStart = (e) => {\n if (Utils.isIEBrower() || !this.state.canDrag) {\n return false;\n }\n e.dataTransfer.effectAllowed = 'move';\n let { selectedDirentList } = this.props;\n if (selectedDirentList.length > 0 && selectedDirentList.includes(this.props.dirent)) { // drag items and selectedDirentList include item\n this.props.onShowDirentsDraggablePreview();\n e.dataTransfer.setDragImage(this.refs.empty_content, 0, 0); // Show an empty content\n let selectedList = selectedDirentList.map(item => {\n let nodeRootPath = this.getDirentPath(item);\n let dragStartItemData = {nodeDirent: item, nodeParentPath: this.props.path, nodeRootPath: nodeRootPath};\n return dragStartItemData;\n });\n selectedList = JSON.stringify(selectedList);\n e.dataTransfer.setData('applicaiton/drag-item-info', selectedList);\n return ;\n }\n\n if (e.dataTransfer && e.dataTransfer.setDragImage) {\n e.dataTransfer.setDragImage(this.refs.drag_icon, 15, 15);\n }\n\n let nodeRootPath = this.getDirentPath(this.props.dirent);\n let dragStartItemData = {nodeDirent: this.props.dirent, nodeParentPath: this.props.path, nodeRootPath: nodeRootPath};\n dragStartItemData = JSON.stringify(dragStartItemData);\n\n e.dataTransfer.setData('applicaiton/drag-item-info', dragStartItemData);\n };\n\n onItemDragEnter = (e) => {\n if (Utils.isIEBrower() || !this.state.canDrag) {\n return false;\n }\n if (this.props.dirent.type === 'dir') {\n e.stopPropagation();\n this.setState({isDropTipshow: true});\n }\n };\n\n onItemDragOver = (e) => {\n if (Utils.isIEBrower() || !this.state.canDrag) {\n return false;\n }\n if (e.dataTransfer.dropEffect === 'copy') {\n return;\n }\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n };\n\n onItemDragLeave = (e) => {\n if (Utils.isIEBrower() || !this.state.canDrag) {\n return false;\n }\n\n if (this.props.dirent.type === 'dir') {\n e.stopPropagation();\n }\n this.setState({isDropTipshow: false});\n };\n\n onItemDragDrop = (e) => {\n if (Utils.isIEBrower() || !this.state.canDrag) {\n return false;\n }\n this.setState({isDropTipshow: false});\n if (e.dataTransfer.files.length) { // uploaded files\n return;\n }\n if (this.props.dirent.type === 'dir') {\n e.stopPropagation();\n } else {\n return;\n }\n let dragStartItemData = e.dataTransfer.getData('applicaiton/drag-item-info');\n dragStartItemData = JSON.parse(dragStartItemData);\n if (Array.isArray(dragStartItemData)) { //move items\n let direntPaths = dragStartItemData.map(draggedItem => {\n return draggedItem.nodeRootPath;\n });\n\n let selectedPath = Utils.joinPath(this.props.path, this.props.dirent.name);\n\n if (direntPaths.some(direntPath => { return direntPath === selectedPath;})) { //eg; A/B, A/C --> A/B\n return;\n }\n\n this.props.onItemsMove(this.props.currentRepoInfo, selectedPath);\n return ;\n }\n\n let { nodeDirent, nodeParentPath, nodeRootPath } = dragStartItemData;\n let dropItemData = this.props.dirent;\n\n if (nodeDirent.name === dropItemData.name) {\n return;\n }\n\n // copy the dirent to it's child. eg: A/B -> A/B/C\n if (dropItemData.type === 'dir' && nodeDirent.type === 'dir') {\n if (nodeParentPath !== this.props.path) {\n if (this.props.path.indexOf(nodeRootPath) !== -1) {\n return;\n }\n }\n }\n\n let selectedPath = Utils.joinPath(this.props.path, this.props.dirent.name);\n this.onItemMove(this.props.currentRepoInfo, nodeDirent, selectedPath, nodeParentPath);\n };\n\n onItemMouseDown = (event) => {\n this.props.onItemMouseDown(event);\n };\n\n onItemContextMenu = (event) => {\n let dirent = this.props.dirent;\n this.props.onItemContextMenu(event, dirent);\n };\n\n renderItemOperation = () => {\n let { dirent, currentRepoInfo, selectedDirentList } = this.props;\n let canDownload = true;\n let canDelete = true;\n const { isCustomPermission, customPermission } = this;\n if (isCustomPermission) {\n const { permission } = customPermission;\n canDownload = permission.download;\n canDelete = permission.delete;\n }\n\n // https://dev.seafile.com/seahub/lib/d6f300e7-bb2b-4722-b83e-cf45e370bfbc/file/seaf-server%20%E5%8A%9F%E8%83%BD%E8%AE%BE%E8%AE%A1/%E6%9D%83%E9%99%90%E7%9B%B8%E5%85%B3/%E8%B5%84%E6%96%99%E5%BA%93%E6%9D%83%E9%99%90%E8%A7%84%E8%8C%83.md\n let showShareBtn = Utils.isHasPermissionToShare(currentRepoInfo, dirent.permission, dirent);\n\n return (\n \n {selectedDirentList.length > 1 ?\n \n {this.state.isOperationShow && !dirent.isSelected &&\n
    \n {(dirent.permission === 'rw' || dirent.permission === 'r' || (isCustomPermission && canDownload)) && (\n \n )}\n {showShareBtn && (\n \n )}\n {(dirent.permission === 'rw' || dirent.permission === 'cloud-edit' || (isCustomPermission && canDelete)) && (\n \n )}\n \n
    \n }\n
    :\n \n {this.state.isOperationShow &&\n
    \n {(dirent.permission === 'rw' || dirent.permission === 'r' || (isCustomPermission && canDownload)) && (\n \n )}\n {showShareBtn && (\n \n )}\n {(dirent.permission === 'rw' || dirent.permission === 'cloud-edit' || (isCustomPermission && canDelete)) && (\n \n )}\n \n
    \n }\n
    \n }\n
    \n );\n };\n\n render() {\n let { path, dirent, activeDirent } = this.props;\n let direntPath = Utils.joinPath(path, dirent.name);\n let dirHref = '';\n if (this.props.currentRepoInfo) {\n dirHref = siteRoot + 'library/' + this.props.repoID + '/' + this.props.currentRepoInfo.repo_name + Utils.encodePath(direntPath);\n }\n let fileHref = siteRoot + 'lib/' + this.props.repoID + '/file' + Utils.encodePath(direntPath);\n if (dirent.is_sdoc_revision && dirent.revision_id) {\n fileHref = siteRoot + 'lib/' + this.props.repoID + '/revisions/' + dirent.revision_id + '/';\n }\n\n let iconUrl = Utils.getDirentIcon(dirent);\n\n let trClass = this.state.highlight ? 'tr-highlight ' : '';\n trClass += this.state.isDropTipshow ? 'tr-drop-effect' : '';\n trClass += (activeDirent && activeDirent.name === dirent.name) ? 'tr-active' : '';\n trClass += dirent.isSelected? 'tr-active' : '';\n\n let lockedInfo = dirent.is_freezed ? gettext('Frozen by {name}'): gettext('locked by {name}');\n lockedInfo = lockedInfo.replace('{name}', dirent.lock_owner_name);\n\n const isDesktop = Utils.isDesktop();\n const { canDrag } = this.state;\n const lockedImageUrl = `${mediaUrl}img/file-${dirent.is_freezed ? 'freezed' : 'locked'}-32.png`;\n const lockedMessage = dirent.is_freezed ? gettext('freezed') : gettext('locked');\n const desktopItem = (\n \n \n \n \n \n {dirent.starred !== undefined &&\n \n \n \n }\n \n \n
    \n {(this.canPreview && dirent.encoded_thumbnail_src) ?\n \"\" :\n \n }\n {dirent.is_locked && {lockedMessage}}\n
    \n
    \n \n \n {this.state.isRenameing && }\n {!this.state.isRenameing && (\n \n {(!dirent.isDir() && !this.canPreview) ?\n {dirent.name} :\n {dirent.name}\n }\n {/*(Utils.isSdocFile(dirent.name) && dirent.is_sdoc_draft) &&\n {gettext('Draft')}\n */}\n \n )}\n \n \n {(dirent.type !== 'dir' && dirent.file_tags && dirent.file_tags.length > 0) && (\n
    \n {dirent.file_tags.map((fileTag, index) => {\n return (\n \n );\n })}\n
    \n )}\n {(dirent.type !== 'dir' && (!dirent.file_tags || dirent.file_tags.length == 0)) && (\n
    \n )}\n \n {this.renderItemOperation()}\n {dirent.size && dirent.size}\n {dirent.mtime_relative}\n \n );\n const mobileItem = (\n \n \n
    \n {(this.canPreview && dirent.encoded_thumbnail_src) ?\n \"\" :\n \"\"\n }\n {dirent.is_locked && {lockedMessage}}\n
    \n \n \n {this.state.isRenameing && }\n {!this.state.isRenameing && (\n \n {(!dirent.isDir() && !this.canPreview) ?\n {dirent.name} :\n {dirent.name}\n }\n \n )}\n
    \n {dirent.size && {dirent.size}}\n {dirent.mtime_relative}\n \n \n \n \n
    \n
    \n
    \n {dirent.starred !== undefined &&\n {dirent.starred ? gettext('Unstar') : gettext('Star')}}\n {this.props.getDirentItemMenuList(dirent, true).map((item, index) => {\n if (item != 'Divider' && item.key != 'Open via Client') {\n return (\n {item.value}\n );\n } else {\n return null;\n }\n })}\n
    \n
    \n
    \n \n \n );\n\n return (\n \n {isDesktop ? desktopItem : mobileItem}\n {this.state.isMoveDialogShow &&\n \n \n \n }\n {this.state.isCopyDialogShow &&\n \n \n \n }\n \n {this.state.isEditFileTagShow &&\n \n }\n \n \n {this.state.isEditFileTagShow &&\n \n }\n \n {this.state.isZipDialogOpen &&\n \n \n \n }\n {this.state.isShareDialogShow &&\n \n \n \n }\n {this.state.isPermissionDialogOpen &&\n \n \n \n }\n \n );\n }\n}\n\nDirentListItem.propTypes = propTypes;\n\nexport default DirentListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { siteRoot } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n selectedDirentList: PropTypes.array,\n onHideDirentsDraggablePreview: PropTypes.func\n};\n\nclass DirentsDraggedPreview extends React.Component {\n\n componentDidMount() {\n document.addEventListener('dragover', this.handleDragOver);\n document.addEventListener('drop', this.handleDrop);\n document.addEventListener('dragend', this.handleDragEnd);\n }\n\n componentWillUnmount() {\n document.removeEventListener('dragover', this.handleDragOver);\n document.removeEventListener('drop', this.handleDrop);\n document.removeEventListener('dragend', this.handleDragEnd);\n }\n\n handleDragEnd = () => {\n this.element.style.opacity = 0;\n this.props.onHideDirentsDraggablePreview();\n };\n\n handleDragOver = (event) => {\n if (Utils.isIEBrower()) {\n return false;\n }\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n\n this.element.style.top = event.clientY + 'px';\n this.element.style.left = event.clientX + 'px';\n };\n\n handleDrop = (event) => {\n this.element.style.opacity = 0;\n this.props.onHideDirentsDraggablePreview();\n };\n\n render() {\n let{ selectedDirentList } = this.props;\n const inlineStyle = {\n position: 'absolute',\n opacity: 1,\n pointerEvents: 'none',\n display: 'block',\n left: '-9999px',\n top: '-9999px',\n zIndex: 101,\n maxHeight: document.documentElement.clientHeight,\n overflow: 'hidden'\n };\n return (\n
    this.element = element}>\n {selectedDirentList.map((dirent, index) => {\n let iconUrl = Utils.getDirentIcon(dirent);\n return (\n
    \n {dirent.encoded_thumbnail_src ?\n \"\" :\n \n }\n
    \n );\n })}\n
    \n );\n }\n}\n\nDirentsDraggedPreview.propTypes = propTypes;\n\nexport default DirentsDraggedPreview;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { siteRoot, gettext, username, enableSeadoc } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport TextTranslation from '../../utils/text-translation';\nimport URLDecorator from '../../utils/url-decorator';\nimport Loading from '../loading';\nimport toaster from '../toast';\nimport ModalPortal from '../modal-portal';\nimport CreateFile from '../dialog/create-file-dialog';\nimport CreateFolder from '../dialog/create-folder-dialog';\nimport ImageDialog from '../dialog/image-dialog';\nimport ZipDownloadDialog from '../dialog/zip-download-dialog';\nimport MoveDirentDialog from '../dialog/move-dirent-dialog';\nimport CopyDirentDialog from '../dialog/copy-dirent-dialog';\nimport DirentListItem from './dirent-list-item';\nimport ContextMenu from '../context-menu/context-menu';\nimport { hideMenu, showMenu } from '../context-menu/actions';\nimport DirentsDraggedPreview from '../draggable/dirents-dragged-preview';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n currentRepoInfo: PropTypes.object,\n isAllItemSelected: PropTypes.bool.isRequired,\n isDirentListLoading: PropTypes.bool.isRequired,\n direntList: PropTypes.array.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n sortItems: PropTypes.func.isRequired,\n onAddFile: PropTypes.func.isRequired,\n onAddFolder: PropTypes.func.isRequired,\n onItemDelete: PropTypes.func.isRequired,\n onAllItemSelected: PropTypes.func.isRequired,\n onItemSelected: PropTypes.func.isRequired,\n onItemRename: PropTypes.func.isRequired,\n onItemClick: PropTypes.func.isRequired,\n onItemMove: PropTypes.func.isRequired,\n onItemCopy: PropTypes.func.isRequired,\n onDirentClick: PropTypes.func.isRequired,\n updateDirent: PropTypes.func.isRequired,\n selectedDirentList: PropTypes.array.isRequired,\n onItemsMove: PropTypes.func.isRequired,\n onItemsCopy: PropTypes.func.isRequired,\n onItemConvert: PropTypes.func.isRequired,\n onItemsDelete: PropTypes.func.isRequired,\n onFileTagChanged: PropTypes.func,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n userPerm: PropTypes.string,\n showDirentDetail: PropTypes.func.isRequired,\n loadDirentList: PropTypes.func,\n fullDirentList: PropTypes.array,\n posX: PropTypes.string,\n posY: PropTypes.string,\n};\n\nclass DirentListView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false,\n isImagePopupOpen: false,\n imageItems: [],\n imageIndex: 0,\n fileType: '',\n isCreateFileDialogShow: false,\n isCreateFolderDialogShow: false,\n isMoveDialogShow: false,\n isCopyDialogShow: false,\n isProgressDialogShow: false,\n downloadItems: [],\n isMutipleOperation: true,\n activeDirent: null,\n isListDropTipShow: false,\n isShowDirentsDraggablePreview: false,\n };\n\n this.enteredCounter = 0; // Determine whether to enter the child element to avoid dragging bubbling bugs。\n this.isRepoOwner = props.currentRepoInfo.owner_email === username;\n this.isAdmin = props.currentRepoInfo.is_admin;\n this.repoEncrypted = props.currentRepoInfo.encrypted;\n\n this.clickedDirent = null;\n this.direntItems = [];\n this.currentItemRef = null;\n\n this.zipToken = null;\n\n const { userPerm } = props;\n this.canDrop = userPerm === 'rw';\n const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm);\n if (isCustomPermission) {\n const { modify } = customPermission.permission;\n this.canDrop = modify;\n }\n }\n\n freezeItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n unfreezeItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n onItemRename = (dirent, newName) => {\n let isDuplicated = this.props.direntList.some(item => {\n return item.name === newName;\n });\n if (isDuplicated) {\n let errMessage = gettext('The name \"{name}\" is already taken. Please choose a different name.');\n errMessage = errMessage.replace('{name}', Utils.HTMLescape(newName));\n toaster.danger(errMessage);\n return false;\n }\n this.props.onItemRename(dirent, newName);\n };\n\n onItemRenameToggle = () => {\n this.freezeItem();\n };\n\n onItemSelected = (dirent) => {\n this.setState({activeDirent: null});\n this.props.onItemSelected(dirent);\n };\n\n onDirentClick = (dirent) => {\n hideMenu();\n if (this.props.selectedDirentList.length > 0 && !this.state.activeDirent ) {\n return;\n }\n this.setState({activeDirent: dirent});\n this.props.onDirentClick(dirent);\n };\n\n sortByName = (e) => {\n e.preventDefault();\n const sortBy = 'name';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n sortByTime = (e) => {\n e.preventDefault();\n const sortBy = 'time';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n sortBySize = (e) => {\n e.preventDefault();\n const sortBy = 'size';\n const sortOrder = this.props.sortOrder == 'asc' ? 'desc' : 'asc';\n this.props.sortItems(sortBy, sortOrder);\n };\n\n // for image popup\n prepareImageItem = (item) => {\n const name = item.name;\n const repoID = this.props.repoID;\n const path = Utils.encodePath(Utils.joinPath(this.props.path, name));\n const src = `${siteRoot}repo/${repoID}/raw${path}`;\n\n return {\n 'name': name,\n 'url': `${siteRoot}lib/${repoID}/file${path}`,\n 'src': src\n };\n };\n\n showImagePopup = (curItem) => {\n let items = this.props.fullDirentList.filter((item) => {\n return Utils.imageCheck(item.name);\n });\n\n const imageItems = items.map((item) => {\n return this.prepareImageItem(item);\n });\n\n this.setState({\n isImagePopupOpen: true,\n imageItems: imageItems,\n imageIndex: items.indexOf(curItem)\n });\n };\n\n moveToPrevImage = () => {\n const imageItemsLength = this.state.imageItems.length;\n this.setState((prevState) => ({\n imageIndex: (prevState.imageIndex + imageItemsLength - 1) % imageItemsLength\n }));\n };\n\n moveToNextImage = () => {\n const imageItemsLength = this.state.imageItems.length;\n this.setState((prevState) => ({\n imageIndex: (prevState.imageIndex + 1) % imageItemsLength\n }));\n };\n\n closeImagePopup = () => {\n this.setState({isImagePopupOpen: false});\n };\n\n onCreateFileToggle = (fileType) => {\n this.setState({\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n fileType: fileType || ''\n });\n };\n\n onCreateFolderToggle = () => {\n this.setState({isCreateFolderDialogShow: !this.state.isCreateFolderDialogShow});\n };\n\n onAddFolder = (dirPath) => {\n this.setState({isCreateFolderDialogShow: false});\n this.props.onAddFolder(dirPath);\n };\n\n checkDuplicatedName = (newName) => {\n let direntList = this.props.direntList;\n let isDuplicated = direntList.some(object => {\n return object.name === newName;\n });\n return isDuplicated;\n };\n\n onMoveToggle = () => {\n this.setState({isMoveDialogShow: !this.state.isMoveDialogShow});\n };\n\n onCopyToggle = () => {\n this.setState({isCopyDialogShow: !this.state.isCopyDialogShow});\n };\n\n onItemsDownload = () => {\n let { path, repoID, selectedDirentList } = this.props;\n if (selectedDirentList.length) {\n if (selectedDirentList.length === 1 && !selectedDirentList[0].isDir()) {\n let direntPath = Utils.joinPath(path, selectedDirentList[0].name);\n let url = URLDecorator.getUrl({type: 'download_file_url', repoID: repoID, filePath: direntPath});\n location.href= url;\n return;\n }\n\n let selectedDirentNames = selectedDirentList.map(dirent => {\n return dirent.name;\n });\n\n this.setState({\n isProgressDialogShow: true,\n downloadItems: selectedDirentNames\n });\n }\n };\n\n onCloseZipDownloadDialog = () => {\n this.setState({isProgressDialogShow: false});\n };\n\n // common contextmenu handle\n onMouseDown = (event) => {\n event.stopPropagation();\n if (event.button === 2) {\n return;\n }\n };\n\n handleContextClick = (event, id, menuList, currentObject = null) => {\n event.preventDefault();\n event.stopPropagation();\n\n let x = event.clientX || (event.touches && event.touches[0].pageX);\n let y = event.clientY || (event.touches && event.touches[0].pageY);\n\n if (this.props.posX) {\n x -= this.props.posX;\n }\n if (this.props.posY) {\n y -= this.props.posY;\n }\n\n hideMenu();\n\n let showMenuConfig = {\n id: id,\n position: { x, y },\n target: event.target,\n currentObject: currentObject,\n menuList: menuList,\n };\n\n if (menuList.length === 0) {\n return;\n }\n\n showMenu(showMenuConfig);\n };\n\n // table-container contextmenu handle\n onContainerClick = () => {\n hideMenu();\n if (this.state.activeDirent) {\n this.onDirentClick(null);\n }\n };\n\n onContainerMouseDown = (event) => {\n this.onMouseDown(event);\n };\n\n onContainerContextMenu = (event) => {\n event.preventDefault();\n // Display menu items based on the permissions of the current path\n let permission = this.props.userPerm;\n\n const { isCustomPermission, customPermission } = Utils.getUserPermission(this.props.userPerm);\n if (permission !== 'admin' && permission !== 'rw' && !isCustomPermission) {\n return;\n }\n\n const {\n NEW_FOLDER, NEW_FILE,\n NEW_MARKDOWN_FILE,\n NEW_EXCEL_FILE,\n NEW_POWERPOINT_FILE,\n NEW_WORD_FILE,\n NEW_SEADOC_FILE\n } = TextTranslation;\n\n const direntsContainerMenuList = [\n NEW_FOLDER, NEW_FILE, 'Divider',\n NEW_MARKDOWN_FILE,\n NEW_EXCEL_FILE,\n NEW_POWERPOINT_FILE,\n NEW_WORD_FILE\n ];\n if (enableSeadoc) {\n direntsContainerMenuList.push(NEW_SEADOC_FILE);\n }\n\n if (this.props.selectedDirentList.length === 0) {\n let id = 'dirent-container-menu';\n\n // custom permission judgement\n if (isCustomPermission) {\n const { create: canCreate } = customPermission.permission;\n if (!canCreate) return;\n }\n\n let menuList = direntsContainerMenuList;\n this.handleContextClick(event, id, menuList);\n } else {\n if (this.props.selectedDirentList.length === 1) {\n if (!this.state.activeDirent) {\n let id = 'dirent-item-menu';\n let dirent = this.props.selectedDirentList[0];\n let menuList = this.getDirentItemMenuList(dirent, true);\n this.handleContextClick(event, id, menuList, dirent);\n } else {\n this.onDirentClick(null);\n event.preventDefault();\n event.persist();\n\n // custom permission judgement\n if (isCustomPermission) {\n const { modify } = customPermission.permission;\n if (!modify) return;\n }\n\n setTimeout(() => {\n let id = 'dirent-container-menu';\n\n let menuList = direntsContainerMenuList;\n this.handleContextClick(event, id, menuList);\n }, 0);\n }\n } else {\n let id = 'dirents-menu';\n let menuList = [];\n if (isCustomPermission) {\n const { modify: canModify, copy: canCopy, download: canDownload, delete: canDelete } = customPermission.permission;\n canModify && menuList.push(TextTranslation.MOVE);\n canCopy && menuList.push(TextTranslation.COPY);\n canDownload && menuList.push(TextTranslation.DOWNLOAD);\n canDelete && menuList.push(TextTranslation.DELETE);\n } else {\n menuList = [TextTranslation.MOVE, TextTranslation.COPY, TextTranslation.DOWNLOAD, TextTranslation.DELETE];\n }\n\n this.handleContextClick(event, id, menuList);\n }\n }\n };\n\n onContainerMenuItemClick = (operation) => {\n switch(operation) {\n case 'New Folder':\n this.onCreateFolderToggle();\n break;\n case 'New File':\n this.onCreateFileToggle();\n break;\n case 'New Markdown File':\n this.onCreateFileToggle('.md');\n break;\n case 'New Excel File':\n this.onCreateFileToggle('.xlsx');\n break;\n case 'New PowerPoint File':\n this.onCreateFileToggle('.pptx');\n break;\n case 'New Word File':\n this.onCreateFileToggle('.docx');\n break;\n case 'New SeaDoc File':\n this.onCreateFileToggle('.sdoc');\n break;\n default:\n break;\n }\n\n hideMenu();\n };\n\n onDirentsMenuItemClick = (operation) => {\n switch(operation) {\n case 'Move':\n this.onMoveToggle();\n break;\n case 'Copy':\n this.onCopyToggle();\n break;\n case 'Download':\n this.onItemsDownload();\n break;\n case 'Delete':\n this.props.onItemsDelete();\n break;\n default:\n break;\n }\n\n hideMenu();\n };\n\n // table-thread contextmenu handle -- Shield event\n onThreadMouseDown = (event) => {\n this.onMouseDown(event);\n };\n\n onThreadContextMenu = (event) => {\n event.stopPropagation();\n };\n\n // table-dirent-item contextmenu handle\n onItemMouseDown = (event) => {\n this.onMouseDown(event);\n };\n\n onItemContextMenu = (event, dirent) => {\n // Display menu items according to the current dirent permission\n if (this.props.selectedDirentList.length > 1) {\n return;\n }\n this.onDirentClick(dirent);\n let id = 'dirent-item-menu';\n let menuList = this.getDirentItemMenuList(dirent, true);\n this.handleContextClick(event, id, menuList, dirent);\n };\n\n setDirentItemRef = (index) => item => {\n this.direntItems[index] = item;\n };\n\n onMenuItemClick = (operation, currentObject, event) => {\n let index = this.getDirentIndex(currentObject);\n this.direntItems[index].onMenuItemClick(operation, event);\n\n hideMenu();\n };\n\n onShowMenu = (e) => {\n this.freezeItem();\n };\n\n onHideMenu = (e) => {\n this.unfreezeItem();\n };\n\n // contextmenu utils\n getDirentIndex = (dirent) => {\n let direntList = this.props.direntList;\n let index = 0;\n for (let i = 0; i < direntList.length; i++) {\n if (direntList[i].name === dirent.name) {\n index = i;\n break;\n }\n }\n return index;\n };\n\n getDirentItemMenuList = (dirent, isContextmenu) => {\n const isRepoOwner = this.isRepoOwner;\n const currentRepoInfo = this.props.currentRepoInfo;\n return Utils.getDirentOperationList(isRepoOwner, currentRepoInfo, dirent, isContextmenu);\n };\n\n onTableDragEnter = (e) => {\n if (Utils.isIEBrower() || !this.canDrop) {\n return false;\n }\n this.enteredCounter++;\n if (this.enteredCounter !== 0) {\n if (this.state.isListDropTipShow) {\n return ;\n }\n this.setState({isListDropTipShow: true});\n }\n };\n\n onTableDragOver = (e) => {\n if (Utils.isIEBrower() || !this.canDrop) {\n return false;\n }\n if (e.dataTransfer.dropEffect === 'copy') {\n return;\n }\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n };\n\n onTableDragLeave = (e) => {\n if (Utils.isIEBrower() || !this.canDrop) {\n return false;\n }\n this.enteredCounter--;\n if (this.enteredCounter === 0) {\n this.setState({isListDropTipShow: false});\n }\n };\n\n tableDrop = (e) => {\n if (Utils.isIEBrower() || !this.canDrop) {\n return false;\n }\n e.persist();\n this.enteredCounter = 0;\n this.setState({isListDropTipShow: false});\n if (e.dataTransfer.files.length) { // uploaded files\n return;\n }\n let dragStartItemData = e.dataTransfer.getData('applicaiton/drag-item-info');\n dragStartItemData = JSON.parse(dragStartItemData);\n\n let {nodeDirent, nodeParentPath, nodeRootPath} = dragStartItemData;\n\n if (Array.isArray(dragStartItemData)) { //selected items\n return;\n }\n\n if (nodeRootPath === this.props.path || nodeParentPath === this.props.path) {\n return;\n }\n\n if (this.props.path.indexOf(nodeRootPath) !== -1) {\n return;\n }\n\n this.props.onItemMove(this.props.currentRepoInfo, nodeDirent, this.props.path, nodeParentPath);\n };\n\n onShowDirentsDraggablePreview = () => {\n this.setState({\n isShowDirentsDraggablePreview: true,\n });\n };\n\n onHideDirentsDraggablePreview = () => {\n this.setState({\n isShowDirentsDraggablePreview: false\n });\n };\n\n render() {\n const { direntList, sortBy, sortOrder } = this.props;\n\n if (this.props.isDirentListLoading) {\n return ();\n }\n\n // sort\n const sortByName = sortBy == 'name';\n const sortByTime = sortBy == 'time';\n const sortBySize = sortBy == 'size';\n const sortIcon = sortOrder == 'asc' ? : ;\n\n const isDesktop = Utils.isDesktop();\n\n return (\n \n \n {isDesktop ? (\n \n \n \n \n \n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n \n \n )}\n \n {direntList.map((dirent, index) => {\n return (\n \n );\n })}\n \n
    \n \n {/*icon */}{/*star */}{gettext('Name')} {sortByName && sortIcon}{/*tag */}{/*operation */}{gettext('Size')} {sortBySize && sortIcon}{gettext('Last Update')} {sortByTime && sortIcon}
    \n \n \n \n \n {this.state.isShowDirentsDraggablePreview &&\n \n \n \n }\n {this.state.isImagePopupOpen && (\n \n \n \n )}\n {this.state.isCreateFolderDialogShow && (\n \n \n \n )}\n {this.state.isCreateFileDialogShow && (\n \n \n \n )}\n {this.state.isMoveDialogShow &&\n \n }\n {this.state.isCopyDialogShow &&\n \n }\n {this.state.isProgressDialogShow &&\n \n }\n \n \n );\n }\n}\n\nDirentListView.propTypes = propTypes;\n\nexport default DirentListView;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport DirentNoneView from '../../components/dirent-list-view/dirent-none-view';\nimport RepoInfoBar from '../../components/repo-info-bar';\nimport DirentListView from '../../components/dirent-list-view/dirent-list-view';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n currentRepoInfo: PropTypes.object.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n userPerm: PropTypes.string,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n isRepoInfoBarShow: PropTypes.bool.isRequired,\n usedRepoTags: PropTypes.array.isRequired,\n draftCounts: PropTypes.number,\n updateUsedRepoTags: PropTypes.func.isRequired,\n isDirentListLoading: PropTypes.bool.isRequired,\n direntList: PropTypes.array.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n sortItems: PropTypes.func.isRequired,\n onAddFolder: PropTypes.func.isRequired,\n onAddFile: PropTypes.func.isRequired,\n onItemClick: PropTypes.func.isRequired,\n onItemSelected: PropTypes.func.isRequired,\n onItemDelete: PropTypes.func.isRequired,\n onItemRename: PropTypes.func.isRequired,\n onItemMove: PropTypes.func.isRequired,\n onItemCopy: PropTypes.func.isRequired,\n onDirentClick: PropTypes.func.isRequired,\n updateDirent: PropTypes.func.isRequired,\n isAllItemSelected: PropTypes.bool.isRequired,\n onAllItemSelected: PropTypes.func.isRequired,\n selectedDirentList: PropTypes.array.isRequired,\n onItemsMove: PropTypes.func.isRequired,\n onItemsCopy: PropTypes.func.isRequired,\n onItemConvert: PropTypes.func.isRequired,\n onItemsDelete: PropTypes.func.isRequired,\n onFileTagChanged: PropTypes.func,\n showDirentDetail: PropTypes.func.isRequired,\n loadDirentList: PropTypes.func,\n fullDirentList: PropTypes.array,\n};\n\nclass DirListView extends React.Component {\n\n render() {\n\n if (this.props.path === '/' && this.props.direntList.length === 0) {\n return (\n \n );\n }\n\n return (\n \n {this.props.isRepoInfoBarShow && (\n \n )}\n \n \n );\n }\n}\n\nDirListView.propTypes = propTypes;\n\nexport default DirListView;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport MD5 from 'MD5';\nimport { UncontrolledTooltip } from 'reactstrap';\nimport { gettext, siteRoot, mediaUrl } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n dirent: PropTypes.object.isRequired,\n onItemClick: PropTypes.func.isRequired,\n showImagePopup: PropTypes.func.isRequired,\n onGridItemContextMenu: PropTypes.func.isRequired,\n onGridItemClick: PropTypes.func.isRequired,\n activeDirent: PropTypes.object,\n onGridItemMouseDown: PropTypes.func,\n currentRepoInfo: PropTypes.object,\n onItemMove: PropTypes.func.isRequired,\n};\n\nclass DirentGridItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isGridSelected: false,\n isGridDropTipShow: false,\n };\n\n const { dirent } = this.props;\n const { isCustomPermission, customPermission } = Utils.getUserPermission(dirent.permission);\n this.isCustomPermission = isCustomPermission;\n this.customPermission = customPermission;\n this.canPreview = true;\n this.canDrag = dirent.permission === 'rw';\n if (isCustomPermission) {\n const { preview, modify } = customPermission.permission;\n this.canPreview = preview || modify;\n this.canDrag = modify;\n }\n\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({isGridSelected: false}, () => {\n if (nextProps.activeDirent && nextProps.activeDirent.name === nextProps.dirent.name) {\n this.setState({isGridSelected: true});\n }\n });\n }\n\n onItemMove = (destRepo, dirent, selectedPath, currentPath) => {\n this.props.onItemMove(destRepo, dirent, selectedPath, currentPath);\n };\n\n onItemClick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { dirent, activeDirent } = this.props;\n if (dirent.isDir()) {\n this.props.onItemClick(dirent);\n return;\n }\n\n // is have preview permission\n if (!this.canPreview) {\n return;\n }\n\n if (dirent === activeDirent) {\n this.setState({isGridSelected: false});\n if (Utils.imageCheck(dirent.name)) {\n this.props.showImagePopup(dirent);\n } else {\n this.props.onItemClick(dirent);\n }\n } else {\n this.setState({isGridSelected: false});\n this.props.onGridItemClick(this.props.dirent);\n }\n };\n\n onItemLinkClick = (e) => {\n e.preventDefault();\n const dirent = this.props.dirent;\n\n if (dirent.isDir()) {\n this.props.onItemClick(dirent);\n return;\n }\n\n // is have preview permission\n if (!this.canPreview) {\n return;\n }\n\n if (Utils.imageCheck(dirent.name)) {\n this.props.showImagePopup(dirent);\n } else {\n this.props.onItemClick(dirent);\n }\n };\n\n onGridItemDragStart = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n let dragStartItemData = {nodeDirent: this.props.dirent, nodeParentPath: this.props.path};\n dragStartItemData = JSON.stringify(dragStartItemData);\n\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('applicaiton/drag-item-info', dragStartItemData);\n };\n\n onGridItemDragEnter = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n if (this.props.dirent.type === 'dir') {\n this.setState({isGridDropTipShow: true});\n }\n };\n\n onGridItemDragOver = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n };\n\n onGridItemDragLeave = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n this.setState({isGridDropTipShow: false});\n };\n\n onGridItemDragDrop = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n this.setState({isGridDropTipShow: false});\n if (e.dataTransfer.files.length) { // uploaded files\n return;\n }\n let dragStartItemData = e.dataTransfer.getData('applicaiton/drag-item-info');\n dragStartItemData = JSON.parse(dragStartItemData);\n let {nodeDirent, nodeParentPath} = dragStartItemData;\n let dropItemData = this.props.dirent;\n\n if (nodeDirent.name === dropItemData.name) {\n return;\n }\n\n if (dropItemData.type !== 'dir') {\n return;\n }\n\n let selectedPath = Utils.joinPath(this.props.path, this.props.dirent.name);\n this.onItemMove(this.props.currentRepoInfo, nodeDirent, selectedPath, nodeParentPath);\n };\n\n onGridItemMouseDown = (event) =>{\n this.props.onGridItemMouseDown(event);\n };\n\n getFileUrl = (url) => {\n let fileUrlArr = url.split('/');\n if (fileUrlArr.indexOf('48') !== -1) {\n fileUrlArr.splice(fileUrlArr.indexOf('48'), 1, '192');\n }\n let fileUrl = fileUrlArr.join('/');\n return fileUrl;\n };\n\n onGridItemContextMenu = (event) => {\n let dirent = this.props.dirent;\n this.props.onGridItemContextMenu(event, dirent);\n };\n\n render() {\n let { dirent, path } = this.props;\n let direntPath = Utils.joinPath(path, dirent.name);\n let iconUrl = Utils.getDirentIcon(dirent, true);\n let fileUrl = dirent.encoded_thumbnail_src ? this.getFileUrl(dirent.encoded_thumbnail_src) : '';\n\n let toolTipID = '';\n let tagTitle = '';\n if (dirent.file_tags && dirent.file_tags.length > 0) {\n toolTipID = MD5(dirent.name).slice(0, 7);\n tagTitle = dirent.file_tags.map(item => item.name).join(' ');\n }\n\n let dirHref = '';\n if (this.props.currentRepoInfo) {\n dirHref = siteRoot + 'library/' + this.props.repoID + '/' + this.props.currentRepoInfo.repo_name + Utils.encodePath(direntPath);\n }\n let fileHref = siteRoot + 'lib/' + this.props.repoID + '/file' + Utils.encodePath(direntPath);\n if (dirent.is_sdoc_revision && dirent.revision_id) {\n fileHref = siteRoot + 'lib/' + this.props.repoID + '/revisions/' + dirent.revision_id + '/';\n }\n\n let gridClass = 'grid-file-img-link cursor-pointer';\n gridClass += this.state.isGridSelected ? ' grid-selected-active' : ' ';\n gridClass += this.state.isGridDropTipShow ? ' grid-drop-show' : ' ';\n\n let lockedInfo = dirent.is_freezed ? gettext('Frozen by {name}') : gettext('locked by {name}');\n lockedInfo = lockedInfo.replace('{name}', dirent.lock_owner_name);\n\n const lockedImageUrl = `${mediaUrl}img/file-${dirent.is_freezed ? 'freezed' : 'locked'}-32.png`;\n const lockedMessage = dirent.is_freezed ? gettext('freezed') : gettext('locked');\n return (\n \n
  8. \n \n {(this.canPreview && dirent.encoded_thumbnail_src) ?\n \"\"/ :\n \n }\n {dirent.is_locked && {lockedMessage}}\n \n
    \n {(dirent.type !== 'dir' && dirent.file_tags && dirent.file_tags.length > 0) && (\n \n
    \n {dirent.file_tags.map((fileTag, index) => {\n let length = dirent.file_tags.length;\n return (\n \n );\n })}\n
    \n \n {tagTitle}\n \n
    \n )}\n {(!dirent.isDir() && !this.canPreview) ?\n {dirent.name} :\n {dirent.name}\n }\n
    \n
  9. \n
    \n );\n }\n}\n\nDirentGridItem.propTypes = propTypes;\nexport default DirentGridItem;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { siteRoot, username, enableSeadoc } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport URLDecorator from '../../utils/url-decorator';\nimport Loading from '../loading';\nimport ModalPortal from '../modal-portal';\nimport ImageDialog from '../../components/dialog/image-dialog';\nimport DirentGridItem from '../../components/dirent-grid-view/dirent-grid-item';\nimport ContextMenu from '../context-menu/context-menu';\nimport { hideMenu, showMenu } from '../context-menu/actions';\nimport TextTranslation from '../../utils/text-translation';\nimport MoveDirentDialog from '../dialog/move-dirent-dialog';\nimport CopyDirentDialog from '../dialog/copy-dirent-dialog';\nimport ShareDialog from '../dialog/share-dialog';\nimport ZipDownloadDialog from '../dialog/zip-download-dialog';\nimport EditFileTagDialog from '../dialog/edit-filetag-dialog';\nimport Rename from '../../components/dialog/rename-dirent';\nimport CreateFile from '../dialog/create-file-dialog';\nimport CreateFolder from '../dialog/create-folder-dialog';\nimport LibSubFolderPermissionDialog from '../dialog/lib-sub-folder-permission-dialog';\nimport toaster from '../toast';\n\nimport '../../css/grid-view.css';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n currentRepoInfo: PropTypes.object,\n direntList: PropTypes.array.isRequired,\n fullDirentList: PropTypes.array,\n onAddFile: PropTypes.func,\n onItemDelete: PropTypes.func,\n onItemCopy: PropTypes.func.isRequired,\n onItemConvert: PropTypes.func.isRequired,\n onItemMove: PropTypes.func.isRequired,\n onRenameNode: PropTypes.func.isRequired,\n onItemClick: PropTypes.func.isRequired,\n isDirentListLoading: PropTypes.bool.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n userPerm: PropTypes.string, // current path's user permission\n enableDirPrivateShare: PropTypes.bool.isRequired,\n updateDirent: PropTypes.func.isRequired,\n isDirentDetailShow: PropTypes.bool.isRequired,\n onGridItemClick: PropTypes.func,\n onFileTagChanged: PropTypes.func,\n onAddFolder: PropTypes.func.isRequired,\n showDirentDetail: PropTypes.func.isRequired,\n onItemRename: PropTypes.func.isRequired,\n posX: PropTypes.number,\n posY: PropTypes.number,\n};\n\nclass DirentGridView extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isImagePopupOpen: false,\n imageItems: [],\n imageIndex: 0,\n // onmenuClick\n isShareDialogShow: false,\n isMoveDialogShow: false,\n isCopyDialogShow: false,\n isEditFileTagShow: false,\n isZipDialogOpen: false,\n isRenameDialogShow: false,\n isCreateFolderDialogShow: false,\n isCreateFileDialogShow: false,\n fileType: '',\n isPermissionDialogOpen: false,\n\n isMutipleOperation: false,\n isGridItemFreezed: false,\n activeDirent: null,\n };\n this.isRepoOwner = props.currentRepoInfo.owner_email === username;\n }\n\n onCreateFileToggle = (fileType) => {\n this.setState({\n isCreateFileDialogShow: !this.state.isCreateFileDialogShow,\n fileType: fileType || ''\n });\n };\n\n onGridItemClick = (dirent) => {\n hideMenu();\n this.setState({activeDirent: dirent});\n this.props.onGridItemClick(dirent);\n };\n\n onMoveToggle = () => {\n this.setState({isMoveDialogShow: !this.state.isMoveDialogShow});\n };\n\n onCopyToggle = () => {\n this.setState({isCopyDialogShow: !this.state.isCopyDialogShow});\n };\n\n onAddFolder = (dirPath) => {\n this.setState({isCreateFolderDialogShow: false});\n this.props.onAddFolder(dirPath);\n };\n\n onItemShare = (e) => {\n e.nativeEvent.stopImmediatePropagation(); //for document event\n this.setState({isShareDialogShow: !this.state.isShareDialogShow});\n };\n\n closeSharedDialog = () => {\n this.setState({isShareDialogShow: !this.state.isShareDialogShow});\n };\n\n onItemDelete = (currentObject, e) => {\n e.nativeEvent.stopImmediatePropagation(); //for document event\n this.props.onItemDelete(currentObject);\n };\n\n onItemConvert = (currentObject, e, dstType) => {\n e.nativeEvent.stopImmediatePropagation(); //for document event\n this.props.onItemConvert(currentObject, dstType);\n };\n\n onMenuItemClick = (operation, currentObject, event) => {\n hideMenu();\n switch(operation) {\n case 'Download':\n this.onItemDownload(currentObject, event);\n break;\n case 'Share':\n this.onItemShare(event);\n break;\n case 'Delete':\n this.onItemDelete(currentObject, event);\n break;\n case 'Rename':\n this.onItemRenameToggle();\n break;\n case 'Move':\n this.onItemMoveToggle();\n break;\n case 'Copy':\n this.onItemCopyToggle();\n break;\n case 'Freeze Document':\n this.onFreezeDocument(currentObject);\n break;\n case 'Convert to Markdown':\n this.onItemConvert(currentObject, event, 'markdown');\n break;\n case 'Convert to sdoc':\n this.onItemConvert(currentObject, event, 'sdoc');\n break;\n case 'Tags':\n this.onEditFileTagToggle();\n break;\n case 'Permission':\n this.onPermissionItem();\n break;\n case 'Unlock':\n this.onUnlockItem(currentObject);\n break;\n case 'Lock':\n this.onLockItem(currentObject);\n break;\n case 'Mark as draft':\n this.onMarkAsDraft(currentObject);\n break;\n case 'Unmark as draft':\n this.onUnmarkAsDraft(currentObject);\n break;\n case 'History':\n this.onHistory(currentObject);\n break;\n case 'New Folder':\n this.onCreateFolderToggle(currentObject);\n break;\n case 'New File':\n this.onCreateFileToggle('');\n break;\n case 'New Markdown File':\n this.onCreateFileToggle('.md');\n break;\n case 'New Excel File':\n this.onCreateFileToggle('.xlsx');\n break;\n case 'New PowerPoint File':\n this.onCreateFileToggle('.pptx');\n break;\n case 'New Word File':\n this.onCreateFileToggle('.docx');\n break;\n case 'New SeaDoc File':\n this.onCreateFileToggle('.sdoc');\n break;\n case 'Access Log':\n this.onAccessLog(currentObject);\n break;\n case 'Properties':\n this.props.showDirentDetail('info');\n break;\n case 'Open via Client':\n this.onOpenViaClient(currentObject);\n break;\n default:\n break;\n }\n };\n\n onEditFileTagToggle = () => {\n this.setState({\n isEditFileTagShow: !this.state.isEditFileTagShow\n });\n };\n\n onFileTagChanged = () => {\n let dirent = this.state.activeDirent ? this.state.activeDirent : '';\n let direntPath = Utils.joinPath(this.props.path, dirent.name);\n this.props.onFileTagChanged(dirent, direntPath);\n };\n\n getDirentPath = (dirent) => {\n let path = this.props.path;\n return path === '/' ? path + dirent.name : path + '/' + dirent.name;\n };\n\n closeZipDialog = () => {\n this.setState({\n isZipDialogOpen: false\n });\n };\n\n onItemDownload = (currentObject, e) => {\n e.nativeEvent.stopImmediatePropagation();\n let dirent = currentObject;\n let repoID = this.props.repoID;\n let direntPath = this.getDirentPath(dirent);\n if (dirent.type === 'dir') {\n this.setState({\n isZipDialogOpen: true\n });\n } else {\n let url = URLDecorator.getUrl({type: 'download_file_url', repoID: repoID, filePath: direntPath});\n location.href = url;\n }\n };\n\n onCreateFolderToggle = () => {\n this.setState({\n isCreateFolderDialogShow: !this.state.isCreateFolderDialogShow,\n });\n };\n\n onItemRenameToggle = () => {\n this.setState({\n isRenameDialogShow: !this.state.isRenameDialogShow,\n });\n };\n\n onItemMoveToggle = () => {\n this.setState({isMoveDialogShow: !this.state.isMoveDialogShow});\n };\n\n onItemCopyToggle = () => {\n this.setState({isCopyDialogShow: !this.state.isCopyDialogShow});\n };\n\n onPermissionItem = () => {\n this.setState({isPermissionDialogOpen: !this.state.isPermissionDialogOpen});\n };\n\n onLockItem = (currentObject) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(currentObject);\n seafileAPI.lockfile(repoID, filePath).then(() => {\n this.props.updateDirent(currentObject, 'is_locked', true);\n this.props.updateDirent(currentObject, 'locked_by_me', true);\n let lockName = username.split('@');\n this.props.updateDirent(currentObject, 'lock_owner_name', lockName[0]);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onFreezeDocument = (currentObject) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(currentObject);\n seafileAPI.lockfile(repoID, filePath, -1).then(() => {\n this.props.updateDirent(currentObject, 'is_freezed', true);\n this.props.updateDirent(currentObject, 'is_locked', true);\n this.props.updateDirent(currentObject, 'locked_by_me', true);\n let lockName = username.split('@');\n this.props.updateDirent(currentObject, 'lock_owner_name', lockName[0]);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onUnlockItem = (currentObject) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(currentObject);\n seafileAPI.unlockfile(repoID, filePath).then(() => {\n this.props.updateDirent(currentObject, 'is_locked', false);\n this.props.updateDirent(currentObject, 'locked_by_me', false);\n this.props.updateDirent(currentObject, 'lock_owner_name', '');\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onMarkAsDraft = (currentObject) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(currentObject);\n seafileAPI.sdocMarkAsDraft(repoID, filePath).then((res) => {\n this.props.updateDirent(currentObject, 'is_sdoc_draft', true);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onUnmarkAsDraft = (currentObject) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(currentObject);\n seafileAPI.sdocUnmarkAsDraft(repoID, filePath).then((res) => {\n this.props.updateDirent(currentObject, 'is_sdoc_draft', false);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onHistory = (currentObject) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(currentObject);\n let url = URLDecorator.getUrl({type: 'file_revisions', repoID: repoID, filePath: filePath});\n location.href = url;\n };\n\n onAccessLog = (currentObject) => {\n let filePath = this.getDirentPath(currentObject);\n let path = siteRoot + 'repo/file-access/' + this.props.repoID + '/?p=' + encodeURIComponent(filePath) ;\n window.open(path);\n };\n\n onOpenViaClient = (currentObject) => {\n let repoID = this.props.repoID;\n let filePath = this.getDirentPath(currentObject);\n let url = URLDecorator.getUrl({type: 'open_via_client', repoID: repoID, filePath: filePath});\n location.href = url;\n };\n\n onItemRename = (newName) => {\n this.props.onItemRename(this.state.activeDirent, newName);\n };\n\n prepareImageItem = (item) => {\n const name = item.name;\n const repoID = this.props.repoID;\n const path = Utils.encodePath(Utils.joinPath(this.props.path, name));\n\n const src = `${siteRoot}repo/${repoID}/raw${path}`;\n\n return {\n 'name': name,\n 'url': `${siteRoot}lib/${repoID}/file${path}`,\n 'src': src\n };\n };\n\n showImagePopup = (curItem) => {\n let items = this.props.fullDirentList.filter((item) => {\n return Utils.imageCheck(item.name);\n });\n\n const imageItems = items.map((item) => {\n return this.prepareImageItem(item);\n });\n\n this.setState({\n isImagePopupOpen: true,\n imageItems: imageItems,\n imageIndex: items.indexOf(curItem)\n });\n };\n\n closeImagePopup = () => {\n this.setState({isImagePopupOpen: false});\n };\n\n moveToPrevImage = () => {\n const imageItemsLength = this.state.imageItems.length;\n this.setState((prevState) => ({\n imageIndex: (prevState.imageIndex + imageItemsLength - 1) % imageItemsLength\n }));\n };\n\n moveToNextImage = () => {\n const imageItemsLength = this.state.imageItems.length;\n this.setState((prevState) => ({\n imageIndex: (prevState.imageIndex + 1) % imageItemsLength\n }));\n };\n\n checkDuplicatedName = (newName) => {\n return Utils.checkDuplicatedNameInList(this.props.direntList, newName);\n };\n\n // common contextmenu handle\n onMouseDown = (event) => {\n event.stopPropagation();\n if (event.button === 2) {\n return;\n }\n };\n\n onGridContainerMouseDown = (event) => {\n this.onMouseDown(event);\n };\n\n onGridItemMouseDown = (event) => {\n this.onMouseDown(event);\n };\n\n gridContainerClick = () => {\n hideMenu();\n if (!this.props.isDirentDetailShow) {\n this.onGridItemClick(null);\n }\n };\n\n onGridContainerContextMenu = (event) => {\n event.preventDefault();\n // Display menu items based on the permissions of the current path\n let permission = this.props.userPerm;\n if (permission !== 'admin' && permission !== 'rw') {\n return;\n }\n let id = 'dirent-grid-container-menu';\n const {\n NEW_FOLDER, NEW_FILE,\n NEW_MARKDOWN_FILE,\n NEW_EXCEL_FILE,\n NEW_POWERPOINT_FILE,\n NEW_WORD_FILE,\n NEW_SEADOC_FILE\n } = TextTranslation;\n\n const menuList = [\n NEW_FOLDER, NEW_FILE, 'Divider',\n NEW_MARKDOWN_FILE,\n NEW_EXCEL_FILE,\n NEW_POWERPOINT_FILE,\n NEW_WORD_FILE\n ];\n if (enableSeadoc) {\n menuList.push(NEW_SEADOC_FILE);\n }\n this.handleContextClick(event, id, menuList);\n };\n\n onGridItemContextMenu = (event, dirent) => {\n // Display menu items according to the current dirent permission\n let id = 'grid-item-contextmenu';\n let menuList = this.getDirentItemMenuList(dirent, true);\n this.handleContextClick(event, id, menuList, dirent);\n this.props.onGridItemClick && this.props.onGridItemClick(dirent);\n };\n\n handleContextClick = (event, id, menuList, currentObject = null) => {\n event.preventDefault();\n event.stopPropagation();\n\n let x = event.clientX || (event.touches && event.touches[0].pageX);\n let y = event.clientY || (event.touches && event.touches[0].pageY);\n\n if (this.props.posX) {\n x -= this.props.posX;\n }\n if (this.props.posY) {\n y -= this.props.posY;\n }\n\n hideMenu();\n\n this.setState({activeDirent: currentObject});\n\n let showMenuConfig = {\n id: id,\n position: { x, y },\n target: event.target,\n currentObject: currentObject,\n menuList: menuList,\n };\n\n if (menuList.length === 0) {\n return;\n }\n\n showMenu(showMenuConfig);\n };\n\n getDirentItemMenuList = (dirent, isContextmenu) => {\n const isRepoOwner = this.isRepoOwner;\n const currentRepoInfo = this.props.currentRepoInfo;\n return Utils.getDirentOperationList(isRepoOwner, currentRepoInfo, dirent, isContextmenu);\n };\n\n render() {\n let {direntList, path} = this.props;\n let dirent = this.state.activeDirent ? this.state.activeDirent : '';\n let direntPath = Utils.joinPath(path, dirent.name);\n\n if (this.props.isDirentListLoading) {\n return ();\n }\n\n return (\n \n
      \n {\n direntList.length !== 0 && direntList.map((dirent, index) => {\n return (\n \n );\n })\n }\n
    \n \n \n {this.state.isCreateFolderDialogShow && (\n \n \n \n )}\n {this.state.isCreateFileDialogShow && (\n \n \n \n )}\n {this.state.isMoveDialogShow &&\n \n }\n {this.state.isZipDialogOpen &&\n \n \n \n }\n {this.state.isCopyDialogShow &&\n \n }\n {this.state.isEditFileTagShow &&\n \n }\n {this.state.isShareDialogShow &&\n \n \n \n }\n {this.state.isRenameDialogShow && (\n \n \n \n )}\n {this.state.isPermissionDialogOpen &&\n \n \n \n }\n {this.state.isImagePopupOpen && (\n \n \n \n )}\n
    \n );\n }\n}\n\nDirentGridView.propTypes = propTypes;\n\nexport default DirentGridView;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport RepoInfoBar from '../../components/repo-info-bar';\nimport DirentGridView from '../../components/dirent-grid-view/dirent-grid-view';\nimport DirentNoneView from '../../components/dirent-list-view/dirent-none-view';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n currentRepoInfo: PropTypes.object.isRequired,\n draftCounts: PropTypes.number,\n usedRepoTags: PropTypes.array.isRequired,\n updateUsedRepoTags: PropTypes.func.isRequired,\n direntList: PropTypes.array.isRequired,\n onItemClick: PropTypes.func.isRequired,\n onGridItemClick: PropTypes.func,\n onAddFile: PropTypes.func.isRequired,\n onItemDelete: PropTypes.func.isRequired,\n onItemMove: PropTypes.func.isRequired,\n onItemCopy: PropTypes.func.isRequired,\n onItemConvert: PropTypes.func.isRequired,\n onRenameNode: PropTypes.func.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n userPerm: PropTypes.string,\n isRepoInfoBarShow: PropTypes.bool.isRequired,\n isDirentListLoading: PropTypes.bool.isRequired,\n isDirentDetailShow: PropTypes.bool.isRequired,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n updateDirent: PropTypes.func.isRequired,\n showDirentDetail: PropTypes.func.isRequired,\n onAddFolder: PropTypes.func.isRequired,\n onFileTagChanged: PropTypes.func,\n onItemRename: PropTypes.func.isRequired,\n fullDirentList: PropTypes.array,\n};\n\nclass DirGridView extends React.Component {\n\n render() {\n if (this.props.path === '/' && this.props.direntList.length === 0) {\n return (\n \n );\n }\n return (\n \n {this.props.isRepoInfoBarShow && (\n \n )}\n \n \n );\n }\n}\n\nDirGridView.propTypes = propTypes;\n\nexport default DirGridView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter, Alert } from 'reactstrap';\n\nconst propTypes = {\n currentNode: PropTypes.object,\n onRename: PropTypes.func.isRequired,\n toggleCancel: PropTypes.func.isRequired,\n checkDuplicatedName: PropTypes.func.isRequired,\n};\n\nclass Rename extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n newName: '',\n errMessage: '',\n isSubmitBtnActive: false,\n };\n this.newInput = React.createRef();\n }\n\n UNSAFE_componentWillMount() {\n this.setState({newName: this.props.currentNode.object.name});\n }\n\n componentDidMount() {\n const { currentNode } = this.props;\n this.changeState(currentNode);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.changeState(nextProps.currentNode);\n }\n\n handleChange = (e) => {\n if (!e.target.value.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n\n this.setState({newName: e.target.value});\n };\n\n handleSubmit = () => {\n let { isValid, errMessage } = this.validateInput();\n if (!isValid) {\n this.setState({errMessage : errMessage});\n } else {\n let isDuplicated = this.checkDuplicatedName();\n if (isDuplicated) {\n let errMessage = gettext('The name \"{name}\" is already taken. Please choose a different name.');\n errMessage = errMessage.replace('{name}', Utils.HTMLescape(this.state.newName));\n this.setState({errMessage: errMessage});\n } else {\n this.props.onRename(this.state.newName);\n }\n }\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n }\n };\n\n toggle = () => {\n this.props.toggleCancel();\n };\n\n changeState = (currentNode) => {\n let name = currentNode.object.name;\n this.setState({newName: name});\n };\n\n validateInput = () => {\n let newName = this.state.newName.trim();\n let isValid = true;\n let errMessage = '';\n if (!newName) {\n isValid = false;\n errMessage = gettext('Name is required.');\n return { isValid, errMessage };\n }\n\n if (newName.indexOf('/') > -1) {\n isValid = false;\n errMessage = gettext('Name should not include ' + '\\'/\\'' + '.');\n return { isValid, errMessage };\n }\n\n return { isValid, errMessage };\n };\n\n checkDuplicatedName = () => {\n let isDuplicated = this.props.checkDuplicatedName(this.state.newName);\n return isDuplicated;\n };\n\n onAfterModelOpened = () => {\n if (!this.newInput.current) return;\n const { currentNode } = this.props;\n let type = currentNode.object.type;\n this.newInput.current.focus();\n if (type === 'file') {\n var endIndex = currentNode.object.name.lastIndexOf('.md');\n this.newInput.current.setSelectionRange(0, endIndex, 'forward');\n } else {\n this.newInput.current.setSelectionRange(0, -1);\n }\n };\n\n render() {\n let type = this.props.currentNode.object.type;\n return (\n \n {type === 'file' ? gettext('Rename File') : gettext('Rename Folder') }\n \n

    {type === 'file' ? gettext('New file name'): gettext('New folder name')}

    \n \n {this.state.errMessage && {this.state.errMessage}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nRename.propTypes = propTypes;\n\nexport default Rename;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport TreeView from '../../components/tree-view/tree-view';\nimport Loading from '../../components/loading';\nimport ModalPortal from '../../components/modal-portal';\nimport Rename from '../../components/dialog/rename-dialog';\nimport Copy from '../../components/dialog/copy-dirent-dialog';\nimport Move from '../../components/dialog/move-dirent-dialog';\nimport CreateFolder from '../../components/dialog/create-folder-dialog';\nimport CreateFile from '../../components/dialog/create-file-dialog';\nimport ImageDialog from '../../components/dialog/image-dialog';\nimport { siteRoot, thumbnailSizeForOriginal } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n currentPath: PropTypes.string.isRequired,\n userPerm: PropTypes.string.isRequired,\n isTreeDataLoading: PropTypes.bool.isRequired,\n treeData: PropTypes.object.isRequired,\n currentNode: PropTypes.object,\n onNodeClick: PropTypes.func.isRequired,\n onNodeCollapse: PropTypes.func.isRequired,\n onNodeExpanded: PropTypes.func.isRequired,\n onRenameNode: PropTypes.func.isRequired,\n onDeleteNode: PropTypes.func.isRequired,\n onAddFileNode: PropTypes.func.isRequired,\n onAddFolderNode: PropTypes.func.isRequired,\n repoID: PropTypes.string.isRequired,\n navRate: PropTypes.number,\n inResizing: PropTypes.bool.isRequired,\n currentRepoInfo: PropTypes.object.isRequired,\n onItemMove: PropTypes.func.isRequired,\n onItemCopy: PropTypes.func.isRequired,\n selectedDirentList: PropTypes.array.isRequired,\n onItemsMove: PropTypes.func.isRequired,\n};\n\nclass DirColumnNav extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n opNode: null,\n isAddFileDialogShow: false,\n isAddFolderDialogShow: false,\n isRenameDialogShow: false,\n isNodeImagePopupOpen: false,\n imageNodeItems: [],\n imageIndex: 0,\n isCopyDialogShow: false,\n isMoveDialogShow: false,\n isMutipleOperation: false,\n };\n this.isNodeMenuShow = true;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({opNode: nextProps.currentNode});\n }\n\n onNodeClick = (node) => {\n this.setState({opNode: node});\n if (Utils.imageCheck(node.object.name)) {\n this.showNodeImagePopup(node);\n return;\n }\n this.props.onNodeClick(node);\n };\n\n onMenuItemClick = (operation, node) => {\n this.setState({opNode: node});\n switch (operation) {\n case 'New Folder':\n if (!node) {\n this.onAddFolderToggle('root');\n } else {\n this.onAddFolderToggle();\n }\n break;\n case 'New File':\n if (!node) {\n this.onAddFileToggle('root');\n } else {\n this.onAddFileToggle();\n }\n break;\n case 'Rename':\n this.onRenameToggle();\n break;\n case 'Delete':\n this.onDeleteNode(node);\n break;\n case 'Copy':\n this.onCopyToggle();\n break;\n case 'Move':\n this.onMoveToggle();\n break;\n case 'Open in New Tab':\n this.onOpenFile(node);\n break;\n }\n };\n\n onAddFileToggle = (type) => {\n if (type === 'root') {\n let root = this.props.treeData.root;\n this.setState({\n isAddFileDialogShow: !this.state.isAddFileDialogShow,\n opNode: root,\n });\n } else {\n this.setState({isAddFileDialogShow: !this.state.isAddFileDialogShow});\n }\n };\n\n onAddFolderToggle = (type) => {\n if (type === 'root') {\n let root = this.props.treeData.root;\n this.setState({\n isAddFolderDialogShow: !this.state.isAddFolderDialogShow,\n opNode: root,\n });\n } else {\n this.setState({isAddFolderDialogShow: !this.state.isAddFolderDialogShow});\n }\n };\n\n onRenameToggle = () => {\n this.setState({isRenameDialogShow: !this.state.isRenameDialogShow});\n };\n\n onCopyToggle = () => {\n this.setState({isCopyDialogShow: !this.state.isCopyDialogShow});\n };\n\n onMoveToggle = () => {\n this.setState({isMoveDialogShow: !this.state.isMoveDialogShow});\n };\n\n onAddFolderNode = (dirPath) => {\n this.setState({isAddFolderDialogShow: !this.state.isAddFolderDialogShow});\n this.props.onAddFolderNode(dirPath);\n };\n\n onRenameNode = (newName) => {\n this.setState({isRenameDialogShow: !this.state.isRenameDialogShow});\n let node = this.state.opNode;\n this.props.onRenameNode(node, newName);\n };\n\n onDeleteNode = (node) => {\n this.props.onDeleteNode(node);\n };\n\n onOpenFile = (node) => {\n let newUrl = siteRoot + 'lib/' + this.props.repoID + '/file' + Utils.encodePath(node.path);\n window.open(newUrl, '_blank');\n };\n\n checkDuplicatedName = (newName) => {\n let node = this.state.opNode;\n // root node to new node conditions: parentNode is null,\n let parentNode = node.parentNode ? node.parentNode : node;\n let childrenObject = parentNode.children.map(item => {\n return item.object;\n });\n let isDuplicated = childrenObject.some(object => {\n return object.name === newName;\n });\n return isDuplicated;\n };\n\n showNodeImagePopup = (node) => {\n let childrenNode = node.parentNode.children;\n let items = childrenNode.filter((item) => {\n return Utils.imageCheck(item.object.name);\n });\n let imageNames = items.map((item) => {\n return item.object.name;\n });\n this.setState({\n isNodeImagePopupOpen: true,\n imageNodeItems: this.prepareImageItems(node),\n imageIndex: imageNames.indexOf(node.object.name)\n });\n };\n\n prepareImageItems = (node) => {\n let childrenNode = node.parentNode.children;\n let items = childrenNode.filter((item) => {\n return Utils.imageCheck(item.object.name);\n });\n\n const useThumbnail = !this.props.currentRepoInfo.encrypted;\n let prepareItem = (item) => {\n const name = item.object.name;\n\n const path = Utils.encodePath(Utils.joinPath(node.parentNode.path, name));\n const fileExt = name.substr(name.lastIndexOf('.') + 1).toLowerCase();\n const isGIF = fileExt === 'gif';\n\n const repoID = this.props.repoID;\n let src = '';\n if (useThumbnail && !isGIF) {\n src = `${siteRoot}thumbnail/${repoID}/${thumbnailSizeForOriginal}${path}`;\n } else {\n src = `${siteRoot}repo/${repoID}/raw${path}`;\n }\n\n return {\n 'name': name,\n 'url': `${siteRoot}lib/${repoID}/file${path}`,\n 'src': src\n };\n };\n\n return items.map((item) => { return prepareItem(item); });\n };\n\n closeNodeImagePopup = () => {\n this.setState({\n isNodeImagePopupOpen: false\n });\n };\n\n moveToPrevImage = () => {\n const imageItemsLength = this.state.imageNodeItems.length;\n this.setState((prevState) => ({\n imageIndex: (prevState.imageIndex + imageItemsLength - 1) % imageItemsLength\n }));\n };\n\n moveToNextImage = () => {\n const imageItemsLength = this.state.imageNodeItems.length;\n this.setState((prevState) => ({\n imageIndex: (prevState.imageIndex + 1) % imageItemsLength\n }));\n };\n\n stopTreeScrollPropagation = (e) => {\n e.stopPropagation();\n };\n\n render() {\n let flex = this.props.navRate ? '0 0 ' + this.props.navRate * 100 + '%' : '0 0 25%';\n const select = this.props.inResizing ? 'none' : '';\n return (\n \n
    \n {this.props.isTreeDataLoading ?\n () :\n ()\n }\n
    \n {this.state.isAddFolderDialogShow && (\n \n \n \n )}\n {this.state.isAddFileDialogShow && (\n \n \n \n )}\n {this.state.isRenameDialogShow && (\n \n \n \n )}\n {this.state.isCopyDialogShow && (\n \n \n \n )}\n {this.state.isMoveDialogShow && (\n \n \n \n )}\n {this.state.isNodeImagePopupOpen && (\n \n \n \n )}\n
    \n );\n }\n}\n\nDirColumnNav.defaultProps={\n navRate: 0.25\n};\n\nDirColumnNav.propTypes = propTypes;\n\nexport default DirColumnNav;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../utils/utils';\nimport { gettext, siteRoot } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport toaster from '../toast';\nimport WikiMarkdownViewer from '../wiki-markdown-viewer';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n hash: PropTypes.string,\n isDraft: PropTypes.bool,\n hasDraft: PropTypes.bool,\n goDraftPage: PropTypes.func.isRequired,\n isFileLoading: PropTypes.bool.isRequired,\n isFileLoadedErr: PropTypes.bool.isRequired,\n filePermission: PropTypes.string,\n content: PropTypes.string,\n lastModified: PropTypes.string,\n latestContributor: PropTypes.string,\n onLinkClick: PropTypes.func.isRequired,\n};\n\nclass DirColumnFile extends React.Component {\n\n componentDidMount() {\n if (this.props.hash) {\n let hash = this.props.hash;\n setTimeout(function() {\n window.location.hash = hash;\n }, 500);\n }\n }\n\n onEditClick = (e) => {\n e.preventDefault();\n let { path, repoID } = this.props;\n let url = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(path) + '?mode=edit';\n window.open(url);\n };\n\n onNewDraft = (e) => {\n e.preventDefault();\n let { path, repoID } = this.props;\n seafileAPI.createDraft(repoID, path).then(res => {\n window.location.href = siteRoot + 'lib/' + res.data.origin_repo_id + '/file' + res.data.draft_file_path + '?mode=edit';\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onOpenFile = (e) => {\n e.preventDefault();\n let { path, repoID } = this.props;\n let newUrl = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(path);\n window.open(newUrl, '_blank');\n };\n\n goDraftPage = (e) => {\n e.preventDefault();\n this.props.goDraftPage();\n };\n\n render() {\n if (this.props.isFileLoadedErr) {\n return (\n
    {gettext('File does not exist.')}
    \n );\n }\n return (\n \n \n \n \n \n {(!this.props.isDraft && this.props.hasDraft) &&\n
    \n
    \n {gettext('This file is in draft stage.')}\n {gettext('View Draft')}\n
    \n
    \n }\n
    \n \n );\n }\n}\n\nDirColumnFile.propTypes = propTypes;\n\nexport default DirColumnFile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport DirColumnNav from './dir-column-nav';\nimport DirColumnFile from './dir-column-file';\nimport DirListView from './dir-list-view';\n\nconst propTypes = {\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n // repoinfo\n currentRepoInfo: PropTypes.object.isRequired,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n userPerm: PropTypes.string,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n // tree\n isTreeDataLoading: PropTypes.bool.isRequired,\n treeData: PropTypes.object.isRequired,\n currentNode: PropTypes.object,\n onNodeClick: PropTypes.func.isRequired,\n onNodeCollapse: PropTypes.func.isRequired,\n onNodeExpanded: PropTypes.func.isRequired,\n onRenameNode: PropTypes.func.isRequired,\n onDeleteNode: PropTypes.func.isRequired,\n onAddFileNode: PropTypes.func.isRequired,\n onAddFolderNode: PropTypes.func.isRequired,\n // file\n isViewFile: PropTypes.bool.isRequired,\n isFileLoading: PropTypes.bool.isRequired,\n isFileLoadedErr: PropTypes.bool.isRequired,\n hash: PropTypes.string,\n isDraft: PropTypes.bool.isRequired,\n hasDraft: PropTypes.bool.isRequired,\n goDraftPage: PropTypes.func.isRequired,\n filePermission: PropTypes.string,\n content: PropTypes.string,\n lastModified: PropTypes.string,\n latestContributor: PropTypes.string,\n onLinkClick: PropTypes.func.isRequired,\n // repo content\n isRepoInfoBarShow: PropTypes.bool.isRequired,\n draftCounts: PropTypes.number.isRequired,\n usedRepoTags: PropTypes.array.isRequired,\n updateUsedRepoTags: PropTypes.func.isRequired,\n // list\n isDirentListLoading: PropTypes.bool.isRequired,\n direntList: PropTypes.array.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n sortItems: PropTypes.func.isRequired,\n onAddFolder: PropTypes.func.isRequired,\n onAddFile: PropTypes.func.isRequired,\n updateDirent: PropTypes.func.isRequired,\n onItemClick: PropTypes.func.isRequired,\n onItemSelected: PropTypes.func.isRequired,\n onItemDelete: PropTypes.func.isRequired,\n onItemRename: PropTypes.func.isRequired,\n onItemMove: PropTypes.func.isRequired,\n onItemCopy: PropTypes.func.isRequired,\n onItemConvert: PropTypes.func.isRequired,\n onDirentClick: PropTypes.func.isRequired,\n isAllItemSelected: PropTypes.bool.isRequired,\n onAllItemSelected: PropTypes.func.isRequired,\n selectedDirentList: PropTypes.array.isRequired,\n onItemsMove: PropTypes.func.isRequired,\n onItemsCopy: PropTypes.func.isRequired,\n onItemsDelete: PropTypes.func.isRequired,\n onFileTagChanged: PropTypes.func,\n showDirentDetail: PropTypes.func.isRequired,\n fullDirentList: PropTypes.array,\n};\n\nclass DirColumnView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n inResizing: false,\n navRate: 0.25,\n };\n this.containerWidth = null;\n }\n\n onResizeMouseUp = () => {\n if (this.state.inResizing) {\n this.setState({\n inResizing: false\n });\n }\n this.setCookie('navRate', this.state.navRate);\n };\n\n onResizeMouseDown = () => {\n this.containerWidth = this.refs.viewModeContainer.clientWidth;\n this.setState({\n inResizing: true\n });\n };\n\n onResizeMouseMove = (e) => {\n let sizeNavWidth = this.containerWidth / 0.78 * 0.22 + 3;\n let rate = (e.nativeEvent.clientX - sizeNavWidth) / this.containerWidth;\n if (rate < 0.1) {\n this.setState({\n inResizing: false,\n navRate: 0.12,\n });\n }\n else if (rate > 0.4) {\n this.setState({\n inResizing: false,\n navRate: 0.38,\n });\n }\n else {\n this.setState({\n navRate: rate\n });\n }\n };\n\n setCookie = (name, value) => {\n let cookie = name + '=' + value + ';';\n document.cookie = cookie;\n };\n\n getCookie = (cookiename) => {\n let name = cookiename + '=';\n let cookie = document.cookie.split(';');\n for (let i = 0, len = cookie.length; i < len; i++) {\n let c = cookie[i].trim();\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length) * 1;\n }\n }\n return '';\n };\n\n UNSAFE_componentWillMount() {\n let rate = this.getCookie('navRate');\n if (rate) {\n this.setState({\n navRate: rate,\n });\n }\n }\n\n render() {\n const onResizeMove = this.state.inResizing ? this.onResizeMouseMove : null;\n const select = this.state.inResizing ? 'none' : '';\n const mainFlex = '1 0 ' + (1 - this.state.navRate - 0.05) * 100 + '%';\n return (\n
    \n \n
    \n
    \n {this.props.isViewFile ? (\n \n ) : (\n \n )}\n
    \n
    \n );\n }\n}\n\nDirColumnView.propTypes = propTypes;\n\nexport default DirColumnView;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport CurDirPath from '../../components/cur-dir-path';\nimport DirentDetail from '../../components/dirent-detail/dirent-details';\nimport LibDetail from '../../components/dirent-detail/lib-details';\nimport DirListView from '../../components/dir-view-mode/dir-list-view';\nimport DirGridView from '../../components/dir-view-mode/dir-grid-view';\nimport DirColumnView from '../../components/dir-view-mode/dir-column-view';\n\nimport '../../css/lib-content-view.css';\n\nconst propTypes = {\n pathPrefix: PropTypes.array.isRequired,\n currentMode: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n pathExist: PropTypes.bool.isRequired,\n // repoinfo\n currentRepoInfo: PropTypes.object.isRequired,\n repoID: PropTypes.string.isRequired,\n enableDirPrivateShare: PropTypes.bool.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n userPerm: PropTypes.string,\n // path func\n onTabNavClick: PropTypes.func.isRequired,\n onMainNavBarClick: PropTypes.func.isRequired,\n // file\n isViewFile: PropTypes.bool.isRequired,\n isFileLoadedErr: PropTypes.bool.isRequired,\n hash: PropTypes.string,\n isDraft: PropTypes.bool.isRequired,\n hasDraft: PropTypes.bool.isRequired,\n fileTags: PropTypes.array.isRequired,\n goDraftPage: PropTypes.func.isRequired,\n isFileLoading: PropTypes.bool.isRequired,\n filePermission: PropTypes.string,\n content: PropTypes.string,\n lastModified: PropTypes.string,\n latestContributor: PropTypes.string,\n onLinkClick: PropTypes.func.isRequired,\n // tree\n isTreeDataLoading: PropTypes.bool.isRequired,\n treeData: PropTypes.object.isRequired,\n currentNode: PropTypes.object,\n onNodeClick: PropTypes.func.isRequired,\n onNodeCollapse: PropTypes.func.isRequired,\n onNodeExpanded: PropTypes.func.isRequired,\n onRenameNode: PropTypes.func.isRequired,\n onDeleteNode: PropTypes.func.isRequired,\n onAddFileNode: PropTypes.func.isRequired,\n onAddFolderNode: PropTypes.func.isRequired,\n // repo content\n draftCounts: PropTypes.number,\n usedRepoTags: PropTypes.array.isRequired,\n updateUsedRepoTags: PropTypes.func.isRequired,\n // list\n isDirentListLoading: PropTypes.bool.isRequired,\n direntList: PropTypes.array.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n sortItems: PropTypes.func.isRequired,\n updateDirent: PropTypes.func.isRequired,\n onItemClick: PropTypes.func.isRequired,\n onItemSelected: PropTypes.func.isRequired,\n onItemDelete: PropTypes.func.isRequired,\n onItemRename: PropTypes.func.isRequired,\n onItemMove: PropTypes.func.isRequired,\n onItemCopy: PropTypes.func.isRequired,\n onAddFolder: PropTypes.func.isRequired,\n onAddFile: PropTypes.func.isRequired,\n onItemConvert: PropTypes.func.isRequired,\n onFileTagChanged: PropTypes.func.isRequired,\n isDirentSelected: PropTypes.bool.isRequired,\n isAllDirentSelected: PropTypes.bool.isRequired,\n onAllDirentSelected: PropTypes.func.isRequired,\n isDirentDetailShow: PropTypes.bool.isRequired,\n selectedDirent: PropTypes.object,\n selectedDirentList: PropTypes.array.isRequired,\n onItemsMove: PropTypes.func.isRequired,\n onItemsCopy: PropTypes.func.isRequired,\n onItemsDelete: PropTypes.func.isRequired,\n closeDirentDetail: PropTypes.func.isRequired,\n showDirentDetail: PropTypes.func.isRequired,\n onDeleteRepoTag: PropTypes.func.isRequired,\n updateDetail: PropTypes.bool.isRequired,\n onListContainerScroll: PropTypes.func.isRequired,\n onDirentClick: PropTypes.func.isRequired,\n direntDetailPanelTab: PropTypes.string,\n loadDirentList: PropTypes.func,\n fullDirentList: PropTypes.array,\n};\n\nclass LibContentContainer extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n currentDirent: null,\n };\n\n this.errMessage = (
    {gettext('Folder does not exist.')}
    );\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.path !== this.props.path || nextProps.updateDetail !== this.props.updateDetail) {\n this.setState({currentDirent: null});\n }\n }\n\n onPathClick = (path) => {\n this.props.onMainNavBarClick(path);\n this.props.closeDirentDetail();\n };\n\n onItemClick = (dirent) => {\n this.props.onItemClick(dirent);\n this.props.closeDirentDetail();\n };\n\n onGridItemClick = (dirent) => {\n this.setState({currentDirent: dirent});\n this.props.onDirentClick(dirent);\n };\n\n // on ''\n onDirentClick = (dirent) => {\n this.setState({currentDirent: dirent});\n this.props.onDirentClick(dirent);\n };\n\n onItemSelected = (dirent) => {\n this.setState({currentDirent: dirent});\n this.props.onItemSelected(dirent);\n };\n\n onItemDelete = (dirent) => {\n this.checkCurrentDirent(dirent);\n this.props.onItemDelete(dirent);\n };\n\n onItemMove = (destRepo, dirent, selectedPath, currentPath) => {\n this.checkCurrentDirent(dirent);\n this.props.onItemMove(destRepo, dirent, selectedPath, currentPath);\n };\n\n checkCurrentDirent = (deletedDirent) => {\n let { currentDirent } = this.state;\n if (currentDirent && deletedDirent.name === currentDirent.name) {\n this.setState({currentDirent: null});\n }\n };\n\n onItemsScroll = (e) => {\n let target = e.target;\n\n if (target.scrollTop === 0) {\n return;\n }\n\n if (target.scrollTop + target.clientHeight + 1 >= target.scrollHeight) {\n this.props.onListContainerScroll();\n }\n };\n\n render() {\n let { path, repoID, usedRepoTags, draftCounts } = this.props;\n let isRepoInfoBarShow = false;\n if (path === '/') {\n if (usedRepoTags.length !== 0 || draftCounts !== 0) {\n isRepoInfoBarShow = true;\n }\n }\n\n return (\n \n
    \n {this.props.currentRepoInfo.status === 'read-only' &&\n
    \n {gettext('This library has been set to read-only by admin and cannot be updated.')}\n
    \n }\n
    \n \n
    \n
    \n {!this.props.pathExist && this.errMessage}\n {this.props.pathExist && (\n \n {this.props.currentMode === 'list' && (\n \n )}\n {this.props.currentMode === 'grid' && (\n \n )}\n {this.props.currentMode === 'column' && (\n \n )}\n \n )}\n
    \n
    \n {this.props.isDirentDetailShow &&\n \n
    \n {(this.props.path === '/' && !this.state.currentDirent) ?\n :\n \n }\n
    \n
    \n }\n
    \n );\n }\n}\n\nLibContentContainer.propTypes = propTypes;\n\nexport default LibContentContainer;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n resumableFile: PropTypes.object.isRequired,\n onUploadCancel: PropTypes.func.isRequired,\n onUploadRetry: PropTypes.func.isRequired,\n};\n\nconst UPLOAD_UPLOADING = 'uploading';\nconst UPLOAD_ERROR = 'error';\nconst UPLOAD_ISSAVING = 'isSaving';\nconst UPLOAD_UPLOADED = 'uploaded';\n\nclass UploadListItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n uploadState: UPLOAD_UPLOADING\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n let { resumableFile } = nextProps;\n let uploadState = UPLOAD_UPLOADING;\n\n if (resumableFile.error) {\n uploadState = UPLOAD_ERROR;\n } else {\n if (resumableFile.remainingTime === 0 && !resumableFile.isSaved) {\n uploadState = UPLOAD_ISSAVING;\n }\n\n if (resumableFile.isSaved) {\n uploadState = UPLOAD_UPLOADED;\n }\n }\n\n this.setState({uploadState: uploadState});\n }\n\n onUploadCancel = (e) => {\n e.preventDefault();\n this.props.onUploadCancel(this.props.resumableFile);\n };\n\n onUploadRetry = (e) => {\n e.preventDefault();\n this.props.onUploadRetry(this.props.resumableFile);\n };\n\n formatFileSize = (size) => {\n if (typeof size !== 'number') {\n return '';\n }\n if (size >= 1000 * 1000 * 1000) {\n return (size / (1000 * 1000 * 1000)).toFixed(1) + ' G';\n }\n if (size >= 1000 * 1000) {\n return (size / (1000 * 1000)).toFixed(1) + ' M';\n }\n if (size >= 1000) {\n return (size / 1000).toFixed(1) + ' K';\n }\n return size.toFixed(1) + ' B';\n };\n\n render() {\n let { resumableFile } = this.props;\n let progress = Math.round(resumableFile.progress() * 100);\n let error = resumableFile.error;\n\n const fileName = resumableFile.newFileName;\n const size = this.formatFileSize(resumableFile.size);\n\n return (\n \n \n
    {fileName}
    \n \n \n {size}\n \n \n {(this.state.uploadState === UPLOAD_UPLOADING || this.state.uploadState === UPLOAD_ISSAVING) &&\n \n {resumableFile.size >= (100 * 1000 * 1000) &&\n \n {resumableFile.isUploading() && (\n
    \n
    \n
    \n
    \n {(resumableFile.remainingTime === -1) &&
    {gettext('Preparing to upload...')}
    }\n {(resumableFile.remainingTime > 0) &&
    {gettext('Remaining')}{' '}{Utils.formatTime(resumableFile.remainingTime)}
    }\n {(resumableFile.remainingTime === 0) &&
    {gettext('Indexing...')}
    }\n
    \n )}\n {!resumableFile.isUploading() && (\n
    \n
    \n
    \n
    \n
    \n )}\n
    \n }\n {(resumableFile.size < (100 * 1000 * 1000)) &&\n
    \n
    \n
    \n
    \n
    \n }\n
    \n }\n {this.state.uploadState === UPLOAD_ERROR && (\n
    \n )}\n \n \n \n {this.state.uploadState === UPLOAD_UPLOADING && (\n {gettext('Cancel')}\n )}\n {this.state.uploadState === UPLOAD_ERROR && (\n {gettext('Retry')}\n )}\n {this.state.uploadState === UPLOAD_ISSAVING && (\n {gettext('Saving...')}\n )}\n {this.state.uploadState === UPLOAD_UPLOADED && (\n {gettext('Uploaded')}\n )}\n \n \n \n );\n }\n}\n\nUploadListItem.propTypes = propTypes;\n\nexport default UploadListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext, maxUploadFileSize } from '../../utils/constants';\n\nconst propTypes = {\n file: PropTypes.object,\n};\n\nclass ForbidUploadListItem extends React.Component {\n\n render() {\n let { file } = this.props;\n let msg = gettext('Please upload files less than {placeholder}M').replace('{placeholder}', maxUploadFileSize);\n return (\n \n \n
    {file.name}
    \n \n\n {msg}\n \n );\n }\n}\n\nForbidUploadListItem.propTypes = propTypes;\n\nexport default ForbidUploadListItem;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport UploadListItem from './upload-list-item';\nimport ForbidUploadListItem from './forbid-upload-list-item';\n\nconst propTypes = {\n uploadBitrate: PropTypes.number.isRequired,\n totalProgress: PropTypes.number.isRequired,\n retryFileList: PropTypes.array.isRequired,\n uploadFileList: PropTypes.array.isRequired,\n forbidUploadFileList: PropTypes.array.isRequired,\n onCloseUploadDialog: PropTypes.func.isRequired,\n onCancelAllUploading: PropTypes.func.isRequired,\n onUploadCancel: PropTypes.func.isRequired,\n onUploadRetry: PropTypes.func.isRequired,\n onUploadRetryAll: PropTypes.func.isRequired,\n allFilesUploaded: PropTypes.bool.isRequired,\n};\n\nclass UploadProgressDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isMinimized: false\n };\n }\n\n onCancelAllUploading = () => {\n this.props.onCancelAllUploading();\n };\n\n onMinimizeUpload = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n this.setState({isMinimized: !this.state.isMinimized});\n };\n\n onCloseUpload = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n this.props.onCloseUploadDialog();\n };\n\n render() {\n\n let uploadBitrate = Utils.formatBitRate(this.props.uploadBitrate);\n let uploadedMessage = gettext('File Upload');\n let uploadingMessage = gettext('File Uploading...') + ' ' + this.props.totalProgress + '% (' + uploadBitrate + ')';\n\n let uploadingOptions = ();\n\n let uploadedOptions = (\n \n \n \n \n );\n\n let { totalProgress, allFilesUploaded, retryFileList } = this.props;\n\n return (\n
    \n
    \n
    \n {totalProgress === 100 ? uploadedMessage : uploadingMessage}\n
    \n
    \n {totalProgress === 100 || allFilesUploaded ? uploadedOptions : uploadingOptions}\n
    \n
    \n
    \n
    \n {retryFileList.length > 0 ?\n {gettext('Retry All')}\n :\n {gettext('Retry All')}\n }\n {!allFilesUploaded ?\n {gettext('Cancel All')}\n :\n {gettext('Cancel All')}\n }\n
    \n \n \n \n \n \n \n \n \n \n \n {\n this.props.forbidUploadFileList.map((file, index) => {\n return ();\n })\n }\n {\n this.props.uploadFileList.map((resumableFile, index) => {\n return (\n \n );\n })\n }\n \n
    {gettext('name')}{gettext('size')}{gettext('progress')}{gettext('state')}
    \n
    \n
    \n );\n }\n}\n\nUploadProgressDialog.propTypes = propTypes;\n\nexport default UploadProgressDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\n\nconst propTypes = {\n currentResumableFile: PropTypes.object.isRequired,\n replaceRepetitionFile: PropTypes.func.isRequired,\n uploadFile: PropTypes.func.isRequired,\n cancelFileUpload: PropTypes.func.isRequired,\n};\n\nclass UploadRemindDialog extends React.Component {\n\n toggle = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n this.props.cancelFileUpload();\n };\n\n replaceRepetitionFile = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n this.props.replaceRepetitionFile();\n };\n\n uploadFile = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n this.props.uploadFile();\n };\n\n render() {\n const { fileName } = this.props.currentResumableFile;\n return (\n \n \n {gettext('Replace file {filename}?').replace('{filename}', fileName)}\n \n \n

    {gettext('A file with the same name already exists in this folder.')}

    \n

    {gettext('Replacing it will overwrite its content.')}

    \n
    \n \n \n \n \n \n
    \n );\n }\n}\n\nUploadRemindDialog.propTypes = propTypes;\n\nexport default UploadRemindDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport Resumablejs from '@seafile/resumablejs';\nimport MD5 from 'MD5';\nimport { resumableUploadFileBlockSize, maxUploadFileSize, maxNumberOfFilesForFileupload } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport { gettext } from '../../utils/constants';\nimport UploadProgressDialog from './upload-progress-dialog';\nimport UploadRemindDialog from '../dialog/upload-remind-dialog';\nimport toaster from '../toast';\nimport '../../css/file-uploader.css';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n direntList: PropTypes.array.isRequired,\n filetypes: PropTypes.array,\n chunkSize: PropTypes.number,\n withCredentials: PropTypes.bool,\n testMethod: PropTypes.string,\n testChunks: PropTypes.number,\n simultaneousUploads: PropTypes.number,\n fileParameterName: PropTypes.string,\n minFileSizeErrorCallback: PropTypes.func,\n fileTypeErrorCallback: PropTypes.func,\n dragAndDrop: PropTypes.bool.isRequired,\n path: PropTypes.string.isRequired,\n onFileUploadSuccess: PropTypes.func.isRequired,\n isCustomPermission: PropTypes.bool,\n};\n\nclass FileUploader extends React.Component {\n\n static defaultProps = {\n isCustomPermission: false\n };\n\n constructor(props) {\n super(props);\n this.state = {\n retryFileList: [],\n uploadFileList: [],\n forbidUploadFileList: [],\n totalProgress: 0,\n isUploadProgressDialogShow: false,\n isUploadRemindDialogShow: false,\n currentResumableFile: null,\n uploadBitrate: 0,\n allFilesUploaded: false,\n };\n\n this.uploadInput = React.createRef();\n\n this.notifiedFolders = [];\n\n this.timestamp = null;\n this.loaded = 0;\n this.bitrateInterval = 500; // Interval in milliseconds to calculate the bitrate\n window.onbeforeunload = this.onbeforeunload;\n this.isUploadLinkLoaded = false;\n }\n\n componentDidMount() {\n this.resumable = new Resumablejs({\n target: '',\n query: this.setQuery || {},\n fileType: this.props.filetypes,\n maxFiles: maxNumberOfFilesForFileupload || undefined,\n maxFileSize: maxUploadFileSize * 1000 * 1000 || undefined,\n testMethod: this.props.testMethod || 'post',\n testChunks: this.props.testChunks || false,\n headers: this.setHeaders || {},\n withCredentials: this.props.withCredentials || false,\n chunkSize: parseInt(resumableUploadFileBlockSize) * 1024 * 1024 || 1 * 1024 * 1024,\n simultaneousUploads: this.props.simultaneousUploads || 1,\n fileParameterName: this.props.fileParameterName,\n generateUniqueIdentifier: this.generateUniqueIdentifier,\n forceChunkSize: true,\n maxChunkRetries: 3,\n minFileSize: 0,\n });\n\n this.resumable.assignBrowse(this.uploadInput.current, true);\n\n //Enable or Disable DragAnd Drop\n if (this.props.dragAndDrop === true) {\n this.resumable.enableDropOnDocument();\n }\n\n this.bindCallbackHandler();\n this.bindEventHandler();\n }\n\n componentWillUnmount = () => {\n window.onbeforeunload = null;\n if (this.props.dragAndDrop === true) {\n this.resumable.disableDropOnDocument();\n }\n };\n\n onbeforeunload = () => {\n if (window.uploader &&\n window.uploader.isUploadProgressDialogShow &&\n window.uploader.totalProgress !== 100) {\n return '';\n }\n };\n\n bindCallbackHandler = () => {\n let { minFileSizeErrorCallback, fileTypeErrorCallback } = this.props;\n\n if (this.maxFilesErrorCallback) {\n this.resumable.opts.maxFilesErrorCallback = this.maxFilesErrorCallback;\n }\n\n if (minFileSizeErrorCallback) {\n this.resumable.opts.minFileSizeErrorCallback = this.props.minFileSizeErrorCallback;\n }\n\n if (this.maxFileSizeErrorCallback) {\n this.resumable.opts.maxFileSizeErrorCallback = this.maxFileSizeErrorCallback;\n }\n\n if (fileTypeErrorCallback) {\n this.resumable.opts.fileTypeErrorCallback = this.props.fileTypeErrorCallback;\n }\n\n };\n\n bindEventHandler = () => {\n this.resumable.on('chunkingComplete', this.onChunkingComplete.bind(this));\n this.resumable.on('fileAdded', this.onFileAdded.bind(this));\n this.resumable.on('filesAddedComplete', this.filesAddedComplete.bind(this));\n this.resumable.on('fileProgress', this.onFileProgress.bind(this));\n this.resumable.on('fileSuccess', this.onFileUploadSuccess.bind(this));\n this.resumable.on('progress', this.onProgress.bind(this));\n this.resumable.on('complete', this.onComplete.bind(this));\n this.resumable.on('pause', this.onPause.bind(this));\n this.resumable.on('fileRetry', this.onFileRetry.bind(this));\n this.resumable.on('fileError', this.onFileError.bind(this));\n this.resumable.on('error', this.onError.bind(this));\n this.resumable.on('beforeCancel', this.onBeforeCancel.bind(this));\n this.resumable.on('cancel', this.onCancel.bind(this));\n this.resumable.on('dragstart', this.onDragStart.bind(this));\n };\n\n maxFilesErrorCallback = (files, errorCount) => {\n let maxFiles = maxNumberOfFilesForFileupload;\n let message = gettext('Please upload no more than {maxFiles} files at a time.');\n message = message.replace('{maxFiles}', maxFiles);\n toaster.danger(message);\n };\n\n maxFileSizeErrorCallback = (file) => {\n let { forbidUploadFileList } = this.state;\n forbidUploadFileList.push(file);\n this.setState({forbidUploadFileList: forbidUploadFileList});\n };\n\n onChunkingComplete = (resumableFile) => {\n\n let allFilesUploaded = this.state.allFilesUploaded;\n if (allFilesUploaded === true) {\n this.setState({allFilesUploaded: false});\n }\n\n //get parent_dir relative_path\n let path = this.props.path === '/' ? '/' : this.props.path + '/';\n let fileName = resumableFile.fileName;\n let relativePath = resumableFile.relativePath;\n let isFile = fileName === relativePath;\n\n //update formdata\n resumableFile.formData = {};\n if (isFile) { // upload file\n resumableFile.formData = {\n parent_dir: path,\n };\n } else { // upload folder\n let relative_path = relativePath.slice(0, relativePath.lastIndexOf('/') + 1);\n resumableFile.formData = {\n parent_dir: path,\n relative_path: relative_path\n };\n }\n };\n\n onFileAdded = (resumableFile, files) => {\n const { isCustomPermission } = this.props;\n let isFile = resumableFile.fileName === resumableFile.relativePath;\n // uploading is file and only upload one file\n if (isFile && files.length === 1) {\n let hasRepetition = false;\n if (!isCustomPermission) {\n let direntList = this.props.direntList;\n for (let i = 0; i < direntList.length; i++) {\n if (direntList[i].type === 'file' && direntList[i].name === resumableFile.fileName) {\n hasRepetition = true;\n break;\n }\n }\n }\n if (hasRepetition) {\n this.setState({\n isUploadRemindDialogShow: true,\n currentResumableFile: resumableFile,\n });\n } else {\n this.setUploadFileList(this.resumable.files);\n let { repoID, path } = this.props;\n seafileAPI.getFileServerUploadLink(repoID, path).then(res => {\n this.resumable.opts.target = res.data + '?ret-json=1';\n this.resumableUpload(resumableFile);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n } else {\n this.setUploadFileList(this.resumable.files);\n if (!this.isUploadLinkLoaded) {\n this.isUploadLinkLoaded = true;\n let { repoID, path } = this.props;\n seafileAPI.getFileServerUploadLink(repoID, path).then(res => {\n this.resumable.opts.target = res.data + '?ret-json=1';\n this.resumable.upload();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n }\n };\n\n resumableUpload = (resumableFile) => {\n let { repoID, path } = this.props;\n seafileAPI.getFileUploadedBytes(repoID, path, resumableFile.fileName).then(res => {\n let uploadedBytes = res.data.uploadedBytes;\n let blockSize = parseInt(resumableUploadFileBlockSize) * 1024 * 1024 || 1024 * 1024;\n let offset = Math.floor(uploadedBytes / blockSize);\n resumableFile.markChunksCompleted(offset);\n this.resumable.upload();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n filesAddedComplete = (resumable, files) => {\n let { forbidUploadFileList } = this.state;\n if (forbidUploadFileList.length > 0 && files.length === 0) {\n this.setState({\n isUploadProgressDialogShow: true,\n totalProgress: 100\n });\n }\n };\n\n setUploadFileList = () => {\n let uploadFileList = this.resumable.files;\n this.setState({\n uploadFileList: uploadFileList,\n isUploadProgressDialogShow: true,\n });\n Utils.registerGlobalVariable('uploader', 'isUploadProgressDialogShow', true);\n };\n\n onFileProgress = (resumableFile) => {\n let uploadBitrate = this.getBitrate();\n let uploadFileList = this.state.uploadFileList.map(item => {\n if (item.uniqueIdentifier === resumableFile.uniqueIdentifier) {\n if (uploadBitrate) {\n let lastSize = (item.size - (item.size * item.progress())) * 8;\n let time = Math.floor(lastSize / uploadBitrate);\n item.remainingTime = time;\n }\n }\n return item;\n });\n\n this.setState({\n uploadBitrate: uploadBitrate,\n uploadFileList: uploadFileList\n });\n };\n\n getBitrate = () => {\n let loaded = 0;\n let uploadBitrate = 0;\n let now = new Date().getTime();\n\n this.resumable.files.forEach(file => {\n loaded += file.progress() * file.size;\n });\n\n if (this.timestamp) {\n let timeDiff = (now - this.timestamp);\n if (timeDiff < this.bitrateInterval) {\n return this.state.uploadBitrate;\n }\n\n // 1. Cancel will produce loaded greater than this.loaded\n // 2. reset can make this.loaded to be 0\n if (loaded < this.loaded || this.loaded === 0) {\n this.loaded = loaded; //\n }\n\n uploadBitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8;\n }\n\n this.timestamp = now;\n this.loaded = loaded;\n\n return uploadBitrate;\n };\n\n onProgress = () => {\n let progress = Math.round(this.resumable.progress() * 100);\n this.setState({totalProgress: progress});\n Utils.registerGlobalVariable('uploader', 'totalProgress', progress);\n };\n\n onFileUploadSuccess = (resumableFile, message) => {\n let formData = resumableFile.formData;\n let currentTime = new Date().getTime()/1000;\n message = formData.replace ? message : JSON.parse(message)[0];\n if (formData.relative_path) { // upload folder\n let relative_path = formData.relative_path;\n let dir_name = relative_path.slice(0, relative_path.indexOf('/'));\n let dirent = {\n id: message.id,\n name: dir_name,\n type: 'dir',\n mtime: currentTime,\n };\n\n // update folders cache\n let isExist = this.notifiedFolders.some(item => {return item.name === dirent.name;});\n if (!isExist) {\n this.notifiedFolders.push(dirent);\n this.props.onFileUploadSuccess(dirent);\n }\n\n // update uploadFileList\n let uploadFileList = this.state.uploadFileList.map(item => {\n if (item.uniqueIdentifier === resumableFile.uniqueIdentifier) {\n item.newFileName = relative_path + message.name;\n item.isSaved = true;\n }\n return item;\n });\n this.setState({uploadFileList: uploadFileList});\n\n return;\n }\n\n if (formData.replace) { // upload file -- replace exist file\n let fileName = resumableFile.fileName;\n let dirent = {\n id: message,\n name: fileName,\n type: 'file',\n mtime: currentTime\n };\n this.props.onFileUploadSuccess(dirent); // this contance: just one file\n\n let uploadFileList = this.state.uploadFileList.map(item => {\n if (item.uniqueIdentifier === resumableFile.uniqueIdentifier) {\n item.newFileName = fileName;\n item.isSaved = true;\n }\n return item;\n });\n this.setState({uploadFileList: uploadFileList});\n\n return;\n }\n\n // upload file -- add files\n let dirent = {\n id: message.id,\n type: 'file',\n name: message.name,\n size: message.size,\n mtime: currentTime,\n };\n this.props.onFileUploadSuccess(dirent); // this contance: no repetition file\n\n let uploadFileList = this.state.uploadFileList.map(item => {\n if (item.uniqueIdentifier === resumableFile.uniqueIdentifier) {\n item.newFileName = message.name;\n item.isSaved = true;\n }\n return item;\n });\n this.setState({uploadFileList: uploadFileList});\n };\n\n getFileServerErrorMessage = (key) => {\n const errorMessage = {\n 'File locked by others.': gettext('File is locked by others.'), // 403\n 'Invalid filename.': gettext('Invalid filename.'), // 440\n 'File already exists.': gettext('File already exists.'), // 441\n 'File size is too large.': gettext('File size is too large.'), // 442\n 'Out of quota.': gettext('Out of quota.'), // 443\n 'Internal error.': gettext('Internal Server Error'), // 500\n };\n return errorMessage[key] || key;\n };\n\n onFileError = (resumableFile, message) => {\n let error = '';\n if (!message) {\n error = gettext('Network error');\n } else {\n // eg: '{\"error\": \"Internal error\" \\n }'\n let errorMessage = message.replace(/\\n/g, '');\n errorMessage = JSON.parse(errorMessage);\n error = this.getFileServerErrorMessage(errorMessage.error);\n }\n\n let uploadFileList = this.state.uploadFileList.map(item => {\n if (item.uniqueIdentifier === resumableFile.uniqueIdentifier) {\n this.state.retryFileList.push(item);\n item.error = error;\n }\n return item;\n });\n\n this.loaded = 0; // reset loaded data;\n this.setState({\n retryFileList: this.state.retryFileList,\n uploadFileList: uploadFileList\n });\n\n };\n\n onComplete = () => {\n this.notifiedFolders = [];\n // reset upload link loaded\n this.isUploadLinkLoaded = false;\n this.setState({allFilesUploaded: true});\n };\n\n onPause = () => {\n\n };\n\n onError = (message) => {\n // reset upload link loaded\n this.isUploadLinkLoaded = false;\n // After the error, the user can switch windows\n Utils.registerGlobalVariable('uploader', 'totalProgress', 100);\n };\n\n onFileRetry = () => {\n // todo, cancel upload file, uploded again;\n };\n\n onBeforeCancel = () => {\n // todo, giving a pop message ?\n };\n\n onCancel = () => {\n\n };\n\n setHeaders = (resumableFile, resumable) => {\n let offset = resumable.offset;\n let chunkSize = resumable.getOpt('chunkSize');\n let fileSize = resumableFile.size === 0 ? 1 : resumableFile.size;\n let startByte = offset !== 0 ? offset * chunkSize : 0;\n let endByte = Math.min(fileSize, (offset + 1) * chunkSize) - 1;\n\n if (fileSize - resumable.endByte < chunkSize && !resumable.getOpt('forceChunkSize')) {\n endByte = fileSize;\n }\n\n let headers = {\n 'Accept': 'application/json; text/javascript, */*; q=0.01',\n 'Content-Disposition': 'attachment; filename=\"' + encodeURI(resumableFile.fileName) + '\"',\n 'Content-Range': 'bytes ' + startByte + '-' + endByte + '/' + fileSize,\n };\n\n return headers;\n };\n\n setQuery = (resumableFile) => {\n let formData = resumableFile.formData;\n return formData;\n };\n\n generateUniqueIdentifier = (file) => {\n let relativePath = file.webkitRelativePath||file.relativePath||file.fileName||file.name;\n return MD5(relativePath + new Date()) + relativePath;\n };\n\n onClick = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n e.stopPropagation();\n };\n\n onFileUpload = () => {\n this.uploadInput.current.removeAttribute('webkitdirectory');\n\n this.uploadInput.current.click();\n };\n\n onFolderUpload = () => {\n this.uploadInput.current.setAttribute('webkitdirectory', 'webkitdirectory');\n this.uploadInput.current.click();\n };\n\n onDragStart = () => {\n this.uploadInput.current.setAttribute('webkitdirectory', 'webkitdirectory');\n };\n\n onCloseUploadDialog = () => {\n this.loaded = 0;\n this.resumable.files = [];\n // reset upload link loaded\n this.isUploadLinkLoaded = false;\n this.setState({isUploadProgressDialogShow: false, uploadFileList: [], forbidUploadFileList: []});\n Utils.registerGlobalVariable('uploader', 'isUploadProgressDialogShow', false);\n };\n\n onUploadCancel = (uploadingItem) => {\n\n let uploadFileList = this.state.uploadFileList.filter(item => {\n if (item.uniqueIdentifier === uploadingItem.uniqueIdentifier) {\n item.cancel(); // execute cancel function will delete the file at the same time\n return false;\n }\n return true;\n });\n\n if (!this.resumable.isUploading()) {\n this.setState({\n totalProgress: '100',\n allFilesUploaded: true,\n });\n this.loaded = 0;\n }\n\n this.setState({uploadFileList: uploadFileList});\n };\n\n onCancelAllUploading = () => {\n let uploadFileList = this.state.uploadFileList.filter(item => {\n if (Math.round(item.progress() !== 1)) {\n item.cancel();\n return false;\n }\n return true;\n });\n\n this.loaded = 0;\n\n this.setState({\n allFilesUploaded: true,\n totalProgress: '100',\n uploadFileList: uploadFileList\n });\n // reset upload link loaded\n this.isUploadLinkLoaded = false;\n };\n\n onUploadRetry = (resumableFile) => {\n\n seafileAPI.getFileServerUploadLink(this.props.repoID, this.props.path).then(res => {\n this.resumable.opts.target = res.data + '?ret-json=1';\n\n let retryFileList = this.state.retryFileList.filter(item => {\n return item.uniqueIdentifier !== resumableFile.uniqueIdentifier;\n });\n let uploadFileList = this.state.uploadFileList.map(item => {\n if (item.uniqueIdentifier === resumableFile.uniqueIdentifier) {\n item.error = null;\n this.retryUploadFile(item);\n }\n return item;\n });\n\n this.setState({\n retryFileList: retryFileList,\n uploadFileList: uploadFileList\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onUploadRetryAll = () => {\n\n seafileAPI.getFileServerUploadLink(this.props.repoID, this.props.path).then(res => {\n this.resumable.opts.target = res.data + '?ret-json=1';\n this.state.retryFileList.forEach(item => {\n item.error = false;\n this.retryUploadFile(item);\n });\n\n let uploadFileList = this.state.uploadFileList.slice(0);\n this.setState({\n retryFileList: [],\n uploadFileList: uploadFileList\n });\n\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n retryUploadFile = (resumableFile) => {\n let { repoID, path } = this.props;\n let fileName = resumableFile.fileName;\n let isFile = resumableFile.fileName === resumableFile.relativePath;\n if (!isFile) {\n let relative_path = resumableFile.formData.relative_path;\n let prefix = path === '/' ? (path + relative_path) : (path + '/' + relative_path);\n fileName = prefix + fileName;\n }\n\n resumableFile.bootstrap();\n var firedRetry = false;\n resumableFile.resumableObj.on('chunkingComplete', () => {\n if(!firedRetry) {\n seafileAPI.getFileUploadedBytes(repoID, path, fileName).then(res => {\n let uploadedBytes = res.data.uploadedBytes;\n let blockSize = parseInt(resumableUploadFileBlockSize) * 1024 * 1024 || 1024 * 1024;\n let offset = Math.floor(uploadedBytes / blockSize);\n resumableFile.markChunksCompleted(offset);\n\n resumableFile.resumableObj.upload();\n\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n firedRetry = true;\n });\n\n };\n\n replaceRepetitionFile = () => {\n let { repoID, path } = this.props;\n seafileAPI.getUpdateLink(repoID, path).then(res => {\n this.resumable.opts.target = res.data;\n\n let resumableFile = this.resumable.files[this.resumable.files.length - 1];\n resumableFile.formData['replace'] = 1;\n resumableFile.formData['target_file'] = resumableFile.formData.parent_dir + resumableFile.fileName;\n this.setState({isUploadRemindDialogShow: false});\n this.setUploadFileList(this.resumable.files);\n this.resumable.upload();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n uploadFile = () => {\n let resumableFile = this.resumable.files[this.resumable.files.length - 1];\n let { repoID, path } = this.props;\n seafileAPI.getFileServerUploadLink(repoID, path).then((res) => { // get upload link\n this.resumable.opts.target = res.data + '?ret-json=1';\n this.setState({\n isUploadRemindDialogShow: false,\n isUploadProgressDialogShow: true,\n uploadFileList: [...this.state.uploadFileList, resumableFile]\n }, () => {\n this.resumable.upload();\n });\n Utils.registerGlobalVariable('uploader', 'isUploadProgressDialogShow', true);\n\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n cancelFileUpload = () => {\n this.resumable.files.pop(); //delete latest file;\n this.setState({isUploadRemindDialogShow: false});\n };\n\n render() {\n return (\n \n
    \n
    \n \n
    \n
    \n {this.state.isUploadRemindDialogShow &&\n \n }\n {this.state.isUploadProgressDialogShow &&\n \n }\n
    \n );\n }\n}\n\nFileUploader.propTypes = propTypes;\n\nexport default FileUploader;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n deleteFolder: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass DeleteFolderDialog extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n sharedToUserCount: 0,\n sharedToGroupCount: 0\n };\n }\n\n componentDidMount() {\n const { repoID, path } = this.props;\n seafileAPI.getRepoFolderShareInfo(repoID, path).then((res) => {\n this.setState({\n sharedToUserCount: res.data['shared_user_emails'].length,\n sharedToGroupCount: res.data['shared_group_ids'].length\n });\n });\n }\n\n deleteFolder = () => {\n this.props.deleteFolder();\n this.props.toggleDialog();\n };\n\n render() {\n const { sharedToUserCount, sharedToGroupCount } = this.state;\n const { path, toggleDialog } = this.props;\n const folderName = Utils.getFileName(path);\n const opTarget = '' + Utils.HTMLescape(folderName) + '';\n const message = gettext('Are you sure you want to delete %s ?').replace('%s', opTarget);\n\n let alert_message = '';\n if (sharedToUserCount > 0 || sharedToGroupCount > 0) {\n alert_message = gettext('This folder has been shared to {user_amount} user(s) and {group_amount} group(s).')\n .replace('{user_amount}', sharedToUserCount)\n .replace('{group_amount}', sharedToGroupCount);\n }\n\n return (\n \n {gettext('Delete Folder')}\n \n

    \n {alert_message &&

    {alert_message}

    }\n
    \n \n \n \n \n
    \n );\n }\n}\n\nDeleteFolderDialog.propTypes = propTypes;\n\nexport default DeleteFolderDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport cookie from 'react-cookies';\nimport moment from 'moment';\nimport { navigate } from '@gatsbyjs/reach-router';\nimport { gettext, siteRoot, username, isDocs, enableVideoThumbnail } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport collabServer from '../../utils/collab-server';\nimport Dirent from '../../models/dirent';\nimport FileTag from '../../models/file-tag';\nimport RepoTag from '../../models/repo-tag';\nimport RepoInfo from '../../models/repo-info';\nimport TreeNode from '../../components/tree-view/tree-node';\nimport treeHelper from '../../components/tree-view/tree-helper';\nimport toaster from '../../components/toast';\nimport ModalPortal from '../../components/modal-portal';\nimport LibDecryptDialog from '../../components/dialog/lib-decrypt-dialog';\nimport LibContentToolbar from './lib-content-toolbar';\nimport LibContentContainer from './lib-content-container';\nimport FileUploader from '../../components/file-uploader/file-uploader';\nimport CopyMoveDirentProgressDialog from '../../components/dialog/copy-move-dirent-progress-dialog';\nimport DeleteFolderDialog from '../../components/dialog/delete-folder-dialog';\n\nconst propTypes = {\n pathPrefix: PropTypes.array.isRequired,\n onTabNavClick: PropTypes.func.isRequired,\n onMenuClick: PropTypes.func.isRequired,\n repoID: PropTypes.string,\n};\n\nclass LibContentView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n currentMode: cookie.load('seafile_view_mode') || 'list',\n path: '',\n pathExist: true,\n isViewFile: false,\n hash: '',\n currentRepoInfo: null,\n repoName: '',\n repoEncrypted: false,\n libNeedDecrypt: false,\n isGroupOwnedRepo: false,\n userPerm: '',\n selectedDirentList: [],\n isDraft: false,\n hasDraft: false,\n fileTags: [],\n draftID: '',\n draftCounts: 0,\n usedRepoTags: [],\n isTreeDataLoading: true,\n treeData: treeHelper.buildTree(),\n currentNode: null,\n isFileLoading: true,\n isFileLoadedErr: false,\n filePermission: '',\n content: '',\n lastModified: '',\n latestContributor: '',\n isDirentListLoading: true,\n direntList: [],\n isDirentSelected: false,\n sortBy: cookie.load('seafile-repo-dir-sort-by') || 'name', // 'name' or 'time' or 'size'\n sortOrder: cookie.load('seafile-repo-dir-sort-order') || 'asc', // 'asc' or 'desc'\n isAllDirentSelected: false,\n dirID: '', // for update dir list\n errorMsg: '',\n isDirentDetailShow: false,\n direntDetailPanelTab: '',\n updateDetail: false,\n itemsShowLength: 100,\n isSessionExpired: false,\n isCopyMoveProgressDialogShow: false,\n isDeleteFolderDialogOpen: false,\n asyncCopyMoveTaskId: '',\n asyncOperationType: 'move',\n asyncOperationProgress: 0,\n asyncOperatedFilesLength: 0,\n };\n\n this.oldonpopstate = window.onpopstate;\n window.onpopstate = this.onpopstate;\n this.lastModifyTime = new Date();\n this.isNeedUpdateHistoryState = true; // Load, refresh page, switch mode for the first time, no need to set historyState\n this.currentMoveItemName = '';\n this.currentMoveItemPath = '';\n }\n\n showDirentDetail = (direntDetailPanelTab) => {\n if (direntDetailPanelTab) {\n this.setState({ direntDetailPanelTab: direntDetailPanelTab }, () => {\n this.setState({ isDirentDetailShow: true });\n });\n } else {\n this.setState({\n direntDetailPanelTab: '',\n isDirentDetailShow: true\n });\n }\n };\n\n toggleDirentDetail = () => {\n this.setState({\n direntDetailPanelTab: '',\n isDirentDetailShow: !this.state.isDirentDetailShow\n });\n };\n\n closeDirentDetail = () => {\n this.setState({\n isDirentDetailShow: false,\n direntDetailPanelTab: '',\n });\n };\n\n UNSAFE_componentWillMount() {\n const hash = window.location.hash;\n if (hash.slice(0, 1) === '#') {\n this.setState({hash: hash});\n }\n }\n\n async componentDidMount() {\n // eg: http://127.0.0.1:8000/library/repo_id/repo_name/**/**/\\\n let repoID = this.props.repoID;\n let location = window.location.href.split('#')[0];\n location = decodeURIComponent(location);\n let path = location.slice(location.indexOf(repoID) + repoID.length + 1); // get the string after repoID\n path = path.slice(path.indexOf('/')); // get current path\n // If the path isn't a root path and ends with '/', delete the ending '/'\n if (path.length > 1 && path[path.length - 1] === '/') {\n path = path.slice(0, path.length - 1);\n }\n\n try {\n const repoRes = await seafileAPI.getRepoInfo(repoID);\n const repoInfo = new RepoInfo(repoRes.data);\n const isGroupOwnedRepo = repoInfo.owner_email.indexOf('@seafile_group') > -1;\n\n this.setState({\n currentRepoInfo: repoInfo,\n });\n\n if (repoInfo.permission.startsWith('custom-')) {\n const permissionID = repoInfo.permission.split('-')[1];\n const permissionRes = await seafileAPI.getCustomPermission(repoID, permissionID);\n window.custom_permission = permissionRes.data.permission;\n }\n\n this.isNeedUpdateHistoryState = false;\n this.setState({\n repoName: repoInfo.repo_name,\n libNeedDecrypt: repoInfo.lib_need_decrypt,\n repoEncrypted: repoInfo.encrypted,\n isGroupOwnedRepo: isGroupOwnedRepo,\n path: path\n });\n\n if (!repoInfo.lib_need_decrypt) {\n this.loadDirData(path);\n }\n } catch (error) {\n if (error.response) {\n if (error.response.status == 403) {\n this.setState({\n isDirentListLoading: false,\n errorMsg: gettext('Permission denied')\n });\n\n let errorMsg = gettext('Permission denied');\n toaster.danger(errorMsg);\n } else if (error.response.status == 404) {\n this.setState({\n isDirentListLoading: false,\n errorMsg: gettext('Library share permission not found.')\n });\n } else {\n this.setState({\n isDirentListLoading: false,\n errorMsg: gettext('Error')\n });\n }\n } else {\n this.setState({\n isDirentListLoading: false,\n errorMsg: gettext('Please check the network.')\n });\n }\n }\n }\n\n componentWillUnmount() {\n window.onpopstate = this.oldonpopstate;\n collabServer.unwatchRepo(this.props.repoID, this.onRepoUpdateEvent);\n }\n\n componentDidUpdate() {\n this.lastModifyTime = new Date();\n }\n\n onpopstate = (event) => {\n if (event.state && event.state.key) { // root path\n if (this.state.path === '/') {\n return;\n } else {\n let path = '/';\n this.loadDirentList(path);\n this.setState({\n path: path,\n isViewFile: false\n });\n }\n } else if (event.state && event.state.path) { // file path\n let path = event.state.path;\n if (this.state.currentMode === 'column') {\n if (Utils.isMarkdownFile(path)) { // Judging not strict\n this.showFile(path);\n return;\n }\n }\n this.loadDirentList(path);\n this.setState({\n path: path,\n isViewFile: false\n });\n }\n };\n\n onRepoUpdateEvent = () => {\n let currentTime = new Date();\n if ((parseFloat(currentTime - this.lastModifyTime)/1000) <= 5) {\n return;\n }\n let repoID = this.props.repoID;\n let { path, dirID } = this.state;\n\n if (this.state.currentMode === 'column') {\n if (this.state.isViewFile) {\n this.updateColumnMarkdownData(path);\n } else {\n seafileAPI.dirMetaData(repoID, path).then((res) => {\n if (res.data.id !== dirID) {\n this.loadDirentList(path);\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n } else {\n seafileAPI.dirMetaData(repoID, path).then((res) => {\n if (res.data.id !== dirID) {\n this.loadDirentList(path);\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n updateUsedRepoTags = () => {\n let repoID = this.props.repoID;\n seafileAPI.listRepoTags(repoID).then(res => {\n let usedRepoTags = [];\n res.data.repo_tags.forEach(item => {\n let usedRepoTag = new RepoTag(item);\n if (usedRepoTag.fileCount > 0) {\n usedRepoTags.push(usedRepoTag);\n }\n });\n this.setState({usedRepoTags: usedRepoTags});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateColumnMarkdownData = (filePath) => {\n let repoID = this.props.repoID;\n // update state\n this.setState({\n path: filePath,\n isViewFile: true\n });\n\n // update data\n seafileAPI.getFileInfo(repoID, filePath).then((res) => {\n let { mtime, permission, last_modifier_name, is_draft, has_draft, draft_id } = res.data;\n seafileAPI.getFileDownloadLink(repoID, filePath).then((res) => {\n seafileAPI.getFileContent(res.data).then((res) => {\n if (this.state.content !== res.data) {\n this.setState({isFileLoading: true});\n }\n this.setState({\n content: res.data,\n filePermission: permission,\n latestContributor: last_modifier_name,\n lastModified: moment.unix(mtime).fromNow(),\n isFileLoading: false,\n isFileLoadedErr: false,\n isDraft: is_draft,\n hasDraft: has_draft,\n draftID: draft_id\n });\n });\n });\n }).catch(() => {\n this.setState({\n isFileLoading: false,\n isFileLoadedErr: true,\n });\n });\n };\n\n // load data\n loadDirData = (path) => {\n let repoID = this.props.repoID;\n\n // listen current repo\n collabServer.watchRepo(repoID, this.onRepoUpdateEvent);\n\n // list used FileTags\n this.updateUsedRepoTags();\n\n // list draft counts and review counts\n if (isDocs) {\n seafileAPI.getRepoDraftCounts(repoID).then(res => {\n this.setState({\n draftCounts: res.data.draft_counts,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n\n if (Utils.isMarkdownFile(path)) {\n seafileAPI.getFileInfo(this.props.repoID, path).then(() => {\n if (this.state.currentMode !== 'column') {\n cookie.save('seafile_view_mode', 'column');\n this.setState({currentMode: 'column'});\n }\n this.loadSidePanel(path);\n this.showFile(path);\n }).catch(() => {\n if (this.state.currentMode === 'column') { // After an error occurs, follow dir\n this.loadSidePanel(path);\n this.showDir(path);\n } else {\n this.showDir(path);\n }\n });\n } else {\n if (this.state.currentMode === 'column') {\n this.loadSidePanel(path);\n this.showDir(path);\n } else {\n this.showDir(path);\n }\n }\n };\n\n loadSidePanel = (path) => {\n let repoID = this.props.repoID;\n if (path === '/') {\n seafileAPI.listDir(repoID, '/').then(res => {\n const { dirent_list, user_perm } = res.data;\n let tree = this.state.treeData;\n this.addResponseListToNode(dirent_list, tree.root);\n this.setState({\n isTreeDataLoading: false,\n treeData: tree,\n userPerm: user_perm,\n });\n }).catch(() => {\n this.setState({isTreeDataLoading: false});\n });\n } else {\n this.loadNodeAndParentsByPath(path);\n }\n };\n\n showDir = (path) => {\n let repoID = this.props.repoID;\n\n if (!this.state.isSessionExpired) {\n // update stste\n this.setState({\n isDirentListLoading: true,\n isViewFile: false,\n selectedDirentList: [],\n });\n }\n\n // update data\n this.loadDirentList(path);\n this.resetShowLength();\n\n if (!this.isNeedUpdateHistoryState) {\n this.isNeedUpdateHistoryState = true;\n return;\n }\n // update location\n let repoInfo = this.state.currentRepoInfo;\n let url = siteRoot + 'library/' + repoID + '/' + encodeURIComponent(repoInfo.repo_name) + Utils.encodePath(path);\n window.history.pushState({url: url, path: path}, path, url);\n };\n\n showFile = (filePath) => {\n let repoID = this.props.repoID;\n\n if (this.state.currentMode === 'column') {\n seafileAPI.listFileTags(repoID, filePath).then(res => {\n let fileTags = res.data.file_tags.map(item => {\n return new FileTag(item);\n });\n this.setState({fileTags: fileTags});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n\n // update state\n this.setState({\n isFileLoading: true,\n path: filePath,\n isViewFile: true\n });\n\n // update data\n seafileAPI.getFileInfo(repoID, filePath).then((res) => {\n let { mtime, permission, last_modifier_name, is_draft, has_draft, draft_id } = res.data;\n seafileAPI.getFileDownloadLink(repoID, filePath).then((res) => {\n seafileAPI.getFileContent(res.data).then((res) => {\n this.setState({\n content: res.data,\n filePermission: permission,\n latestContributor: last_modifier_name,\n lastModified: moment.unix(mtime).fromNow(),\n isFileLoading: false,\n isFileLoadedErr: false,\n isDraft: is_draft,\n hasDraft: has_draft,\n draftID: draft_id\n });\n });\n });\n }).catch((err) => {\n let errMsg = Utils.getErrorMsg(err, true);\n if (!err.response || err.response.status !== 403) {\n toaster.danger(errMsg);\n }\n this.setState({\n isFileLoading: false,\n isFileLoadedErr: true,\n });\n });\n\n // update location\n let repoInfo = this.state.currentRepoInfo;\n let url = siteRoot + 'library/' + repoID + '/' + encodeURIComponent(repoInfo.repo_name) + Utils.encodePath(filePath);\n window.history.pushState({url: url, path: filePath}, filePath, url);\n };\n\n loadDirentList = (path) => {\n let repoID = this.props.repoID;\n seafileAPI.listDir(repoID, path, {'with_thumbnail': true}).then(res => {\n let direntList = [];\n res.data.dirent_list.forEach(item => {\n let dirent = new Dirent(item);\n direntList.push(dirent);\n });\n\n this.setState({\n pathExist: true,\n userPerm: res.data.user_perm,\n isDirentListLoading: false,\n direntList: Utils.sortDirents(direntList, this.state.sortBy, this.state.sortOrder),\n dirID: res.data.dir_id,\n path: path,\n isSessionExpired: false,\n });\n\n if (!this.state.repoEncrypted && direntList.length) {\n this.getThumbnails(repoID, path, this.state.direntList);\n }\n\n if (this.state.currentRepoInfo.is_admin) {\n if (this.foldersSharedOut) {\n this.identifyFoldersSharedOut();\n } else {\n this.foldersSharedOut = [];\n seafileAPI.getAllRepoFolderShareInfo(repoID).then(res => {\n res.data.share_info_list.forEach(item => {\n if (this.foldersSharedOut.indexOf(item.path) === -1) {\n this.foldersSharedOut.push(item.path);\n }\n });\n this.identifyFoldersSharedOut();\n });\n }\n }\n }).catch((err) => {\n Utils.getErrorMsg(err, true);\n if (err.response && err.response.status === 403) {\n this.setState({isDirentListLoading: false});\n return;\n }\n this.setState({\n isDirentListLoading: false,\n pathExist: false,\n });\n });\n };\n\n identifyFoldersSharedOut = () => {\n const { path, direntList } = this.state;\n if (this.foldersSharedOut.length == 0) {\n return;\n }\n direntList.forEach(dirent => {\n if (dirent.type == 'dir' && this.foldersSharedOut.indexOf(Utils.joinPath(path, dirent.name) + '/') !== -1) {\n dirent.has_been_shared_out = true;\n }\n });\n this.setState({\n direntList: direntList\n });\n };\n\n onListContainerScroll = () => {\n let itemsShowLength = this.state.itemsShowLength + 100;\n this.setState({itemsShowLength: itemsShowLength});\n };\n\n resetShowLength = () => {\n this.setState({itemsShowLength: 100});\n };\n\n getThumbnails = (repoID, path, direntList) => {\n let items = direntList.filter((item) => {\n return (Utils.imageCheck(item.name) || (enableVideoThumbnail && Utils.videoCheck(item.name))) && !item.encoded_thumbnail_src;\n });\n if (items.length == 0) {\n return ;\n }\n\n const _this = this;\n const len = items.length;\n const thumbnailSize = 48;\n let getThumbnail = (i) => {\n const curItem = items[i];\n const curItemPath = [path, curItem.name].join('/');\n seafileAPI.createThumbnail(repoID, curItemPath, thumbnailSize).then((res) => {\n curItem.encoded_thumbnail_src = res.data.encoded_thumbnail_src;\n }).catch((error) => {\n // do nothing\n }).then(() => {\n if (i < len - 1) {\n getThumbnail(++i);\n } else {\n _this.setState({\n direntList: direntList\n });\n }\n });\n };\n getThumbnail(0);\n };\n\n updateMoveCopyTreeNode = (path) => {\n let repoID = this.props.repoID;\n\n let tree = this.state.treeData.clone();\n let node = tree.getNodeByPath(path);\n\n // for node not loaded, such as a deep folder '/vv/aa'\n if (!node) { // node: null\n return false;\n }\n\n let nodeChildren = node.children.map(item => item.object);\n let nodeChildrenNames = nodeChildren.map(item => item.name);\n\n seafileAPI.listDir(repoID, path).then(res => {\n let newDirentList = res.data.dirent_list;\n let newAddedDirents = newDirentList.filter(item => {\n return !nodeChildrenNames.includes(item.name);\n });\n newAddedDirents.forEach(item => {\n this.addNodeToTree(item.name, path, item.type);\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n async getAsyncCopyMoveProgress() {\n let { asyncOperationType, asyncCopyMoveTaskId } = this.state;\n try {\n let res = await seafileAPI.queryAsyncOperationProgress(asyncCopyMoveTaskId);\n let data = res.data;\n if (data.failed) {\n let message = gettext('Failed to move files to another library.');\n if (asyncOperationType === 'copy') {\n message = gettext('Failed to copy files to another library.');\n }\n toaster.danger(message);\n this.setState({\n asyncOperationProgress: 0,\n isCopyMoveProgressDialogShow: false,\n });\n return;\n }\n\n if (data.successful) {\n if (asyncOperationType === 'move') {\n if (this.currentMoveItemName && this.currentMoveItemPath) {\n if (this.state.currentMode === 'column') {\n this.deleteTreeNode(this.currentMoveItemPath);\n }\n this.moveDirent(this.currentMoveItemName);\n this.currentMoveItemName = '';\n this.currentMoveItemPath = '';\n } else {\n if (this.state.currentMode === 'column') {\n let direntPaths = this.getSelectedDirentPaths();\n this.deleteTreeNodes(direntPaths);\n }\n let direntNames = this.getSelectedDirentNames();\n this.moveDirents(direntNames);\n }\n }\n\n this.setState({isCopyMoveProgressDialogShow: false});\n let message = gettext('Successfully moved files to another library.');\n if (asyncOperationType === 'copy') {\n message = gettext('Successfully copied files to another library.');\n }\n toaster.success(message);\n return;\n }\n // init state: total is 0\n let asyncOperationProgress = !data.total ? 0 : parseInt((data.done/data.total * 100).toFixed(2));\n\n this.getAsyncCopyMoveProgress();\n this.setState({asyncOperationProgress: asyncOperationProgress});\n } catch (error) {\n this.setState({\n asyncOperationProgress: 0,\n isCopyMoveProgressDialogShow: false,\n });\n }\n }\n\n cancelCopyMoveDirent = () => {\n let taskId = this.state.asyncCopyMoveTaskId;\n seafileAPI.cancelCopyMoveOperation(taskId);\n\n this.currentMoveItemName = '';\n this.currentMoveItemPath = '';\n let direntList = this.state.direntList;\n this.setState({direntList: direntList.slice(0)});\n };\n\n onMoveProgressDialogToggle = () => {\n let { asyncOperationProgress } = this.state;\n if (asyncOperationProgress !== 100) {\n this.cancelCopyMoveDirent();\n }\n\n this.setState({\n asyncOperationProgress: 0,\n isCopyMoveProgressDialogShow: false,\n });\n };\n\n // toolbar operations\n onMoveItems = (destRepo, destDirentPath) => {\n let repoID = this.props.repoID;\n let selectedDirentList = this.state.selectedDirentList;\n if (repoID !== destRepo.repo_id) {\n this.setState(() => ({\n asyncOperatedFilesLength: selectedDirentList.length,\n asyncOperationProgress: 0,\n asyncOperationType: 'move',\n isCopyMoveProgressDialogShow: true\n }));\n }\n\n let dirNames = this.getSelectedDirentNames();\n let direntPaths = this.getSelectedDirentPaths();\n seafileAPI.moveDir(repoID, destRepo.repo_id, destDirentPath, this.state.path, dirNames).then(res => {\n if (repoID !== destRepo.repo_id) {\n this.setState({\n asyncCopyMoveTaskId: res.data.task_id,\n }, () => {\n // After moving successfully, delete related files\n this.getAsyncCopyMoveProgress();\n });\n }\n\n if (repoID === destRepo.repo_id) {\n if (this.state.currentMode === 'column') {\n this.deleteTreeNodes(direntPaths);\n }\n\n this.moveDirents(dirNames);\n\n // 2. tow columns mode need update left tree\n if (this.state.currentMode === 'column') {\n this.updateMoveCopyTreeNode(destDirentPath);\n }\n\n // show tip message if move to current repo\n let message = Utils.getMoveSuccessMessage(dirNames);\n toaster.success(message);\n }\n\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n errMessage = Utils.getMoveFailedMessage(dirNames);\n }\n this.setState({\n asyncOperationProgress: 0,\n isCopyMoveProgressDialogShow: false,\n });\n toaster.danger(errMessage);\n });\n };\n\n onCopyItems = (destRepo, destDirentPath) => {\n let repoID = this.props.repoID;\n let selectedDirentList = this.state.selectedDirentList;\n\n if (repoID !== destRepo.repo_id) {\n this.setState({\n asyncOperatedFilesLength: selectedDirentList.length,\n asyncOperationProgress: 0,\n asyncOperationType: 'copy',\n isCopyMoveProgressDialogShow: true\n });\n }\n\n let dirNames = this.getSelectedDirentNames();\n seafileAPI.copyDir(repoID, destRepo.repo_id, destDirentPath, this.state.path, dirNames).then(res => {\n if (repoID !== destRepo.repo_id) {\n this.setState({\n asyncCopyMoveTaskId: res.data.task_id,\n }, () => {\n this.getAsyncCopyMoveProgress();\n });\n }\n\n if (repoID === destRepo.repo_id) {\n if (this.state.currentMode === 'column') {\n this.updateMoveCopyTreeNode(destDirentPath);\n }\n\n if (destDirentPath === this.state.path) {\n this.loadDirentList(this.state.path);\n }\n\n // show tip message if copy to current repo\n let message = Utils.getCopySuccessfulMessage(dirNames);\n toaster.success(message);\n }\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n errMessage = Utils.getCopyFailedMessage(dirNames);\n }\n toaster.danger(errMessage);\n });\n };\n\n restoreDeletedDirents = (commitID, paths, e) => {\n const { repoID } = this.props;\n e.preventDefault();\n toaster.closeAll();\n seafileAPI.restoreDirents(repoID, commitID, paths).then(res => {\n const { success, failed } = res.data;\n success.forEach(dirent => {\n let name = Utils.getFileName(dirent.path);\n let parentPath = Utils.getDirName(dirent.path);\n if (!dirent.is_dir) {\n if (this.state.currentMode === 'column') {\n this.addNodeToTree(name, parentPath, 'file');\n }\n if (parentPath === this.state.path && !this.state.isViewFile) {\n this.addDirent(name, 'file');\n }\n } else {\n if (this.state.currentMode === 'column') {\n this.addNodeToTree(name, parentPath, 'dir');\n }\n if (parentPath === this.state.path && !this.state.isViewFile) {\n this.addDirent(name, 'dir');\n }\n }\n });\n\n if (success.length) {\n let msg = success.length > 1 ? gettext('Restored {name} and {n} other items') :\n gettext('Restored {name}');\n msg = msg.replace('{name}', success[0].path.split('/').pop())\n .replace('{n}', success.length - 1);\n toaster.success(msg);\n }\n\n if (failed.length) {\n let msg = failed.length > 1 ? gettext('Failed to restore {name} and {n} other items') :\n gettext('Failed to restore {name}');\n msg = msg.replace('{name}', failed[0].path.split('/').pop())\n .replace('{n}', failed.length - 1);\n toaster.danger(msg);\n }\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onDeleteItems = () => {\n let repoID = this.props.repoID;\n let direntPaths = this.getSelectedDirentPaths();\n let dirNames = this.getSelectedDirentNames();\n\n this.setState({updateDetail: !this.state.updateDetail});\n seafileAPI.deleteMutipleDirents(repoID, this.state.path, dirNames).then(res => {\n if (this.state.currentMode === 'column') {\n this.deleteTreeNodes(direntPaths);\n }\n\n this.deleteDirents(dirNames);\n\n let msg = '';\n if (direntPaths.length > 1) {\n msg = gettext('Successfully deleted {name} and {n} other items.');\n msg = msg.replace('{name}', dirNames[0]);\n msg = msg.replace('{n}', dirNames.length - 1);\n } else {\n msg = gettext('Successfully deleted {name}.');\n msg = msg.replace('{name}', dirNames[0]);\n }\n const successTipWithUndo = (\n <>\n {msg}\n {gettext('Undo')}\n \n );\n toaster.success(successTipWithUndo, {duration: 5});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n errMessage = gettext('Failed to delete {name} and {n} other items.');\n errMessage = errMessage.replace('{name}', dirNames[0]);\n errMessage = errMessage.replace('{n}', dirNames.length - 1);\n }\n toaster.danger(errMessage);\n });\n };\n\n onAddFolder = (dirPath) => {\n let repoID = this.props.repoID;\n seafileAPI.createDir(repoID, dirPath).then(() => {\n let name = Utils.getFileName(dirPath);\n let parentPath = Utils.getDirName(dirPath);\n\n if (this.state.currentMode === 'column') {\n this.addNodeToTree(name, parentPath, 'dir');\n }\n\n if (parentPath === this.state.path && !this.state.isViewFile) {\n this.addDirent(name, 'dir');\n }\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onAddFile = (filePath, isMarkdownDraft, isSdocDraft) => {\n let repoID = this.props.repoID;\n seafileAPI.createFile(repoID, filePath, isMarkdownDraft).then(res => {\n let name = Utils.getFileName(filePath);\n let parentPath = Utils.getDirName(filePath);\n if (this.state.currentMode === 'column') {\n this.addNodeToTree(name, parentPath, 'file');\n }\n if (parentPath === this.state.path && !this.state.isViewFile) {\n if (isSdocDraft) { // the new file is marked to be draft\n seafileAPI.sdocMarkAsDraft(repoID, filePath).then((res) => {\n this.addDirent(name, 'file', res.data.size, isSdocDraft);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n this.addDirent(name, 'file', res.data.size);\n });\n return;\n }\n\n this.addDirent(name, 'file', res.data.size);\n }\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n switchViewMode = (mode) => {\n if (mode === this.state.currentMode) {\n return;\n }\n if (mode === 'detail') {\n this.toggleDirentDetail();\n return;\n }\n cookie.save('seafile_view_mode', mode);\n let path = this.state.path;\n if (this.state.currentMode === 'column' && this.state.isViewFile) {\n path = Utils.getDirName(path);\n this.setState({\n path: path,\n isViewFile: false,\n });\n let repoInfo = this.state.currentRepoInfo;\n\n let url = siteRoot + 'library/' + repoInfo.repo_id + '/' + encodeURIComponent(repoInfo.repo_name) + Utils.encodePath(path);\n window.history.pushState({url: url, path: path}, path, url);\n }\n\n if (mode === 'column') {\n this.loadSidePanel(this.state.path);\n }\n this.isNeedUpdateHistoryState = false;\n this.setState({currentMode: mode});\n this.showDir(path);\n };\n\n onSearchedClick = (item) => {\n let path = item.is_dir ? item.path.slice(0, item.path.length - 1) : item.path;\n if (this.state.currentPath === path) {\n return;\n }\n if (this.state.currentMode === 'column') {\n // load sidePanel\n let index = -1;\n let paths = Utils.getPaths(path);\n for (let i = 0; i < paths.length; i++) {\n // eslint-disable-next-line\n let node = this.state.treeData.getNodeByPath(node);\n if (!node) {\n index = i;\n break;\n }\n }\n if (index === -1) { // all the data has been loaded already.\n let node = this.state.treeData.getNodeByPath(path);\n this.setState({currentNode: node});\n } else {\n this.loadNodeAndParentsByPath(path);\n }\n\n // load mainPanel\n if (item.is_dir) {\n this.showDir(path);\n } else {\n if (Utils.isMarkdownFile(path)) {\n this.showFile(path);\n } else {\n let url = siteRoot + 'lib/' + item.repo_id + '/file' + Utils.encodePath(path);\n let isWeChat = Utils.isWeChat();\n if (!isWeChat) {\n let newWindow = window.open('about:blank');\n newWindow.location.href = url;\n } else {\n location.href = url;\n }\n }\n }\n } else {\n if (item.is_dir) {\n this.showDir(path);\n } else {\n let url = siteRoot + 'lib/' + item.repo_id + '/file' + Utils.encodePath(path);\n let isWeChat = Utils.isWeChat();\n if (!isWeChat) {\n let newWindow = window.open('about:blank');\n newWindow.location.href = url;\n } else {\n location.href = url;\n }\n }\n }\n };\n\n onMainNavBarClick = (nodePath) => {\n //just for dir\n this.resetSelected();\n if (this.state.currentMode === 'column') {\n let tree = this.state.treeData.clone();\n let node = tree.getNodeByPath(nodePath);\n tree.expandNode(node);\n this.setState({treeData: tree, currentNode: node});\n }\n\n this.showDir(nodePath);\n };\n\n onLinkClick = (link) => {\n const url = link;\n let repoID = this.props.repoID;\n if (Utils.isInternalMarkdownLink(url, repoID)) {\n let path = Utils.getPathFromInternalMarkdownLink(url, repoID);\n this.showFile(path);\n } else if (Utils.isInternalDirLink(url, repoID)) {\n let path = Utils.getPathFromInternalDirLink(url, repoID);\n this.showDir(path);\n } else {\n window.open(url);\n }\n };\n\n // list&tree operations\n onMainPanelItemRename = (dirent, newName) => {\n let path = Utils.joinPath(this.state.path, dirent.name);\n this.renameItem(path, dirent.isDir(), newName);\n };\n\n onMainPanelItemDelete = (dirent) => {\n let path = Utils.joinPath(this.state.path, dirent.name);\n this.deleteItem(path, dirent.isDir());\n };\n\n onRenameTreeNode = (node, newName) => {\n this.renameItem(node.path, node.object.isDir(), newName);\n };\n\n onDeleteTreeNode = (node) => {\n this.deleteItem(node.path, node.object.isDir());\n };\n\n renameItem = (path, isDir, newName) => {\n let repoID = this.props.repoID;\n if (isDir) {\n seafileAPI.renameDir(repoID, path, newName).then(() => {\n this.renameItemAjaxCallback(path, newName);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n let name = Utils.getFileName(path);\n errMessage = gettext('Renaming {name} failed').replace('{name}', name);\n }\n toaster.danger(errMessage);\n });\n } else {\n seafileAPI.renameFile(repoID, path, newName).then(() => {\n this.renameItemAjaxCallback(path, newName);\n }).catch((error) => {\n let errMessage = '';\n if (error.response.status == 403 && error.response.data && error.response.data['error_msg']) {\n errMessage = error.response.data['error_msg'];\n } else {\n errMessage = Utils.getErrorMsg(error);\n }\n if (errMessage === gettext('Error')) {\n let name = Utils.getFileName(path);\n errMessage = gettext('Renaming {name} failed').replace('{name}', name);\n }\n toaster.danger(errMessage);\n });\n }\n };\n\n renameItemAjaxCallback(path, newName) {\n if (this.state.currentMode === 'column') {\n this.renameTreeNode(path, newName);\n }\n this.renameDirent(path, newName);\n }\n\n toggleDeleteFolderDialog = () => {\n this.setState({isDeleteFolderDialogOpen: !this.state.isDeleteFolderDialogOpen});\n };\n\n deleteFolder = () => {\n const { repoID } = this.props;\n const { folderToDelete: path } = this.state;\n seafileAPI.deleteDir(repoID, path).then((res) => {\n this.deleteItemAjaxCallback(path, true);\n let name = Utils.getFileName(path);\n var msg = gettext('Successfully deleted {name}').replace('{name}', name);\n const successTipWithUndo = (\n <>\n {msg}\n {gettext('Undo')}\n \n );\n toaster.success(successTipWithUndo, {duration: 5});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n let name = Utils.getFileName(path);\n errMessage = gettext('Failed to delete {name}').replace('{name}', name);\n }\n toaster.danger(errMessage);\n });\n };\n\n deleteItem(path, isDir) {\n let repoID = this.props.repoID;\n if (isDir) {\n this.setState({ folderToDelete: path }, () => {\n this.toggleDeleteFolderDialog();\n });\n } else {\n seafileAPI.deleteFile(repoID, path).then((res) => {\n this.deleteItemAjaxCallback(path, isDir);\n let name = Utils.getFileName(path);\n var msg = gettext('Successfully deleted {name}').replace('{name}', name);\n const successTipWithUndo = (\n <>\n {msg}\n {gettext('Undo')}\n \n );\n toaster.success(successTipWithUndo, {duration: 5});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n let name = Utils.getFileName(path);\n errMessage = gettext('Failed to delete {name}').replace('{name}', name);\n }\n toaster.danger(errMessage);\n });\n }\n }\n\n deleteItemAjaxCallback(path) {\n if (this.state.currentMode === 'column') {\n this.deleteTreeNode(path);\n }\n this.deleteDirent(path);\n }\n\n // list operations\n onMoveItem = (destRepo, dirent, moveToDirentPath, nodeParentPath) => {\n let repoID = this.props.repoID;\n //just for view list state\n let dirName = dirent.name;\n if (!nodeParentPath) {\n nodeParentPath = this.state.path;\n }\n let direntPath = Utils.joinPath(nodeParentPath, dirName);\n\n if (repoID !== destRepo.repo_id) {\n this.setState({\n asyncOperatedFilesLength: 1,\n asyncOperationProgress: 0,\n asyncOperationType: 'move',\n isCopyMoveProgressDialogShow: true,\n });\n }\n\n seafileAPI.moveDir(repoID, destRepo.repo_id, moveToDirentPath, nodeParentPath, dirName).then(res => {\n if (repoID !== destRepo.repo_id) {\n this.setState({asyncCopyMoveTaskId: res.data.task_id}, () => {\n this.currentMoveItemName = dirName;\n this.currentMoveItemPath = direntPath;\n this.getAsyncCopyMoveProgress(dirName, direntPath);\n });\n }\n\n if (this.state.currentMode === 'column') {\n this.deleteTreeNode(direntPath);\n }\n\n // 1. move to current repo\n // 2. tow columns mode need update left tree\n if (repoID === destRepo.repo_id && this.state.currentMode === 'column') {\n this.updateMoveCopyTreeNode(moveToDirentPath);\n }\n\n this.moveDirent(direntPath, moveToDirentPath);\n\n // show tip message if move to current repo\n if (repoID === destRepo.repo_id) {\n let message = gettext('Successfully moved {name}.');\n message = message.replace('{name}', dirName);\n toaster.success(message);\n }\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n errMessage = gettext('Failed to move {name}.');\n errMessage = errMessage.replace('{name}', dirName);\n }\n toaster.danger(errMessage);\n });\n };\n\n onCopyItem = (destRepo, dirent, copyToDirentPath, nodeParentPath) => {\n let repoID = this.props.repoID;\n //just for view list state\n let dirName = dirent.name;\n if (!nodeParentPath) {\n nodeParentPath = this.state.path;\n }\n\n if (repoID !== destRepo.repo_id) {\n this.setState({\n asyncOperatedFilesLength: 1,\n asyncOperationProgress: 0,\n asyncOperationType: 'copy',\n isCopyMoveProgressDialogShow: true\n });\n }\n\n seafileAPI.copyDir(repoID, destRepo.repo_id, copyToDirentPath, nodeParentPath, dirName).then(res => {\n\n if (repoID !== destRepo.repo_id) {\n this.setState({\n asyncCopyMoveTaskId: res.data.task_id,\n }, () => {\n this.getAsyncCopyMoveProgress();\n });\n }\n\n if (repoID === destRepo.repo_id) {\n if (this.state.currentMode === 'column') {\n this.updateMoveCopyTreeNode(copyToDirentPath);\n }\n\n if (copyToDirentPath === nodeParentPath) {\n this.loadDirentList(this.state.path);\n }\n\n let message = gettext('Successfully copied %(name)s.');\n message = message.replace('%(name)s', dirName);\n toaster.success(message);\n }\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n errMessage = gettext('Failed to copy %(name)s');\n errMessage = errMessage.replace('%(name)s', dirName);\n }\n toaster.danger(errMessage);\n });\n };\n\n onConvertItem = (dirent, dstType) => {\n let path = Utils.joinPath(this.state.path, dirent.name);\n let repoID = this.props.repoID;\n toaster.notifyInProgress(gettext('Converting, please wait...'));\n seafileAPI.convertFile(repoID, path, dstType).then((res) => {\n let newFileName = res.data.obj_name;\n let parentDir = res.data.parent_dir;\n let new_path = parentDir + '/' + newFileName;\n let parentPath = Utils.getDirName(new_path);\n\n if (this.state.currentMode === 'column') {\n this.addNodeToTree(newFileName, parentPath, 'file');\n }\n\n this.addDirent(newFileName, 'file', res.data.size);\n let message = gettext('Successfully converted the file.');\n toaster.success(message);\n\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n if (errMessage === gettext('Error')) {\n let name = Utils.getFileName(path);\n errMessage = gettext('Failed to convert {name}.').replace('{name}', name);\n }\n toaster.danger(errMessage);\n });\n\n };\n\n onDirentClick = (dirent) => {\n let direntList = this.state.direntList.map(dirent => {\n dirent.isSelected = false;\n return dirent;\n });\n if (dirent) {\n // dirent.isSelected = true;\n this.setState({\n direntList: direntList,\n isDirentSelected: true,\n selectedDirentList: [dirent],\n });\n } else {\n this.setState({\n direntList: direntList,\n isDirentSelected: false,\n selectedDirentList: [],\n });\n }\n };\n\n onItemClick = (dirent) => {\n this.resetSelected();\n let repoID = this.props.repoID;\n let direntPath = Utils.joinPath(this.state.path, dirent.name);\n if (dirent.isDir()) { // is dir\n if (this.state.currentMode === 'column') {\n this.loadTreeNodeByPath(direntPath);\n }\n this.showDir(direntPath);\n } else { // is file\n if (this.state.currentMode === 'column' && Utils.isMarkdownFile(direntPath)) {\n this.showColumnMarkdownFile(direntPath);\n } else {\n let url = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(direntPath);\n if (dirent.is_sdoc_revision && dirent.revision_id) {\n url = siteRoot + 'lib/' + repoID + '/revisions/' + dirent.revision_id + '/';\n }\n\n let isWeChat = Utils.isWeChat();\n if (!isWeChat) {\n window.open(url);\n } else {\n location.href = url;\n }\n }\n }\n };\n\n onDirentSelected = (dirent) => {\n let direntList = this.state.direntList.map(item => {\n if (item.name === dirent.name) {\n item.isSelected = !item.isSelected;\n }\n return item;\n });\n let selectedDirentList = direntList.filter(item => {\n return item.isSelected;\n });\n\n if (selectedDirentList.length) {\n this.setState({isDirentSelected: true});\n if (selectedDirentList.length === direntList.length) {\n this.setState({\n isAllDirentSelected: true,\n direntList: direntList,\n selectedDirentList: selectedDirentList,\n });\n } else {\n this.setState({\n isAllDirentSelected: false,\n direntList: direntList,\n selectedDirentList: selectedDirentList\n });\n }\n } else {\n this.setState({\n isDirentSelected: false,\n isAllDirentSelected: false,\n direntList: direntList,\n selectedDirentList: []\n });\n }\n };\n\n onAllDirentSelected = () => {\n if (this.state.isAllDirentSelected) {\n let direntList = this.state.direntList.map(item => {\n item.isSelected = false;\n return item;\n });\n this.setState({\n isDirentSelected: false,\n isAllDirentSelected: false,\n direntList: direntList,\n selectedDirentList: [],\n });\n } else {\n let direntList = this.state.direntList.map(item => {\n item.isSelected = true;\n return item;\n });\n this.setState({\n isDirentSelected: true,\n isAllDirentSelected: true,\n direntList: direntList,\n selectedDirentList: direntList,\n });\n }\n };\n\n onFileTagChanged = (dirent, direntPath) => {\n let repoID = this.props.repoID;\n seafileAPI.listFileTags(repoID, direntPath).then(res => {\n let fileTags = res.data.file_tags.map(item => {\n return new FileTag(item);\n });\n\n if (this.state.isViewFile) {\n this.setState({fileTags: fileTags});\n } else {\n this.updateDirent(dirent, 'file_tags', fileTags);\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n\n this.updateUsedRepoTags();\n };\n\n onFileUploadSuccess = (direntObject) => {\n let isExist = this.state.direntList.some(item => {\n return item.name === direntObject.name && item.type === direntObject.type;\n });\n if (isExist) {\n let direntList = this.state.direntList;\n for (let i = 0; i < direntList.length; i++) {\n let dirent = direntList[i];\n if (dirent.name === direntObject.name && dirent.type === direntObject.type) {\n let mtime = moment.unix(direntObject.mtime).fromNow();\n this.updateDirent(dirent, 'mtime', mtime); // todo file size is need update too, api is not return;\n break;\n }\n }\n } else {\n // use current dirent parent's permission as it's permission\n direntObject.permission = this.state.userPerm;\n let dirent = new Dirent(direntObject);\n if (this.state.currentMode === 'column') {\n this.addNodeToTree(dirent.name, this.state.path, dirent.type);\n }\n if (direntObject.type === 'dir') {\n this.setState({direntList: [dirent, ...this.state.direntList]});\n } else {\n this.setState({direntList: [...this.state.direntList, dirent]});\n }\n }\n };\n\n addDirent = (name, type, size, isSdocDraft) => {\n let item = this.createDirent(name, type, size, isSdocDraft);\n let direntList = this.state.direntList;\n if (type === 'dir') {\n direntList.unshift(item);\n } else {\n // there will be there conditions;\n // first: direntList.length === 0;\n // second: all the direntList's items are dir;\n // third: direntList has dir and file;\n let length = direntList.length;\n if (length === 0 || direntList[length - 1].type === 'dir') {\n direntList.push(item);\n } else {\n let index = 0;\n for (let i = 0; i <= length; i++) {\n if (direntList[i].type === 'file') {\n index = i;\n break;\n }\n }\n direntList.splice(index, 0, item);\n }\n }\n this.setState({direntList: direntList});\n };\n\n renameDirent = (direntPath, newName) => {\n let repoID = this.props.repoID;\n let parentPath = Utils.getDirName(direntPath);\n let newDirentPath = Utils.joinPath(parentPath, newName);\n if (direntPath === this.state.path) {\n // the renamed item is current viewed item\n // example: direntPath = /A/B/C, state.path = /A/B/C\n\n this.setState({ path: newDirentPath });\n let repoInfo = this.state.currentRepoInfo;\n let url = siteRoot + 'library/' + repoID + '/' + encodeURIComponent(repoInfo.repo_name) + newDirentPath;\n window.history.replaceState({ url: url, path: newDirentPath}, newDirentPath, url);\n } else if (Utils.isChildPath(direntPath, this.state.path)) {\n // example: direntPath = /A/B/C/D, state.path = /A/B/C\n let oldName = Utils.getFileName(direntPath);\n let direntList = this.state.direntList.map(item => {\n if (item.name === oldName) {\n item.name = newName;\n }\n return item;\n });\n this.setState({ direntList: direntList });\n } else if (Utils.isAncestorPath(direntPath, this.state.path)) {\n // example: direntPath = /A/B, state.path = /A/B/C\n let newPath = Utils.renameAncestorPath(this.state.path, direntPath, newDirentPath);\n this.setState({ path: newPath });\n\n let repoInfo = this.state.currentRepoInfo;\n let url = siteRoot + 'library/' + repoID + '/' + encodeURIComponent(repoInfo.repo_name) + newPath;\n window.history.replaceState({ url: url, path: newPath}, newPath, url);\n }\n };\n\n deleteDirent(direntPath) {\n if (direntPath === this.state.path) {\n // The deleted item is current item\n let parentPath = Utils.getDirName(direntPath);\n this.showDir(parentPath);\n } else if (Utils.isChildPath(direntPath, this.state.path)) {\n // The deleted item is inside current path\n let name = Utils.getFileName(direntPath);\n let direntList = this.state.direntList.filter(item => {\n return item.name !== name;\n });\n\n // Recalculate the state of the selection\n this.recaculateSelectedStateAfterDirentDeleted(name, direntList);\n\n this.setState({direntList: direntList});\n } else if (Utils.isAncestorPath(direntPath, this.state.path)) {\n // the deleted item is ancester of the current item\n let parentPath = Utils.getDirName(direntPath);\n this.showDir(parentPath);\n }\n // else do nothing\n }\n\n // only one scence: The deleted items are inside current path\n deleteDirents = (direntNames) => {\n let direntList = this.state.direntList.filter(item => {\n return direntNames.indexOf(item.name) === -1;\n });\n\n // Recalculate the state of the selection\n this.recaculateSelectedStateAfterDirentDeleted(name, direntList);\n\n this.setState({direntList: direntList});\n };\n\n moveDirent = (direntPath, moveToDirentPath = null) => {\n let name = Utils.getFileName(direntPath);\n if (moveToDirentPath === this.state.path) {\n this.loadDirentList(this.state.path);\n return;\n }\n let direntList = this.state.direntList.filter(item => {\n return item.name !== name;\n });\n\n // Recalculate the state of the selection\n this.recaculateSelectedStateAfterDirentDeleted(name, direntList);\n\n this.setState({direntList: direntList});\n };\n\n // only one scence: The moved items are inside current path\n moveDirents = (direntNames) => {\n let direntList = this.state.direntList.filter(item => {\n return direntNames.indexOf(item.name) === -1;\n });\n\n // Recalculate the state of the selection\n //this.recaculateSelectedStateAfterDirentDeleted(name, direntList);\n\n this.setState({\n direntList: direntList,\n selectedDirentList: [],\n isDirentSelected: false,\n isAllDirentSelected: false,\n });\n };\n\n updateDirent = (dirent, paramKey, paramValue) => {\n let newDirentList = this.state.direntList.map(item => {\n if (item.name === dirent.name) {\n item[paramKey] = paramValue;\n }\n return item;\n });\n this.setState({direntList: newDirentList});\n };\n\n // tree operations\n loadTreeNodeByPath = (path) => {\n let repoID = this.props.repoID;\n let tree = this.state.treeData.clone();\n let node = tree.getNodeByPath(path);\n if (!node.isLoaded) {\n seafileAPI.listDir(repoID, node.path).then(res => {\n this.addResponseListToNode(res.data.dirent_list, node);\n let parentNode = tree.getNodeByPath(node.parentNode.path);\n parentNode.isExpanded = true;\n this.setState({\n treeData: tree,\n currentNode: node\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n let parentNode = tree.getNodeByPath(node.parentNode.path);\n parentNode.isExpanded = true;\n this.setState({treeData: tree, currentNode: node}); //tree\n }\n };\n\n loadNodeAndParentsByPath = (path) => {\n let repoID = this.props.repoID;\n let tree = this.state.treeData.clone();\n if (Utils.isMarkdownFile(path)) {\n path = Utils.getDirName(path);\n }\n seafileAPI.listDir(repoID, path, {with_parents: true}).then(res => {\n const { dirent_list: direntList, user_perm } = res.data;\n let results = {};\n for (let i = 0; i < direntList.length; i++) {\n let object = direntList[i];\n let parentDir = object.parent_dir;\n let key = parentDir === '/' ? '/' : parentDir.slice(0, parentDir.length - 1);\n if (!results[key]) {\n results[key] = [];\n }\n results[key].push(object);\n }\n for (let key in results) {\n let node = tree.getNodeByPath(key);\n if (!node.isLoaded) {\n this.addResponseListToNode(results[key], node);\n }\n }\n this.setState({\n isTreeDataLoading: false,\n treeData: tree,\n userPerm: user_perm,\n });\n }).catch(() => {\n this.setState({isLoadFailed: true});\n });\n };\n\n onTreeNodeClick = (node) => {\n this.resetSelected();\n let repoID = this.props.repoID;\n if (!this.state.pathExist) {\n this.setState({pathExist: true});\n }\n\n if (node.object.isDir()) {\n let isLoaded = node.isLoaded;\n if (!node.isLoaded) {\n let tree = this.state.treeData.clone();\n node = tree.getNodeByPath(node.path);\n seafileAPI.listDir(repoID, node.path).then(res => {\n this.addResponseListToNode(res.data.dirent_list, node);\n tree.collapseNode(node);\n this.setState({treeData: tree});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n if (isLoaded && node.path === this.state.path) {\n if (node.isExpanded) {\n let tree = treeHelper.collapseNode(this.state.treeData, node);\n this.setState({treeData: tree});\n } else {\n let tree = this.state.treeData.clone();\n node = tree.getNodeByPath(node.path);\n tree.expandNode(node);\n this.setState({treeData: tree});\n }\n }\n }\n\n if (node.path === this.state.path ) {\n return;\n }\n\n if (node.object.isDir()) { // isDir\n this.showDir(node.path);\n } else {\n if (Utils.isMarkdownFile(node.path)) {\n if (node.path !== this.state.path) {\n this.showColumnMarkdownFile(node.path);\n }\n } else {\n let url = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(node.path);\n let dirent = node.object;\n if (dirent.is_sdoc_revision && dirent.revision_id) {\n url = siteRoot + 'lib/' + repoID + '/revisions/' + dirent.revision_id + '/';\n }\n window.open(url);\n }\n }\n };\n\n showColumnMarkdownFile = (filePath) => {\n let repoID = this.props.repoID;\n seafileAPI.getFileInfo(repoID, filePath).then((res) => {\n if (res.data.size === 0) {\n // loading of asynchronously obtained data may be blocked\n const w = window.open('about:blank');\n const url = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(filePath);\n w.location.href = url;\n } else {\n this.showFile(filePath);\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onTreeNodeCollapse = (node) => {\n let tree = treeHelper.collapseNode(this.state.treeData, node);\n this.setState({treeData: tree});\n };\n\n onTreeNodeExpanded = (node) => {\n let repoID = this.props.repoID;\n let tree = this.state.treeData.clone();\n node = tree.getNodeByPath(node.path);\n if (!node.isLoaded) {\n seafileAPI.listDir(repoID, node.path).then(res => {\n this.addResponseListToNode(res.data.dirent_list, node);\n this.setState({treeData: tree});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n tree.expandNode(node);\n this.setState({treeData: tree});\n }\n };\n\n addNodeToTree = (name, parentPath, type) => {\n let node = this.createTreeNode(name, type);\n let tree = treeHelper.addNodeToParentByPath(this.state.treeData, node, parentPath);\n this.setState({treeData: tree});\n };\n\n renameTreeNode = (path, newName) => {\n let tree = treeHelper.renameNodeByPath(this.state.treeData, path, newName);\n this.setState({treeData: tree});\n };\n\n deleteTreeNode = (path) => {\n let tree = treeHelper.deleteNodeByPath(this.state.treeData, path);\n this.setState({treeData: tree});\n };\n\n deleteTreeNodes = (paths) => {\n let tree = treeHelper.deleteNodeListByPaths(this.state.treeData, paths);\n this.setState({treeData: tree});\n };\n\n moveTreeNode = (nodePath, moveToPath, moveToRepo, nodeName) => {\n let repoID = this.props.repoID;\n if (repoID !== moveToRepo.repo_id) {\n let tree = treeHelper.deleteNodeByPath(this.state.treeData, nodePath);\n this.setState({treeData: tree});\n return;\n }\n let tree = treeHelper.moveNodeByPath(this.state.treeData, nodePath, moveToPath, nodeName);\n this.setState({treeData: tree});\n };\n\n copyTreeNode = (nodePath, copyToPath, destRepo, nodeName) => {\n let repoID = this.props.repoID;\n if (repoID !== destRepo.repo_id) {\n return;\n }\n let tree = treeHelper.copyNodeByPath(this.state.treeData, nodePath, copyToPath, nodeName);\n this.setState({treeData: tree});\n };\n\n createTreeNode(name, type) {\n let object = this.createDirent(name, type);\n return new TreeNode({object});\n }\n\n createDirent(name, type, size, isSdocDraft) {\n // use current dirent parent's permission as it's permission\n const { userPerm: permission } = this.state;\n const mtime = new Date().getTime()/1000;\n const obj = { name, type, mtime, size, permission };\n if (isSdocDraft) {\n obj.is_sdoc_draft = isSdocDraft;\n }\n const dirent = new Dirent(obj);\n return dirent;\n }\n\n addResponseListToNode = (list, node) => {\n node.isLoaded = true;\n node.isExpanded = true;\n let direntList = list.map(item => {\n return new Dirent(item);\n });\n direntList = Utils.sortDirents(direntList, 'name', 'asc');\n\n let nodeList = direntList.map(object => {\n return new TreeNode({object});\n });\n node.addChildren(nodeList);\n };\n\n getSelectedDirentPaths = () => {\n let paths = [];\n this.state.selectedDirentList.forEach(selectedDirent => {\n paths.push(Utils.joinPath(this.state.path, selectedDirent.name));\n });\n return paths;\n };\n\n getSelectedDirentNames = () => {\n let names = [];\n this.state.selectedDirentList.forEach(selectedDirent => {\n names.push(selectedDirent.name);\n });\n return names;\n };\n\n resetSelected = () => {\n this.setState({\n isDirentSelected: false,\n isAllDirentSelected: false,\n });\n };\n\n recaculateSelectedStateAfterDirentDeleted = (name, newDirentList) => {\n let selectedDirentList = this.state.selectedDirentList.slice(0);\n if (selectedDirentList.length > 0) {\n selectedDirentList = selectedDirentList.filter(item => {\n return item.name !== name;\n });\n }\n this.setState({\n selectedDirentList: selectedDirentList,\n isDirentSelected: selectedDirentList.length > 0,\n isAllDirentSelected: selectedDirentList.length === newDirentList.length,\n });\n };\n\n onLibDecryptDialog = () => {\n this.setState({libNeedDecrypt: false});\n this.loadDirData(this.state.path);\n };\n\n goDraftPage = () => {\n window.open(siteRoot + 'drafts/' + this.state.draftID + '/');\n };\n\n sortItems = (sortBy, sortOrder) => {\n cookie.save('seafile-repo-dir-sort-by', sortBy);\n cookie.save('seafile-repo-dir-sort-order', sortOrder);\n this.setState({\n sortBy: sortBy,\n sortOrder: sortOrder,\n items: Utils.sortDirents(this.state.direntList, sortBy, sortOrder)\n });\n };\n\n onUploadFile = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n this.uploader.onFileUpload();\n };\n\n onUploadFolder = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n this.uploader.onFolderUpload();\n };\n\n onToolbarFileTagChanged = () => {\n let repoID = this.props.repoID;\n let filePath = this.state.path;\n seafileAPI.listFileTags(repoID, filePath).then(res => {\n let fileTags = res.data.file_tags.map(item => {\n return new FileTag(item);\n });\n\n this.setState({fileTags: fileTags});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n unSelectDirent = () => {\n this.setState({\n isDirentSelected: false,\n selectedDirentList: []\n });\n const dirent = {};\n this.onDirentSelected(dirent);\n };\n\n onDeleteRepoTag = (deletedTagID) => {\n let direntList = this.state.direntList.map(dirent => {\n if (dirent.file_tags) {\n let fileTags = dirent.file_tags.filter(item => {\n return item.repo_tag_id !== deletedTagID;\n });\n dirent.file_tags = fileTags;\n }\n return dirent;\n });\n this.setState({direntList: direntList});\n this.updateUsedRepoTags();\n };\n\n\n handleSubmit = (e) => {\n let options = {\n 'share_type': 'personal',\n 'from': this.state.currentRepoInfo.owner_email\n };\n seafileAPI.leaveShareRepo(this.props.repoID, options).then(res => {\n navigate(siteRoot + 'shared-libs/');\n }).catch((error) => {\n let errorMsg = Utils.getErrorMsg(error, true);\n toaster.danger(errorMsg);\n });\n\n e.preventDefault();\n };\n\n render() {\n if (this.state.libNeedDecrypt) {\n return (\n \n \n \n );\n }\n\n if (this.state.errorMsg) {\n return (\n \n

    {this.state.errorMsg}

    \n \n
    \n );\n }\n\n if (!this.state.currentRepoInfo) {\n return '';\n }\n\n let enableDirPrivateShare = false;\n let { currentRepoInfo, userPerm, isCopyMoveProgressDialogShow, isDeleteFolderDialogOpen } = this.state;\n let showShareBtn = Utils.isHasPermissionToShare(currentRepoInfo, userPerm);\n let isRepoOwner = currentRepoInfo.owner_email === username;\n let isVirtual = currentRepoInfo.is_virtual;\n let isAdmin = currentRepoInfo.is_admin;\n if (!isVirtual && (isRepoOwner || isAdmin)) {\n enableDirPrivateShare = true;\n }\n let direntItemsList = this.state.direntList.filter((item, index) => {\n return index < this.state.itemsShowLength;\n });\n\n let canUpload = true;\n const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm);\n if (isCustomPermission) {\n const { upload } = customPermission.permission;\n canUpload = upload;\n }\n\n return (\n \n
    \n \n
    \n
    \n \n {canUpload && this.state.pathExist && !this.state.isViewFile && (\n this.uploader = uploader}\n dragAndDrop={true}\n path={this.state.path}\n repoID={this.props.repoID}\n direntList={this.state.direntList}\n onFileUploadSuccess={this.onFileUploadSuccess}\n isCustomPermission={isCustomPermission}\n />\n )}\n
    \n {isCopyMoveProgressDialogShow && (\n \n )}\n {isDeleteFolderDialogOpen && (\n \n )}\n
    \n );\n }\n}\n\nLibContentView.propTypes = propTypes;\n\nexport default LibContentView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\n\nclass DismissGroupDialog extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n dismissGroup = () => {\n let that = this;\n seafileAPI.deleteGroup(this.props.groupID).then((res)=> {\n that.props.onGroupChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return(\n \n {gettext('Delete Group')}\n \n {gettext('Really want to delete this group?')}\n \n \n \n \n \n \n );\n }\n}\n\nconst DismissGroupDialogPropTypes = {\n showDismissGroupDialog: PropTypes.bool.isRequired,\n toggleDismissGroupDialog: PropTypes.func.isRequired,\n loadGroup: PropTypes.func.isRequired,\n groupID: PropTypes.string,\n onGroupChanged: PropTypes.func.isRequired,\n};\n\nDismissGroupDialog.propTypes = DismissGroupDialogPropTypes;\n\nexport default DismissGroupDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Input, Button } from 'reactstrap';\nimport toaster from '../toast';\n\nclass RenameGroupDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n newGroupName: this.props.currentGroupName,\n isSubmitBtnActive: false,\n };\n }\n\n handleGroupNameChange = (event) => {\n if (!event.target.value.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n\n let name = event.target.value;\n this.setState({\n newGroupName: name\n });\n };\n\n renameGroup = () => {\n let name = this.state.newGroupName.trim();\n if (name) {\n let that = this;\n seafileAPI.renameGroup(this.props.groupID, name).then((res)=> {\n that.props.loadGroup(this.props.groupID);\n that.props.onGroupChanged(res.data.id);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n this.setState({\n newGroupName: '',\n });\n this.props.toggleRenameGroupDialog();\n };\n\n handleKeyDown = (event) => {\n if (event.keyCode === 13) {\n this.renameGroup();\n }\n };\n\n render() {\n return(\n \n {gettext('Rename Group')}\n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nconst RenameGroupDialogPropTypes = {\n showRenameGroupDialog: PropTypes.bool.isRequired,\n toggleRenameGroupDialog: PropTypes.func.isRequired,\n loadGroup: PropTypes.func.isRequired,\n groupID: PropTypes.string,\n onGroupChanged: PropTypes.func.isRequired,\n currentGroupName: PropTypes.string.isRequired,\n};\n\nRenameGroupDialog.propTypes = RenameGroupDialogPropTypes;\n\nexport default RenameGroupDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport UserSelect from '../user-select';\nimport { Utils } from '../../utils/utils';\n\nimport '../../css/transfer-group-dialog.css';\n\nconst propTypes = {\n groupID: PropTypes.string,\n toggleTransferGroupDialog: PropTypes.func.isRequired,\n onGroupChanged: PropTypes.func.isRequired\n};\n\nclass TransferGroupDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n selectedOption: null,\n errMessage: '',\n };\n this.options = [];\n }\n\n handleSelectChange = (option) => {\n this.setState({\n selectedOption: option,\n errMessage: '',\n });\n this.options = [];\n };\n\n transferGroup = () => {\n const email = this.state.selectedOption && this.state.selectedOption.email;\n if (email) {\n seafileAPI.transferGroup(this.props.groupID, email).then((res) => {\n this.props.toggleTransferGroupDialog();\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n this.setState({errMessage: errMessage});\n });\n }\n };\n\n toggle = () => {\n this.props.toggleTransferGroupDialog();\n };\n\n render() {\n return (\n \n {gettext('Transfer Group')}\n \n

    {gettext('Transfer group to')}

    \n \n
    {this.state.errMessage}
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nTransferGroupDialog.propTypes = propTypes;\n\nexport default TransferGroupDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Alert, Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport { gettext, siteRoot, groupImportMembersExtraMsg } from '../../utils/constants';\n\nconst propTypes = {\n toggleImportMembersDialog: PropTypes.func.isRequired,\n importMembersInBatch: PropTypes.func.isRequired,\n};\n\nclass ImportMembersDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n errorMsg: ''\n };\n this.fileInputRef = React.createRef();\n }\n\n toggle = () => {\n this.props.toggleImportMembersDialog();\n };\n\n openFileInput = () => {\n this.fileInputRef.current.click();\n };\n\n uploadFile = (e) => {\n // no file selected\n if (!this.fileInputRef.current.files.length) {\n return;\n }\n // check file extension\n let fileName = this.fileInputRef.current.files[0].name;\n if(fileName.substr(fileName.lastIndexOf('.') + 1) != 'xlsx') {\n this.setState({\n errorMsg: gettext('Please choose a .xlsx file.')\n });\n return;\n }\n const file = this.fileInputRef.current.files[0];\n this.props.importMembersInBatch(file);\n this.toggle();\n };\n\n render() {\n let { errorMsg } = this.state;\n return (\n \n {gettext('Import members from a .xlsx file')}\n\n \n

    {groupImportMembersExtraMsg}

    \n

    {gettext('Download an example file')}

    \n \n \n {errorMsg && {errorMsg}}\n
    \n \n \n \n
    \n );\n }\n}\n\nImportMembersDialog.propTypes = propTypes;\n\nexport default ImportMembersDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'reactstrap';\nimport { Utils } from '../utils/utils';\nimport { gettext } from '../utils/constants';\nimport { seafileAPI } from '../utils/seafile-api';\nimport RoleSelector from './single-selector';\nimport toaster from './toast';\nimport OpIcon from './op-icon';\n\nconst propTypes = {\n groupMembers: PropTypes.array.isRequired,\n groupID: PropTypes.string,\n isOwner: PropTypes.bool.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n toggleItemFreezed: PropTypes.func.isRequired,\n changeMember: PropTypes.func.isRequired,\n deleteMember: PropTypes.func.isRequired\n};\n\nclass GroupMembers extends React.Component {\n\n render() {\n const { groupMembers, changeMember, deleteMember, groupID, isOwner, isItemFreezed, toggleItemFreezed } = this.props;\n return (\n \n \n \n \n \n \n \n \n \n \n {groupMembers.map((item, index) => {\n return (\n \n );\n })\n }\n \n
    {gettext('Name')}{gettext('Role')}
    \n );\n }\n}\n\nGroupMembers.propTypes = propTypes;\n\nconst MemberPropTypes = {\n item: PropTypes.object.isRequired,\n changeMember: PropTypes.func.isRequired,\n deleteMember: PropTypes.func.isRequired,\n toggleItemFreezed: PropTypes.func.isRequired,\n groupID: PropTypes.string,\n isOwner: PropTypes.bool.isRequired,\n isItemFreezed: PropTypes.bool.isRequired\n};\n\nclass Member extends React.PureComponent {\n\n constructor(props) {\n super(props);\n this.roleOptions = [\n { value: 'Admin', text: gettext('Admin'), isSelected: false },\n { value: 'Member', text: gettext('Member'), isSelected: false }\n ];\n this.state = ({\n highlight: false,\n });\n }\n\n onChangeUserRole = (roleOption) => {\n let isAdmin = roleOption.value === 'Admin' ? 'True' : 'False';\n seafileAPI.setGroupAdmin(this.props.groupID, this.props.item.email, isAdmin).then((res) => {\n this.props.changeMember(res.data);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteMember = () => {\n const { item } = this.props;\n seafileAPI.deleteGroupMember(this.props.groupID, item.email).then((res) => {\n this.props.deleteMember(item);\n toaster.success(gettext('Successfully deleted {name}.').replace('{name}', item.name));\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n handleMouseOver = () => {\n if (this.props.isItemFreezed) return;\n this.setState({\n highlight: true,\n });\n };\n\n handleMouseLeave = () => {\n if (this.props.isItemFreezed) return;\n this.setState({\n highlight: false,\n });\n };\n\n translateRole = (role) => {\n if (role === 'Admin') {\n return gettext('Admin');\n }\n else if (role === 'Member') {\n return gettext('Member');\n }\n else if (role === 'Owner') {\n return gettext('Owner');\n }\n };\n\n render() {\n const { highlight } = this.state;\n const { item, isOwner } = this.props;\n const deleteAuthority = (item.role !== 'Owner' && isOwner === true) || (item.role === 'Member' && isOwner === false);\n\n const { role: curRole } = item;\n this.roleOptions = this.roleOptions.map(item => {\n item.isSelected = item.value == curRole;\n return item;\n });\n const currentSelectedOption = this.roleOptions.filter(item => item.isSelected)[0];\n\n return(\n \n \"\"/\n {item.name}\n \n {((isOwner === false) || (isOwner === true && item.role === 'Owner')) &&\n {this.translateRole(item.role)}\n }\n {(isOwner === true && item.role !== 'Owner') &&\n \n }\n \n \n {(deleteAuthority && this.state.highlight) &&\n \n }\n \n \n );\n }\n}\n\nMember.propTypes = MemberPropTypes;\n\n\nexport default GroupMembers;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, InputGroup, InputGroupText, Input } from 'reactstrap';\nimport { Utils } from '../utils/utils';\nimport { gettext } from '../utils/constants';\nimport { seafileAPI } from '../utils/seafile-api';\nimport UserSelect from './user-select';\nimport toaster from './toast';\nimport Loading from './loading';\nimport GroupMembers from './group-members';\n\nconst propTypes = {\n groupID: PropTypes.string,\n isOwner: PropTypes.bool.isRequired\n};\n\nclass ManageMembersDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true, // first loading\n isLoadingMore: false,\n groupMembers: [],\n page: 1,\n perPage: 100,\n hasNextPage: false,\n selectedOption: null,\n errMessage: [],\n isItemFreezed: false,\n searchActive: false,\n keyword: '',\n membersFound: []\n };\n }\n\n componentDidMount() {\n this.listGroupMembers(this.state.page);\n }\n\n listGroupMembers = (page) => {\n const { groupID } = this.props;\n const { perPage, groupMembers } = this.state;\n seafileAPI.listGroupMembers(groupID, page, perPage).then((res) => {\n const members = res.data;\n this.setState({\n isLoading: false,\n isLoadingMore: false,\n page: page,\n hasNextPage: members.length < perPage ? false : true,\n groupMembers: groupMembers.concat(members)\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n this.setState({\n isLoading: false,\n isLoadingMore: false,\n hasNextPage: false\n });\n });\n };\n\n onSelectChange = (option) => {\n this.setState({\n selectedOption: option,\n errMessage: [],\n });\n };\n\n addGroupMember = () => {\n let emails = [];\n for (let i = 0; i < this.state.selectedOption.length; i++) {\n emails.push(this.state.selectedOption[i].email);\n }\n seafileAPI.addGroupMembers(this.props.groupID, emails).then((res) => {\n const newMembers = res.data.success;\n this.setState({\n groupMembers: [].concat(newMembers, this.state.groupMembers),\n selectedOption: null,\n });\n this.refs.userSelect.clearSelect();\n if (res.data.failed.length > 0) {\n this.setState({\n errMessage: res.data.failed\n });\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n toggleItemFreezed = (isFreezed) => {\n this.setState({\n isItemFreezed: isFreezed\n });\n };\n\n handleScroll = (event) => {\n // isLoadingMore: to avoid repeated request\n const { page, hasNextPage, isLoadingMore } = this.state;\n if (hasNextPage && !isLoadingMore) {\n const clientHeight = event.target.clientHeight;\n const scrollHeight = event.target.scrollHeight;\n const scrollTop = event.target.scrollTop;\n const isBottom = (clientHeight + scrollTop + 1 >= scrollHeight);\n if (isBottom) { // scroll to the bottom\n this.setState({isLoadingMore: true}, () => {\n this.listGroupMembers(page + 1);\n });\n }\n }\n };\n\n changeMember = (targetMember) => {\n this.setState({\n groupMembers: this.state.groupMembers.map((item) => {\n if (item.email == targetMember.email) {\n item = targetMember;\n }\n return item;\n })\n });\n };\n\n deleteMember = (targetMember) => {\n const groupMembers = this.state.groupMembers;\n groupMembers.splice(groupMembers.indexOf(targetMember), 1);\n this.setState({\n groupMembers: groupMembers\n });\n };\n\n searchMembers = (e) => {\n const { groupMembers } = this.state;\n const keyword = e.target.value;\n const value = keyword.trim().toLowerCase();\n const membersFound = groupMembers.filter(item => item.name.toLowerCase().indexOf(value) > -1);\n this.setState({ keyword, membersFound });\n };\n\n clearSearch = () => {\n this.setState({\n keyword: '',\n membersFound: []\n });\n };\n\n onSearchInputFocus = () => {\n this.setState({\n searchActive: true\n });\n };\n\n onSearchInputBlur = () => {\n this.setState({\n searchActive: false\n });\n };\n\n render() {\n const {\n isLoading, hasNextPage, groupMembers,\n keyword, membersFound,\n searchActive\n } = this.state;\n return (\n \n

    {gettext('Add group member')}

    \n
    \n \n {this.state.selectedOption ?\n :\n \n }\n
    \n {\n this.state.errMessage.length > 0 &&\n this.state.errMessage.map((item, index = 0) => {\n return (\n
    {item.error_msg}
    \n );\n })\n }\n {groupMembers.length > 10 &&\n \n \n \n \n \n {keyword && (\n \n \n \n )}\n \n }\n
    {} : this.handleScroll}>\n {isLoading ? : (\n \n \n {(!keyword.trim() && hasNextPage) && }\n \n )}\n
    \n
    \n );\n }\n}\n\nManageMembersDialog.propTypes = propTypes;\n\nexport default ManageMembersDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport ListAndAddGroupMembers from '../list-and-add-group-members';\n\nimport '../../css/manage-members-dialog.css';\n\nconst propTypes = {\n groupID: PropTypes.string,\n isOwner: PropTypes.bool.isRequired,\n toggleManageMembersDialog: PropTypes.func.isRequired\n};\n\nclass ManageMembersDialog extends React.Component {\n\n render() {\n const { groupID, isOwner, toggleManageMembersDialog: toggle } = this.props;\n return (\n \n {gettext('Manage group members')}\n \n \n \n \n );\n }\n}\n\nManageMembersDialog.propTypes = propTypes;\n\nexport default ManageMembersDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport { gettext, username } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\n\nclass LeaveGroupDialog extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n leaveGroup = () => {\n seafileAPI.quitGroup(this.props.groupID, username).then((res)=> {\n this.props.onGroupChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return(\n \n {gettext('Leave Group')}\n \n

    {gettext('Really want to leave this group?')}

    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nconst LeaveGroupDialogPropTypes = {\n toggleLeaveGroupDialog: PropTypes.func.isRequired,\n groupID: PropTypes.string,\n onGroupChanged: PropTypes.func.isRequired,\n};\n\nLeaveGroupDialog.propTypes = LeaveGroupDialogPropTypes;\n\nexport default LeaveGroupDialog;\n","import React,{ Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport cookie from 'react-cookies';\nimport { gettext, siteRoot, username, canAddRepo } from '../../utils/constants';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../../components/loading';\nimport EmptyTip from '../../components/empty-tip';\nimport ModalPortal from '../../components/modal-portal';\nimport Group from '../../models/group';\nimport Repo from '../../models/repo';\nimport toaster from '../../components/toast';\nimport OpIcon from '../../components/op-icon';\nimport CommonToolbar from '../../components/toolbar/common-toolbar';\nimport CreateRepoDialog from '../../components/dialog/create-repo-dialog';\nimport DismissGroupDialog from '../../components/dialog/dismiss-group-dialog';\nimport RenameGroupDialog from '../../components/dialog/rename-group-dialog';\nimport TransferGroupDialog from '../../components/dialog/transfer-group-dialog';\nimport ImportMembersDialog from '../../components/dialog/import-members-dialog';\nimport ManageMembersDialog from '../../components/dialog/manage-members-dialog';\nimport LeaveGroupDialog from '../../components/dialog/leave-group-dialog';\nimport SharedRepoListView from '../../components/shared-repo-list-view/shared-repo-list-view';\nimport LibDetail from '../../components/dirent-detail/lib-details';\nimport SortOptionsDialog from '../../components/dialog/sort-options';\n\nimport '../../css/group-view.css';\n\nconst propTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n onGroupChanged: PropTypes.func.isRequired,\n onTabNavClick: PropTypes.func.isRequired,\n groupID: PropTypes.string,\n};\n\nclass GroupView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true, // first loading\n isLoadingMore: false,\n errMessage: '',\n emptyTip: null,\n currentGroup: null,\n currentRepo: null,\n isStaff: false,\n isOwner: false,\n sortBy: cookie.load('seafile-repo-dir-sort-by') || 'name', // 'name' or 'time' or 'size'\n sortOrder: cookie.load('seafile-repo-dir-sort-order') || 'asc', // 'asc' or 'desc'\n isSortOptionsDialogOpen: false,\n repoList: [],\n currentPage: 1,\n perPage: 300,\n hasNextPage: false,\n libraryType: 'group',\n isCreateRepoDialogShow: false,\n isDepartmentGroup: false,\n showGroupDropdown: false,\n showGroupMembersPopover: false,\n showRenameGroupDialog: false,\n showDismissGroupDialog: false,\n showTransferGroupDialog: false,\n showImportMembersDialog: false,\n showManageMembersDialog: false,\n groupMembers: [],\n isShowDetails: false,\n isLeaveGroupDialogOpen: false,\n };\n }\n\n componentDidMount() {\n let groupID = this.props.groupID;\n this.loadGroup(groupID);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.groupID !== this.props.groupID) {\n this.loadGroup(nextProps.groupID);\n }\n }\n\n loadGroup = (groupID) => {\n seafileAPI.getGroup(groupID).then((res) => {\n let currentGroup = new Group(res.data);\n let emptyTip = this.getEmptyTip(currentGroup);\n let isStaff = currentGroup.admins.indexOf(username) > -1; //for item operations\n let isOwner = currentGroup.owner === username ? true : false;\n let isDepartmentGroup = currentGroup.parent_group_id !== 0;\n this.setState({\n emptyTip: emptyTip,\n currentGroup: currentGroup,\n isStaff: isStaff,\n isDepartmentGroup: isDepartmentGroup,\n isOwner: isOwner,\n currentPage: 1,\n repoList: [] // empty it for the current group\n }, () => {\n this.loadRepos(this.state.currentPage);\n });\n }).catch((error) => {\n this.setState({\n isLoading: false,\n errMessage: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n loadRepos = (page) => {\n const { perPage } = this.state;\n seafileAPI.listGroupRepos(this.props.groupID, page, perPage).then((res) => {\n let hasNextPage = true;\n if (res.data.length < perPage) {\n hasNextPage = false;\n }\n let repoList = this.state.repoList;\n let newRepoList = res.data.map(item => {\n let repo = new Repo(item);\n return repo;\n });\n if (newRepoList.length) {\n repoList = repoList.concat(newRepoList);\n }\n this.setState({\n isLoading: false,\n isLoadingMore: false,\n currentPage: page,\n hasNextPage: hasNextPage,\n repoList: Utils.sortRepos(repoList, this.state.sortBy, this.state.sortOrder)\n });\n }).catch((error) => {\n this.setState({\n isLoading: false,\n isLoadingMore: false,\n errMessage: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n getEmptyTip = (currentGroup) => {\n let emptyTip = null;\n if (currentGroup) {\n if (currentGroup.parent_group_id === 0) {\n emptyTip = (\n \n

    {gettext('No libraries shared with this group')}

    \n

    {gettext('No libraries have been shared with this group yet. A library shared with a group can be accessed by all group members. You can share a library with a group in \"My Libraries\". You can also create a new library to be shared with this group by clicking the \"New Library\" button in the menu bar.')}

    \n
    \n );\n } else {\n if (currentGroup.admins.indexOf(username) == -1) { // is a member of this group\n emptyTip = (\n \n

    {gettext('No libraries')}

    \n
    \n );\n } else {\n emptyTip = (\n \n

    {gettext('No libraries')}

    \n

    {gettext('You can create libraries by clicking the \"New Library\" button above.')}

    \n
    \n );\n }\n }\n }\n return emptyTip;\n };\n\n onCreateRepoToggle = () => {\n this.setState({isCreateRepoDialogShow: !this.state.isCreateRepoDialogShow});\n };\n\n onCreateRepo = (repo, groupOwnerType) => {\n let groupId = this.props.groupID;\n if (groupOwnerType && groupOwnerType === 'department') {\n seafileAPI.createGroupOwnedLibrary(groupId, repo).then(res => { //need modify endpoint api\n let object = {\n repo_id: res.data.id,\n repo_name: res.data.name,\n owner_name: res.data.group_name,\n owner_email: res.data.owner,\n permission: res.data.permission,\n mtime: res.data.mtime,\n size: res.data.size,\n encrypted: res.data.encrypted,\n };\n let repo = new Repo(object);\n let repoList = this.addRepoItem(repo);\n this.setState({repoList: repoList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n\n } else {\n seafileAPI.createGroupRepo(groupId, repo).then(res => {\n let repo = new Repo(res.data);\n let repoList = this.addRepoItem(repo);\n this.setState({repoList: repoList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n this.onCreateRepoToggle();\n };\n\n onItemDelete = (repo) => {\n let groupID = this.props.groupID;\n let repoList = this.state.repoList.filter(item => {\n return item.repo_id !== repo.repo_id;\n });\n this.setState({repoList: repoList});\n this.loadGroup(groupID);\n };\n\n addRepoItem = (repo) => {\n let newRepoList = this.state.repoList.map(item => {return item;});\n newRepoList.unshift(repo);\n return newRepoList;\n };\n\n onItemUnshare = (repo) => {\n let group = this.state.currentGroup;\n seafileAPI.unshareRepoToGroup(repo.repo_id, group.id).then(() => {\n let repoList = this.state.repoList.filter(item => {\n return item.repo_id !== repo.repo_id;\n });\n this.setState({repoList: repoList});\n this.loadGroup(group.id);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onItemRename = (repo, newName) => {\n seafileAPI.renameGroupOwnedLibrary(this.props.groupID, repo.repo_id, newName).then(res => {\n let repoList = this.state.repoList.map(item => {\n if (item.repo_id === repo.repo_id) {\n item.repo_name = newName;\n }\n return item;\n });\n this.setState({repoList: repoList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onMonitorRepo = (repo, monitored) => {\n let repoList = this.state.repoList.map(item => {\n if (item.repo_id === repo.repo_id) {\n item.monitored = monitored;\n }\n return item;\n });\n this.setState({repoList: repoList});\n };\n\n onTabNavClick = (tabName) => {\n this.props.onTabNavClick(tabName);\n };\n\n toggleGroupDropdown = () => {\n this.setState({\n showGroupDropdown: !this.state.showGroupDropdown\n });\n };\n\n toggleDismissGroupDialog = () => {\n this.setState({\n showDismissGroupDialog: !this.state.showDismissGroupDialog,\n showGroupDropdown: false,\n });\n };\n\n toggleRenameGroupDialog = () => {\n this.setState({\n showRenameGroupDialog: !this.state.showRenameGroupDialog,\n showGroupDropdown: false,\n });\n };\n\n toggleTransferGroupDialog = () => {\n this.setState({\n showTransferGroupDialog: !this.state.showTransferGroupDialog,\n showGroupDropdown: false,\n });\n };\n\n toggleImportMembersDialog= () => {\n this.setState({\n showImportMembersDialog: !this.state.showImportMembersDialog\n });\n };\n\n importMembersInBatch= (file) => {\n toaster.notify(gettext('It may take some time, please wait.'));\n seafileAPI.importGroupMembersViaFile(this.state.currentGroup.id, file).then((res) => {\n res.data.failed.forEach(item => {\n const msg = `${item.email}: ${item.error_msg}`;\n toaster.danger(msg);\n });\n }).catch((error) => {\n let errMsg = Utils.getErrorMsg(error);\n toaster.danger(errMsg);\n });\n };\n\n toggleManageMembersDialog = () => {\n this.setState({\n showManageMembersDialog: !this.state.showManageMembersDialog,\n showGroupDropdown: false,\n });\n };\n\n toggleLeaveGroupDialog = () => {\n this.setState({\n isLeaveGroupDialogOpen: !this.state.isLeaveGroupDialogOpen,\n showGroupDropdown: false,\n });\n };\n\n listGroupMembers = () => {\n seafileAPI.listGroupMembers(this.props.groupID).then((res) => {\n this.setState({\n groupMembers: res.data\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n toggleGroupMembersPopover = (state) => {\n if (state === 'open') {\n this.listGroupMembers();\n this.setState({\n showGroupMembersPopover: true\n });\n } else {\n this.setState({\n showGroupMembersPopover: false\n });\n }\n };\n\n onItemDetails = (repo) => {\n this.setState({\n isShowDetails: true,\n currentRepo: repo,\n });\n };\n\n closeDetails = () => {\n this.setState({isShowDetails: false});\n };\n\n sortItems = (sortBy, sortOrder) => {\n cookie.save('seafile-repo-dir-sort-by', sortBy);\n cookie.save('seafile-repo-dir-sort-order', sortOrder);\n this.setState({\n sortBy: sortBy,\n sortOrder: sortOrder,\n repoList: Utils.sortRepos(this.state.repoList, sortBy, sortOrder)\n });\n };\n\n translateRole = (role) => {\n if (role === 'Admin') {\n return gettext('Admin');\n }\n else if (role === 'Member') {\n return gettext('Member');\n }\n else if (role === 'Owner') {\n return gettext('Owner');\n }\n };\n\n toggleSortOptionsDialog = () => {\n this.setState({\n isSortOptionsDialogOpen: !this.state.isSortOptionsDialogOpen\n });\n };\n\n handleScroll = (event) => {\n // isLoadingMore: to avoid repeated request\n const { currentPage, hasNextPage, isLoadingMore } = this.state;\n if (hasNextPage && !isLoadingMore) {\n const clientHeight = event.target.clientHeight;\n const scrollHeight = event.target.scrollHeight;\n const scrollTop = event.target.scrollTop;\n const isBottom = (clientHeight + scrollTop + 1 >= scrollHeight);\n if (isBottom) { // scroll to the bottom\n this.setState({isLoadingMore: true}, () => {\n this.loadRepos(currentPage + 1);\n });\n }\n }\n };\n\n render() {\n let { errMessage, emptyTip, currentGroup, isDepartmentGroup, isStaff } = this.state;\n let isShowSettingIcon = false;\n if (currentGroup) { // group message is loaded\n if (currentGroup.parent_group_id === 0) {\n isShowSettingIcon = true;\n } else {\n if (currentGroup.admins.indexOf(username) > -1) {\n isShowSettingIcon = true;\n }\n }\n }\n let useRate = 0;\n if (isDepartmentGroup && currentGroup.group_quota) {\n useRate = currentGroup.group_quota_usage / currentGroup.group_quota * 100 + '%';\n }\n return (\n \n
    \n
    \n \n
    \n {((!isDepartmentGroup && canAddRepo) || (isDepartmentGroup && isStaff)) && (\n Utils.isDesktop() ? (\n \n ) : (\n \n )\n )}\n
    \n
    \n \n
    \n
    \n
    \n
    \n {currentGroup && (\n \n
    \n this.onTabNavClick('groups')}>{gettext('Groups')}\n /\n {currentGroup.name}\n {isDepartmentGroup && (\n \n \n {currentGroup.group_quota > 0 &&\n \n
    \n \n {Utils.bytesToSize(currentGroup.group_quota_usage)} / {Utils.bytesToSize(currentGroup.group_quota)}\n
    \n
    \n }\n
    \n )}\n
    \n
    \n { isShowSettingIcon &&\n \n \n {this.state.showGroupDropdown &&\n
    \n
    \n {gettext('Settings')}\n \n
    \n
    \n {(this.state.isStaff || this.state.isOwner) &&\n \n }\n {(this.state.isStaff || this.state.isOwner) &&\n \n }\n {\n this.state.isOwner &&\n \n }\n {/* gourp owner only can dissmiss group, admin could not quit, department member could not quit */}\n {(!this.state.isOwner && !isDepartmentGroup) &&\n \n }\n
    \n
    }\n
    \n }\n this.toggleGroupMembersPopover('open')}>\n \n {this.state.showGroupMembersPopover &&\n
    \n
    \n {gettext('Members')}\n \n
    \n
    \n \n
    \n
    }\n {(!Utils.isDesktop() && this.state.repoList.length > 0) && }\n {this.state.isSortOptionsDialogOpen &&\n \n }\n
    \n
    \n )}\n
    \n
    \n {this.state.isLoading && }\n {(!this.state.isLoading && errMessage) &&
    {errMessage}
    }\n {(!this.state.isLoading && this.state.repoList.length === 0) && emptyTip}\n {(!this.state.isLoading && this.state.repoList.length > 0) &&\n \n }\n
    \n
    \n {this.state.isShowDetails && (\n
    \n \n
    \n )}\n
    \n {this.state.isCreateRepoDialogShow && !this.state.isDepartmentGroup && (\n \n \n \n )}\n {this.state.isCreateRepoDialogShow && this.state.isDepartmentGroup &&\n \n }\n {this.state.showRenameGroupDialog &&\n \n }\n {this.state.showDismissGroupDialog &&\n \n }\n {this.state.showTransferGroupDialog &&\n \n }\n { this.state.showImportMembersDialog &&\n \n }\n {this.state.showManageMembersDialog &&\n \n }\n {this.state.isLeaveGroupDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nGroupView.propTypes = propTypes;\n\nexport default GroupView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\nimport CommonToolbar from './common-toolbar';\nimport { Button } from 'reactstrap';\nimport { gettext, canAddGroup } from '../../utils/constants';\n\nconst propTypes = {\n searchPlaceholder: PropTypes.string,\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n toggleAddGroupModal: PropTypes.func.isRequired,\n};\n\nclass GroupsToolbar extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n let { onShowSidePanel, onSearchedClick } = this.props;\n return (\n
    \n
    \n \n {canAddGroup && (\n
    \n \n \n \n \n \n \n
    \n )}\n
    \n \n
    \n );\n }\n}\n\nGroupsToolbar.propTypes = propTypes;\n\nexport default GroupsToolbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Input, Button } from 'reactstrap';\nimport { Utils } from '../../utils/utils';\n\nclass CreateGroupDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n groupName: '',\n errorMsg: '',\n isSubmitBtnActive: false,\n };\n }\n\n handleGroupChange = (event) => {\n let name = event.target.value;\n\n if (!name.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n this.setState({\n groupName: name\n });\n if (this.state.errorMsg) {\n this.setState({\n errorMsg: ''\n });\n }\n };\n\n handleSubmitGroup = () => {\n let name = this.state.groupName.trim();\n if (name) {\n let that = this;\n seafileAPI.createGroup(name).then((res)=> {\n that.props.onCreateGroup();\n }).catch((error) => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({errorMsg: errorMsg});\n });\n } else {\n this.setState({\n errorMsg: gettext('Name is required')\n });\n }\n this.setState({\n groupName: '',\n });\n };\n\n handleKeyDown = (e) => {\n if (e.keyCode === 13) {\n this.handleSubmitGroup();\n e.preventDefault();\n }\n };\n\n render() {\n return(\n \n {gettext('New Group')}\n \n \n \n {this.state.errorMsg}\n \n \n \n \n \n \n );\n }\n}\n\nconst CreateGroupDialogPropTypes = {\n toggleAddGroupModal: PropTypes.func.isRequired,\n onCreateGroup: PropTypes.func.isRequired,\n showAddGroupModal: PropTypes.bool.isRequired,\n};\n\nCreateGroupDialog.propTypes = CreateGroupDialogPropTypes;\n\nexport default CreateGroupDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext, siteRoot, canAddGroup } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../../components/loading';\nimport Group from '../../models/group';\nimport Repo from '../../models/repo';\nimport toaster from '../../components/toast';\nimport GroupsToolbar from '../../components/toolbar/groups-toolbar';\nimport SharedRepoListView from '../../components/shared-repo-list-view/shared-repo-list-view';\nimport CreateGroupDialog from '../../components/dialog/create-group-dialog';\nimport LibDetail from '../../components/dirent-detail/lib-details';\nimport EmptyTip from '../../components/empty-tip';\n\nimport '../../css/groups.css';\n\nconst propTypes = {\n group: PropTypes.object.isRequired,\n onItemDetails: PropTypes.func.isRequired,\n};\n\n\nclass RepoListViewPanel extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n repoList: [],\n };\n }\n\n componentDidMount() {\n let group = this.props.group;\n let repoList = group.repos.map(item => {\n let repo = new Repo(item);\n return repo;\n });\n this.setState({repoList: repoList});\n }\n\n onItemUnshare = (repo) => {\n let group = this.props.group;\n seafileAPI.unshareRepoToGroup(repo.repo_id, group.id).then(() => {\n let repoList = this.state.repoList.filter(item => {\n return item.repo_id !== repo.repo_id;\n });\n this.setState({repoList: repoList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onItemDelete = (repo) => {\n let repoList = this.state.repoList.filter(item => {\n return item.repo_id !== repo.repo_id;\n });\n this.setState({repoList: repoList});\n };\n\n onItemRename = (repo, newName) => {\n let group = this.props.group;\n seafileAPI.renameGroupOwnedLibrary(group.id, repo.repo_id, newName).then(res => {\n let repoList = this.state.repoList.map(item => {\n if (item.repo_id === repo.repo_id) {\n item.repo_name = newName;\n }\n return item;\n });\n this.setState({repoList: repoList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onMonitorRepo = (repo, monitored) => {\n let repoList = this.state.repoList.map(item => {\n if (item.repo_id === repo.repo_id) {\n item.monitored = monitored;\n }\n return item;\n });\n this.setState({repoList: repoList});\n };\n\n render() {\n let group = this.props.group;\n const emptyTip =

    {gettext('No libraries')}

    ;\n return (\n
    \n

    \n {group.name}\n

    \n {this.state.repoList.length === 0 ?\n emptyTip :\n \n }\n
    \n );\n }\n}\n\nRepoListViewPanel.propTypes = propTypes;\n\nclass GroupsView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true,\n errorMsg: '',\n groupList: [],\n showAddGroupModal: false,\n isShowDetails: false,\n currentRepo: null,\n };\n }\n\n listGroups = () => {\n seafileAPI.listGroups(true).then((res) => {\n // `{'with_repos': 1}`: list repos of every group\n let groupList = res.data.map(item => {\n let group = new Group(item);\n return group;\n });\n this.setState({\n isLoading: false,\n groupList: groupList.sort((a, b) => {\n return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1;\n })\n });\n }).catch((error) => {\n this.setState({\n isLoading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n toggleAddGroupModal = () => {\n this.setState({\n showAddGroupModal: !this.state.showAddGroupModal\n });\n };\n\n onCreateGroup = () => {\n this.setState({\n showAddGroupModal: false,\n isLoading: true,\n groupList: [],\n });\n this.listGroups();\n };\n\n componentDidMount() {\n this.listGroups();\n }\n\n onItemDetails = (repo) => {\n this.setState({\n isShowDetails: true,\n currentRepo: repo,\n });\n };\n\n closeDetails = () => {\n this.setState({isShowDetails: false});\n };\n\n render() {\n const emptyTip = (\n \n

    {gettext('No groups')}

    \n {canAddGroup ?\n

    {gettext('You are not in any groups. Groups allow multiple people to collaborate on libraries. You can create a group by clicking the \"New Group\" button in the menu bar.')}

    :\n

    {gettext('You are not in any groups. Groups allow multiple people to collaborate on libraries. Groups you join will be listed here.')}

    \n }\n
    \n );\n\n return (\n \n \n
    \n
    \n
    \n

    {gettext('My Groups')}

    \n
    \n
    \n {this.state.isLoading && }\n {(!this.state.isLoading && this.state.errorMsg) &&
    {this.state.errorMsg}
    }\n {(!this.state.isLoading && !this.state.errorMsg && this.state.groupList.length == 0) && emptyTip}\n {!this.state.isLoading && this.state.groupList.map((group, index) => {\n return (\n \n );\n })}\n
    \n
    \n {this.state.isShowDetails && (\n
    \n \n
    \n )}\n
    \n { this.state.showAddGroupModal &&\n \n }\n
    \n );\n }\n}\n\nconst GroupsViewPropTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n};\n\nGroupsView.propTypes = GroupsViewPropTypes;\n\nexport default GroupsView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CommonToolbar from './common-toolbar';\nimport { Button } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n toggleInvitePeopleDialog: PropTypes.func.isRequired,\n searchPlaceholder: PropTypes.string.isRequired,\n};\n\nclass InvitationsToolbar extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n let { onShowSidePanel, onSearchedClick, toggleInvitePeopleDialog } = this.props;\n return (\n
    \n
    \n \n \n {Utils.isDesktop() ? (\n
    \n \n
    \n ) : (\n \n )}\n
    \n \n
    \n );\n }\n}\n\nInvitationsToolbar.propTypes = propTypes;\n\nexport default InvitationsToolbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../utils/utils';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Input, Button } from 'reactstrap';\nimport toaster from '../toast';\nimport Loading from '../loading';\n\nconst InvitePeopleDialogPropTypes = {\n onInvitePeople: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired,\n};\n\nclass InvitePeopleDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n emails: '',\n errorMsg: '',\n isSubmitting: false\n };\n }\n\n handleInputChange = (e) => {\n let emails = e.target.value;\n this.setState({\n emails: emails\n });\n if (this.state.errorMsg) {\n this.setState({\n errorMsg: ''\n });\n }\n };\n\n handleKeyDown = (e) => {\n if (e.keyCode === 13) {\n e.preventDefault();\n this.handleSubmitInvite();\n }\n };\n\n handleSubmitInvite = () => {\n let emails = this.state.emails.trim();\n if (!emails) {\n this.setState({\n errorMsg: gettext('It is required.')\n });\n return false;\n }\n\n let emailsArray = [];\n emails = emails.split(',');\n for (let i = 0, len = emails.length; i < len; i++) {\n let email = emails[i].trim();\n if (email) {\n emailsArray.push(email);\n }\n }\n\n if (!emailsArray.length) {\n this.setState({\n errorMsg: gettext('Email is invalid.')\n });\n return false;\n }\n\n this.setState({\n isSubmitting: true\n });\n seafileAPI.invitePeople(emailsArray).then((res) => {\n this.props.toggleDialog();\n const success = res.data.success;\n if (success.length) {\n let successMsg = '';\n if (success.length == 1) {\n successMsg = gettext('Successfully invited %(email).')\n .replace('%(email)', success[0].accepter);\n } else {\n successMsg = gettext('Successfully invited %(email) and %(num) other people.')\n .replace('%(email)', success[0].accepter)\n .replace('%(num)', success.length - 1);\n }\n toaster.success(successMsg);\n this.props.onInvitePeople(success);\n }\n const failed = res.data.failed;\n if (failed.length) {\n for (let i = 0, len = failed.length; i < len; i++) {\n let failedMsg = failed[i].email + ': ' + failed[i].error_msg;\n toaster.danger(failedMsg);\n }\n }\n }).catch((error) => {\n const errorMsg = Utils.getErrorMsg(error);\n toaster.danger(errorMsg);\n this.props.toggleDialog();\n });\n };\n\n render() {\n const { isSubmitting } = this.state;\n return (\n \n {gettext('Invite Guest')}\n \n \n \n

    {this.state.errorMsg}

    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nInvitePeopleDialog.propTypes = InvitePeopleDialogPropTypes;\n\nexport default InvitePeopleDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../loading';\nimport toaster from '../toast';\n\nconst propTypes = {\n accepter: PropTypes.string.isRequired,\n token: PropTypes.string.isRequired,\n revokeInvitation: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass InvitationRevokeDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isSubmitting: false\n };\n }\n\n onRevokeInvitation = () => {\n this.setState({\n isSubmitting: true,\n });\n\n seafileAPI.revokeInvitation(this.props.token).then((res) => {\n this.props.revokeInvitation();\n this.props.toggleDialog();\n const msg = gettext('Successfully revoked access of user {placeholder}.').replace('{placeholder}', this.props.accepter);\n toaster.success(msg);\n }).catch((error) => {\n const errorMsg = Utils.getErrorMsg(error);\n toaster.danger(errorMsg);\n this.props.toggleDialog();\n });\n };\n\n render() {\n const { toggleDialog } = this.props;\n const { isSubmitting } = this.state;\n const email = '' + Utils.HTMLescape(this.props.accepter) + '';\n const content = gettext('Are you sure to revoke access of user {placeholder} ?').replace('{placeholder}', email);\n\n return (\n \n {gettext('Revoke Access')}\n \n

    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nInvitationRevokeDialog.propTypes = propTypes;\n\nexport default InvitationRevokeDialog;\n","import React, { Component, Fragment } from 'react';\nimport { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport InvitationsToolbar from '../../components/toolbar/invitations-toolbar';\nimport InvitePeopleDialog from '../../components/dialog/invite-people-dialog';\nimport InvitationRevokeDialog from '../../components/dialog/invitation-revoke-dialog';\nimport Loading from '../../components/loading';\nimport toaster from '../../components/toast';\nimport EmptyTip from '../../components/empty-tip';\n\nimport '../../css/invitations.css';\n\nclass Item extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n isOpMenuOpen: false, // for mobile\n isRevokeDialogOpen: false\n };\n }\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n });\n };\n\n onMouseEnter = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n onMouseLeave = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n deleteItem = (e) => {\n e.preventDefault();\n // make the icon avoid being clicked repeatedly\n this.setState({\n isOpIconShown: false\n });\n const token = this.props.invitation.token;\n seafileAPI.deleteInvitation(token).then((res) => {\n this.setState({deleted: true});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n const errorMsg = Utils.getErrorMsg(error);\n toaster.danger(errorMsg);\n this.setState({\n isOpIconShown: true\n });\n });\n };\n\n revokeItem = () => {\n this.setState({deleted: true});\n };\n\n toggleRevokeDialog = (e) => {\n e.preventDefault();\n this.setState({\n isRevokeDialogOpen: !this.state.isRevokeDialogOpen\n });\n };\n\n render() {\n const { isOpIconShown, deleted, isRevokeDialogOpen } = this.state;\n\n if (deleted) {\n return null;\n }\n\n const item = this.props.invitation;\n\n const desktopItem = (\n \n {item.accepter}\n {moment(item.invite_time).format('YYYY-MM-DD')}\n {moment(item.expire_time).format('YYYY-MM-DD')}\n {item.accept_time && }\n \n {isOpIconShown && (\n item.accept_time ?\n \n :\n \n \n )}\n \n \n );\n\n const mobileItem = (\n \n \n {item.accepter}
    \n {moment(item.invite_time).format('YYYY-MM-DD')}({gettext('Invite Time')})\n {moment(item.expire_time).format('YYYY-MM-DD')}({gettext('Expiration')})\n {item.accept_time && gettext('Accepted')}\n \n \n \n \n
    \n
    \n
    \n {item.accept_time ?\n {gettext('Revoke Access')} :\n {gettext('Delete')}\n }\n
    \n
    \n
    \n \n \n );\n\n return (\n \n {this.props.isDesktop ? desktopItem : mobileItem}\n {isRevokeDialogOpen &&\n \n }\n \n );\n }\n}\n\nconst ItemPropTypes = {\n data: PropTypes.object.isRequired,\n invitation: PropTypes.object.isRequired,\n isDesktop: PropTypes.bool.isRequired,\n};\n\nItem.propTypes = ItemPropTypes;\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const {\n loading, errorMsg, invitationsList\n } = this.props.data;\n\n if (loading) {\n return ;\n }\n\n if (errorMsg) {\n return

    {errorMsg}

    ;\n }\n\n if (!invitationsList.length) {\n return (\n \n

    {gettext('No guest invitations')}

    \n

    {gettext('You have not invited any guests yet. A guest can access shared libraries through the web interface allowing more efficient ways to collaborate than through links. You can invite a guest by clicking the \"Invite Guest\" button in the menu bar.')}

    \n
    \n );\n }\n\n const isDesktop = Utils.isDesktop();\n return (\n \n \n {isDesktop ?\n \n \n \n \n \n \n \n :\n \n \n \n \n }\n \n \n {invitationsList.map((invitation, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Email')}{gettext('Invite Time')}{gettext('Expiration')}{gettext('Accepted')}
    \n );\n }\n}\n\nclass InvitationsView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n invitationsList: [],\n isInvitePeopleDialogOpen: false\n };\n }\n\n componentDidMount() {\n seafileAPI.listInvitations().then((res) => {\n this.setState({\n invitationsList: res.data,\n loading: false\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n onInvitePeople = (invitationsArray) => {\n invitationsArray.push.apply(invitationsArray, this.state.invitationsList);\n this.setState({\n invitationsList: invitationsArray,\n });\n };\n\n toggleInvitePeopleDialog = () => {\n this.setState({\n isInvitePeopleDialogOpen: !this.state.isInvitePeopleDialogOpen\n });\n };\n\n render() {\n return (\n \n \n
    \n
    \n
    \n

    {gettext('Invite Guest')}

    \n
    \n
    \n \n
    \n
    \n
    \n {this.state.isInvitePeopleDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nContent.propTypes = {\n data: PropTypes.object.isRequired,\n};\n\nconst InvitationsViewPropTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n};\n\nInvitationsView.propTypes = InvitationsViewPropTypes;\n\nexport default InvitationsView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input } from 'reactstrap';\n\nconst propTypes = {\n toggleCancel: PropTypes.func.isRequired,\n addWiki: PropTypes.func.isRequired,\n};\n\nclass NewWikiDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isExist: false,\n name: '',\n repoID: '',\n isSubmitBtnActive: false,\n };\n }\n\n inputNewName = (e) => {\n if (!event.target.value.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n\n this.setState({\n name: e.target.value,\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n }\n };\n\n handleSubmit = () => {\n let { isExist, name, repoID } = this.state;\n this.props.addWiki(isExist, name, repoID);\n this.props.toggleCancel();\n };\n\n toggle = () => {\n this.props.toggleCancel();\n };\n\n render() {\n return (\n \n {gettext('New Wiki')}\n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nNewWikiDialog.propTypes = propTypes;\n\nexport default NewWikiDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport moment from 'moment';\nimport Repo from '../../models/repo';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n toggleCancel: PropTypes.func.isRequired,\n addWiki: PropTypes.func.isRequired\n};\n\nclass WikiSelectDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n repos: [],\n repoID: '',\n };\n }\n\n componentDidMount() {\n seafileAPI.listRepos().then(res => {\n let repoList = res.data.repos\n .filter(item => {\n switch (item.type) {\n case 'mine': // my libraries\n return !item.encrypted;\n case 'shared': // libraries shared with me\n // 'is_admin': the library is shared with 'admin' permission\n return !item.encrypted && item.is_admin;\n case 'group':\n default:\n return !item.encrypted && !res.data.repos.some(repo => {\n // just remove the duplicated libraries\n return repo.type != item.type && repo.repo_id == item.repo_id;\n });\n }\n })\n .map(item => {\n let repo = new Repo(item);\n return repo;\n });\n repoList = Utils.sortRepos(repoList, 'name', 'asc');\n this.setState({repos: repoList});\n });\n }\n\n onChange = (repo) => {\n this.setState({\n repoID: repo.repo_id,\n });\n };\n\n handleSubmit = () => {\n let { repoID } = this.state;\n this.props.addWiki(repoID);\n this.props.toggleCancel();\n };\n\n toggle = () => {\n this.props.toggleCancel();\n };\n\n render() {\n return (\n \n {gettext('Publish a Library')}\n \n \n \n \n \n \n \n \n \n \n \n {this.state.repos.map((repo, index) => {\n return (\n \n \n \n \n \n \n );\n })}\n \n
    {/* select */}{/* icon */}{gettext('Name')}{gettext('Last Update')}
    {Utils.getLibIconTitle(repo)}{repo.repo_name}{moment(repo.last_modified).fromNow()}
    \n
    \n \n \n {this.state.repoID ?\n :\n \n }\n \n
    \n );\n }\n}\n\nWikiSelectDialog.propTypes = propTypes;\n\nexport default WikiSelectDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\n\nconst propTypes = {\n toggleCancel: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n};\n\nclass WikiDeleteDialog extends React.Component {\n\n toggle = () => {\n this.props.toggleCancel();\n };\n\n render() {\n return (\n \n {gettext('Unpublish Library')}\n \n

    {gettext('Are you sure you want to unpublish this library?')}

    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nWikiDeleteDialog.propTypes = propTypes;\n\nexport default WikiDeleteDialog;\n","import React, { Component, Fragment } from 'react';\nimport { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { siteRoot, gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n// import { seafileAPI } from '../../utils/seafile-api';\n// import Toast from '../toast';\nimport ModalPortal from '../modal-portal';\nimport WikiDeleteDialog from '../dialog/wiki-delete-dialog';\n// import Rename from '../rename';\n\nconst propTypes = {\n wiki: PropTypes.object.isRequired,\n // renameWiki: PropTypes.func.isRequired,\n deleteWiki: PropTypes.func.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n};\n\nclass WikiListItem extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpMenuOpen: false, // for mobile\n isShowDeleteDialog: false,\n // isRenameing: false,\n highlight: false,\n // permission: this.props.wiki.permission,\n };\n }\n\n toggleOpMenu = () => {\n this.setState({\n isOpMenuOpen: !this.state.isOpMenuOpen\n });\n };\n\n // clickMenuToggle = (e) => {\n // e.preventDefault();\n // this.onMenuToggle(e);\n // }\n\n // onMenuToggle = (e) => {\n // let targetType = e.target.dataset.toggle;\n // if (targetType !== 'item') {\n // if (this.props.isItemFreezed) {\n // this.setState({\n // highlight: false,\n // isShowMenuControl: false,\n // isShowWikiMenu: !this.state.isShowWikiMenu\n // });\n // this.props.onUnfreezedItem();\n // } else {\n // this.setState({\n // isShowWikiMenu: !this.state.isShowWikiMenu\n // });\n // this.props.onFreezedItem();\n // }\n // }\n // }\n\n onMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({ highlight: true });\n }\n };\n\n onMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({ highlight: false });\n }\n };\n\n // changePerm = (permission) => {\n // let wiki = this.props.wiki;\n // seafileAPI.updateWikiPermission(wiki.slug, permission).then(() => {\n // this.setState({permission: permission});\n // }).catch((error) => {\n // if(error.response) {\n // let errorMsg = error.response.data.error_msg;\n // Toast.danger(errorMsg);\n // }\n // });\n // }\n\n // onRenameToggle = (e) => {\n // this.props.onFreezedItem();\n // this.setState({\n // isShowWikiMenu: false,\n // isShowMenuControl: false,\n // isRenameing: true,\n // });\n // }\n\n // onRenameConfirm = (newName) => {\n // this.renameWiki(newName);\n // this.onRenameCancel();\n // }\n\n // onRenameCancel = () => {\n // this.props.onUnfreezedItem();\n // this.setState({isRenameing: false});\n // }\n\n onDeleteToggle = (e) => {\n e.preventDefault();\n this.props.onUnfreezedItem();\n this.setState({\n isShowDeleteDialog: !this.state.isShowDeleteDialog,\n });\n };\n\n onDeleteCancel = () => {\n this.props.onUnfreezedItem();\n this.setState({\n isShowDeleteDialog: !this.state.isShowDeleteDialog,\n });\n };\n\n // renameWiki = (newName) => {\n // let wiki = this.props.wiki;\n // this.props.renameWiki(wiki, newName);\n // }\n\n deleteWiki = () => {\n let wiki = this.props.wiki;\n this.props.deleteWiki(wiki);\n this.setState({\n isShowDeleteDialog: !this.state.isShowDeleteDialog,\n });\n };\n\n render() {\n let wiki = this.props.wiki;\n let userProfileURL = `${siteRoot}profile/${encodeURIComponent(wiki.owner)}/`;\n let fileIconUrl = Utils.getDefaultLibIconUrl(false);\n let deleteIcon = `action-icon sf2-icon-x3 ${this.state.highlight ? '' : 'invisible'}`;\n\n const desktopItem = (\n \n \"\"\n \n {wiki.name}\n {/*this.state.isRenameing ?\n :\n {wiki.name}\n */}\n \n {wiki.owner_nickname}\n {moment(wiki.updated_at).fromNow()}\n \n \n \n \n );\n\n const mobileItem = (\n \n \"\"\n \n {wiki.name}
    \n {wiki.owner_nickname}\n {moment(wiki.updated_at).fromNow()}\n \n \n \n \n
    \n
    \n
    \n {gettext('Unpublish')}\n
    \n
    \n
    \n \n \n );\n\n return (\n \n {Utils.isDesktop() ? desktopItem : mobileItem}\n {this.state.isShowDeleteDialog &&\n \n \n \n }\n \n );\n }\n}\n\nWikiListItem.propTypes = propTypes;\n\nexport default WikiListItem;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport WikiListItem from './wiki-list-item';\nimport LibsMobileThead from '../libs-mobile-thead';\n\nconst propTypes = {\n data: PropTypes.object.isRequired,\n renameWiki: PropTypes.func.isRequired,\n deleteWiki: PropTypes.func.isRequired,\n};\n\nclass WikiListView extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false,\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n render() {\n let { loading, errorMsg, wikis } = this.props.data;\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const isDesktop = Utils.isDesktop();\n const desktopThead = (\n \n \n \n {gettext('Name')}\n {gettext('Owner')}\n {gettext('Last Update')}\n {/* operation */}\n \n \n );\n return (\n \n {isDesktop ? desktopThead : }\n \n {wikis.map((wiki, index) => {\n return (\n \n );\n })}\n \n
    \n );\n }\n }\n}\n\nWikiListView.propTypes = propTypes;\n\nexport default WikiListView;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport MediaQuery from 'react-responsive';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext, canPublishRepo } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../../components/toast';\nimport ModalPortal from '../../components/modal-portal';\nimport EmptyTip from '../../components/empty-tip';\nimport CommonToolbar from '../../components/toolbar/common-toolbar';\nimport NewWikiDialog from '../../components/dialog/new-wiki-dialog';\nimport WikiSelectDialog from '../../components/dialog/wiki-select-dialog';\nimport WikiListView from '../../components/wiki-list-view/wiki-list-view';\n\nconst propTypes = {\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n};\n\nclass Wikis extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n wikis: [],\n isShowAddWikiMenu: false,\n isShowSelectDialog: false,\n isShowCreateDialog: false,\n };\n }\n\n componentDidMount() {\n this.getWikis();\n }\n\n getWikis = () => {\n seafileAPI.listWikis().then(res => {\n this.setState({\n loading: false,\n wikis: res.data.data\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n clickMenuToggle = (e) => {\n e.preventDefault();\n this.onMenuToggle();\n };\n\n onMenuToggle = () => {\n this.setState({isShowAddWikiMenu: !this.state.isShowAddWikiMenu});\n };\n\n onSelectToggle = () => {\n this.setState({isShowSelectDialog: !this.state.isShowSelectDialog});\n };\n\n onCreateToggle = () => {\n this.setState({isShowCreateDialog: !this.state.isShowCreateDialog});\n };\n\n addWiki = (repoID) => {\n seafileAPI.addWiki(repoID).then((res) => {\n this.state.wikis.push(res.data);\n this.setState({wikis: this.state.wikis});\n }).catch((error) => {\n if(error.response) {\n let errorMsg = error.response.data.error_msg;\n toaster.danger(errorMsg);\n }\n });\n };\n\n renameWiki = (wiki, newName) => {\n seafileAPI.renameWiki(wiki.slug, newName).then((res) => {\n let wikis = this.state.wikis.map((item) => {\n if (item.name === wiki.name) {\n item = res.data;\n }\n return item;\n });\n this.setState({wikis: wikis});\n }).catch((error) => {\n if(error.response) {\n let errorMsg = error.response.data.error_msg;\n toaster.danger(errorMsg);\n }\n });\n };\n\n deleteWiki = (wiki) => {\n seafileAPI.deleteWiki(wiki.slug).then(() => {\n let wikis = this.state.wikis.filter(item => {\n return item.name !== wiki.name;\n });\n this.setState({wikis: wikis});\n }).catch((error) => {\n if(error.response) {\n let errorMsg = error.response.data.error_msg;\n toaster.danger(errorMsg);\n }\n });\n };\n\n render() {\n return (\n \n
    \n
    \n \n {canPublishRepo &&\n
    \n \n \n \n \n \n \n \n \n
    \n }\n
    \n \n
    \n
    \n
    \n
    \n
    \n

    {gettext('Published Libraries')}

    \n
    \n
    \n
    \n {(this.state.loading || this.state.wikis.length !== 0) &&\n \n }\n {(!this.state.loading && this.state.wikis.length === 0) &&\n \n

    {gettext('No published libraries')}

    \n

    {gettext('You have not published any libraries yet. A published library can be accessed by anyone, not only users, via its URL. You can publish a library by clicking the \"Publish a Library\" button in the menu bar.')}

    \n
    \n }\n
    \n
    \n
    \n {this.state.isShowCreateDialog && (\n \n \n \n )}\n {this.state.isShowSelectDialog && (\n \n \n \n )}\n
    \n );\n }\n}\n\nWikis.propTypes = propTypes;\n\nexport default Wikis;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CommonToolbar from './common-toolbar';\n\nconst propTypes = {\n searchPlaceholder: PropTypes.string,\n onShowSidePanel: PropTypes.func.isRequired,\n onSearchedClick: PropTypes.func.isRequired,\n};\n\nclass GeneralToolbar extends React.Component {\n\n render() {\n // todo get repoID?\n let { onShowSidePanel, onSearchedClick } = this.props;\n return (\n
    \n
    \n \n \n
    \n \n
    \n );\n }\n}\n\nGeneralToolbar.propTypes = propTypes;\n\nexport default GeneralToolbar;\n","import React, { Fragment } from 'react';\nimport GeneralToolBar from './toolbar/general-toolbar';\n\nconst MainContentWrapper = (WrapperedComponent) => {\n return class Wrapper extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n \n \n \n \n );\n }\n };\n};\n\nexport default MainContentWrapper;\n","import React, { Component } from 'react';\nimport ReactDom from 'react-dom';\nimport { Router, navigate } from '@gatsbyjs/reach-router';\nimport MediaQuery from 'react-responsive';\nimport { Modal } from 'reactstrap';\nimport { siteRoot, canAddRepo, isDocs } from './utils/constants';\nimport { Utils } from './utils/utils';\nimport SystemNotification from './components/system-notification';\nimport SidePanel from './components/side-panel';\nimport MainPanel from './components/main-panel';\nimport DraftsView from './pages/drafts/drafts-view';\nimport DraftContent from './pages/drafts/draft-content';\nimport FilesActivities from './pages/dashboard/files-activities';\nimport MyFileActivities from './pages/dashboard/my-file-activities';\nimport Starred from './pages/starred/starred';\nimport LinkedDevices from './pages/linked-devices/linked-devices';\nimport editUtilities from './utils/editor-utilities';\nimport ShareAdminLibraries from './pages/share-admin/libraries';\nimport ShareAdminFolders from './pages/share-admin/folders';\nimport ShareAdminShareLinks from './pages/share-admin/share-links';\nimport ShareAdminUploadLinks from './pages/share-admin/upload-links';\nimport SharedLibraries from './pages/shared-libs/shared-libs';\nimport ShareWithOCM from './pages/share-with-ocm/shared-with-ocm';\nimport OCMViaWebdav from './pages/ocm-via-webdav/ocm-via-webdav';\nimport OCMRepoDir from './pages/share-with-ocm/remote-dir-view';\nimport MyLibraries from './pages/my-libs/my-libs';\nimport MyLibDeleted from './pages/my-libs/my-libs-deleted';\nimport PublicSharedView from './pages/shared-with-all/public-shared-view';\nimport LibContentView from './pages/lib-content-view/lib-content-view';\nimport Group from './pages/groups/group-view';\nimport Groups from './pages/groups/groups-view';\nimport InvitationsView from './pages/invitations/invitations-view';\nimport Wikis from './pages/wikis/wikis';\nimport MainContentWrapper from './components/main-content-wrapper';\n\nimport './css/layout.css';\nimport './css/toolbar.css';\nimport './css/search.css';\n\nconst FilesActivitiesWrapper = MainContentWrapper(FilesActivities);\nconst MyFileActivitiesWrapper = MainContentWrapper(MyFileActivities);\nconst DraftsViewWrapper = MainContentWrapper(DraftsView);\nconst StarredWrapper = MainContentWrapper(Starred);\nconst LinkedDevicesWrapper = MainContentWrapper(LinkedDevices);\nconst SharedLibrariesWrapper = MainContentWrapper(SharedLibraries);\nconst SharedWithOCMWrapper = MainContentWrapper(ShareWithOCM);\nconst OCMViaWebdavWrapper = MainContentWrapper(OCMViaWebdav);\nconst ShareAdminLibrariesWrapper = MainContentWrapper(ShareAdminLibraries);\nconst ShareAdminFoldersWrapper = MainContentWrapper(ShareAdminFolders);\n\nclass App extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpen: false,\n isSidePanelClosed: false,\n draftCounts: 0,\n draftList:[],\n isLoadingDraft: true,\n currentTab: '/',\n pathPrefix: [],\n };\n this.dirViewPanels = ['my-libs', 'shared-libs', 'org']; // and group\n window.onpopstate = this.onpopstate;\n }\n\n onpopstate = (event) => {\n if (event.state && event.state.currentTab && event.state.pathPrefix) {\n let { currentTab, pathPrefix } = event.state;\n this.setState({currentTab, pathPrefix});\n }\n };\n\n UNSAFE_componentWillMount() {\n if (!Utils.isDesktop()) {\n this.setState({\n isSidePanelClosed: true\n });\n }\n }\n\n navigateClientUrlToLib = () =>{\n if(window.location.hash && window.location.hash.indexOf('common/lib') != -1){\n let splitUrlArray = window.location.hash.split('/');\n let repoID = splitUrlArray[splitUrlArray.length - 2];\n let url = siteRoot + 'library/' + repoID + '/';\n navigate(url, {repalce: true});\n }\n };\n\n componentDidMount() {\n // url from client e.g. http://127.0.0.1:8000/#common/lib/34e7fb92-e91d-499d-bcde-c30ea8af9828/\n // navigate to library page http://127.0.0.1:8000/library/34e7fb92-e91d-499d-bcde-c30ea8af9828/\n this.navigateClientUrlToLib();\n\n // e.g. from http://127.0.0.1:8000/drafts/reviews/\n // get reviews\n // TODO: need refactor later\n let href = window.location.href.split('/');\n if (isDocs) {\n this.getDrafts();\n }\n this.setState({currentTab: href[href.length - 2]});\n }\n\n getDrafts = () => {\n editUtilities.listDrafts().then(res => {\n this.setState({\n draftCounts: res.data.draft_counts,\n draftList: res.data.data,\n isLoadingDraft: false,\n });\n });\n };\n\n updateDraftsList = (draft_id) => {\n this.setState({\n draftCounts: this.state.draftCounts - 1,\n draftList: this.state.draftList.filter(draft => draft.id != draft_id),\n });\n };\n\n onCloseSidePanel = () => {\n this.setState({\n isSidePanelClosed: !this.state.isSidePanelClosed\n });\n };\n\n onShowSidePanel = () => {\n this.setState({\n isSidePanelClosed: !this.state.isSidePanelClosed\n });\n };\n\n onSearchedClick = (selectedItem) => {\n if (selectedItem.is_dir === true) {\n this.setState({currentTab: '', pathPrefix: []});\n let url = siteRoot + 'library/' + selectedItem.repo_id + '/' + selectedItem.repo_name + selectedItem.path;\n navigate(url, {repalce: true});\n } else {\n let url = siteRoot + 'lib/' + selectedItem.repo_id + '/file' + Utils.encodePath(selectedItem.path);\n let isWeChat = Utils.isWeChat();\n if (!isWeChat) {\n let newWindow = window.open('about:blank');\n newWindow.location.href = url;\n } else {\n location.href = url;\n }\n }\n };\n\n onGroupChanged = (groupID) => {\n setTimeout(function(){\n let url;\n if (groupID) {\n url = siteRoot + 'group/' + groupID + '/';\n }\n else {\n url = siteRoot + 'groups/';\n }\n window.location = url.toString();\n }, 1);\n };\n\n tabItemClick = (tabName, groupID) => {\n let pathPrefix = [];\n if (groupID || this.dirViewPanels.indexOf(tabName) > -1) {\n pathPrefix = this.generatorPrefix(tabName, groupID);\n }\n this.setState({\n currentTab: tabName,\n pathPrefix: pathPrefix\n }, () => {\n let { currentTab, pathPrefix } = this.state;\n window.history.replaceState({currentTab: currentTab, pathPrefix: pathPrefix}, null);\n });\n if (!Utils.isDesktop() && !this.state.isSidePanelClosed) {\n this.setState({ isSidePanelClosed: true });\n }\n };\n\n generatorPrefix = (tabName, groupID) => {\n let pathPrefix = [];\n if (groupID) {\n let navTab1 = {\n url: siteRoot + 'groups/',\n showName: 'Groups',\n name: 'groups',\n id: null,\n };\n let navTab2 = {\n url: siteRoot + 'group/' + groupID + '/',\n showName: tabName,\n name: tabName,\n id: groupID,\n };\n pathPrefix.push(navTab1);\n pathPrefix.push(navTab2);\n } else {\n let navTab = {\n url: siteRoot + tabName + '/',\n showName: this.getTabShowName(tabName),\n name: tabName,\n id: null,\n };\n pathPrefix.push(navTab);\n }\n return pathPrefix;\n };\n\n getTabShowName = (tabName) => {\n if (tabName === 'my-libs') {\n return 'Libraries';\n }\n if (tabName === 'shared-libs') {\n return 'Shared with me';\n }\n if (tabName === 'org') {\n return 'Shared with all';\n }\n };\n\n toggleSidePanel = () => {\n this.setState({\n isSidePanelClosed: !this.state.isSidePanelClosed\n });\n };\n\n render() {\n let { currentTab, isSidePanelClosed } = this.state;\n\n const home = canAddRepo ?\n :\n ;\n\n return (\n \n \n
    \n \n \n \n {home}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n );\n }\n}\n\nReactDom.render(, document.getElementById('wrapper'));\n","import React from 'react';\nimport { Popover } from 'reactstrap';\nimport PropTypes from 'prop-types';\nimport { KeyCodes } from '../../constants';\n\nconst propTypes = {\n target: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n boundariesElement: PropTypes.object,\n innerClassName: PropTypes.string,\n popoverClassName: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n hideSeahubPopover: PropTypes.func.isRequired,\n hideSeahubPopoverWithEsc: PropTypes.func,\n hideArrow: PropTypes.bool,\n canHideSeahubPopover: PropTypes.bool,\n placement: PropTypes.string,\n modifiers: PropTypes.object\n};\n\nclass SeahubPopover extends React.Component {\n\n SeahubPopoverRef = null;\n isSelectOpen = false;\n\n componentDidMount() {\n document.addEventListener('mousedown', this.onMouseDown);\n document.addEventListener('keydown', this.onKeyDown);\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.onMouseDown);\n document.removeEventListener('keydown', this.onKeyDown);\n }\n\n getEventClassName = (e) => {\n // svg mouseEvent event.target.className is an object\n if (!e || !e.target) return '';\n return e.target.getAttribute('class') || '';\n };\n\n onKeyDown = (e) => {\n const { canHideSeahubPopover, hideSeahubPopoverWithEsc } = this.props;\n if (e.keyCode === KeyCodes.Escape && typeof hideSeahubPopoverWithEsc === 'function' && !this.isSelectOpen) {\n e.preventDefault();\n hideSeahubPopoverWithEsc();\n } else if (e.keyCode === KeyCodes.Enter) {\n // Resolve the default behavior of the enter key when entering formulas is blocked\n if (canHideSeahubPopover) return;\n e.stopImmediatePropagation();\n }\n };\n\n onMouseDown = (e) => {\n if (!this.props.canHideSeahubPopover) return;\n if (this.SeahubPopoverRef && e && this.getEventClassName(e).indexOf('popover') === -1 && !this.SeahubPopoverRef.contains(e.target)) {\n this.props.hideSeahubPopover(e);\n }\n };\n\n onPopoverInsideClick = (e) => {\n e.stopPropagation();\n };\n\n render() {\n const {\n target, boundariesElement, innerClassName, popoverClassName, hideArrow, modifiers,\n placement,\n } = this.props;\n let additionalProps = {};\n if (boundariesElement) {\n additionalProps.boundariesElement = boundariesElement;\n }\n return (\n \n
    this.SeahubPopoverRef = ref} onClick={this.onPopoverInsideClick}>\n {this.props.children}\n
    \n \n );\n }\n}\n\nSeahubPopover.defaultProps = {\n placement: 'bottom-start',\n hideArrow: true,\n canHideSeahubPopover: true\n};\n\nSeahubPopover.propTypes = propTypes;\n\nexport default SeahubPopover;\n","import assign from 'object-assign';\n\nimport { store } from './helpers';\n\nexport const MENU_SHOW = 'REACT_CONTEXTMENU_SHOW';\nexport const MENU_HIDE = 'REACT_CONTEXTMENU_HIDE';\n\n\nexport function dispatchGlobalEvent(eventName, opts, target = window) {\n // Compatibale with IE\n // @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\n let event;\n\n if (typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(eventName, { detail: opts });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, false, true, opts);\n }\n\n if (target) {\n target.dispatchEvent(event);\n assign(store, opts);\n }\n}\n\nexport function showMenu(opts = {}, target) {\n dispatchGlobalEvent(MENU_SHOW, assign({}, opts, { type: MENU_SHOW }), target);\n}\n\nexport function hideMenu(opts = {}, target) {\n dispatchGlobalEvent(MENU_HIDE, assign({}, opts, { type: MENU_HIDE }), target);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport listener from './globalEventListener';\nimport { hideMenu } from './actions';\nimport { callIfExists } from './helpers';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n id: PropTypes.string.isRequired,\n rtl: PropTypes.bool,\n onMenuItemClick: PropTypes.func.isRequired,\n onShowMenu: PropTypes.func,\n onHideMenu: PropTypes.func,\n hideOnLeave: PropTypes.bool,\n};\n\nclass ContextMenu extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n x: 0,\n y: 0,\n isVisible: false,\n currentObject: null,\n menuList: [],\n };\n }\n\n componentDidMount() {\n this.listenId = listener.register(this.handleShow, this.handleHide);\n }\n\n componentDidUpdate () {\n if (this.state.isVisible) {\n const wrapper = window.requestAnimationFrame || setTimeout;\n\n wrapper(() => {\n const { x, y } = this.state;\n const { top, left } = this.props.rtl ? this.getRTLMenuPosition(x, y) : this.getMenuPosition(x, y);\n\n wrapper(() => {\n if (!this.menu) return;\n this.menu.style.top = `${top}px`;\n this.menu.style.left = `${left}px`;\n this.menu.style.opacity = 1;\n this.menu.style.pointerEvents = 'auto';\n });\n });\n } else {\n if (!this.menu) return;\n this.menu.style.opacity = 0;\n this.menu.style.pointerEvents = 'none';\n }\n }\n\n componentWillUnmount() {\n if (this.listenId) {\n listener.unregister(this.listenId);\n }\n\n this.unregisterHandlers();\n }\n\n registerHandlers = () => {\n document.addEventListener('mousedown', this.handleOutsideClick);\n document.addEventListener('touchstart', this.handleOutsideClick);\n document.addEventListener('scroll', this.handleHide);\n document.addEventListener('contextmenu', this.handleHide);\n document.addEventListener('keydown', this.handleKeyNavigation);\n window.addEventListener('resize', this.handleHide);\n };\n\n unregisterHandlers = () => {\n document.removeEventListener('mousedown', this.handleOutsideClick);\n document.removeEventListener('touchstart', this.handleOutsideClick);\n document.removeEventListener('scroll', this.handleHide);\n document.removeEventListener('contextmenu', this.handleHide);\n document.removeEventListener('keydown', this.handleKeyNavigation);\n window.removeEventListener('resize', this.handleHide);\n };\n\n handleShow = (e) => {\n if (e.detail.id !== this.props.id) return;\n\n const { x, y } = e.detail.position;\n const { currentObject, menuList} = e.detail;\n\n this.setState({ isVisible: true, x, y, currentObject, menuList });\n this.registerHandlers();\n callIfExists(this.props.onShowMenu, e);\n };\n\n handleHide = (e) => {\n if (this.state.isVisible && (!e.detail || !e.detail.id || e.detail.id === this.props.id)) {\n this.unregisterHandlers();\n this.setState({ isVisible: false});\n callIfExists(this.props.onHideMenu, e);\n }\n };\n\n handleOutsideClick = (e) => {\n if (!this.menu.contains(e.target)) hideMenu();\n };\n\n handleMouseLeave = (event) => {\n event.preventDefault();\n\n if (this.props.hideOnLeave) hideMenu();\n };\n\n handleContextMenu = (e) => {\n this.handleHide(e);\n };\n\n handleKeyNavigation = (e) => {\n if (this.state.isVisible === false) {\n return;\n }\n e.preventDefault();\n this.hideMenu(e);\n };\n\n hideMenu = (e) => {\n if (e.keyCode === 27 || e.keyCode === 13) { // ECS or enter\n hideMenu();\n }\n };\n\n getMenuPosition = (x = 0, y = 0) => {\n let menuStyles = {\n top: y,\n left: x\n };\n\n if (!this.menu) return menuStyles;\n\n const { innerWidth, innerHeight } = window;\n const rect = this.menu.getBoundingClientRect();\n\n if (y + rect.height > innerHeight) {\n menuStyles.top -= rect.height;\n }\n\n if (x + rect.width > innerWidth) {\n menuStyles.left -= rect.width;\n }\n\n if (menuStyles.top < 0) {\n menuStyles.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;\n }\n\n if (menuStyles.left < 0) {\n menuStyles.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;\n }\n\n return menuStyles;\n };\n\n getRTLMenuPosition = (x = 0, y = 0) => {\n let menuStyles = {\n top: y,\n left: x\n };\n\n if (!this.menu) return menuStyles;\n\n const { innerWidth, innerHeight } = window;\n const rect = this.menu.getBoundingClientRect();\n\n // Try to position the menu on the left side of the cursor\n menuStyles.left = x - rect.width;\n\n if (y + rect.height > innerHeight) {\n menuStyles.top -= rect.height;\n }\n\n if (menuStyles.left < 0) {\n menuStyles.left += rect.width;\n }\n\n if (menuStyles.top < 0) {\n menuStyles.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;\n }\n\n if (menuStyles.left + rect.width > innerWidth) {\n menuStyles.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;\n }\n\n return menuStyles;\n };\n\n\n onMenuItemClick = (event) => {\n event.stopPropagation();\n let operation = Utils.getEventData(event, 'operation');\n let currentObject = this.state.currentObject;\n this.props.onMenuItemClick(operation, currentObject, event);\n };\n\n onContextMenu = (event) => {\n event.stopPropagation();\n };\n\n render() {\n const inlineStyle = { position: 'fixed', opacity: 0, pointerEvents: 'none', display: 'block' };\n return (\n
    { this.menu = menu; }}>\n {this.state.menuList.map((menuItem, index) => {\n if (menuItem === 'Divider') {\n return
    ;\n } else {\n return (\n \n {menuItem.value}\n \n );\n }\n })}\n
    \n );\n }\n}\n\nContextMenu.propTypes = propTypes;\n\nexport default ContextMenu;\n","import { MENU_SHOW, MENU_HIDE } from './actions';\nimport { uniqueId, hasOwnProp, canUseDOM } from './helpers';\n\nclass GlobalEventListener {\n\n constructor() {\n this.callbacks = {};\n\n if (canUseDOM) {\n window.addEventListener(MENU_SHOW, this.handleShowEvent);\n window.addEventListener(MENU_HIDE, this.handleHideEvent);\n }\n }\n\n handleShowEvent = (event) => {\n for (const id in this.callbacks) {\n if (hasOwnProp(this.callbacks, id)) this.callbacks[id].show(event);\n }\n };\n\n handleHideEvent = (event) => {\n for (const id in this.callbacks) {\n if (hasOwnProp(this.callbacks, id)) this.callbacks[id].hide(event);\n }\n };\n\n register = (showCallback, hideCallback) => {\n const id = uniqueId();\n\n this.callbacks[id] = {\n show: showCallback,\n hide: hideCallback\n };\n\n return id;\n };\n\n unregister = (id) => {\n if (id && this.callbacks[id]) {\n delete this.callbacks[id];\n }\n };\n}\n\nconst globalEventListener = new GlobalEventListener();\n\nexport default globalEventListener;\n","export function callIfExists(func, ...args) {\n return (typeof func === 'function') && func(...args);\n}\n\nexport function hasOwnProp(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function uniqueId() {\n return Math.random().toString(36).substring(7);\n}\n\nexport const store = {};\n\nexport const canUseDOM = Boolean(\n typeof window !== 'undefined' && window.document && window.document.createElement\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\n\nconst propTypes = {\n type: PropTypes.oneOf(['move', 'copy']).isRequired,\n asyncOperatedFilesLength: PropTypes.number.isRequired,\n asyncOperationProgress: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n toggleDialog: PropTypes.func.isRequired,\n};\n\nclass CopyMoveDirentProgressDialog extends React.Component {\n\n render() {\n\n let { type , asyncOperationProgress, asyncOperatedFilesLength } = this.props;\n let title = type === 'move' ? gettext('Move {num} items') : gettext('Copy {num} items');\n title = title.replace('{num}', asyncOperatedFilesLength);\n let progressStyle = {\n width: asyncOperationProgress + '%',\n lineHeight: '40px',\n textAlign: 'left',\n };\n return (\n \n {title}\n \n
    \n \n {asyncOperationProgress + '%'}\n
    \n \n
    \n
    \n );\n }\n}\n\nCopyMoveDirentProgressDialog.propTypes = propTypes;\n\nexport default CopyMoveDirentProgressDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter, Form, FormGroup, Label, Alert } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n fileType: PropTypes.string,\n parentPath: PropTypes.string.isRequired,\n onAddFolder: PropTypes.func.isRequired,\n checkDuplicatedName: PropTypes.func.isRequired,\n addFolderCancel: PropTypes.func.isRequired,\n};\n\nclass CreateForder extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n parentPath: '',\n childName: '',\n errMessage: '',\n isSubmitBtnActive: false,\n };\n }\n\n componentDidMount() {\n let parentPath = this.props.parentPath;\n if (parentPath[parentPath.length - 1] === '/') { // mainPanel\n this.setState({parentPath: parentPath});\n } else {\n this.setState({parentPath: parentPath + '/'}); // sidePanel\n }\n }\n\n handleChange = (e) => {\n if (!e.target.value.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n\n this.setState({childName: e.target.value});\n };\n\n handleSubmit = () => {\n if (!this.state.isSubmitBtnActive) {\n return;\n }\n\n let newName = this.state.childName;\n let isDuplicated = this.checkDuplicatedName();\n\n if (isDuplicated) {\n let errMessage = gettext('The name \"{name}\" is already taken. Please choose a different name.');\n errMessage = errMessage.replace('{name}', Utils.HTMLescape(newName));\n this.setState({errMessage: errMessage});\n } else {\n let path = this.state.parentPath + newName;\n this.props.onAddFolder(path);\n }\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n toggle = () => {\n this.props.addFolderCancel();\n };\n\n checkDuplicatedName = () => {\n let isDuplicated = this.props.checkDuplicatedName(this.state.childName);\n return isDuplicated;\n };\n\n render() {\n return (\n \n {gettext('New Folder')}\n \n
    \n \n \n \n \n
    \n {this.state.errMessage && {this.state.errMessage}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nCreateForder.propTypes = propTypes;\n\nexport default CreateForder;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport Lightbox from '@seafile/react-image-lightbox';\nimport '@seafile/react-image-lightbox/style.css';\n\nconst propTypes = {\n imageItems: PropTypes.array.isRequired,\n imageIndex: PropTypes.number.isRequired,\n closeImagePopup: PropTypes.func.isRequired,\n moveToPrevImage: PropTypes.func.isRequired,\n moveToNextImage: PropTypes.func.isRequired\n};\n\nclass ImageDialog extends React.Component {\n\n render() {\n const imageItems = this.props.imageItems;\n const imageIndex = this.props.imageIndex;\n const imageItemsLength = imageItems.length;\n const name = imageItems[imageIndex].name;\n const imageTitle = `${name} (${imageIndex + 1}/${imageItemsLength})`;\n\n return (\n \n );\n }\n}\n\nImageDialog.propTypes = propTypes;\n\nexport default ImageDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport copy from '../copy-to-clipboard';\nimport { gettext } from '../../utils/constants';\nimport toaster from '../../components/toast';\n\nconst propTypes = {\n link: PropTypes.string.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass ShareAdminLink extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n copyToClipboard = () => {\n copy(this.props.link);\n this.props.toggleDialog();\n toaster.success(gettext('The link is copied to the clipboard.'), {duration: 2});\n };\n\n render() {\n const { link, toggleDialog } = this.props;\n return (\n \n {gettext('Link')}\n \n {link}\n \n \n \n \n \n \n );\n }\n}\n\nShareAdminLink.propTypes = propTypes;\n\nexport default ShareAdminLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\nimport { mediaUrl, gettext, fileServerRoot } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../loading';\n\nconst propTypes = {\n data: PropTypes.object,\n token: PropTypes.string,\n path: PropTypes.string.isRequired,\n repoID: PropTypes.string,\n target: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.array\n ]),\n toggleDialog: PropTypes.func.isRequired\n};\n\nlet interval;\n\nclass ZipDownloadDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true,\n errorMsg: '',\n zipProgress: null\n };\n }\n\n componentDidMount() {\n const { token, path, repoID, target } = this.props;\n let getZipTask;\n if (token) {\n getZipTask = target.length ?\n seafileAPI.getShareLinkDirentsZipTask(token, path, target) :\n seafileAPI.getShareLinkZipTask(token, path);\n } else {\n getZipTask = seafileAPI.zipDownload(repoID, path, target);\n }\n getZipTask.then((res) => {\n const zipToken = res.data['zip_token'];\n this.setState({\n isLoading: false,\n errorMsg: '',\n zipToken: zipToken\n });\n this.queryZipProgress();\n interval = setInterval(this.queryZipProgress, 1000);\n }).catch((error) => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({\n isLoading: false,\n errorMsg: errorMsg\n });\n });\n }\n\n queryZipProgress = () => {\n const zipToken = this.state.zipToken;\n seafileAPI.queryZipProgress(zipToken).then((res) => {\n const data = res.data;\n if (data.failed == 1) {\n clearInterval(interval);\n let errorMsg;\n switch (data.failed_reason) { // returned from seaserv\n case 'size too large':\n errorMsg = gettext('Failed to download. The total size of the files exceeded the limit.');\n break;\n case 'internal error':\n errorMsg = gettext('Internal Server Error');\n break;\n default:\n errorMsg = gettext('Error');\n }\n this.setState({\n isLoading: false,\n errorMsg: errorMsg\n });\n } else {\n this.setState({\n zipProgress: data.total == 0 ? '100%' : (data.zipped/data.total*100).toFixed(2) + '%'\n });\n if (data['total'] == data['zipped']) {\n clearInterval(interval);\n this.props.toggleDialog();\n location.href = `${fileServerRoot}zip/${zipToken}`;\n }\n }\n }).catch((error) => {\n clearInterval(interval);\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({\n isLoading: false,\n errorMsg: errorMsg\n });\n });\n };\n\n cancelZipTask = () => {\n const zipToken = this.state.zipToken;\n seafileAPI.cancelZipTask(zipToken).then((res) => {\n // do nothing\n }).catch((error) => {\n // do nothing\n });\n };\n\n toggleDialog = () => {\n const zipProgress = this.state.zipProgress;\n if (zipProgress && zipProgress != '100%') {\n clearInterval(interval);\n this.cancelZipTask();\n }\n this.props.toggleDialog();\n };\n\n render() {\n return (\n \n {gettext('Download')}\n \n \n \n \n );\n }\n}\n\nclass Content extends React.Component {\n\n render() {\n const {isLoading, errorMsg, zipProgress} = this.props.data;\n\n if (isLoading) {\n return ;\n }\n\n if (errorMsg) {\n return (\n
    \n \"\"\n

    {errorMsg}

    \n
    \n );\n }\n\n return

    {`${gettext('Packaging...')} ${zipProgress}`}

    ;\n }\n}\n\nContent.propTypes = {\n data: PropTypes.object,\n};\n\nZipDownloadDialog.propTypes = propTypes;\n\nexport default ZipDownloadDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport listener from '../context-menu/globalEventListener';\nimport { Dropdown, ButtonDropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n tagName: PropTypes.string,\n item: PropTypes.object.isRequired,\n toggleClass: PropTypes.string,\n isHandleContextMenuEvent: PropTypes.bool,\n getMenuList: PropTypes.func.isRequired,\n onMenuItemClick: PropTypes.func.isRequired,\n freezeItem: PropTypes.func,\n unfreezeItem: PropTypes.func,\n};\n\nclass ItemDropdownMenu extends React.Component {\n\n static defaultProps = {\n isHandleContextMenuEvent: true,\n toggleClass: 'sf2-icon-caret-down'\n };\n\n constructor(props) {\n super(props);\n this.state = {\n menuList: [],\n isItemMenuShow: false,\n };\n }\n\n componentDidMount() {\n if (this.props.isHandleContextMenuEvent) {\n this.listenerId = listener.register(this.onShowMenu, this.onHideMenu);\n }\n let { item } = this.props;\n let menuList = this.props.getMenuList(item);\n this.setState({menuList: menuList});\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) { // for toolbar item operation\n let { item } = nextProps;\n if (item.name !== this.props.item.name) {\n let menuList = this.props.getMenuList(item);\n this.setState({menuList: menuList});\n }\n }\n\n componentWillUnmount() {\n if (this.props.isHandleContextMenuEvent && this.listenerId) {\n listener.unregister(this.listenerId);\n }\n }\n\n onShowMenu = () => {\n // nothing todo\n };\n\n onHideMenu = () => {\n if (this.state.isItemMenuShow) {\n this.setState({isItemMenuShow: false});\n if (typeof(this.props.unfreezeItem) === 'function') {\n this.props.unfreezeItem();\n }\n }\n };\n\n onDropdownToggleKeyDown = (e) => {\n if (e.key == 'Enter' || e.key == 'Space') {\n this.onDropdownToggleClick(e);\n }\n };\n\n onDropdownToggleClick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n this.toggleOperationMenu();\n };\n\n toggleOperationMenu = () => {\n this.setState(\n {isItemMenuShow: !this.state.isItemMenuShow},\n () => {\n if (this.state.isItemMenuShow && typeof(this.props.freezeItem) === 'function') {\n this.props.freezeItem();\n } else if (!this.state.isItemMenuShow && typeof(this.props.unfreezeItem) === 'function') {\n this.props.unfreezeItem();\n }\n }\n );\n };\n\n onMenuItemKeyDown = (e) => {\n if (e.key == 'Enter' || e.key == 'Space') {\n this.onMenuItemClick(e);\n }\n };\n\n onMenuItemClick = (event) => {\n let operation = Utils.getEventData(event, 'toggle');\n let item = this.props.item;\n this.props.onMenuItemClick(operation, event, item);\n };\n\n render() {\n let menuList = this.state.menuList;\n let { toggleClass, tagName } = this.props;\n toggleClass = 'sf-dropdown-toggle ' + toggleClass;\n\n if (!menuList.length) {\n return '';\n }\n\n if (tagName && tagName === 'button') {\n return (\n \n \n \n \n {menuList.map((menuItem, index) => {\n if (menuItem === 'Divider') {\n return ;\n } else {\n return (\n {menuItem.value}\n );\n }\n })}\n \n \n );\n }\n\n return (\n \n \n \n {menuList.map((menuItem, index) => {\n if (menuItem === 'Divider') {\n return ;\n } else {\n return (\n {menuItem.value}\n );\n }\n })}\n \n \n );\n }\n}\n\nItemDropdownMenu.propTypes = propTypes;\n\nexport default ItemDropdownMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport '../../css/common-add-tool.css';\n\nfunction CommonAddTool(props) {\n const { callBack, footerName, className, addIconClassName } = props;\n return (\n
    {callBack(e);}}>\n \n {footerName}\n
    \n );\n}\n\nCommonAddTool.propTypes = {\n className: PropTypes.string,\n addIconClassName: PropTypes.string,\n footerName: PropTypes.string.isRequired,\n callBack: PropTypes.func.isRequired,\n};\n\nexport default CommonAddTool;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nconst propTypes = {\n placeholder: PropTypes.string,\n autoFocus: PropTypes.bool,\n className: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onKeyDown: PropTypes.func,\n wait: PropTypes.number,\n disabled: PropTypes.bool,\n style: PropTypes.object,\n isClearable: PropTypes.bool,\n clearValue: PropTypes.func,\n clearClassName: PropTypes.string,\n components: PropTypes.object,\n value: PropTypes.string,\n};\n\nclass SearchInput extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n searchValue: props.value,\n };\n this.isInputtingChinese = false;\n this.timer = null;\n this.inputRef = null;\n }\n\n componentDidMount() {\n if (this.props.autoFocus && this.inputRef && this.inputRef !== document.activeElement) {\n setTimeout(() => {\n this.inputRef.focus();\n }, 0);\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.value !== this.props.value) {\n this.setState({searchValue: nextProps.value});\n }\n }\n\n componentWillUnmount() {\n this.timer && clearTimeout(this.timer);\n this.timer = null;\n this.inputRef = null;\n }\n\n onCompositionStart = () => {\n this.isInputtingChinese = true;\n };\n\n onChange = (e) => {\n this.timer && clearTimeout(this.timer);\n const { onChange, wait } = this.props;\n let text = e.target.value;\n this.setState({searchValue: text || ''}, () => {\n if (this.isInputtingChinese) return;\n this.timer = setTimeout(() => {\n onChange && onChange(this.state.searchValue.trim());\n }, wait);\n });\n };\n\n onCompositionEnd = (e) => {\n this.isInputtingChinese = false;\n this.onChange(e);\n };\n\n clearSearch = () => {\n const { clearValue } = this.props;\n this.setState({searchValue: ''}, () => {\n clearValue && clearValue();\n });\n };\n\n setFocus = (isSelectAllText) => {\n if (this.inputRef === document.activeElement) return;\n this.inputRef.focus();\n if (isSelectAllText) {\n const txtLength = this.state.searchValue.length;\n this.inputRef.setSelectionRange(0, txtLength);\n }\n };\n\n isFunction = (functionToCheck) => {\n const getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n };\n\n renderClear = () => {\n const { isClearable, clearClassName, components = {} } = this.props;\n const { searchValue } = this.state;\n if (!isClearable || !searchValue) return null;\n const { ClearIndicator } = components;\n if (React.isValidElement(ClearIndicator)) {\n return React.cloneElement(ClearIndicator, {clearValue: this.clearSearch});\n } else if (this.isFunction(ClearIndicator)) {\n return ;\n }\n return (\n ×\n );\n };\n\n render() {\n const { placeholder, autoFocus, className, onKeyDown, disabled, style } = this.props;\n const { searchValue } = this.state;\n\n return (\n \n this.inputRef = ref}\n />\n {this.renderClear()}\n \n );\n }\n}\n\nSearchInput.propTypes = propTypes;\n\nSearchInput.defaultProps = {\n wait: 100,\n disabled: false,\n value: '',\n};\n\nexport default SearchInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\n\nclass TagItem extends React.Component {\n\n onMouseEnter = () => {\n this.props.setHighlightIndex(this.props.index);\n };\n\n onMouseLeave = () => {\n this.props.setHighlightIndex(-1);\n };\n\n getRepoTagIdList = () => {\n let repoTagIdList = [];\n let fileTagList = this.props.fileTagList || [];\n repoTagIdList = fileTagList.map((fileTag) => fileTag.repo_tag_id);\n return repoTagIdList;\n };\n\n onEditFileTag = () => {\n let { repoID, repoTag, filePath } = this.props;\n let repoTagIdList = this.getRepoTagIdList();\n if (repoTagIdList.indexOf(repoTag.id) === -1) {\n let id = repoTag.id;\n seafileAPI.addFileTag(repoID, filePath, id).then(() => {\n repoTagIdList = this.getRepoTagIdList();\n this.props.onFileTagChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n let fileTag = null;\n let fileTagList = this.props.fileTagList;\n for(let i = 0; i < fileTagList.length; i++) {\n if (fileTagList[i].repo_tag_id === repoTag.id) {\n fileTag = fileTagList[i];\n break;\n }\n }\n seafileAPI.deleteFileTag(repoID, fileTag.id).then(() => {\n repoTagIdList = this.getRepoTagIdList();\n this.props.onFileTagChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n render() {\n const { repoTag, highlightIndex, index } = this.props;\n const repoTagIdList = this.getRepoTagIdList();\n const isTagSelected = repoTagIdList.indexOf(repoTag.id) != -1;\n return (\n \n
    \n {repoTag.name}\n
    \n {isTagSelected && }\n \n );\n }\n\n}\n\nTagItem.propTypes = {\n index: PropTypes.number.isRequired,\n highlightIndex: PropTypes.number.isRequired,\n repoID: PropTypes.string.isRequired,\n repoTag: PropTypes.object.isRequired,\n filePath: PropTypes.string.isRequired,\n fileTagList: PropTypes.array.isRequired,\n onFileTagChanged: PropTypes.func.isRequired,\n setHighlightIndex: PropTypes.func.isRequired,\n};\n\nexport default TagItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport RepoTag from '../../models/repo-tag';\nimport toaster from '../toast';\nimport CommonAddTool from '../common/common-add-tool';\nimport SearchInput from '../common/search-input';\nimport SeahubPopover from '../common/seahub-popover';\nimport TagItem from './tag-item';\nimport { KeyCodes, TAG_COLORS } from '../../constants';\n\nimport '../../css/repo-tag.css';\nimport '../../css/edit-filetag-popover.css';\n\nclass EditFileTagPopover extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n repotagList: [],\n searchVal: '',\n highlightIndex: -1,\n };\n }\n\n componentDidMount() {\n this.getRepoTagList();\n }\n\n setHighlightIndex = (highlightIndex) => {\n this.setState({ highlightIndex });\n };\n\n getRepoTagList = () => {\n let repoID = this.props.repoID;\n seafileAPI.listRepoTags(repoID).then(res => {\n let repotagList = [];\n res.data.repo_tags.forEach(item => {\n let repoTag = new RepoTag(item);\n repotagList.push(repoTag);\n });\n this.setState({repotagList: repotagList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n generateRandomColor = () => {\n return TAG_COLORS[Math.floor(Math.random() * TAG_COLORS.length)];\n };\n\n createNewTag = () => {\n let name = this.state.searchVal.trim();\n if (!name) return;\n let color = this.generateRandomColor();\n let repoID = this.props.repoID;\n seafileAPI.createRepoTag(repoID, name, color).then((res) => {\n let repoTagID = res.data.repo_tag.repo_tag_id;\n this.onRepoTagCreated(repoTagID);\n this.setState({\n searchVal: '',\n highlightIndex: -1,\n });\n this.getRepoTagList();\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onRepoTagCreated = (repoTagID) => {\n let {repoID, filePath} = this.props;\n seafileAPI.addFileTag(repoID, filePath, repoTagID).then(() => {\n this.props.onFileTagChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n getRepoTagIdList = () => {\n return (this.props.fileTagList || []).map((fileTag) => fileTag.repo_tag_id);\n };\n\n onEditFileTag = (repoTag) => {\n let { repoID, filePath } = this.props;\n let repoTagIdList = this.getRepoTagIdList();\n if (repoTagIdList.indexOf(repoTag.id) === -1) {\n seafileAPI.addFileTag(repoID, filePath, repoTag.id).then(() => {\n repoTagIdList = this.getRepoTagIdList();\n this.props.onFileTagChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n let fileTag = null;\n let fileTagList = this.props.fileTagList;\n for(let i = 0; i < fileTagList.length; i++) {\n if (fileTagList[i].repo_tag_id === repoTag.id) {\n fileTag = fileTagList[i];\n break;\n }\n }\n seafileAPI.deleteFileTag(repoID, fileTag.id).then(() => {\n repoTagIdList = this.getRepoTagIdList();\n this.props.onFileTagChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n onKeyDown = (e) => {\n if (e.keyCode === KeyCodes.ChineseInputMethod || e.keyCode === KeyCodes.LeftArrow || e.keyCode === KeyCodes.RightArrow) {\n e.stopPropagation();\n }\n else if (e.keyCode === KeyCodes.Enter) {\n const searchText = this.state.searchVal.trim();\n const repotagList = this.state.repotagList.filter(item => item.name.includes(searchText));\n const tag = repotagList[this.state.highlightIndex];\n if (tag) {\n this.onEditFileTag(tag);\n }\n }\n else if (e.keyCode === KeyCodes.UpArrow) {\n if (this.state.highlightIndex > -1) {\n this.setHighlightIndex(this.state.highlightIndex - 1);\n }\n }\n else if (e.keyCode === KeyCodes.DownArrow) {\n const searchText = this.state.searchVal.trim();\n const repotagList = this.state.repotagList.filter(item => item.name.includes(searchText));\n if (this.state.highlightIndex < repotagList.length) {\n this.setHighlightIndex(this.state.highlightIndex + 1);\n }\n }\n };\n\n onChangeSearch = (searchVal) => {\n this.setState({ searchVal });\n this.setHighlightIndex(-1);\n };\n\n render() {\n const searchText = this.state.searchVal.trim();\n const repotagList = this.state.repotagList.filter(item => item.name.includes(searchText));\n const showAddTool = searchText && !this.state.repotagList.find(item => item.name === searchText);\n return (\n \n \n
      \n {repotagList.length === 0 &&\n
      {gettext('Tag not found')}
      \n }\n {repotagList.length > 0 && repotagList.map((repoTag, index) => {\n return (\n \n );\n })}\n
    \n {showAddTool &&\n \n }\n \n );\n }\n}\n\nEditFileTagPopover.propTypes = {\n target: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n filePath: PropTypes.string.isRequired,\n fileTagList: PropTypes.array.isRequired,\n toggleCancel: PropTypes.func.isRequired,\n onFileTagChanged: PropTypes.func.isRequired,\n};\n\nexport default EditFileTagPopover;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../utils/constants';\nimport { Utils } from '../utils/utils';\nimport toaster from './toast';\n\nconst propTypes = {\n hasSuffix: PropTypes.bool,\n name: PropTypes.string.isRequired,\n onRenameConfirm: PropTypes.func.isRequired,\n onRenameCancel: PropTypes.func.isRequired,\n};\n\nclass Rename extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n name: props.name\n };\n this.inputRef = React.createRef();\n }\n\n componentDidMount() {\n this.inputRef.current.focus();\n if (this.props.hasSuffix) {\n var endIndex = this.props.name.lastIndexOf('.');\n this.inputRef.current.setSelectionRange(0, endIndex, 'forward');\n } else {\n this.inputRef.current.setSelectionRange(0, -1);\n }\n // ensure real dom has been rendered, then listen the click event\n setTimeout(() => {\n document.addEventListener('click', this.onClick);\n }, 1);\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.onClick);\n }\n\n onClick = (e) => {\n if (!this.inputRef.current.contains(e.target)) {\n this.onRenameConfirm();\n }\n };\n\n onChange = (e) => {\n this.setState({name: e.target.value});\n };\n\n onKeyDown = (e) => {\n if (e.keyCode === Utils.keyCodes.enter) {\n this.onRenameConfirm(e);\n } else if (e.keyCode === Utils.keyCodes.esc) {\n this.onRenameCancel(e);\n }\n e.nativeEvent.stopImmediatePropagation();\n };\n\n onRenameConfirm = (e) => {\n e && e.nativeEvent.stopImmediatePropagation();\n let newName = this.state.name.trim();\n if (newName === this.props.name) {\n this.props.onRenameCancel();\n return;\n }\n\n let { isValid, errMessage } = this.validateInput();\n if (!isValid) {\n toaster.danger(errMessage);\n this.props.onRenameCancel();\n } else {\n this.props.onRenameConfirm(newName);\n }\n };\n\n onRenameCancel = (e) => {\n e.nativeEvent.stopImmediatePropagation();\n this.props.onRenameCancel();\n };\n\n validateInput = () => {\n let newName = this.state.name.trim();\n let isValid = true;\n let errMessage = '';\n if (!newName) {\n isValid = false;\n errMessage = gettext('Name is required.');\n return { isValid, errMessage };\n }\n\n if (newName.indexOf('/') > -1) {\n isValid = false;\n errMessage = gettext('Name should not include ' + '\\'/\\'' + '.');\n return { isValid, errMessage };\n }\n\n return { isValid, errMessage };\n };\n\n render() {\n return (\n
    \n \n
    \n );\n }\n}\n\nRename.propTypes = propTypes;\n\nexport default Rename;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport moment from 'moment';\nimport { gettext, siteRoot } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../toast';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n currentTag: PropTypes.object.isRequired,\n toggleCancel: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n updateUsedRepoTags: PropTypes.func,\n onFileTagChanged: PropTypes.func,\n shareLinkToken: PropTypes.string,\n enableFileDownload: PropTypes.bool\n};\n\nclass ListTaggedFilesDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n taggedFileList: [],\n };\n }\n\n onFileTagChanged = (TaggedFile) => {\n const path = TaggedFile.parent_path;\n const dirent = {name: TaggedFile.filename};\n let direntPath = path === '/' ? path + TaggedFile.filename : path + '/' + TaggedFile.filename;\n this.props.onFileTagChanged(dirent, direntPath);\n };\n\n onDeleteTaggedFile = (taggedFile) => {\n let repoID = this.props.repoID;\n let fileTagID = taggedFile.file_tag_id;\n seafileAPI.deleteFileTag(repoID, fileTagID).then(res => {\n this.getTaggedFiles();\n this.props.updateUsedRepoTags();\n if ((this.props.onFileTagChanged) && !taggedFile.file_deleted) this.onFileTagChanged(taggedFile);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n componentDidMount() {\n this.getTaggedFiles();\n }\n\n getTaggedFiles = () => {\n let { repoID, currentTag, shareLinkToken } = this.props;\n let request = shareLinkToken ?\n seafileAPI.getShareLinkTaggedFiles(shareLinkToken, currentTag.id) :\n seafileAPI.listTaggedFiles(repoID, currentTag.id);\n request.then(res => {\n let taggedFileList = [];\n res.data.tagged_files !== undefined &&\n res.data.tagged_files.forEach(file => {\n let taggedFile = file;\n taggedFileList.push(taggedFile);\n });\n this.setState({\n taggedFileList: taggedFileList,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n let taggedFileList = this.state.taggedFileList;\n return (\n \n {gettext('Tagged Files')}\n \n \n \n \n \n \n \n \n \n \n \n {taggedFileList.map((taggedFile, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Name')}{gettext('Size')}{gettext('Last Update')}
    \n
    \n \n \n \n
    \n );\n }\n}\n\nListTaggedFilesDialog.propTypes = propTypes;\n\nexport default ListTaggedFilesDialog;\n\nconst TaggedFilePropTypes = {\n repoID: PropTypes.string.isRequired,\n taggedFile: PropTypes.object,\n onDeleteTaggedFile: PropTypes.func.isRequired,\n shareLinkToken: PropTypes.string,\n enableFileDownload: PropTypes.bool\n};\n\nclass TaggedFile extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = ({\n active: false,\n });\n }\n\n onMouseEnter = () => {\n this.setState({\n active: true\n });\n };\n\n onMouseLeave = () => {\n this.setState({\n active: false\n });\n };\n\n deleteFile = (e) => {\n e.preventDefault();\n this.props.onDeleteTaggedFile(this.props.taggedFile);\n };\n\n render() {\n const { taggedFile, shareLinkToken, enableFileDownload } = this.props;\n\n let path = taggedFile.parent_path ? Utils.joinPath(taggedFile.parent_path, taggedFile.filename) : '';\n let href = shareLinkToken ?\n siteRoot + 'd/' + shareLinkToken + '/files/?p=' + Utils.encodePath(path) :\n siteRoot + 'lib/' + this.props.repoID + '/file' + Utils.encodePath(path);\n\n return (\n \n {taggedFile.file_deleted ?\n \n {taggedFile.filename}{' '}\n {gettext('deleted')}\n \n \n :\n \n {taggedFile.filename}\n {Utils.bytesToSize(taggedFile.size)}\n {moment.unix(taggedFile.mtime).fromNow()}\n \n }\n \n {!shareLinkToken &&\n \n }\n {(shareLinkToken && enableFileDownload) &&\n \n }\n \n \n );\n }\n}\n\nTaggedFile.propTypes = TaggedFilePropTypes;\n","import moment from 'moment';\n\nclass Draft {\n\n constructor(item) {\n this.created = item.created_at;\n this.createdStr = moment((new Date(item.created_at)).getTime()).format('YYYY-MM-DD HH:mm');\n this.id = item.id;\n this.ownerNickname = item.owner_nickname;\n this.originRepoID = item.origin_repo_id;\n this.draftFilePath = item.draft_file_path;\n }\n}\n\nexport default Draft;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext, siteRoot } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport moment from 'moment';\nimport editorUtilities from '../../utils/editor-utilities';\nimport toaster from '../../components/toast';\nimport { Utils } from '../../utils/utils';\nimport Draft from '../../models/draft';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n toggle: PropTypes.func.isRequired,\n};\n\nclass ListRepoDraftsDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n drafts: [],\n };\n }\n\n componentDidMount() {\n seafileAPI.listRepoDrafts(this.props.repoID).then(res => {\n let drafts = res.data.drafts.map(item => {\n let draft = new Draft(item);\n return draft;\n });\n this.setState({\n drafts: drafts\n });\n });\n }\n\n onDeleteDraftItem = (draft) => {\n editorUtilities.deleteDraft(draft.id).then(() => {\n let drafts = this.state.drafts.filter(item => {\n return item.id !== draft.id;\n });\n this.setState({drafts: drafts});\n let msg = gettext('Successfully deleted draft %(draft)s.');\n msg = msg.replace('%(draft)s', draft.draftFilePath);\n toaster.success(msg);\n }).catch(() => {\n let msg = gettext('Failed to delete draft %(draft)s.');\n msg = msg.replace('%(draft)s', draft.draftFilePath);\n toaster.danger(msg);\n });\n };\n\n toggle = () => {\n this.props.toggle();\n };\n\n render() {\n return (\n \n {gettext('Drafts')}\n \n \n \n \n \n \n \n \n \n \n \n {this.state.drafts.map((item, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Name')}{gettext('Owner')}{gettext('Last Update')}
    \n
    \n \n \n \n
    \n );\n }\n}\n\nListRepoDraftsDialog.propTypes = propTypes;\n\nexport default ListRepoDraftsDialog;\n\nconst DraftItemPropTypes = {\n draftItem: PropTypes.object,\n onDeleteDraftItem: PropTypes.func.isRequired,\n};\n\nclass DraftItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = ({\n active: false,\n });\n }\n\n onMouseEnter = () => {\n this.setState({\n active: true\n });\n };\n\n onMouseLeave = () => {\n this.setState({\n active: false\n });\n };\n\n render() {\n const draftItem = this.props.draftItem;\n let href = siteRoot + 'drafts/' + draftItem.id + '/';\n let className = this.state.active ? 'action-icon sf2-icon-x3' : 'action-icon vh sf2-icon-x3';\n return (\n \n \n {Utils.getFileName(draftItem.draftFilePath)}\n \n {draftItem.ownerNickname}\n {moment(draftItem.createdStr).fromNow()}\n \n \n \n \n );\n }\n}\n\nDraftItem.propTypes = DraftItemPropTypes;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ModalPortal from './modal-portal';\nimport ListTaggedFilesDialog from './dialog/list-taggedfiles-dialog';\nimport ListRepoDraftsDialog from './dialog/list-repo-drafts-dialog';\n\nimport '../css/repo-info-bar.css';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n usedRepoTags: PropTypes.array.isRequired,\n draftCounts: PropTypes.number,\n updateUsedRepoTags: PropTypes.func,\n onFileTagChanged: PropTypes.func,\n className: PropTypes.string,\n shareLinkToken: PropTypes.string,\n enableFileDownload: PropTypes.bool\n};\n\nclass RepoInfoBar extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n currentTag: null,\n isListTaggedFileShow: false,\n showRepoDrafts: false\n };\n }\n\n onListTaggedFiles = (currentTag) => {\n this.setState({\n currentTag: currentTag,\n isListTaggedFileShow: !this.state.isListTaggedFileShow\n });\n };\n\n onCloseDialog = () => {\n this.setState({\n isListTaggedFileShow: false\n });\n };\n\n toggleDrafts = () => {\n this.setState({\n showRepoDrafts: !this.state.showRepoDrafts\n });\n };\n\n render() {\n let { repoID, usedRepoTags, draftCounts, className } = this.props;\n\n // to be compatible with the existing code\n if (draftCounts === undefined) {\n draftCounts = 0;\n }\n\n return (\n
    \n {usedRepoTags.length > 0 && (\n
      \n {usedRepoTags.map((usedRepoTag) => {\n return (\n
    • \n \n {usedRepoTag.name}\n \n
    • \n );\n })}\n
    \n )}\n {/*
    0 ? 'file-info-list mt-1' : 'file-info-list'}>\n {draftCounts > 0 &&\n \n \n {gettext('draft')}\n \n \n }\n
    */}\n {this.state.isListTaggedFileShow && (\n \n \n \n )}\n\n {this.state.showRepoDrafts && (\n \n \n \n )}\n\n
    \n );\n }\n}\n\nRepoInfoBar.propTypes = propTypes;\n\nexport default RepoInfoBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { permission } from '../../utils/constants';\nimport TextTranslation from '../../utils/text-translation';\nimport ItemDropdownMenu from '../dropdown-menu/item-dropdown-menu';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n userPerm: PropTypes.string,\n node: PropTypes.object.isRequired,\n currentPath: PropTypes.string.isRequired,\n paddingLeft: PropTypes.number.isRequired,\n isNodeMenuShow: PropTypes.bool.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onNodeClick: PropTypes.func.isRequired,\n onNodeExpanded: PropTypes.func.isRequired,\n onNodeCollapse: PropTypes.func.isRequired,\n onNodeDragStart: PropTypes.func.isRequired,\n freezeItem: PropTypes.func.isRequired,\n unfreezeItem: PropTypes.func.isRequired,\n onMenuItemClick: PropTypes.func,\n onNodeDragMove: PropTypes.func,\n onNodeDrop: PropTypes.func,\n handleContextClick: PropTypes.func.isRequired,\n onNodeDragEnter: PropTypes.func.isRequired,\n onNodeDragLeave:PropTypes.func.isRequired,\n};\n\nclass TreeNodeView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isHighlight: false,\n isShowOperationMenu: false,\n isNodeDropShow: false,\n };\n const { userPerm } = props;\n this.canDrag = userPerm === 'rw';\n const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm);\n if (isCustomPermission) {\n const { modify } = customPermission.permission;\n this.canDrag = modify;\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.isItemFreezed) {\n this.setState({\n isShowOperationMenu: false,\n isHighlight: false,\n });\n }\n }\n\n onMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isShowOperationMenu: true,\n isHighlight: true,\n });\n }\n };\n\n onMouseOver = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isShowOperationMenu: true,\n isHighlight: true,\n });\n }\n };\n\n onMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isShowOperationMenu: false,\n isHighlight: false,\n });\n }\n };\n\n onNodeClick = () => {\n const { node } = this.props;\n const { object } = node;\n if (object.isDir()) {\n this.props.onNodeClick(this.props.node);\n return;\n }\n const { isCustomPermission, customPermission } = Utils.getUserPermission(object.permission);\n if (isCustomPermission) {\n const { preview: canPreview, modify: canModify } = customPermission.permission;\n if (!canPreview && !canModify) return;\n }\n this.props.onNodeClick(this.props.node);\n };\n\n onLoadToggle = (e) => {\n e.stopPropagation();\n let { node } = this.props;\n if (node.isExpanded) {\n this.props.onNodeCollapse(node);\n } else {\n this.props.onNodeExpanded(node);\n }\n };\n\n onNodeDragStart = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n this.props.onNodeDragStart(e, this.props.node);\n };\n\n onNodeDragEnter = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n if (this.props.node.object.type === 'dir') {\n this.setState({isNodeDropShow: true});\n }\n this.props.onNodeDragEnter(e, this.props.node);\n };\n\n onNodeDragMove = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n this.props.onNodeDragMove(e);\n };\n\n onNodeDragLeave = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n this.setState({isNodeDropShow: false});\n this.props.onNodeDragLeave(e, this.props.node);\n };\n\n onNodeDrop = (e) => {\n if (Utils.isIEBrower() || !this.canDrag) {\n return false;\n }\n e.stopPropagation();\n this.setState({isNodeDropShow: false});\n this.props.onNodeDrop(e, this.props.node);\n };\n\n unfreezeItem = () => {\n this.setState({isShowOperationMenu: false});\n this.props.unfreezeItem();\n };\n\n onMenuItemClick = (operation, event, node) => {\n this.props.onMenuItemClick(operation, node);\n };\n\n onItemMouseDown = (event) => {\n event.stopPropagation();\n if (event.button === 2) {\n return;\n }\n };\n\n onItemContextMenu = (event) => {\n this.handleContextClick(event);\n };\n\n handleContextClick = (event) => {\n this.props.handleContextClick(event, this.props.node);\n this.setState({isShowOperationMenu: false});\n };\n\n getNodeTypeAndIcon = () => {\n let { node } = this.props;\n let icon = '';\n let type = '';\n if (node.object.type === 'dir') {\n icon = ;\n type = 'dir';\n } else {\n let index = node.object.name.lastIndexOf('.');\n if (index === -1) {\n icon = ;\n type = 'file';\n } else {\n let suffix = node.object.name.slice(index).toLowerCase();\n if (suffix === '.png' || suffix === '.jpg' || suffix === '.jpeg' || suffix === '.gif' || suffix === '.bmp') {\n icon = ;\n type = 'image';\n }\n else if (suffix === '.md' || suffix === '.markdown') {\n icon = ;\n type = 'file';\n }\n else {\n icon = ;\n type = 'file';\n }\n }\n }\n return {icon, type};\n };\n\n calculateMenuList = (node) => {\n let { NEW_FOLDER, NEW_FILE, COPY, MOVE, RENAME, DELETE, OPEN_VIA_CLIENT} = TextTranslation;\n\n let menuList = [RENAME, DELETE, COPY, MOVE, OPEN_VIA_CLIENT];\n if (node.object.type === 'dir') {\n menuList = [NEW_FOLDER, NEW_FILE, COPY, MOVE, RENAME, DELETE];\n }\n\n const { userPerm } = this.props;\n const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm);\n if (!isCustomPermission) {\n return menuList;\n }\n\n menuList = [];\n const { create: canCreate, modify: canModify, delete: canDelete, copy: canCopy } = customPermission.permission;\n if (node.object.type === 'dir') {\n canCreate && menuList.push(NEW_FOLDER, NEW_FILE);\n }\n\n canCopy && menuList.push(COPY);\n canModify && menuList.push(MOVE, RENAME);\n canDelete && menuList.push(DELETE);\n\n if (node.object.type !== 'dir') {\n menuList.push(OPEN_VIA_CLIENT);\n }\n\n return menuList;\n };\n\n renderChildren = () => {\n let { node, paddingLeft } = this.props;\n if (!node.hasChildren()) {\n return '';\n }\n return (\n
    \n {node.children.map(item => {\n return (\n \n );\n })}\n
    \n );\n };\n\n render() {\n let { currentPath, node, isNodeMenuShow, userPerm } = this.props;\n let { type, icon } = this.getNodeTypeAndIcon();\n let hlClass = this.state.isHighlight ? 'tree-node-inner-hover ' : '';\n if (node.path === currentPath) {\n hlClass = 'tree-node-hight-light';\n }\n\n const { isCustomPermission } = Utils.getUserPermission(userPerm);\n return (\n
    \n \n
    {node.object.name}
    \n
    \n {type === 'dir' && (!node.isLoaded || (node.isLoaded && node.hasChildren())) && (\n e.stopPropagation()}\n onClick={this.onLoadToggle}\n >\n )}\n {icon}\n
    \n {isNodeMenuShow && (\n
    \n {((userPerm === 'rw' || permission || isCustomPermission) && this.state.isShowOperationMenu) && (\n \n )}\n
    \n )}\n
    \n {node.isExpanded && this.renderChildren()}\n \n );\n }\n}\n\nTreeNodeView.propTypes = propTypes;\n\nexport default TreeNodeView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TextTranslation from '../../utils/text-translation';\nimport TreeNodeView from './tree-node-view';\nimport ContextMenu from '../context-menu/context-menu';\nimport { hideMenu, showMenu } from '../context-menu/actions';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n userPerm: PropTypes.string,\n isNodeMenuShow: PropTypes.bool.isRequired,\n treeData: PropTypes.object.isRequired,\n currentPath: PropTypes.string.isRequired,\n onMenuItemClick: PropTypes.func,\n onNodeClick: PropTypes.func.isRequired,\n onNodeExpanded: PropTypes.func.isRequired,\n onNodeCollapse: PropTypes.func.isRequired,\n onItemMove: PropTypes.func,\n currentRepoInfo: PropTypes.object,\n selectedDirentList: PropTypes.array,\n onItemsMove: PropTypes.func,\n posX: PropTypes.number,\n posY: PropTypes.number,\n};\n\nconst PADDING_LEFT = 20;\n\nclass TreeView extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false,\n isTreeViewDropTipShow: false,\n };\n const { userPerm } = props;\n this.canDrop = userPerm === 'rw';\n const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm);\n if (isCustomPermission) {\n const { modify } = customPermission.permission;\n this.canDrop = modify;\n }\n }\n\n onItemMove = (repo, dirent, selectedPath, currentPath) => {\n this.props.onItemMove(repo, dirent, selectedPath, currentPath);\n };\n\n onNodeDragStart = (e, node) => {\n if (Utils.isIEBrower()) {\n return false;\n }\n let dragStartNodeData = {nodeDirent: node.object, nodeParentPath: node.parentNode.path, nodeRootPath: node.path};\n dragStartNodeData = JSON.stringify(dragStartNodeData);\n\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('applicaiton/drag-item-info', dragStartNodeData);\n };\n\n onNodeDragEnter = (e, node) => {\n if (Utils.isIEBrower() || !this.canDrop) {\n return false;\n }\n e.persist();\n if (e.target.className === 'tree-view tree ') {\n this.setState({\n isTreeViewDropTipShow: true,\n });\n }\n };\n\n onNodeDragMove = (e) => {\n if (Utils.isIEBrower() || !this.canDrop) {\n return false;\n }\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n };\n\n onNodeDragLeave = (e, node) => {\n if (Utils.isIEBrower() || !this.canDrop) {\n return false;\n }\n if (e.target.className === 'tree-view tree tree-view-drop') {\n this.setState({\n isTreeViewDropTipShow: false,\n });\n }\n };\n\n onContainerClick = (event) => {\n hideMenu();\n };\n\n onNodeClick = (node) => {\n hideMenu();\n this.props.onNodeClick(node);\n };\n\n onNodeDrop = (e, node) => {\n if (Utils.isIEBrower() || !this.canDrop) {\n return false;\n }\n if (e.dataTransfer.files.length) { // uploaded files\n return;\n }\n let dragStartNodeData = e.dataTransfer.getData('applicaiton/drag-item-info');\n dragStartNodeData = JSON.parse(dragStartNodeData);\n\n let {nodeDirent, nodeParentPath, nodeRootPath} = dragStartNodeData;\n let dropNodeData = node;\n\n if (Array.isArray(dragStartNodeData)) { //move items\n if (!dropNodeData) { //move items to root\n if (dragStartNodeData[0].nodeParentPath === '/') {\n this.setState({isTreeViewDropTipShow: false});\n return;\n }\n this.props.onItemsMove(this.props.currentRepoInfo, '/');\n this.setState({isTreeViewDropTipShow: false});\n return;\n }\n this.onMoveItems(dragStartNodeData, dropNodeData, this.props.currentRepoInfo, dropNodeData.path);\n return;\n }\n\n if (!dropNodeData) {\n if (nodeParentPath === '/') {\n this.setState({isTreeViewDropTipShow: false});\n return;\n }\n this.onItemMove(this.props.currentRepoInfo, nodeDirent, '/', nodeParentPath);\n this.setState({isTreeViewDropTipShow: false});\n return;\n }\n\n if (dropNodeData.object.type !== 'dir') {\n return;\n }\n\n if (nodeParentPath === dropNodeData.path) {\n return;\n }\n\n // copy the dirent to itself. eg: A/B -> A/B\n if (nodeParentPath === dropNodeData.parentNode.path) {\n if (dropNodeData.object.name === nodeDirent.name) {\n return;\n }\n }\n\n // copy the dirent to it's child. eg: A/B -> A/B/C\n if (dropNodeData.object.type === 'dir' && nodeDirent.type === 'dir') {\n if (dropNodeData.parentNode.path !== nodeParentPath) {\n let paths = Utils.getPaths(dropNodeData.path);\n if (paths.includes(nodeRootPath)) {\n return;\n }\n }\n }\n\n this.onItemMove(this.props.currentRepoInfo, nodeDirent, dropNodeData.path, nodeParentPath);\n };\n\n onMoveItems = (dragStartNodeData, dropNodeData, destRepo, destDirentPath) => {\n let direntPaths = [];\n let paths = Utils.getPaths(destDirentPath);\n dragStartNodeData.forEach(dirent => {\n let path = dirent.nodeRootPath;\n direntPaths.push(path);\n });\n\n if (dropNodeData.object.type !== 'dir') {\n return;\n }\n\n // move dirents to one of them. eg: A/B, A/C -> A/B\n if (direntPaths.some(direntPath => { return direntPath === destDirentPath;})) {\n return;\n }\n\n // move dirents to current path\n if (dragStartNodeData[0].nodeParentPath && dragStartNodeData[0].nodeParentPath === dropNodeData.path ) {\n return;\n }\n\n // move dirents to one of their child. eg: A/B, A/D -> A/B/C\n let isChildPath = direntPaths.some(direntPath => {\n return paths.includes(direntPath);\n });\n if (isChildPath) {\n return;\n }\n\n this.props.onItemsMove(destRepo, destDirentPath);\n };\n\n freezeItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n unfreezeItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n onMenuItemClick = (operation, node) => {\n this.props.onMenuItemClick(operation, node);\n hideMenu();\n };\n\n onMouseDown = (event) => {\n event.stopPropagation();\n if (event.button === 2) {\n return;\n }\n };\n\n onContextMenu = (event) => {\n event.preventDefault();\n\n let currentRepoInfo = this.props.currentRepoInfo;\n if (currentRepoInfo.permission !== 'admin' && currentRepoInfo.permission !== 'rw') {\n return '';\n }\n this.handleContextClick(event);\n };\n\n handleContextClick = (event, node) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.props.isNodeMenuShow) {\n return;\n }\n\n let x = event.clientX || (event.touches && event.touches[0].pageX);\n let y = event.clientY || (event.touches && event.touches[0].pageY);\n\n if (this.props.posX) {\n x -= this.props.posX;\n }\n if (this.props.posY) {\n y -= this.props.posY;\n }\n\n hideMenu();\n\n let menuList = this.getMenuList(node);\n\n let showMenuConfig = {\n id: 'tree-node-contextmenu',\n position: { x, y },\n target: event.target,\n currentObject: node,\n menuList: menuList,\n };\n\n showMenu(showMenuConfig);\n };\n\n getMenuList = (node) => {\n let menuList = [];\n\n let { NEW_FOLDER, NEW_FILE, COPY, MOVE, RENAME, DELETE, OPEN_VIA_CLIENT } = TextTranslation;\n\n if (!node) {\n return [NEW_FOLDER, NEW_FILE];\n }\n\n if (node.object.type === 'dir') {\n menuList = [NEW_FOLDER, NEW_FILE, COPY, MOVE, RENAME, DELETE];\n } else {\n menuList = [RENAME, DELETE, COPY, MOVE, OPEN_VIA_CLIENT];\n }\n\n const { userPerm } = this.props;\n const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm);\n if (!isCustomPermission) {\n return menuList;\n }\n\n menuList = [];\n\n const { create: canCreate, modify: canModify, delete: canDelete, copy: canCopy } = customPermission.permission;\n if (!node) {\n canCreate && menuList.push(NEW_FOLDER, NEW_FILE);\n return menuList;\n }\n\n if (node.object.type === 'dir') {\n canCreate && menuList.push(NEW_FOLDER, NEW_FILE);\n }\n\n canCopy && menuList.push(COPY);\n canModify && menuList.push(MOVE, RENAME);\n canDelete && menuList.push(DELETE);\n\n if (node.object.type !== 'dir') {\n menuList.push(OPEN_VIA_CLIENT);\n }\n\n return menuList;\n };\n\n onShowMenu = () => {\n this.freezeItem();\n };\n\n onHideMenu = () => {\n this.unfreezeItem();\n };\n\n render() {\n return (\n \n \n \n \n );\n }\n}\n\nTreeView.propTypes = propTypes;\n\nexport default TreeView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { EXTERNAL_EVENTS, EventBus, MarkdownViewer } from '@seafile/seafile-editor';\nimport { gettext, isPublicWiki, mediaUrl, repoID, serviceURL, sharedToken, slug } from '../utils/constants';\nimport Loading from './loading';\nimport { Utils } from '../utils/utils';\n\nconst propTypes = {\n children: PropTypes.object,\n isFileLoading: PropTypes.bool.isRequired,\n markdownContent: PropTypes.string.isRequired,\n latestContributor: PropTypes.string.isRequired,\n lastModified: PropTypes.string.isRequired,\n onLinkClick: PropTypes.func.isRequired,\n isWiki: PropTypes.bool,\n isTOCShow: PropTypes.bool,\n // for dir-column-file component(import repoID is undefined)\n repoID: PropTypes.string,\n path: PropTypes.string,\n};\n\nconst contentClass = 'wiki-page-content';\n\nclass WikiMarkdownViewer extends React.Component {\n\n constructor(props) {\n super(props);\n this.scrollRef = React.createRef();\n }\n\n componentDidMount() {\n const eventBus = EventBus.getInstance();\n this.unsubscribeLinkClick = eventBus.subscribe(EXTERNAL_EVENTS.ON_LINK_CLICK, this.onLinkClick);\n }\n componentWillUnmount() {\n this.unsubscribeLinkClick();\n }\n\n onLinkClick = (event) => {\n event.preventDefault();\n event.stopPropagation();\n let link = '';\n let target = event.target;\n while (!target.dataset || !target.dataset.url) {\n target = target.parentNode;\n }\n if (!target) return;\n link = target.dataset.url;\n this.props.onLinkClick(link);\n };\n\n changeInlineNode = (item) => {\n let url, imagePath;\n\n if (item.type == 'image' && isPublicWiki) { // change image url\n url = item.data.src;\n const re = new RegExp(serviceURL + '/lib/' + repoID +'/file.*raw=1');\n // different repo\n if (re.test(url)) {\n // get image path\n let index = url.indexOf('/file');\n let index2 = url.indexOf('?');\n imagePath = url.substring(index + 5, index2);\n } else if (/^\\.\\.\\/*/.test(url) || /^\\.\\/*/.test(url)) {\n const path = this.props.path;\n const originalPath = path.slice(0, path.lastIndexOf('/')) + '/' + url;\n imagePath = Utils.pathNormalize(originalPath);\n } else {\n return;\n }\n item.data.src = serviceURL + '/view-image-via-public-wiki/?slug=' + slug + '&path=' + imagePath;\n } else if (item.type == 'link') { // change link url\n url = item.url;\n if (Utils.isInternalFileLink(url, repoID)) { // change file url\n if (Utils.isInternalMarkdownLink(url, repoID)) {\n let path = Utils.getPathFromInternalMarkdownLink(url, repoID);\n // replace url\n item.url = serviceURL + '/published/' + slug + path;\n } else {\n item.url = url.replace(/(.*)lib\\/([-0-9a-f]{36})\\/file(.*)/g, (match, p1, p2, p3) => {\n return `${p1}d/${sharedToken}/files/?p=${p3}&dl=1`;\n });\n }\n } else if (Utils.isInternalDirLink(url, repoID)) { // change dir url\n let path = Utils.getPathFromInternalDirLink(url, repoID);\n // replace url\n item.url = serviceURL + '/published/' + slug + path;\n }\n }\n\n return item;\n };\n\n modifyValueBeforeRender = (value) => {\n let newNodes = Utils.changeMarkdownNodes(value, this.changeInlineNode);\n return newNodes;\n };\n\n renderMarkdown = () => {\n const { isTOCShow = true, isWiki, markdownContent } = this.props;\n const props = {\n isShowOutline: isTOCShow,\n mathJaxSource: `${mediaUrl}js/mathjax/tex-svg.js`,\n value: markdownContent,\n scrollRef: this.scrollRef,\n ...(isWiki && {beforeRenderCallback: this.modifyValueBeforeRender})\n };\n\n return ;\n };\n\n render() {\n if (this.props.isFileLoading) {\n return ;\n }\n // In dir-column-file repoID is one of props, width is 100%; In wiki-viewer repoID is not props, width isn't 100%\n let contentClassName = `${this.props.repoID ? contentClass + ' w-100' : contentClass}`;\n return (\n
    \n
    \n {this.props.children}\n {this.renderMarkdown()}\n

    {gettext('Last modified by')} {this.props.latestContributor}, {this.props.lastModified}

    \n
    \n
    \n );\n }\n}\n\nconst defaultProps = {\n isWiki: false,\n};\n\nWikiMarkdownViewer.propTypes = propTypes;\nMarkdownViewer.defaultProps = defaultProps;\n\nexport default WikiMarkdownViewer;\n","module.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n","/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(chars){\n \"use strict\";\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = chars.indexOf(base64[i]);\n encoded2 = chars.indexOf(base64[i+1]);\n encoded3 = chars.indexOf(base64[i+2]);\n encoded4 = chars.indexOf(base64[i+3]);\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\");\n","/**\r\n * Create a blob builder even when vendor prefixes exist\r\n */\r\n\r\nvar BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :\r\n typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :\r\n typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :\r\n typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : \r\n false;\r\n\r\n/**\r\n * Check if Blob constructor is supported\r\n */\r\n\r\nvar blobSupported = (function() {\r\n try {\r\n var a = new Blob(['hi']);\r\n return a.size === 2;\r\n } catch(e) {\r\n return false;\r\n }\r\n})();\r\n\r\n/**\r\n * Check if Blob constructor supports ArrayBufferViews\r\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\r\n */\r\n\r\nvar blobSupportsArrayBufferView = blobSupported && (function() {\r\n try {\r\n var b = new Blob([new Uint8Array([1,2])]);\r\n return b.size === 2;\r\n } catch(e) {\r\n return false;\r\n }\r\n})();\r\n\r\n/**\r\n * Check if BlobBuilder is supported\r\n */\r\n\r\nvar blobBuilderSupported = BlobBuilder\r\n && BlobBuilder.prototype.append\r\n && BlobBuilder.prototype.getBlob;\r\n\r\n/**\r\n * Helper function that maps ArrayBufferViews to ArrayBuffers\r\n * Used by BlobBuilder constructor and old browsers that didn't\r\n * support it in the Blob constructor.\r\n */\r\n\r\nfunction mapArrayBufferViews(ary) {\r\n return ary.map(function(chunk) {\r\n if (chunk.buffer instanceof ArrayBuffer) {\r\n var buf = chunk.buffer;\r\n\r\n // if this is a subarray, make a copy so we only\r\n // include the subarray region from the underlying buffer\r\n if (chunk.byteLength !== buf.byteLength) {\r\n var copy = new Uint8Array(chunk.byteLength);\r\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\r\n buf = copy.buffer;\r\n }\r\n\r\n return buf;\r\n }\r\n\r\n return chunk;\r\n });\r\n}\r\n\r\nfunction BlobBuilderConstructor(ary, options) {\r\n options = options || {};\r\n\r\n var bb = new BlobBuilder();\r\n mapArrayBufferViews(ary).forEach(function(part) {\r\n bb.append(part);\r\n });\r\n\r\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\r\n};\r\n\r\nfunction BlobConstructor(ary, options) {\r\n return new Blob(mapArrayBufferViews(ary), options || {});\r\n};\r\n\r\nif (typeof Blob !== 'undefined') {\r\n BlobBuilderConstructor.prototype = Blob.prototype;\r\n BlobConstructor.prototype = Blob.prototype;\r\n}\r\n\r\nmodule.exports = (function() {\r\n if (blobSupported) {\r\n return blobSupportsArrayBufferView ? Blob : BlobConstructor;\r\n } else if (blobBuilderSupported) {\r\n return BlobBuilderConstructor;\r\n } else {\r\n return undefined;\r\n }\r\n})();\r\n","/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};","module.exports = (function () {\n if (typeof self !== 'undefined') {\n return self;\n } else if (typeof window !== 'undefined') {\n return window;\n } else {\n return Function('return this')(); // eslint-disable-line no-new-func\n }\n})();\n","\nmodule.exports = require('./socket');\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = require('engine.io-parser');\n","/**\n * Module dependencies.\n */\n\nvar transports = require('./transports/index');\nvar Emitter = require('component-emitter');\nvar debug = require('debug')('engine.io-client:socket');\nvar index = require('indexof');\nvar parser = require('engine.io-parser');\nvar parseuri = require('parseuri');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (typeof location !== 'undefined' && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (typeof location !== 'undefined' ? location.hostname : 'localhost');\n this.port = opts.port || (typeof location !== 'undefined' && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.withCredentials = false !== opts.withCredentials;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.transportOptions = opts.transportOptions || {};\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || undefined;\n this.key = opts.key || undefined;\n this.passphrase = opts.passphrase || undefined;\n this.cert = opts.cert || undefined;\n this.ca = opts.ca || undefined;\n this.ciphers = opts.ciphers || undefined;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // detect ReactNative environment\n this.isReactNative = (typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative');\n\n // other options for Node.js or ReactNative client\n if (typeof self === 'undefined' || this.isReactNative) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = require('./transport');\nSocket.transports = require('./transports/index');\nSocket.parser = require('engine.io-parser');\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // per-transport options\n var options = this.transportOptions[name] || {};\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n query: query,\n socket: this,\n agent: options.agent || this.agent,\n hostname: options.hostname || this.hostname,\n port: options.port || this.port,\n secure: options.secure || this.secure,\n path: options.path || this.path,\n forceJSONP: options.forceJSONP || this.forceJSONP,\n jsonp: options.jsonp || this.jsonp,\n forceBase64: options.forceBase64 || this.forceBase64,\n enablesXDR: options.enablesXDR || this.enablesXDR,\n withCredentials: options.withCredentials || this.withCredentials,\n timestampRequests: options.timestampRequests || this.timestampRequests,\n timestampParam: options.timestampParam || this.timestampParam,\n policyPort: options.policyPort || this.policyPort,\n pfx: options.pfx || this.pfx,\n key: options.key || this.key,\n passphrase: options.passphrase || this.passphrase,\n cert: options.cert || this.cert,\n ca: options.ca || this.ca,\n ciphers: options.ciphers || this.ciphers,\n rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n extraHeaders: options.extraHeaders || this.extraHeaders,\n forceNode: options.forceNode || this.forceNode,\n localAddress: options.localAddress || this.localAddress,\n requestTimeout: options.requestTimeout || this.requestTimeout,\n protocols: options.protocols || void (0),\n isReactNative: this.isReactNative\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n","/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n this.withCredentials = opts.withCredentials;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // results of ReactNative environment detection\n this.isReactNative = opts.isReactNative;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n","/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('./xmlhttprequest');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (typeof location !== 'undefined') {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n","/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\nvar globalThis = require('../globalThis');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n callbacks = globalThis.___eio = (globalThis.___eio || []);\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (typeof addEventListener === 'function') {\n addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '\n \n );\n }\n}\n\nReactDom.render(, document.getElementById('wrapper'));\n"],"names":["_window$shared$pageOp","window","shared","pageOptions","repoID","filePath","err","commitID","fileType","fileName","sharedToken","SharedFileViewSpreadsheet","_React$Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","_jsx","SharedFileView","content","FileContent","React","_React$Component2","_super2","props","_this","call","setIframeHeight","e","iframe","currentTarget","height","contentDocument","body","scrollHeight","state","isLoading","errorMsg","_this2","queryStatus","seafileAPI","queryOfficeFileConvertStatus","toLowerCase","then","res","data","setState","setTimeout","gettext","catch","error","response","_this$state","this","SharedFileViewTip","Loading","className","children","id","title","src","concat","siteRoot","encodeURIComponent","onLoad","ReactDom","document","getElementById"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/sharedFileViewText.757e8d1a.js b/media/assets/frontend/static/js/sharedFileViewText.757e8d1a.js new file mode 100644 index 00000000000..17034124ff7 --- /dev/null +++ b/media/assets/frontend/static/js/sharedFileViewText.757e8d1a.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[554],{35326:function(e,n,t){var r=t(15671),u=t(43144),i=t(60136),s=t(29388),o=t(72791),a=t(54164),f=t(21393),c=t(87556),l=t(32451),d=(t(77937),t(80184)),p=window.shared.pageOptions,h=p.err,Z=p.fileExt,v=p.fileContent,x=function(e){(0,i.Z)(t,e);var n=(0,s.Z)(t);function t(){return(0,r.Z)(this,t),n.apply(this,arguments)}return(0,u.Z)(t,[{key:"render",value:function(){return h?(0,d.jsx)(c.Z,{}):(0,d.jsx)("div",{className:"shared-file-view-body text-file-view",children:(0,d.jsx)(l.Z,{fileExt:Z,value:v})})}}]),t}(o.Component),w=function(e){(0,i.Z)(t,e);var n=(0,s.Z)(t);function t(){return(0,r.Z)(this,t),n.apply(this,arguments)}return(0,u.Z)(t,[{key:"render",value:function(){return(0,d.jsx)(f.Z,{content:(0,d.jsx)(x,{})})}}]),t}(o.Component);a.render((0,d.jsx)(w,{}),document.getElementById("wrapper"))}},function(e){e.O(0,[351],(function(){return n=35326,e(e.s=n);var n}));e.O()}]); +//# sourceMappingURL=sharedFileViewText.757e8d1a.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/sharedFileViewText.757e8d1a.js.map b/media/assets/frontend/static/js/sharedFileViewText.757e8d1a.js.map new file mode 100644 index 00000000000..a640b45ac83 --- /dev/null +++ b/media/assets/frontend/static/js/sharedFileViewText.757e8d1a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/sharedFileViewText.757e8d1a.js","mappings":"qPAOAA,EAAsCC,OAAOC,OAAOC,YAA5CC,EAAGJ,EAAHI,IAAKC,EAAOL,EAAPK,QAASC,EAAWN,EAAXM,YAEhBC,EAAW,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAAA,SAAAA,IAAA,OAAAK,EAAAA,EAAAA,GAAA,KAAAL,GAAAG,EAAAG,MAAA,KAAAC,UAAA,CAWd,OAXcC,EAAAA,EAAAA,GAAAR,EAAA,EAAAS,IAAA,SAAAC,MACf,WACE,OAAIb,GACKc,EAAAA,EAAAA,KAACC,EAAAA,EAAiB,KAIzBD,EAAAA,EAAAA,KAAA,OAAKE,UAAU,uCAAsCC,UACnDH,EAAAA,EAAAA,KAACI,EAAAA,EAAiB,CAACjB,QAASA,EAASY,MAAOX,KAGlD,KAACC,CAAA,CAXc,CAASgB,EAAAA,WAcpBC,EAAkB,SAAAC,IAAAhB,EAAAA,EAAAA,GAAAe,EAAAC,GAAA,IAAAC,GAAAf,EAAAA,EAAAA,GAAAa,GAAA,SAAAA,IAAA,OAAAZ,EAAAA,EAAAA,GAAA,KAAAY,GAAAE,EAAAb,MAAA,KAAAC,UAAA,CAGrB,OAHqBC,EAAAA,EAAAA,GAAAS,EAAA,EAAAR,IAAA,SAAAC,MACtB,WACE,OAAOC,EAAAA,EAAAA,KAACS,EAAAA,EAAc,CAACC,SAASV,EAAAA,EAAAA,KAACX,EAAW,KAC9C,KAACiB,CAAA,CAHqB,CAASD,EAAAA,WAMjCM,EAAAA,QAAgBX,EAAAA,EAAAA,KAACM,EAAkB,IAAKM,SAASC,eAAe,W","sources":["shared-file-view-text.js"],"sourcesContent":["import React from 'react';\nimport ReactDom from 'react-dom';\nimport SharedFileView from './components/shared-file-view/shared-file-view';\nimport SharedFileViewTip from './components/shared-file-view/shared-file-view-tip';\nimport SeafileCodeMirror from './components/seafile-codemirror';\nimport './css/text-file-view.css';\n\nconst { err, fileExt, fileContent } = window.shared.pageOptions;\n\nclass FileContent extends React.Component {\n render() {\n if (err) {\n return ;\n }\n\n return (\n
    \n \n
    \n );\n }\n}\n\nclass SharedFileViewText extends React.Component {\n render() {\n return } />;\n }\n}\n\nReactDom.render(, document.getElementById('wrapper'));\n"],"names":["_window$shared$pageOp","window","shared","pageOptions","err","fileExt","fileContent","FileContent","_React$Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","_jsx","SharedFileViewTip","className","children","SeafileCodeMirror","React","SharedFileViewText","_React$Component2","_super2","SharedFileView","content","ReactDom","document","getElementById"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/sharedFileViewUnknown.a0e468e0.js b/media/assets/frontend/static/js/sharedFileViewUnknown.a0e468e0.js new file mode 100644 index 00000000000..53dafd581c3 --- /dev/null +++ b/media/assets/frontend/static/js/sharedFileViewUnknown.a0e468e0.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[146],{41304:function(n,e,r){var t=r(15671),u=r(43144),o=r(60136),s=r(29388),i=r(72791),a=r(54164),c=r(21393),f=r(87556),p=r(80184),h=window.shared.pageOptions.err,Z=function(n){(0,o.Z)(r,n);var e=(0,s.Z)(r);function r(){return(0,t.Z)(this,r),e.apply(this,arguments)}return(0,u.Z)(r,[{key:"render",value:function(){return(0,p.jsx)(c.Z,{content:(0,p.jsx)(d,{})})}}]),r}(i.Component),d=function(n){(0,o.Z)(r,n);var e=(0,s.Z)(r);function r(){return(0,t.Z)(this,r),e.apply(this,arguments)}return(0,u.Z)(r,[{key:"render",value:function(){if(h)return(0,p.jsx)(f.Z,{})}}]),r}(i.Component);a.render((0,p.jsx)(Z,{}),document.getElementById("wrapper"))}},function(n){n.O(0,[351],(function(){return e=41304,n(n.s=e);var e}));n.O()}]); +//# sourceMappingURL=sharedFileViewUnknown.a0e468e0.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/sharedFileViewUnknown.a0e468e0.js.map b/media/assets/frontend/static/js/sharedFileViewUnknown.a0e468e0.js.map new file mode 100644 index 00000000000..0d57de13db0 --- /dev/null +++ b/media/assets/frontend/static/js/sharedFileViewUnknown.a0e468e0.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/sharedFileViewUnknown.a0e468e0.js","mappings":"+NAKQA,EAAQC,OAAOC,OAAOC,YAAtBH,IAEFI,EAAmB,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAAA,SAAAA,IAAA,OAAAK,EAAAA,EAAAA,GAAA,KAAAL,GAAAG,EAAAG,MAAA,KAAAC,UAAA,CAGtB,OAHsBC,EAAAA,EAAAA,GAAAR,EAAA,EAAAS,IAAA,SAAAC,MACvB,WACE,OAAOC,EAAAA,EAAAA,KAACC,EAAAA,EAAc,CAACC,SAASF,EAAAA,EAAAA,KAACG,EAAW,KAC9C,KAACd,CAAA,CAHsB,CAASe,EAAAA,WAM5BD,EAAW,SAAAE,IAAAd,EAAAA,EAAAA,GAAAY,EAAAE,GAAA,IAAAC,GAAAb,EAAAA,EAAAA,GAAAU,GAAA,SAAAA,IAAA,OAAAT,EAAAA,EAAAA,GAAA,KAAAS,GAAAG,EAAAX,MAAA,KAAAC,UAAA,CAKd,OALcC,EAAAA,EAAAA,GAAAM,EAAA,EAAAL,IAAA,SAAAC,MACf,WACE,GAAId,EACF,OAAOe,EAAAA,EAAAA,KAACO,EAAAA,EAAiB,GAE7B,KAACJ,CAAA,CALc,CAASC,EAAAA,WAQ1BI,EAAAA,QAAgBR,EAAAA,EAAAA,KAACX,EAAmB,IAAKoB,SAASC,eAAe,W","sources":["shared-file-view-unknown.js"],"sourcesContent":["import React from 'react';\nimport ReactDom from 'react-dom';\nimport SharedFileView from './components/shared-file-view/shared-file-view';\nimport SharedFileViewTip from './components/shared-file-view/shared-file-view-tip';\n\nconst { err } = window.shared.pageOptions;\n\nclass SharedFileViewImage extends React.Component {\n render() {\n return } />;\n }\n}\n\nclass FileContent extends React.Component {\n render() {\n if (err) {\n return ;\n }\n }\n}\n\nReactDom.render(, document.getElementById('wrapper'));\n"],"names":["err","window","shared","pageOptions","SharedFileViewImage","_React$Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","_jsx","SharedFileView","content","FileContent","React","_React$Component2","_super2","SharedFileViewTip","ReactDom","document","getElementById"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/sharedFileViewVideo.6af2fa31.js b/media/assets/frontend/static/js/sharedFileViewVideo.6af2fa31.js new file mode 100644 index 00000000000..5b6111fca4d --- /dev/null +++ b/media/assets/frontend/static/js/sharedFileViewVideo.6af2fa31.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[809],{75572:function(e,n,r){var t=r(1413),s=r(15671),a=r(43144),u=r(60136),o=r(29388),i=r(72791),c=r(54164),l=r(21393),d=r(87556),f=r(34737),p=(r(32607),r(80184)),h=window.shared.pageOptions,Z=h.rawPath,v=h.err,x=function(e){(0,u.Z)(r,e);var n=(0,o.Z)(r);function r(){return(0,s.Z)(this,r),n.apply(this,arguments)}return(0,a.Z)(r,[{key:"render",value:function(){return(0,p.jsx)(l.Z,{content:(0,p.jsx)(y,{})})}}]),r}(i.Component),y=function(e){(0,u.Z)(r,e);var n=(0,o.Z)(r);function r(){return(0,s.Z)(this,r),n.apply(this,arguments)}return(0,a.Z)(r,[{key:"render",value:function(){if(v)return(0,p.jsx)(d.Z,{});var e={autoplay:!1,controls:!0,preload:"auto",playbackRates:[.5,1,1.5,2],sources:[{src:Z}]};return(0,p.jsx)("div",{className:"shared-file-view-body d-flex",children:(0,p.jsx)("div",{className:"flex-1",children:(0,p.jsx)(f.Z,(0,t.Z)({},e))})})}}]),r}(i.Component);c.render((0,p.jsx)(x,{}),document.getElementById("wrapper"))}},function(e){e.O(0,[351],(function(){return n=75572,e(e.s=n);var n}));e.O()}]); +//# sourceMappingURL=sharedFileViewVideo.6af2fa31.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/sharedFileViewVideo.6af2fa31.js.map b/media/assets/frontend/static/js/sharedFileViewVideo.6af2fa31.js.map new file mode 100644 index 00000000000..b5a3c321a57 --- /dev/null +++ b/media/assets/frontend/static/js/sharedFileViewVideo.6af2fa31.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/sharedFileViewVideo.6af2fa31.js","mappings":"+PAQAA,EAAyBC,OAAOC,OAAOC,YAA/BC,EAAOJ,EAAPI,QAASC,EAAGL,EAAHK,IAEXC,EAAmB,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAAA,SAAAA,IAAA,OAAAK,EAAAA,EAAAA,GAAA,KAAAL,GAAAG,EAAAG,MAAA,KAAAC,UAAA,CAGtB,OAHsBC,EAAAA,EAAAA,GAAAR,EAAA,EAAAS,IAAA,SAAAC,MACvB,WACE,OAAOC,EAAAA,EAAAA,KAACC,EAAAA,EAAc,CAACC,SAASF,EAAAA,EAAAA,KAACG,EAAW,KAC9C,KAACd,CAAA,CAHsB,CAASe,EAAAA,WAM5BD,EAAW,SAAAE,IAAAd,EAAAA,EAAAA,GAAAY,EAAAE,GAAA,IAAAC,GAAAb,EAAAA,EAAAA,GAAAU,GAAA,SAAAA,IAAA,OAAAT,EAAAA,EAAAA,GAAA,KAAAS,GAAAG,EAAAX,MAAA,KAAAC,UAAA,CAsBd,OAtBcC,EAAAA,EAAAA,GAAAM,EAAA,EAAAL,IAAA,SAAAC,MACf,WACE,GAAIX,EACF,OAAOY,EAAAA,EAAAA,KAACO,EAAAA,EAAiB,IAG3B,IAAMC,EAAiB,CACrBC,UAAU,EACVC,UAAU,EACVC,QAAS,OACTC,cAAe,CAAC,GAAK,EAAG,IAAK,GAC7BC,QAAS,CAAC,CACRC,IAAK3B,KAGT,OACEa,EAAAA,EAAAA,KAAA,OAAKe,UAAU,+BAA8BC,UAC3ChB,EAAAA,EAAAA,KAAA,OAAKe,UAAU,SAAQC,UACrBhB,EAAAA,EAAAA,KAACiB,EAAAA,GAAWC,EAAAA,EAAAA,GAAA,GAAMV,OAI1B,KAACL,CAAA,CAtBc,CAASC,EAAAA,WAyB1Be,EAAAA,QAAgBnB,EAAAA,EAAAA,KAACX,EAAmB,IAAK+B,SAASC,eAAe,W","sources":["shared-file-view-video.js"],"sourcesContent":["import React from 'react';\nimport ReactDom from 'react-dom';\nimport SharedFileView from './components/shared-file-view/shared-file-view';\nimport SharedFileViewTip from './components/shared-file-view/shared-file-view-tip';\nimport VideoPlayer from './components/video-player';\n\nimport './css/video-file-view.css';\n\nconst { rawPath, err } = window.shared.pageOptions;\n\nclass SharedFileViewImage extends React.Component {\n render() {\n return } />;\n }\n}\n\nclass FileContent extends React.Component {\n render() {\n if (err) {\n return ;\n }\n\n const videoJsOptions = {\n autoplay: false,\n controls: true,\n preload: 'auto',\n playbackRates: [0.5, 1, 1.5, 2],\n sources: [{\n src: rawPath\n }]\n };\n return (\n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nReactDom.render(, document.getElementById('wrapper'));\n"],"names":["_window$shared$pageOp","window","shared","pageOptions","rawPath","err","SharedFileViewImage","_React$Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","_jsx","SharedFileView","content","FileContent","React","_React$Component2","_super2","SharedFileViewTip","videoJsOptions","autoplay","controls","preload","playbackRates","sources","src","className","children","VideoPlayer","_objectSpread","ReactDom","document","getElementById"],"sourceRoot":""} \ No newline at end of file diff --git a/media/assets/frontend/static/js/sysAdmin.91d1d2f2.js b/media/assets/frontend/static/js/sysAdmin.91d1d2f2.js new file mode 100644 index 00000000000..a1834ca6474 --- /dev/null +++ b/media/assets/frontend/static/js/sysAdmin.91d1d2f2.js @@ -0,0 +1,3 @@ +/*! For license information please see sysAdmin.91d1d2f2.js.LICENSE.txt */ +(self.webpackChunkseahub_frontend=self.webpackChunkseahub_frontend||[]).push([[149],{19827:function(e,t,n){"use strict";var i=n(58368),r=n(38918),s=n(3795),a=n.n(s),o=n(72838),l=n(53585),c=window.app.pageOptions.lang;i.Z.use(r.Z).use(a()).use(o.Db).init({lng:c,fallbackLng:"en",ns:["seafile-editor"],defaultNS:"seafile-editor",whitelist:["en","zh-CN","fr","de","cs","es","es-AR","es-MX","ru"],backend:{loadPath:l.si+"locales/{{ lng }}/{{ ns }}.json"},debug:!1,interpolation:{escapeValue:!1},load:"currentOnly",react:{wait:!0}}),t.Z=i.Z},72451:function(e,t,n){"use strict";n.d(t,{Z:function(){return b}});var i=n(15671),r=n(43144),s=n(60136),a=n(29388),o=n(72791),l=n(62298),c=n(4292),h=n(95234),d=n(72426),u=n.n(d),g=n(53585),p=n(22228),m=n(95996),f=n(63446),v=n(80184),x=function(e){(0,s.Z)(n,e);var t=(0,a.Z)(n);function n(e){var r;return(0,i.Z)(this,n),(r=t.call(this,e)).state={isLoading:!0,errorMsg:""},r}return(0,r.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.props,n=t.repoID,i=t.commitID;p.I.getCommitDetails(n,i).then((function(t){e.setState({isLoading:!1,errorMsg:"",commitDetails:t.data})})).catch((function(t){var n=m.c.getErrorMsg(t);e.setState({isLoading:!1,errorMsg:n})}))}},{key:"render",value:function(){var e=this.props,t=e.toggleDialog,n=e.commitTime;return(0,v.jsxs)(l.Z,{isOpen:!0,centered:!0,toggle:t,children:[(0,v.jsx)(c.Z,{toggle:t,children:(0,g.ih)("Modification Details")}),(0,v.jsxs)(h.Z,{children:[(0,v.jsx)("p",{className:"small",children:u()(n).format("YYYY-MM-DD HH:mm:ss")}),(0,v.jsx)(y,{data:this.state})]})]})}}]),n}(o.Component),y=function(e){(0,s.Z)(n,e);var t=(0,a.Z)(n);function n(){var e;(0,i.Z)(this,n);for(var r=arguments.length,s=new Array(r),a=0;at:tt:t0&&(0,y.jsx)(Q,{labels:t,filesData:n,suggestedMaxNumbers:10,isLegendStatus:!0,chartTitle:(0,m.ih)("File Operations")})]})]})]})}}]),n}(l.Component)),X=K,$=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getActiviesFiles=function(e,t,n){var r=i.state.filesData;I.I.sysAdminStatisticStorages(e,t,n).then((function(e){var t=[],n=[],s=e.data;if(Array.isArray(s)){s.forEach((function(e){t.push(L()(e.datetime).format("YYYY-MM-DD")),n.push(e.total_storage)}));var a={label:(0,m.ih)("Total Storage"),data:n,borderColor:"#fd913a",backgroundColor:"#fd913a"};r=[a]}i.setState({filesData:r,labels:t,isLoading:!1})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={filesData:[],labels:[],isLoading:!0},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.labels,n=e.filesData,r=e.isLoading;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(T,{currentItem:"storageStatistic"}),(0,y.jsxs)("div",{className:"cur-view-content",children:[(0,y.jsx)(Y,{getActiviesFiles:this.getActiviesFiles}),r&&(0,y.jsx)(Z.Z,{}),!r&&t.length>0&&(0,y.jsx)(Q,{labels:t,filesData:n,suggestedMaxNumbers:1e7,isTitleCallback:!0,isTicksCallback:!0,isLegendStatus:!1,chartTitle:(0,m.ih)("Total Storage")})]})]})]})}}]),n}(l.Component),J=$,ee=n(97326),te=n(54555),ne=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,r.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.type,n=e.sortBy,i="asc"==e.sortOrder?(0,y.jsx)("span",{className:"fas fa-caret-up"}):(0,y.jsx)("span",{className:"fas fa-caret-down"});return(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"16%",children:"user"==t?(0,m.ih)("User"):(0,m.ih)("Organization")}),(0,y.jsx)("th",{width:"11%",children:(0,y.jsxs)("div",{className:"d-block table-sort-op cursor-pointer",onClick:this.props.sortItems.bind(this,"sync_file_upload"),children:[(0,m.ih)("Sync Upload")," ","sync_file_upload"===n&&i]})}),(0,y.jsx)("th",{width:"14%",children:(0,y.jsxs)("div",{className:"d-block table-sort-op cursor-pointer",onClick:this.props.sortItems.bind(this,"sync_file_download"),children:[(0,m.ih)("Sync Download")," ","sync_file_download"===n&&i]})}),(0,y.jsx)("th",{width:"11%",children:(0,y.jsxs)("div",{className:"d-block table-sort-op cursor-pointer",onClick:this.props.sortItems.bind(this,"web_file_upload"),children:[(0,m.ih)("Web Upload")," ","web_file_upload"===n&&i]})}),(0,y.jsx)("th",{width:"14%",children:(0,y.jsxs)("div",{className:"d-block table-sort-op cursor-pointer",onClick:this.props.sortItems.bind(this,"web_file_download"),children:[(0,m.ih)("Web Download")," ","web_file_download"===n&&i]})}),(0,y.jsx)("th",{width:"17%",children:(0,y.jsxs)("div",{className:"d-block table-sort-op cursor-pointer",onClick:this.props.sortItems.bind(this,"link_file_upload"),children:[(0,m.ih)("Share link upload")," ","link_file_upload"===n&&i]})}),(0,y.jsx)("th",{width:"17%",children:(0,y.jsxs)("div",{className:"d-block table-sort-op cursor-pointer",onClick:this.props.sortItems.bind(this,"link_file_download"),children:[(0,m.ih)("Share link download")," ","link_file_download"===n&&i]})})]})}),(0,y.jsx)("tbody",{children:this.props.children})]})}}]),n}(l.Component),ie=ne,re=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,r.Z)(this,n);for(var i=arguments.length,s=new Array(i),a=0;a0&&i.map((function(e,t){return(0,y.jsx)(se,{userTrafficItem:e,type:"org"},t)}))}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:r,hasNextPage:s,curPerPage:a,resetPerPage:this.resetPerPage})]})}}]),n}(l.Component),le=oe,ce=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getPreviousPage=function(){i.getTrafficList(i.state.month,i.state.currentPage-1)},i.getNextPage=function(){i.getTrafficList(i.state.month,i.state.currentPage+1)},i.handleChange=function(e){var t=e.target.value;i.setState({month:t})},i.handleKeyPress=function(e){var t=i.state.month;if("Enter"===e.key){if(!/^([012]\d{3})(0[1-9]|1[012])$/.test(t)){var n=(0,m.ih)("Invalid month, should be yyyymm.");return void i.setState({errorMessage:n})}i.getTrafficList(t,i.initPage),e.target.blur(),e.preventDefault()}},i.getTrafficList=function(e,t){var n=i.state,r=n.perPage,s=n.sortBy,a=n.sortOrder,o="asc"==a?s:"".concat(s,"_").concat(a);i.setState({isLoading:!0,errorMessage:""}),I.I.sysAdminListUserTraffic(e,t,r,o).then((function(n){var r=n.data.user_monthly_traffic_list.slice(0);i.setState({month:e,currentPage:t,userTrafficList:r,hasNextPage:n.data.has_next_page,isLoading:!1})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.sortItems=function(e){i.setState({sortBy:e,sortOrder:"asc"==i.state.sortOrder?"desc":"asc"},(function(){var e=i.state,t=e.month,n=e.currentPage;i.getTrafficList(t,n)}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){return i.getTrafficList(i.initMonth,i.initPage)}))},i.state={userTrafficList:[],hasNextPage:!1,perPage:25,currentPage:1,month:L()().format("YYYYMM"),isLoading:!1,errorMessage:"",sortBy:"link_file_download",sortOrder:"desc"},i.initPage=1,i.initMonth=L()().format("YYYYMM"),i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getTrafficList(e.initMonth,e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state,t=e.isLoading,n=e.errorMessage,i=e.userTrafficList,r=e.currentPage,s=e.hasNextPage,a=e.perPage,o=e.sortBy,c=e.sortOrder;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("div",{className:"d-flex align-items-center mt-4",children:[(0,y.jsx)("span",{className:"statistic-reports-tip",children:(0,m.ih)("Month:")}),(0,y.jsx)(te.Z,{className:"statistic-reports-input",defaultValue:L()().format("YYYYMM"),onChange:this.handleChange,onKeyPress:this.handleKeyPress}),n&&(0,y.jsx)("div",{className:"error",children:n})]}),t&&(0,y.jsx)(Z.Z,{}),!t&&(0,y.jsx)(ie,{type:"user",sortItems:this.sortItems,sortBy:o,sortOrder:c,children:i.length>0&&i.map((function(e,t){return(0,y.jsx)(se,{userTrafficItem:e,type:"user"},t)}))}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:r,hasNextPage:s,curPerPage:a,resetPerPage:this.resetPerPage})]})}}]),n}(l.Component),he=ce,de=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).changeTabActive=function(e){i.setState({tabActive:e})},i.getActiviesFiles=function(e,t,n){I.I.sysAdminStatisticTraffic(e,t,n).then((function(e){var t=[],n=[],r=[],s=[],a=[],o=[],l=[],c=[],h=[],d=e.data;if(Array.isArray(d)){d.forEach((function(e){t.push(L()(e.datetime).format("YYYY-MM-DD")),s.push(e["link-file-upload"]),a.push(e["link-file-download"]),o.push(e["sync-file-upload"]),l.push(e["sync-file-download"]),c.push(e["web-file-upload"]),h.push(e["web-file-download"]),n.push(e["link-file-upload"]+e["sync-file-upload"]+e["web-file-upload"]),r.push(e["link-file-download"]+e["sync-file-download"]+e["web-file-download"])}));var u=[{label:(0,m.ih)("Upload"),data:s,borderColor:"#fd913a",backgroundColor:"#fd913a"},{label:(0,m.ih)("Download"),data:a,borderColor:"#57cd6b",backgroundColor:"#57cd6b"}],g=[{label:(0,m.ih)("Upload"),data:o,borderColor:"#fd913a",backgroundColor:"#fd913a"},{label:(0,m.ih)("Download"),data:l,borderColor:"#57cd6b",backgroundColor:"#57cd6b"}],p=[{label:(0,m.ih)("Upload"),data:c,borderColor:"#fd913a",backgroundColor:"#fd913a"},{label:(0,m.ih)("Download"),data:h,borderColor:"#57cd6b",backgroundColor:"#57cd6b"}],f=[{label:(0,m.ih)("Upload"),data:n,borderColor:"#fd913a",backgroundColor:"#fd913a"},{label:(0,m.ih)("Download"),data:r,borderColor:"#57cd6b",backgroundColor:"#57cd6b"}];i.setState({linkData:u,syncData:g,webData:p,filesData:f,labels:t,isLoading:!1})}})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.renderCommonTool=function(){var e=i.state.tabActive;return"system"===e?(0,y.jsx)(Y,{getActiviesFiles:i.getActiviesFiles,children:(0,y.jsxs)("div",{className:"statistic-traffic-tab",children:[(0,y.jsx)("div",{className:"statistic-traffic-tab-item ".concat("system"===e?"active":""),onClick:i.changeTabActive.bind((0,ee.Z)(i),"system"),children:(0,m.ih)("System")}),(0,y.jsx)("div",{className:"statistic-traffic-tab-item ".concat("user"===e?"active":""),onClick:i.changeTabActive.bind((0,ee.Z)(i),"user"),children:(0,m.ih)("Users")}),(0,y.jsx)("div",{className:"statistic-traffic-tab-item ".concat("organizations"===e?"active":""),onClick:i.changeTabActive.bind((0,ee.Z)(i),"organizations"),children:(0,m.ih)("Organizations")})]})}):(0,y.jsxs)("div",{className:"statistic-traffic-tab",children:[(0,y.jsx)("div",{className:"statistic-traffic-tab-item ".concat("system"===e?"active":""),onClick:i.changeTabActive.bind((0,ee.Z)(i),"system"),children:(0,m.ih)("System")}),(0,y.jsx)("div",{className:"statistic-traffic-tab-item ".concat("user"===e?"active":""),onClick:i.changeTabActive.bind((0,ee.Z)(i),"user"),children:(0,m.ih)("Users")}),(0,y.jsx)("div",{className:"statistic-traffic-tab-item ".concat("organizations"===e?"active":""),onClick:i.changeTabActive.bind((0,ee.Z)(i),"organizations"),children:(0,m.ih)("Organizations")})]})},i.state={filesData:[],linkData:[],syncData:[],webData:[],labels:[],isLoading:!0,tabActive:"system"},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.labels,n=e.filesData,r=e.linkData,s=e.syncData,a=e.webData,o=e.isLoading,c=e.tabActive;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(T,{currentItem:"trafficStatistic"}),(0,y.jsxs)("div",{className:"cur-view-content",children:[this.renderCommonTool(),o&&(0,y.jsx)(Z.Z,{}),!o&&"system"===c&&(0,y.jsxs)("div",{className:"statistic-traffic-chart-container",children:[(0,y.jsx)("div",{className:"mb-4",children:t.length>0&&(0,y.jsx)(Q,{labels:t,filesData:n,chartTitle:(0,m.ih)("Total Traffic"),suggestedMaxNumbers:1e7,isTitleCallback:!0,isTicksCallback:!0,isLegendStatus:!0})}),(0,y.jsx)("div",{className:"mb-4",children:t.length>0&&(0,y.jsx)(Q,{labels:t,filesData:a,chartTitle:(0,m.ih)("Web Traffic"),suggestedMaxNumbers:1e7,isTitleCallback:!0,isTicksCallback:!0,isLegendStatus:!0})}),(0,y.jsx)("div",{className:"mb-4",children:t.length>0&&(0,y.jsx)(Q,{labels:t,filesData:r,chartTitle:(0,m.ih)("Share Link Traffic"),suggestedMaxNumbers:1e7,isTitleCallback:!0,isTicksCallback:!0,isLegendStatus:!0})}),(0,y.jsx)("div",{className:"mb-4",children:t.length>0&&(0,y.jsx)(Q,{labels:t,filesData:s,chartTitle:(0,m.ih)("Sync Traffic"),suggestedMaxNumbers:1e7,isTitleCallback:!0,isTicksCallback:!0,isLegendStatus:!0})})]}),!o&&"user"===c&&(0,y.jsx)(he,{}),!o&&"organizations"===c&&(0,y.jsx)(le,{})]})]})]})}}]),n}(l.Component),ue=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getActiviesFiles=function(e,t,n){var r=i.state.filesData;I.I.sysAdminStatisticActiveUsers(e,t,n).then((function(e){var t=[],n=[],s=e.data;if(Array.isArray(s)){s.forEach((function(e){t.push(L()(e.datetime).format("YYYY-MM-DD")),n.push(e.count)}));var a={label:(0,m.ih)("Active Users"),data:n,borderColor:"#fd913a",backgroundColor:"#fd913a"};r=[a]}i.setState({filesData:r,labels:t,isLoading:!1})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={filesData:[],labels:[],isLoading:!0},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.labels,n=e.filesData,r=e.isLoading;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(T,{currentItem:"usersStatistic"}),(0,y.jsxs)("div",{className:"cur-view-content",children:[(0,y.jsx)(Y,{getActiviesFiles:this.getActiviesFiles}),r&&(0,y.jsx)(Z.Z,{}),!r&&t.length>0&&(0,y.jsx)(Q,{labels:t,filesData:n,suggestedMaxNumbers:10,isLegendStatus:!1,chartTitle:(0,m.ih)("Active Users")})]})]})]})}}]),n}(l.Component),ge=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleChange=function(e){var t=e.target.value;i.setState({month:t})},i.onGenerateReports=function(e){var t=m.ze+"api/v2.1/admin/statistics/",n=i.state.month;if(n){if("month"===e){if(!/^([012]\d{3})(0[1-9]|1[012])$/.test(n)){var r=(0,m.ih)("Invalid month, should be yyyymm.");return void i.setState({errorMessage:r})}}switch(e){case"month":t+="system-user-traffic/excel/?month="+n;break;case"storage":t+="system-user-storage/excel/?"}i.setState({errorMessage:""}),window.location.href=t}else{var s=(0,m.ih)("It is required.");i.setState({errorMessage:s})}},i.state={month:L()().format("YYYYMM"),errorMessage:""},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.errorMessage;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(T,{currentItem:"reportsStatistic"}),(0,y.jsxs)("div",{className:"cur-view-content",children:[(0,y.jsxs)("div",{className:"statistic-reports",children:[(0,y.jsx)("div",{className:"statistic-reports-title",children:(0,m.ih)("Monthly User Traffic")}),(0,y.jsxs)("div",{className:"d-flex align-items-center mt-4",children:[(0,y.jsx)("span",{className:"statistic-reports-tip",children:(0,m.ih)("Month:")}),(0,y.jsx)(te.Z,{className:"statistic-reports-input",defaultValue:L()().format("YYYYMM"),onChange:this.handleChange}),(0,y.jsx)(w.Z,{className:"statistic-reports-submit operation-item",onClick:this.onGenerateReports.bind(this,"month"),children:(0,m.ih)("Create Report")})]}),e&&(0,y.jsx)("div",{className:"error",children:e})]}),(0,y.jsxs)("div",{className:"statistic-reports",children:[(0,y.jsx)("div",{className:"statistic-reports-title",children:(0,m.ih)("User Storage")}),(0,y.jsx)(w.Z,{className:"mt-4 operation-item",onClick:this.onGenerateReports.bind(this,"storage"),children:(0,m.ih)("Create Report")})]})]})]})]})}}]),n}(l.Component),pe=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"desktop",urlPart:"desktop-devices",text:(0,m.ih)("Desktop")},{name:"mobile",urlPart:"mobile-devices",text:(0,m.ih)("Mobile")}],m._y&&i.navItems.push({name:"errors",urlPart:"device-errors",text:(0,m.ih)("Errors")}),i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.currentItem;return(0,y.jsx)("div",{className:"cur-view-path tab-nav-container",children:(0,y.jsx)("ul",{className:"nav",children:this.navItems.map((function(t,n){return(0,y.jsx)("li",{className:"nav-item",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/").concat(t.urlPart,"/"),className:"nav-link".concat(e==t.name?" active":""),children:t.text})},n)}))})})}}]),n}(l.Component),me=pe,fe=n(73379),ve=n(83207),xe=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getPreviousPageDevicesList=function(){i.props.getDevicesListByPage(i.props.pageInfo.current_page-1)},i.getNextPageDevicesList=function(){i.props.getDevicesListByPage(i.props.pageInfo.current_page+1)},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg,i=e.items,r=e.pageInfo,s=e.curPerPage;if(t)return(0,y.jsx)(Z.Z,{});if(n)return(0,y.jsx)("p",{className:"error text-center",children:n});var a=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No connected devices")})}),o=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"19%",children:(0,m.ih)("User")}),(0,y.jsxs)("th",{width:"19%",children:[(0,m.ih)("Platform")," / ",(0,m.ih)("Version")]}),(0,y.jsx)("th",{width:"19%",children:(0,m.ih)("Device Name")}),(0,y.jsx)("th",{width:"19%",children:(0,m.ih)("IP")}),(0,y.jsx)("th",{width:"19%",children:(0,m.ih)("Last Access")}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:i.map((function(e,t){return(0,y.jsx)(ye,{item:e},t)}))})]}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPageDevicesList,gotoNextPage:this.getNextPageDevicesList,currentPage:r.current_page,hasNextPage:r.has_next_page,curPerPage:s,resetPerPage:this.props.resetPerPage})]});return i.length?o:a}}]),n}(l.Component),ye=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseOver=function(){i.setState({isOpIconShown:!0})},i.handleMouseOut=function(){i.setState({isOpIconShown:!1})},i.handleUnlink=function(e){e.preventDefault(),i.props.item.is_desktop_client?i.toggleUnlinkDeviceDialog():i.unlinkDevice(!0)},i.toggleUnlinkDeviceDialog=function(){i.setState({isUnlinkDeviceDialogOpen:!i.state.isUnlinkDeviceDialogOpen})},i.unlinkDevice=function(e){var t=i.props.item,n=t.platform,r=t.device_id,s=t.user;I.I.sysAdminUnlinkDevice(n,r,s,e).then((function(e){i.setState({unlinked:!0});var t=(0,m.ih)("Successfully unlinked the device.");P.Z.success(t)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={unlinked:!1,isOpIconShown:!1,isUnlinkDeviceDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state,n=t.unlinked,i=t.isUnlinkDeviceDialogOpen,r=t.isOpIconShown;return n?null:(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{onMouseEnter:this.handleMouseOver,onMouseLeave:this.handleMouseOut,children:[(0,y.jsx)("td",{children:e.user_name}),(0,y.jsxs)("td",{children:[e.platform," / ",e.client_version]}),(0,y.jsx)("td",{children:e.device_name}),(0,y.jsx)("td",{children:e.last_login_ip}),(0,y.jsx)("td",{children:(0,y.jsx)("span",{title:L()(e.last_accessed).format("llll"),children:L()(e.last_accessed).fromNow()})}),(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:"#",className:"sf2-icon-delete action-icon ".concat(r?"":"invisible"),title:(0,m.ih)("Unlink"),onClick:this.handleUnlink})})]}),i&&(0,y.jsx)(ve.Z,{unlinkDevice:this.unlinkDevice,toggleDialog:this.toggleUnlinkDeviceDialog})]})}}]),n}(l.Component),be=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getDevicesListByPage=function(e){var t=i.props.devicesPlatform,n=i.state.perPage;I.I.sysAdminListDevices(t,e,n).then((function(e){i.setState({devicesData:e.data.devices,pageInfo:e.data.page_info,loading:!1})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getDevicesListByPage(1)}))},i.state={loading:!0,errorMsg:"",devicesData:[],pageInfo:{},perPage:25},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=void 0===i?1:i,s=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||s),currentPage:parseInt(t.get("page")||r)},(function(){e.getDevicesListByPage(e.state.currentPage)}))}},{key:"render",value:function(){return(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(xe,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.devicesData,getDevicesListByPage:this.getDevicesListByPage,curPerPage:this.state.perPage,resetPerPage:this.resetPerPage,pageInfo:this.state.pageInfo})})}}]),n}(l.Component),je=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,r.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(me,{currentItem:"desktop"}),(0,y.jsx)(be,{devicesPlatform:"desktop"})]})})]})}}]),n}(l.Component),Se=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,r.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(me,{currentItem:"mobile"}),(0,y.jsx)(be,{devicesPlatform:"mobile"})]})})]})}}]),n}(l.Component),De=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/users/").concat(encodeURIComponent(this.props.email),"/"),children:this.props.name})}}]),n}(l.Component),we=De,Ie=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getPreviousPageDeviceErrorsList=function(){i.props.getDeviceErrorsListByPage(i.props.pageInfo.current_page-1)},i.getNextPageDeviceErrorsList=function(){i.props.getDeviceErrorsListByPage(i.props.pageInfo.current_page+1)},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg,i=e.items,r=e.pageInfo,s=e.curPerPage;if(t)return(0,y.jsx)(Z.Z,{});if(n)return(0,y.jsx)("p",{className:"error text-center",children:n});var a=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No sync errors")})}),o=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"16%",children:(0,m.ih)("User")}),(0,y.jsxs)("th",{width:"20%",children:[(0,m.ih)("Device")," / ",(0,m.ih)("Version")]}),(0,y.jsx)("th",{width:"16%",children:(0,m.ih)("IP")}),(0,y.jsx)("th",{width:"16%",children:(0,m.ih)("Library")}),(0,y.jsx)("th",{width:"16%",children:(0,m.ih)("Error")}),(0,y.jsx)("th",{width:"16%",children:(0,m.ih)("Time")})]})}),(0,y.jsx)("tbody",{children:i.map((function(e,t){return(0,y.jsx)(Pe,{item:e},t)}))})]}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPageDeviceErrorsList,gotoNextPage:this.getNextPageDeviceErrorsList,currentPage:r.current_page,hasNextPage:r.has_next_page,curPerPage:s,resetPerPage:this.props.resetPerPage})]});return i.length?o:a}}]),n}(l.Component),Pe=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseOver=function(){i.setState({isOpIconShown:!0})},i.handleMouseOut=function(){i.setState({isOpIconShown:!1})},i.state={isOpIconShown:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item;return(0,y.jsxs)("tr",{onMouseEnter:this.handleMouseOver,onMouseLeave:this.handleMouseOut,children:[(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:e.email,name:e.name})}),(0,y.jsxs)("td",{children:[e.device_name," / ",e.client_version]}),(0,y.jsx)("td",{children:e.device_ip}),(0,y.jsx)("td",{children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sysadmin/#libs/").concat(e.repo_id),children:e.repo_name})}),(0,y.jsx)("td",{children:e.error_msg}),(0,y.jsx)("td",{children:(0,y.jsx)("span",{className:"item-meta-info",title:L()(e.last_accessed).format("llll"),children:L()(e.error_time).fromNow()})})]})}}]),n}(l.Component),Ze=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getDeviceErrorsListByPage=function(e){var t=i.state.perPage;I.I.sysAdminListDeviceErrors(e,t).then((function(e){i.setState({loading:!1,devicesErrors:e.data.device_errors,pageInfo:e.data.page_info,isCleanBtnShown:e.data.length>0})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.clean=function(){I.I.sysAdminClearDeviceErrors().then((function(e){i.setState({devicesErrors:[],isCleanBtnShown:!1});var t=(0,m.ih)("Successfully cleaned all errors.");P.Z.success(t)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getDeviceErrorsListByPage(1)}))},i.state={loading:!0,errorMsg:"",devicesErrors:[],isCleanBtnShown:!1,pageInfo:{},perPage:25},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=void 0===i?1:i,s=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||s),currentPage:parseInt(t.get("page")||r)},(function(){e.getDeviceErrorsListByPage(e.state.currentPage)}))}},{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[this.state.isCleanBtnShown?(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:(0,y.jsx)(w.Z,{className:"operation-item",onClick:this.clean,children:(0,m.ih)("Clean")})})):(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(me,{currentItem:"errors"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Ie,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.devicesErrors,getDeviceErrorsListByPage:this.getDeviceErrorsListByPage,curPerPage:this.state.perPage,resetPerPage:this.resetPerPage,pageInfo:this.state.pageInfo})})]})})]})}}]),n}(l.Component),ke=n(4292),_e=n(95234),Ne=n(44517),Me=n(66919),Ce=n(82377),Ae=n(51840),Le=n(34594),Oe=n(95060),Te=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggle=function(){i.props.toggle()},i.handleQuotaChange=function(e){var t=e.target.value;i.setState({quota:t,isSubmitBtnActive:""!=t.trim()})},i.handleKeyDown=function(e){"Enter"==e.key&&(i.handleSubmit(),e.preventDefault())},i.handleSubmit=function(){i.props.updateQuota(i.state.quota.trim()),i.toggle()},i.state={quota:"",isSubmitBtnActive:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.quota,n=e.isSubmitBtnActive;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.toggle,children:(0,m.ih)("Set Quota")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)(Ne.Z,{children:(0,y.jsxs)(Me.Z,{children:[(0,y.jsxs)(Ce.Z,{children:[(0,y.jsx)(te.Z,{type:"text",className:"form-control",value:t,onKeyDown:this.handleKeyDown,onChange:this.handleQuotaChange}),(0,y.jsx)(Ae.Z,{addonType:"append",children:(0,y.jsx)(Le.Z,{children:"MB"})})]}),(0,y.jsxs)("p",{className:"small text-secondary mt-2 mb-2",children:[(0,m.ih)("An integer that is greater than or equal to 0."),(0,y.jsx)("br",{}),(0,m.ih)("Tip: 0 means default limit")]})]})})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,disabled:!n,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),Fe=n(38122),Re=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggle=function(){i.props.toggle()},i.openFileInput=function(){i.fileInputRef.current.click()},i.uploadFile=function(e){if(i.fileInputRef.current.files.length){var t=i.fileInputRef.current.files[0].name;if("xlsx"==t.substr(t.lastIndexOf(".")+1)){var n=i.fileInputRef.current.files[0];i.props.importUserInBatch(n),i.toggle()}else i.setState({errorMsg:(0,m.ih)("Please choose a .xlsx file.")})}},i.state={errorMsg:""},i.fileInputRef=l.createRef(),i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.errorMsg;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.toggle,children:(0,m.ih)("Import users from a .xlsx file")}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsx)("p",{children:(0,y.jsx)("a",{className:"text-secondary small",href:"".concat(m.ze,"useradmin/batchadduser/example/"),children:(0,m.ih)("Download an example file")})}),(0,y.jsx)("button",{className:"btn btn-outline-primary",onClick:this.openFileInput,children:(0,m.ih)("Upload file")}),(0,y.jsx)("input",{className:"d-none",type:"file",onChange:this.uploadFile,ref:this.fileInputRef}),e&&(0,y.jsx)(Fe.Z,{color:"danger",children:e})]}),(0,y.jsx)(Oe.Z,{children:(0,y.jsx)(w.Z,{color:"secondary",onClick:this.toggle,children:(0,m.ih)("Cancel")})})]})}}]),n}(l.Component),Ue=n(73002),Ee=n(87324),ze=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,r.Z)(this,n);for(var i=arguments.length,s=new Array(i),a=0;a0})},i.handleSubmit=function(){i.props.addAdminInBatch(i.state.options.map((function(e){return e.email}))),i.toggle()},i.state={options:null,isSubmitBtnActive:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.toggle,children:(0,m.ih)("Add Admin")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)(He.Z,{isMulti:!0,className:"reviewer-select",placeholder:(0,m.ih)("Search users"),onSelectChange:this.handleSelectChange})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,disabled:!this.state.isSubmitBtnActive,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),Ye=n(7054),Ge=(0,s.Z)((function e(t){(0,r.Z)(this,e),this.email=t.email,this.name=t.name,this.contact_email=t.contact_email,this.login_id=t.login_id,this.last_login=t.last_login,this.last_access_time=t.last_access_time,this.create_time=t.create_time,this.is_active=t.is_active,this.is_staff=t.is_staff,this.reference_id=t.reference_id,this.department=t.department,this.quota_total=t.quota_total,this.quota_usage=t.quota_usage,this.role=t.role,this.institution=t.institution,t.org_id&&(this.org_id=t.org_id),t.org_name&&(this.org_name=t.org_name),this.isSelected=!1})),qe=(0,s.Z)((function e(t){(0,r.Z)(this,e),this.email=t.email,this.name=t.name,this.contact_email=t.contact_email,this.login_id=t.login_id,this.last_login=t.last_login,this.last_access_time=t.last_access_time,this.create_time=t.create_time,this.is_active=t.is_active,this.is_staff=t.is_staff,this.quota_total=t.quota_total,this.quota_usage=t.quota_usage,this.admin_role=t.admin_role,this.isSelected=!1})),Qe=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleInputChange=function(e){i.setState({value:e.target.value})},i.handleKeyDown=function(e){"Enter"==e.key&&(e.preventDefault(),i.handleSubmit())},i.handleSubmit=function(){var e=i.state.value.trim();if(!e)return!1;i.props.submit(e)},i.state={value:""},i}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)("div",{className:"input-icon",children:[(0,y.jsx)("i",{className:"d-flex input-icon-addon fas fa-search"}),(0,y.jsx)("input",{type:"text",className:"form-control search-input h-6 mr-1",style:{width:"17rem"},placeholder:this.props.placeholder,value:this.state.value,onChange:this.handleInputChange,onKeyDown:this.handleKeyDown,autoComplete:"off"})]})}}]),n}(l.Component),Ke=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"database",urlPart:"users",text:(0,m.ih)("Database")}],m.VA&&i.navItems.push({name:"ldap",urlPart:"users/ldap",text:(0,m.ih)("LDAP")},{name:"ldap-imported",urlPart:"users/ldap-imported",text:(0,m.ih)("LDAP(imported)")}),m.B2&&i.navItems.push({name:"admin",urlPart:"users/admins",text:(0,m.ih)("Admin")}),i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.currentItem;return(0,y.jsx)("div",{className:"cur-view-path tab-nav-container",children:(0,y.jsx)("ul",{className:"nav",children:this.navItems.map((function(t,n){return(0,y.jsx)("li",{className:"nav-item",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/").concat(t.urlPart,"/"),className:"nav-link".concat(e==t.name?" active":""),children:t.text})},n)}))})})}}]),n}(l.Component),Xe=Ke,$e=n(24861),Je=n(13955),et=window.sysadmin.pageOptions,tt=et.availableRoles,nt=et.availableAdminRoles,it=et.institutions,rt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleItemFreezed=function(e){i.setState({isItemFreezed:e})},i.onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.getPreviousPage=function(){i.props.getListByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getListByPage(i.props.currentPage+1)},i.sortByQuotaUsage=function(e){e.preventDefault(),i.props.sortByQuotaUsage()},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.isAdmin,i=t.loading,r=t.errorMsg,s=t.items,a=t.isAllUsersSelected,o=t.curPerPage,c=t.hasNextPage,h=t.currentPage,d=t.sortBy,u=t.sortOrder;if(i)return(0,y.jsx)(Z.Z,{});if(r)return(0,y.jsx)("p",{className:"error text-center mt-4",children:r});var g,p=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No users")})}),f=[];g=""==d?(0,y.jsx)("span",{className:"fas fa-sort"}):(0,y.jsx)("span",{className:"fas ".concat("asc"==u?"fa-caret-up":"fa-caret-down")});var v=(0,m.ih)("Space Used"),x=void 0!=d?(0,y.jsxs)("a",{className:"d-inline-block table-sort-op",href:"#",onClick:this.sortByQuotaUsage,children:[v," ",g]}):v,b=(0,y.jsxs)(l.Fragment,{children:[x," / ".concat((0,m.ih)("Quota"))]}),j="".concat((0,m.ih)("Name")," / ").concat((0,m.ih)("Contact Email")),S="".concat((0,m.ih)("Created At")," / ").concat((0,m.ih)("Last Login")," / ").concat((0,m.ih)("Last Access"));m._y?f.push({width:"20%",text:j},{width:"15%",text:(0,m.ih)("Status")},{width:"15%",text:(0,m.ih)("Role")}):f.push({width:"30%",text:j},{width:"20%",text:(0,m.ih)("Status")}),m.ws&&!n?f.push({width:"14%",text:b},{width:"14%",text:(0,m.ih)("Institution")},{width:"14%",text:S},{width:"5%",text:""}):f.push({width:"20%",text:b},{width:"22%",text:S},{width:"5%",text:""});var D=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"3%",className:"pl-2",children:(0,y.jsx)("input",{type:"checkbox",className:"vam",onChange:this.props.toggleSelectAllUsers,checked:a})}),f.map((function(e,t){return(0,y.jsx)("th",{width:e.width,children:e.text},t)}))]})}),(0,y.jsx)("tbody",{children:s.map((function(t,n){return(0,y.jsx)(st,{item:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,toggleItemFreezed:e.toggleItemFreezed,updateUser:e.props.updateUser,deleteUser:e.props.deleteUser,updateAdminRole:e.props.updateAdminRole,revokeAdmin:e.props.revokeAdmin,onUserSelected:e.props.onUserSelected,isAdmin:e.props.isAdmin,isLDAPImported:e.props.isLDAPImported},n)}))})]}),!this.props.isAdmin&&!this.props.isSearchResult&&(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:h,hasNextPage:c,curPerPage:o,resetPerPage:this.props.resetPerPage})]});return s.length?D:p}}]),n}(l.Component),st=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.toggleSetQuotaDialog=function(){i.setState({isSetQuotaDialogOpen:!i.state.isSetQuotaDialogOpen})},i.toggleDeleteUserDialog=function(){i.setState({isDeleteUserDialogOpen:!i.state.isDeleteUserDialogOpen})},i.toggleResetUserPasswordDialog=function(){i.setState({isResetUserPasswordDialogOpen:!i.state.isResetUserPasswordDialogOpen})},i.toggleRevokeAdminDialog=function(){i.setState({isRevokeAdminDialogOpen:!i.state.isRevokeAdminDialogOpen})},i.onUserSelected=function(){i.props.onUserSelected(i.props.item)},i.updateStatus=function(e){var t="active"==e.value;t&&P.Z.notify((0,m.ih)("It may take some time, please wait.")),i.props.updateUser(i.props.item.email,"is_active",t)},i.updateRole=function(e){i.props.updateUser(i.props.item.email,"role",e.value)},i.updateAdminRole=function(e){i.props.updateAdminRole(i.props.item.email,e.value)},i.translateRole=function(e){switch(e){case"default":return(0,m.ih)("Default");case"guest":return(0,m.ih)("Guest");default:return e}},i.translateAdminRole=function(e){switch(e){case"default_admin":return(0,m.ih)("Default Admin");case"system_admin":return(0,m.ih)("System Admin");case"daily_admin":return(0,m.ih)("Daily Admin");case"audit_admin":return(0,m.ih)("Audit Admin");default:return e}},i.translateStatus=function(e){switch(e){case"active":return(0,m.ih)("Active");case"inactive":return(0,m.ih)("Inactive")}},i.updateInstitution=function(e){i.props.updateUser(i.props.item.email,"institution",e.value)},i.updateQuota=function(e){i.props.updateUser(i.props.item.email,"quota_total",e)},i.deleteUser=function(){P.Z.notify((0,m.ih)("It may take some time, please wait.")),i.props.deleteUser(i.props.item.email,i.props.item.name)},i.resetPassword=function(){P.Z.notify((0,m.ih)("It may take some time, please wait.")),I.I.sysAdminResetUserPassword(i.props.item.email).then((function(e){P.Z.success(e.data.reset_tip)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.revokeAdmin=function(){var e=i.props.item;i.props.revokeAdmin(e.email,e.name)},i.getMenuOperations=function(){var e=i.props,t=e.isAdmin,n=e.isLDAPImported,r=e.isSearchResult,s=e.item,a=["Delete"];return(!n||r&&"db"==s.source)&&a.push("Reset Password"),t&&(a=["Revoke Admin"]),a},i.translateOperations=function(e){var t="";switch(e){case"Delete":t=(0,m.ih)("Delete");break;case"Reset Password":t=(0,m.ih)("Reset Password");break;case"Revoke Admin":t=(0,m.ih)("Revoke Admin")}return t},i.onMenuItemClick=function(e){switch(e){case"Delete":i.toggleDeleteUserDialog();break;case"Reset Password":i.toggleResetUserPasswordDialog();break;case"Revoke Admin":i.toggleRevokeAdminDialog()}},i.state={isOpIconShown:!1,highlight:!1,isSetQuotaDialogOpen:!1,isDeleteUserDialogOpen:!1,isResetUserPasswordDialogOpen:!1,isRevokeAdminDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.item,i=t.isAdmin,r=this.state,s=r.highlight,a=r.isOpIconShown,o=r.isSetQuotaDialogOpen,c=r.isDeleteUserDialogOpen,h=r.isResetUserPasswordDialogOpen,d=r.isRevokeAdminDialogOpen,u=''+f.c.HTMLescape(n.name)+"",p=(0,m.ih)("Are you sure you want to delete {placeholder} ?").replace("{placeholder}",u),v=(0,m.ih)("Are you sure you want to reset the password of {placeholder} ?").replace("{placeholder}",u),x=(0,m.ih)("Are you sure you want to revoke the admin permission of {placeholder} ?").replace("{placeholder}",u),b=n.is_active?"active":"inactive";this.statusOptions=["active","inactive"].map((function(t){return{value:t,text:e.translateStatus(t),isSelected:t==b}}));var j,S,D,w=this.statusOptions.filter((function(e){return e.isSelected}))[0];if(i){var I=n.admin_role;this.adminRoleOptions=nt.map((function(t){return{value:t,text:e.translateAdminRole(t),isSelected:t==I}})),j=this.adminRoleOptions.filter((function(e){return e.isSelected}))[0]}else{var P=n.role;this.roleOptions=tt.map((function(t){return{value:t,text:e.translateRole(t),isSelected:t==P}})),S=this.roleOptions.filter((function(e){return e.isSelected}))[0]||{value:P,text:this.translateRole(P),isSelected:!0}}if(m.ws&&!i){var Z=n.institution;this.instOptions=it.map((function(e){return{value:e,text:e,isSelected:e==Z}})),D=this.instOptions.filter((function(e){return e.isSelected}))[0]}return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{className:"pl-2",children:(0,y.jsx)("input",{type:"checkbox",className:"vam",onChange:this.onUserSelected,checked:n.isSelected})}),(0,y.jsxs)("td",{children:[(0,y.jsx)(we,{email:n.email,name:n.name}),n.contact_email&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("br",{}),n.contact_email]}),n.org_id&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("br",{}),(0,y.jsxs)(g.rU,{to:"".concat(m.ze,"sys/organizations/").concat(n.org_id,"/info/"),children:["(",n.org_name,")"]})]})]}),(0,y.jsx)("td",{children:(0,y.jsx)($e.Z,{isDropdownToggleShown:s,currentSelectedOption:w,options:this.statusOptions,selectOption:this.updateStatus,toggleItemFreezed:this.props.toggleItemFreezed})}),m._y&&(0,y.jsx)("td",{children:i?(0,y.jsx)($e.Z,{isDropdownToggleShown:s,currentSelectedOption:j,options:this.adminRoleOptions,selectOption:this.updateAdminRole,toggleItemFreezed:this.props.toggleItemFreezed}):(0,y.jsx)($e.Z,{isDropdownToggleShown:s,currentSelectedOption:S,options:this.roleOptions,selectOption:this.updateRole,toggleItemFreezed:this.props.toggleItemFreezed})}),(0,y.jsxs)("td",{children:["".concat(f.c.bytesToSize(n.quota_usage)," / ").concat(n.quota_total>0?f.c.bytesToSize(n.quota_total):"--"),(0,y.jsx)("span",{title:(0,m.ih)("Edit"),className:"fa fa-pencil-alt attr-action-icon ".concat(a?"":"invisible"),onClick:this.toggleSetQuotaDialog})]}),m.ws&&!i&&(0,y.jsx)("td",{children:(0,y.jsx)($e.Z,{isDropdownToggleShown:s&&it.length>0,currentSelectedOption:D,options:this.instOptions,selectOption:this.updateInstitution,toggleItemFreezed:this.props.toggleItemFreezed})}),(0,y.jsxs)("td",{children:["".concat(n.create_time?L()(n.create_time).format("YYYY-MM-DD HH:mm"):"--"," /"),(0,y.jsx)("br",{}),"".concat(n.last_login?L()(n.last_login).fromNow():"--"),(0,y.jsx)("br",{}),"".concat(n.last_access_time?L()(n.last_access_time).fromNow():"--")]}),(0,y.jsx)("td",{children:n.email!=m.b6&&a&&(0,y.jsx)(Je.Z,{operations:this.getMenuOperations(),translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),o&&(0,y.jsx)(Te,{toggle:this.toggleSetQuotaDialog,updateQuota:this.updateQuota}),c&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete User"),message:p,executeOperation:this.deleteUser,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleDeleteUserDialog}),h&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Reset Password"),message:v,executeOperation:this.resetPassword,confirmBtnText:(0,m.ih)("Reset"),toggleDialog:this.toggleResetUserPasswordDialog}),d&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Revoke Admin"),message:x,executeOperation:this.revokeAdmin,confirmBtnText:(0,m.ih)("Revoke"),toggleDialog:this.toggleRevokeAdminDialog})]})}}]),n}(l.Component),at=rt,ot=window.sysadmin.pageOptions.availableRoles,lt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleImportUserDialog=function(){i.setState({isImportUserDialogOpen:!i.state.isImportUserDialogOpen})},i.toggleAddUserDialog=function(){i.setState({isAddUserDialogOpen:!i.state.isAddUserDialogOpen})},i.toggleBatchSetQuotaDialog=function(){i.setState({isBatchSetQuotaDialogOpen:!i.state.isBatchSetQuotaDialogOpen})},i.toggleBatchDeleteUserDialog=function(){i.setState({isBatchDeleteUserDialogOpen:!i.state.isBatchDeleteUserDialogOpen})},i.onUserSelected=function(e){var t=!1,n=[],r=i.state.userList.map((function(i){return i.email===e.email&&(i.isSelected=!i.isSelected),1==i.isSelected?(t=!0,n.push(i)):n=n.filter((function(e){return e.email!=i.email})),i}));i.setState({userList:r,hasUserSelected:t,selectedUserList:n})},i.toggleSelectAllUsers=function(){if(i.state.isAllUsersSelected){var e=i.state.userList.map((function(e){return e.isSelected=!1,e}));i.setState({userList:e,hasUserSelected:!1,isAllUsersSelected:!1,selectedUserList:[]})}else{var t=i.state.userList.map((function(e){return e.isSelected=!0,e}));i.setState({userList:t,hasUserSelected:!0,isAllUsersSelected:!0,selectedUserList:t})}},i.getUserList=function(){I.I.sysAdminListAdmins().then((function(e){var t=e.data.admin_user_list.map((function(e){return new qe(e)}));i.setState({userList:t,loading:!1})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.getUsersListByPage=function(e){var t=i.state,n=t.perPage,r=t.sortBy,s=t.sortOrder,a=i.props.isLDAPImported;I.I.sysAdminListUsers(e,n,a,r,s).then((function(t){var r=t.data.data.map((function(e){return new Ge(e)}));i.setState({userList:r,loading:!1,hasNextPage:f.c.hasNextPage(e,n,t.data.total_count),currentPage:e})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.sortByQuotaUsage=function(){i.setState({sortBy:"quota_usage",sortOrder:"asc"==i.state.sortOrder?"desc":"asc",currentPage:1},(function(){var e=new URL(location.href),t=new URLSearchParams(e.search),n=i.state,r=n.currentPage,s=n.sortBy,a=n.sortOrder;t.set("page",r),t.set("order_by",s),t.set("direction",a),e.search=t.toString(),(0,g.c4)(e.toString()),i.getUsersListByPage(r)}))},i.deleteUser=function(e,t){I.I.sysAdminDeleteUser(e).then((function(n){var r=i.state.userList.filter((function(t){return t.email!=e}));i.setState({userList:r});var s=(0,m.ih)("Deleted user %s");s=s.replace("%s",t),P.Z.success(s)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.setUserQuotaInBatch=function(e){var t=i.state.selectedUserList.map((function(e){return e.email}));I.I.sysAdminSetUserQuotaInBatch(t,e).then((function(e){var t=i.state.userList.map((function(t){return e.data.success.forEach((function(e){t.email==e.email&&(t.quota_total=e.quota_total)})),t}));i.setState({userList:t})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteUserInBatch=function(){var e=i.state.selectedUserList.map((function(e){return e.email}));I.I.sysAdminDeleteUserInBatch(e).then((function(t){if(t.data.success.length){var n=i.state.userList.filter((function(e){return!t.data.success.some((function(t){return t.email==e.email}))}));i.setState({userList:n,hasUserSelected:e.length!=t.data.success.length});var r=t.data.success.length,s=1==r?(0,m.ih)("Successfully deleted 1 user."):(0,m.ih)("Successfully deleted {user_number_placeholder} users.").replace("{user_number_placeholder}",r);P.Z.success(s)}t.data.failed.forEach((function(e){var t="".concat(e.email,": ").concat(e.error_msg);P.Z.danger(t)}))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.importUserInBatch=function(e){P.Z.notify((0,m.ih)("It may take some time, please wait.")),I.I.sysAdminImportUserViaFile(e).then((function(e){if(e.data.success.length){var t=e.data.success.map((function(e){return void 0==e.institution&&(e.institution=""),new Ge(e)}));i.setState({userList:t.concat(i.state.userList)})}e.data.failed.forEach((function(e){var t="".concat(e.email,": ").concat(e.error_msg);P.Z.danger(t)}))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.addUser=function(e){P.Z.notify((0,m.ih)("It may take some time, please wait."));var t=e.email,n=e.name,r=e.role,s=e.password;I.I.sysAdminAddUser(t,n,r,s).then((function(e){var t=i.state.userList;t.unshift(e.data),i.setState({userList:t}),P.Z.success(e.data.add_user_tip)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getUsersListByPage(1)}))},i.updateUser=function(e,t,n){I.I.sysAdminUpdateUser(e,t,n).then((function(r){var s=i.state.userList.map((function(n){return n.email==e&&(n[t]=r.data[t]),n}));i.setState({userList:s});var a="is_active"==t&&n?r.data.update_status_tip:(0,m.ih)("Edit succeeded");P.Z.success(a)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.updateAdminRole=function(e,t){I.I.sysAdminUpdateAdminRole(e,t).then((function(t){var n=i.state.userList.map((function(n){return n.email==e&&(n.admin_role=t.data.role),n}));i.setState({userList:n}),P.Z.success((0,m.ih)("Edit succeeded"))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.revokeAdmin=function(e,t){I.I.sysAdminUpdateUser(e,"is_staff",!1).then((function(n){var r=i.state.userList.filter((function(t){return t.email!=e}));i.setState({userList:r}),P.Z.success((0,m.ih)("Successfully revoked the admin permission of {placeholder}.").replace("{placeholder}",t))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.getOperationsForAll=function(){var e=i.props,t=e.isAdmin,n=e.isLDAPImported;return t?(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:i.toggleBatchAddAdminDialog,children:(0,m.ih)("Add Admin")}):n?(0,y.jsx)("a",{className:"btn btn-secondary operation-item",href:"".concat(m.ze,"sys/useradmin/export-excel/"),children:(0,m.ih)("Export Excel")}):(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:i.toggleImportUserDialog,children:(0,m.ih)("Import Users")}),(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:i.toggleAddUserDialog,children:(0,m.ih)("Add User")}),(0,y.jsx)("a",{className:"btn btn-secondary operation-item",href:"".concat(m.ze,"sys/useradmin/export-excel/"),children:(0,m.ih)("Export Excel")})]})},i.getCurrentNavItem=function(){var e=i.props,t=e.isAdmin,n=e.isLDAPImported,r="database";return t?r="admin":n&&(r="ldap-imported"),r},i.toggleBatchAddAdminDialog=function(){i.setState({isBatchAddAdminDialogOpen:!i.state.isBatchAddAdminDialogOpen})},i.addAdminInBatch=function(e){I.I.sysAdminAddAdminInBatch(e).then((function(e){var t=e.data.success.map((function(e){return new qe(e)}));i.setState({userList:t.concat(i.state.userList)}),e.data.failed.forEach((function(e){var t="".concat(e.email,": ").concat(e.error_msg);P.Z.danger(t)}))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.getSearch=function(){return i.props.isAdmin?null:(0,y.jsx)(Qe,{placeholder:(0,m.ih)("Search users"),submit:i.searchItems})},i.searchItems=function(e){(0,g.c4)("".concat(m.ze,"sys/search-users/?query=").concat(encodeURIComponent(e)))},i.state={loading:!0,errorMsg:"",userList:[],hasNextPage:!1,currentPage:1,perPage:25,hasUserSelected:!1,selectedUserList:[],isAllUsersSelected:!1,isImportUserDialogOpen:!1,isAddUserDialogOpen:!1,isBatchSetQuotaDialogOpen:!1,isBatchDeleteUserDialogOpen:!1,isBatchAddAdminDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;if(this.props.isAdmin)this.getUserList();else{var t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage,s=n.sortBy,a=void 0===s?"":s,o=n.sortOrder,l=void 0===o?"asc":o;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i),sortBy:t.get("order_by")||a,sortOrder:t.get("direction")||l},(function(){e.getUsersListByPage(e.state.currentPage)}))}}},{key:"render",value:function(){var e=this.props,t=e.isAdmin,n=e.isLDAPImported,r=this.state,s=r.hasUserSelected,a=r.isImportUserDialogOpen,o=r.isAddUserDialogOpen,c=r.isBatchDeleteUserDialogOpen,h=r.isBatchSetQuotaDialogOpen,d=r.isBatchAddAdminDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({search:this.getSearch()},this.props),{},{children:s?(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleBatchSetQuotaDialog,children:(0,m.ih)("Set Quota")}),(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleBatchDeleteUserDialog,children:(0,m.ih)("Delete Users")})]}):this.getOperationsForAll()})),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Xe,{currentItem:this.getCurrentNavItem()}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(at,{isAdmin:t,isLDAPImported:n,loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.userList,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortByQuotaUsage:this.sortByQuotaUsage,currentPage:this.state.currentPage,hasNextPage:this.state.hasNextPage,curPerPage:this.state.perPage,resetPerPage:this.resetPerPage,getListByPage:this.getUsersListByPage,updateUser:this.updateUser,deleteUser:this.deleteUser,updateAdminRole:this.updateAdminRole,revokeAdmin:this.revokeAdmin,onUserSelected:this.onUserSelected,isAllUsersSelected:this.isAllUsersSelected,toggleSelectAllUsers:this.toggleSelectAllUsers})})]})}),a&&(0,y.jsx)(Re,{toggle:this.toggleImportUserDialog,importUserInBatch:this.importUserInBatch}),o&&(0,y.jsx)(Ve,{dialogTitle:(0,m.ih)("Add User"),showRole:m._y,availableRoles:ot,addUser:this.addUser,toggleDialog:this.toggleAddUserDialog}),h&&(0,y.jsx)(Te,{toggle:this.toggleBatchSetQuotaDialog,updateQuota:this.setUserQuotaInBatch}),c&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Users"),message:(0,m.ih)("Are you sure you want to delete the selected user(s) ?"),executeOperation:this.deleteUserInBatch,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleBatchDeleteUserDialog}),d&&(0,y.jsx)(We,{addAdminInBatch:this.addAdminInBatch,toggle:this.toggleBatchAddAdminDialog})]})}}]),n}(l.Component),ct=lt,ht=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsx)(ct,(0,i.Z)({isAdmin:!0},this.props))}}]),n}(l.Component),dt=ht,ut=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsx)(ct,(0,i.Z)({isLDAPImported:!0},this.props))}}]),n}(l.Component),gt=ut,pt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getPreviousPage=function(){i.props.getListByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getListByPage(i.props.currentPage+1)},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg,i=e.items,r=e.curPerPage,s=e.hasNextPage,a=e.currentPage;if(t)return(0,y.jsx)(Z.Z,{});if(n)return(0,y.jsx)("p",{className:"error text-center mt-4",children:n});var o=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No users")})}),c=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"40%",children:(0,m.ih)("Email")}),(0,y.jsxs)("th",{width:"30%",children:[(0,m.ih)("Space Used")," / ",(0,m.ih)("Quota")]}),(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Last Login")})]})}),(0,y.jsx)("tbody",{children:i.map((function(e,t){return(0,y.jsx)(mt,{item:e},t)}))})]}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:a,hasNextPage:s,curPerPage:r,resetPerPage:this.props.resetPerPage})]});return i.length?c:o}}]),n}(l.Component),mt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item;return(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:e.email,name:e.email})}),(0,y.jsx)("td",{children:"".concat(f.c.bytesToSize(e.quota_usage)," / ").concat(e.quota_total>0?f.c.bytesToSize(e.quota_total):"--")}),(0,y.jsx)("td",{children:e.last_login?L()(e.last_login).fromNow():"--"})]})})}}]),n}(l.Component),ft=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getUsersListByPage=function(e){var t=i.state.perPage;I.I.sysAdminListLDAPUsers(e,t).then((function(t){i.setState({loading:!1,userList:t.data.ldap_user_list,hasNextPage:t.data.has_next_page,currentPage:e})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getUsersListByPage(1)}))},i.state={loading:!0,errorMsg:"",userList:{},hasNextPage:!1,currentPage:1,perPage:25},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getUsersListByPage(e.state.currentPage)}))}},{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Xe,{currentItem:"ldap"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(pt,{resetPerPage:this.resetPerPage,loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.userList,currentPage:this.state.currentPage,hasNextPage:this.state.hasNextPage,curPerPage:this.state.perPage,getListByPage:this.getUsersListByPage})})]})})]})}}]),n}(l.Component),vt=ft,xt=n(27988),yt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleBatchSetQuotaDialog=function(){i.setState({isBatchSetQuotaDialogOpen:!i.state.isBatchSetQuotaDialogOpen})},i.toggleBatchDeleteUserDialog=function(){i.setState({isBatchDeleteUserDialogOpen:!i.state.isBatchDeleteUserDialogOpen})},i.onUserSelected=function(e){var t=!1,n=[],r=i.state.userList.map((function(i){return i.email===e.email&&(i.isSelected=!i.isSelected),1==i.isSelected?(t=!0,n.push(i)):n=n.filter((function(e){return e.email!=i.email})),i}));i.setState({userList:r,hasUserSelected:t,selectedUserList:n})},i.toggleSelectAllUsers=function(){if(i.state.isAllUsersSelected){var e=i.state.userList.map((function(e){return e.isSelected=!1,e}));i.setState({userList:e,hasUserSelected:!1,isAllUsersSelected:!1,selectedUserList:[]})}else{var t=i.state.userList.map((function(e){return e.isSelected=!0,e}));i.setState({userList:t,hasUserSelected:!0,isAllUsersSelected:!0,selectedUserList:t})}},i.getItems=function(e){I.I.sysAdminSearchUsers(i.state.query.trim(),e,i.state.perPage).then((function(e){i.setState({userList:e.data.user_list,loading:!1,pageInfo:e.data.page_info})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getItems(1)}))},i.deleteUser=function(e,t){I.I.sysAdminDeleteUser(e).then((function(n){var r=i.state.userList.filter((function(t){return t.email!=e}));i.setState({userList:r});var s=(0,m.ih)("Deleted user %s");s=s.replace("%s",t),P.Z.success(s)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.setUserQuotaInBatch=function(e){var t=i.state.selectedUserList.map((function(e){return e.email}));I.I.sysAdminSetUserQuotaInBatch(t,e).then((function(e){var t=i.state.userList.map((function(t){return e.data.success.forEach((function(e){t.email==e.email&&(t.quota_total=e.quota_total)})),t}));i.setState({userList:t})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteUserInBatch=function(){var e=i.state.selectedUserList.map((function(e){return e.email}));I.I.sysAdminDeleteUserInBatch(e).then((function(t){if(t.data.success.length){var n=i.state.userList.filter((function(e){return!t.data.success.some((function(t){return t.email==e.email}))}));i.setState({userList:n,hasUserSelected:e.length!=t.data.success.length});var r=t.data.success.length,s=1==r?(0,m.ih)("Successfully deleted 1 user."):(0,m.ih)("Successfully deleted {user_number_placeholder} users.").replace("{user_number_placeholder}",r);P.Z.success(s)}t.data.failed.forEach((function(e){var t="".concat(e.email,": ").concat(e.error_msg);P.Z.danger(t)}))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.updateUser=function(e,t,n){I.I.sysAdminUpdateUser(e,t,n).then((function(r){var s=i.state.userList.map((function(n){return n.email==e&&(n[t]=r.data[t]),n}));i.setState({userList:s});var a="is_active"==t&&n?r.data.update_status_tip:(0,m.ih)("Edit succeeded");P.Z.success(a)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.updateAdminRole=function(e,t){I.I.sysAdminUpdateAdminRole(e,t).then((function(t){var n=i.state.userList.map((function(n){return n.email==e&&(n.admin_role=t.data.role),n}));i.setState({userList:n}),P.Z.success((0,m.ih)("Edit succeeded"))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.revokeAdmin=function(e,t){I.I.sysAdminUpdateUser(e,"is_staff",!1).then((function(n){var r=i.state.userList.filter((function(t){return t.email!=e}));i.setState({userList:r}),P.Z.success((0,m.ih)("Successfully revoked the admin permission of {placeholder}.").replace("{placeholder}",t))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.handleInputChange=function(e){i.setState({query:e.target.value},i.checkSubmitBtnActive)},i.checkSubmitBtnActive=function(){var e=i.state.query;i.setState({isSubmitBtnActive:e.trim()})},i.getPreviousPageList=function(){i.getItems(i.state.pageInfo.current_page-1)},i.getNextPageList=function(){i.getItems(i.state.pageInfo.current_page+1)},i.handleKeyDown=function(e){13===e.keyCode&&(i.state.isSubmitBtnActive&&i.getItems())},i.state={query:"",isSubmitBtnActive:!1,loading:!0,errorMsg:"",userList:[],pageInfo:{has_next_page:!1,current_page:1},currentPage:1,perPage:25,hasUserSelected:!1,selectedUserList:[],isAllUsersSelected:!1,isBatchSetQuotaDialogOpen:!1,isBatchDeleteUserDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(document.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({query:t.get("query")||"",currentPage:parseInt(t.get("page")||i),perPage:parseInt(t.get("per_page")||r)},(function(){e.getItems(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state,t=e.query,n=e.isSubmitBtnActive,r=this.state,s=r.hasUserSelected,a=r.isBatchDeleteUserDialogOpen,o=r.isBatchSetQuotaDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[s?(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleBatchSetQuotaDialog,children:(0,m.ih)("Set Quota")}),(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleBatchDeleteUserDialog,children:(0,m.ih)("Delete Users")})]})})):(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Users")})}),(0,y.jsxs)("div",{className:"cur-view-content",children:[(0,y.jsxs)("div",{className:"mt-4 mb-6",children:[(0,y.jsx)("h4",{className:"border-bottom font-weight-normal mb-2 pb-1",children:(0,m.ih)("Search Users")}),(0,y.jsxs)(Ne.Z,{tag:"div",children:[(0,y.jsx)(Me.Z,{row:!0,children:(0,y.jsx)(xt.Z,{sm:5,children:(0,y.jsx)(te.Z,{type:"text",name:"query",value:t,placeholder:(0,m.ih)("Search users"),onChange:this.handleInputChange,onKeyDown:this.handleKeyDown})})}),(0,y.jsx)(Me.Z,{row:!0,children:(0,y.jsx)(xt.Z,{sm:{size:5},children:(0,y.jsx)("button",{className:"btn btn-outline-primary",disabled:!n,onClick:this.getItems,children:(0,m.ih)("Submit")})})})]})]}),(0,y.jsxs)("div",{className:"mt-4 mb-6",children:[(0,y.jsx)("h4",{className:"border-bottom font-weight-normal mb-2 pb-1",children:(0,m.ih)("Result")}),(0,y.jsx)(at,{isLDAPImported:!1,isAdmin:!1,isSearchResult:!0,loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.userList,updateUser:this.updateUser,deleteUser:this.deleteUser,updateAdminRole:this.updateAdminRole,revokeAdmin:this.revokeAdmin,onUserSelected:this.onUserSelected,isAllUsersSelected:this.isAllUsersSelected,toggleSelectAllUsers:this.toggleSelectAllUsers})]})]})]})}),o&&(0,y.jsx)(Te,{toggle:this.toggleBatchSetQuotaDialog,updateQuota:this.setUserQuotaInBatch}),a&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Users"),message:(0,m.ih)("Are you sure you want to delete the selected user(s) ?"),executeOperation:this.deleteUserInBatch,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleBatchDeleteUserDialog}),this.state.pageInfo&&(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPageList,gotoNextPage:this.getNextPageList,currentPage:this.state.pageInfo.current_page,hasNextPage:this.state.pageInfo.has_next_page,curPerPage:this.state.perPage,resetPerPage:this.resetPerPage})]})}}]),n}(l.Component),bt=yt,jt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggle=function(){i.props.toggle()},i.handleRateLimitChange=function(e){var t=e.target.value;i.setState({rateLimit:t,isSubmitBtnActive:""!=t.trim()})},i.handleKeyDown=function(e){"Enter"==e.key&&(i.handleSubmit(),e.preventDefault())},i.handleSubmit=function(){i.props.updateUploadDownloadRateLimit(i.props.uploadOrDownload,i.state.rateLimit.trim()),i.toggle()},i.state={rateLimit:"",isSubmitBtnActive:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.rateLimit,n=e.isSubmitBtnActive;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.toggle,children:"upload"==this.props.uploadOrDownload?(0,m.ih)("Set Upload Rate Limit"):(0,m.ih)("Set Download Rate Limit")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)(Ne.Z,{children:(0,y.jsxs)(Me.Z,{children:[(0,y.jsxs)(Ce.Z,{children:[(0,y.jsx)(te.Z,{type:"text",className:"form-control",value:t,onKeyDown:this.handleKeyDown,onChange:this.handleRateLimitChange}),(0,y.jsx)(Ae.Z,{addonType:"append",children:(0,y.jsx)(Le.Z,{children:"kB/s"})})]}),(0,y.jsxs)("p",{className:"small text-secondary mt-2 mb-2",children:[(0,m.ih)("An integer that is greater than or equal to 0."),(0,y.jsx)("br",{}),(0,m.ih)("Tip: 0 means default limit")]})]})})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,disabled:!n,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),St=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleInputChange=function(e){var t=e.target.value;i.setState({value:t})},i.handleKeyDown=function(e){"Enter"==e.key&&(i.handleSubmit(),e.preventDefault())},i.handleSubmit=function(){i.props.updateValue(i.state.value.trim()),i.props.toggleDialog()},i.state={value:i.props.value,isSubmitBtnActive:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.toggleDialog;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:e,children:[(0,y.jsx)(ke.Z,{toggle:e,children:this.props.dialogTitle}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)(Ne.Z,{children:(0,y.jsx)(Me.Z,{children:(0,y.jsx)(te.Z,{type:"text",value:this.state.value,onKeyDown:this.handleKeyDown,onChange:this.handleInputChange})})})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:e,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),Dt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"info",urlPart:"",text:(0,m.ih)("Info")},{name:"owned-repos",urlPart:"owned-libraries",text:(0,m.ih)("Owned Libraries")},{name:"shared-repos",urlPart:"shared-libraries",text:(0,m.ih)("Shared Libraries")},{name:"links",urlPart:"shared-links",text:(0,m.ih)("Shared Links")},{name:"groups",urlPart:"groups",text:(0,m.ih)("Groups")}],i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.currentItem,n=e.email,i=e.userName;return(0,y.jsxs)("div",{children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsxs)("h3",{className:"sf-heading",children:[(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/users/"),children:(0,m.ih)("Users")})," / ",i]})}),(0,y.jsx)("ul",{className:"nav border-bottom mx-4",children:this.navItems.map((function(e,i){return(0,y.jsx)("li",{className:"nav-item mr-2",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/users/").concat(encodeURIComponent(n),"/").concat(e.urlPart),className:"nav-link ".concat(t==e.name?" active":""),children:e.text})},i)}))})]})}}]),n}(l.Component),wt=Dt,It=window.sysadmin.pageOptions.twoFactorAuthEnabled,Pt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleSetQuotaDialog=function(){i.setState({isSetQuotaDialogOpen:!i.state.isSetQuotaDialogOpen})},i.toggleSetUserUploadRateLimitDialog=function(){i.setState({isSetUserUploadRateLimitDialogOpen:!i.state.isSetUserUploadRateLimitDialogOpen})},i.toggleSetUserDownloadRateLimitDialog=function(){i.setState({isSetUserDownloadRateLimitDialogOpen:!i.state.isSetUserDownloadRateLimitDialogOpen})},i.updateQuota=function(e){i.props.updateUser("quota_total",e)},i.updateUploadDownloadRateLimit=function(e,t){"upload"==e&&i.props.updateUser("upload_rate_limit",t),"download"==e&&i.props.updateUser("download_rate_limit",t)},i.toggleDialog=function(e,t){i.setState({currentKey:e,dialogTitle:t,isUpdateUserDialogOpen:!i.state.isUpdateUserDialogOpen})},i.toggleSetNameDialog=function(){i.toggleDialog("name",(0,m.ih)("Set Name"))},i.toggleSetUserLoginIDDialog=function(){i.toggleDialog("login_id",(0,m.ih)("Set Login ID"))},i.toggleSetUserComtactEmailDialog=function(){i.toggleDialog("contact_email",(0,m.ih)("Set Contact Email"))},i.toggleSetUserReferenceIDDialog=function(){i.toggleDialog("reference_id",(0,m.ih)("Set Reference ID"))},i.updateValue=function(e){i.props.updateUser(i.state.currentKey,e)},i.toggleUpdateUserDialog=function(){i.toggleDialog("","")},i.showEditIcon=function(e){return(0,y.jsx)("span",{title:(0,m.ih)("Edit"),className:"fa fa-pencil-alt attr-action-icon",onClick:e})},i.state={currentKey:"",dialogTitle:"",isSetQuotaDialogOpen:!1,isSetUserUploadRateLimitDialogOpen:!1,isSetUserDownloadRateLimitDialogOpen:!1,isUpdateUserDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg;if(t)return(0,y.jsx)(Z.Z,{});if(n)return(0,y.jsx)("p",{className:"error text-center mt-4",children:n});var i=this.props.userInfo,r=this.state,s=r.currentKey,a=r.dialogTitle,o=r.isSetQuotaDialogOpen,c=r.isUpdateUserDialogOpen,h=r.isSetUserUploadRateLimitDialogOpen,d=r.isSetUserDownloadRateLimitDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("dl",{className:"m-0",children:[(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Avatar")}),(0,y.jsx)("dd",{className:"info-item-content",children:(0,y.jsx)("img",{src:i.avatar_url,alt:i.name,width:"80",className:"rounded"})}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Email")}),(0,y.jsx)("dd",{className:"info-item-content",children:i.email}),i.org_name&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Organization")}),(0,y.jsx)("dd",{className:"info-item-content",children:i.org_name})]}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Name")}),(0,y.jsxs)("dd",{className:"info-item-content",children:[i.name||"--",this.showEditIcon(this.toggleSetNameDialog)]}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Login ID")}),(0,y.jsxs)("dd",{className:"info-item-content",children:[i.login_id||"--",this.showEditIcon(this.toggleSetUserLoginIDDialog)]}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Contact Email")}),(0,y.jsxs)("dd",{className:"info-item-content",children:[i.contact_email||"--",this.showEditIcon(this.toggleSetUserComtactEmailDialog)]}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Reference ID")}),(0,y.jsxs)("dd",{className:"info-item-content",children:[i.reference_id||"--",this.showEditIcon(this.toggleSetUserReferenceIDDialog)]}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Space Used / Quota")}),(0,y.jsxs)("dd",{className:"info-item-content",children:["".concat(f.c.bytesToSize(i.quota_usage)," / ").concat(i.quota_total>0?f.c.bytesToSize(i.quota_total):"--"),this.showEditIcon(this.toggleSetQuotaDialog)]}),m._y&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Upload Rate Limit")}),(0,y.jsxs)("dd",{className:"info-item-content",children:[i.upload_rate_limit>0?i.upload_rate_limit+" kB/s":"--",this.showEditIcon(this.toggleSetUserUploadRateLimitDialog)]}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Download Rate Limit")}),(0,y.jsxs)("dd",{className:"info-item-content",children:[i.download_rate_limit>0?i.download_rate_limit+" kB/s":"--",this.showEditIcon(this.toggleSetUserDownloadRateLimitDialog)]})]}),It&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Two-Factor Authentication")}),(0,y.jsxs)("dd",{className:"info-item-content",children:[i.has_default_device?(0,y.jsxs)(Me.Z,{children:[(0,y.jsx)("p",{className:"mb-1",children:(0,m.ih)("Status: enabled")}),(0,y.jsx)(w.Z,{onClick:this.props.disable2FA,children:(0,m.ih)("Disable Two-Factor Authentication")})]}):(0,y.jsx)(Me.Z,{children:(0,y.jsx)(w.Z,{disabled:!0,children:(0,m.ih)("Disable Two-Factor Authentication")})}),(0,y.jsx)(Me.Z,{check:!0,children:(0,y.jsxs)(Ue.Z,{check:!0,children:[(0,y.jsx)(te.Z,{type:"checkbox",checked:i.is_force_2fa,onChange:this.props.toggleForce2fa}),(0,y.jsx)("span",{children:(0,m.ih)("Force Two-Factor Authentication")})]})})]})]})]}),o&&(0,y.jsx)(Te,{updateQuota:this.updateQuota,toggle:this.toggleSetQuotaDialog}),m._y&&h&&(0,y.jsx)(jt,{uploadOrDownload:"upload",updateUploadDownloadRateLimit:this.updateUploadDownloadRateLimit,toggle:this.toggleSetUserUploadRateLimitDialog}),m._y&&d&&(0,y.jsx)(jt,{uploadOrDownload:"download",updateUploadDownloadRateLimit:this.updateUploadDownloadRateLimit,toggle:this.toggleSetUserDownloadRateLimitDialog}),c&&(0,y.jsx)(St,{dialogTitle:a,value:i[s],updateValue:this.updateValue,toggleDialog:this.toggleUpdateUserDialog})]})}}]),n}(l.Component),Zt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).updateUser=function(e,t){var n=i.state.userInfo.email;I.I.sysAdminUpdateUser(n,e,t).then((function(t){var n=i.state.userInfo;n[e]=t.data[e],i.setState({userInfo:n}),P.Z.success((0,m.ih)("Edit succeeded"))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.disable2FA=function(){var e=i.state.userInfo.email;I.I.sysAdminDeleteTwoFactorAuth(e).then((function(e){var t=i.state.userInfo;t.has_default_device=!1,i.setState({userInfo:t})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.toggleForce2fa=function(e){var t=i.state.userInfo.email,n=e.target.checked;I.I.sysAdminSetForceTwoFactorAuth(t,n).then((function(e){var t=i.state.userInfo;t.is_force_2fa=n,i.setState({userInfo:t})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",userInfo:{}},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=decodeURIComponent(this.props.email);I.I.sysAdminGetUser(t,160).then((function(t){e.setState({loading:!1,userInfo:t.data})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this.state.userInfo;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(wt,{currentItem:"info",email:this.props.email,userName:e.name}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Pt,{loading:this.state.loading,errorMsg:this.state.errorMsg,userInfo:this.state.userInfo,updateUser:this.updateUser,disable2FA:this.disable2FA,toggleForce2fa:this.toggleForce2fa})})]})})]})}}]),n}(l.Component),kt=n(33028),_t=window.sysadmin.pageOptions.enableSysAdminViewRepo,Nt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var s=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No libraries")})}),a=(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%"}),(0,y.jsx)("th",{width:"35%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Size")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Last Update")}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(Mt,{item:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,deleteRepo:e.props.deleteRepo,transferRepo:e.props.transferRepo},n)}))})]})});return r.length?a:s}}]),n}(l.Component),Mt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.toggleDeleteDialog=function(){i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen})},i.deleteRepo=function(){i.props.deleteRepo(i.props.item.id)},i.toggleTransferDialog=function(){i.setState({isTransferDialogOpen:!i.state.isTransferDialogOpen})},i.transferRepo=function(e){i.props.transferRepo(i.props.item.id,e.email),i.toggleTransferDialog()},i.renderRepoName=function(){var e=i.props.item;return e.name?m._y&&_t&&!e.encrypted?(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/libraries/").concat(e.id,"/"),children:e.name}):e.name:(0,m.ih)("Broken ({repo_id_placeholder})").replace("{repo_id_placeholder}",e.id)},i.translateOperations=function(e){var t="";switch(e){case"Delete":t=(0,m.ih)("Delete");break;case"Transfer":t=(0,m.ih)("Transfer")}return t},i.onMenuItemClick=function(e){switch(e){case"Delete":i.toggleDeleteDialog();break;case"Transfer":i.toggleTransferDialog()}},i.state={isOpIconShown:!1,highlight:!1,isDeleteDialogOpen:!1,isTransferDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state,n=t.isOpIconShown,i=t.isDeleteDialogOpen,r=t.isTransferDialogOpen,s=f.c.getLibIconUrl(e),a=f.c.getLibIconTitle(e),o=''+f.c.HTMLescape(e.name)+"",c=(0,m.ih)("Are you sure you want to delete {placeholder} ?").replace("{placeholder}",o);return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)("img",{src:s,title:a,alt:a,width:"24"})}),(0,y.jsx)("td",{children:this.renderRepoName()}),(0,y.jsx)("td",{children:f.c.bytesToSize(e.size)}),(0,y.jsx)("td",{children:L()(e.last_modified).fromNow()}),(0,y.jsx)("td",{children:n&&(0,y.jsx)(Je.Z,{operations:["Delete","Transfer"],translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),i&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Library"),message:c,executeOperation:this.deleteRepo,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleDeleteDialog}),r&&(0,y.jsx)(kt.Z,{itemName:e.name,submit:this.transferRepo,canTransferToDept:!1,toggleDialog:this.toggleTransferDialog})]})}}]),n}(l.Component),Ct=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).deleteRepo=function(e){I.I.sysAdminDeleteRepo(e).then((function(t){var n=i.state.repoList.filter((function(t){return t.id!=e}));i.setState({repoList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.transferRepo=function(e,t){I.I.sysAdminTransferRepo(e,t).then((function(t){var n=i.state.repoList.filter((function(t){return t.id!=e}));i.setState({repoList:n});var r=(0,m.ih)("Successfully transferred the library.");P.Z.success(r)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",userInfo:{},repoList:[]},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=decodeURIComponent(this.props.email);I.I.sysAdminGetUser(t).then((function(t){e.setState({userInfo:t.data})})),I.I.sysAdminListReposByOwner(t).then((function(t){e.setState({loading:!1,repoList:t.data.repos})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(wt,{currentItem:"owned-repos",email:this.props.email,userName:this.state.userInfo.name}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Nt,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.repoList,deleteRepo:this.deleteRepo,transferRepo:this.transferRepo})})]})})]})}}]),n}(l.Component),At=window.sysadmin.pageOptions.enableSysAdminViewRepo,Lt=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg,i=e.items;if(t)return(0,y.jsx)(Z.Z,{});if(n)return(0,y.jsx)("p",{className:"error text-center mt-4",children:n});var r=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No libraries")})}),s=(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%"}),(0,y.jsx)("th",{width:"35%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Share From")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Size")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Last Update")})]})}),(0,y.jsx)("tbody",{children:i.map((function(e,t){return(0,y.jsx)(Ot,{item:e},t)}))})]})});return i.length?s:r}}]),n}(l.Component),Ot=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,r.Z)(this,n);for(var i=arguments.length,s=new Array(i),a=0;a0)for(var n=0;n0)for(var n=0;n0&&this.state.errorMsg.map((function(e,t){var n="";return n=e.email?e.email+": "+e.error_msg:e,(0,y.jsx)("tr",{children:(0,y.jsx)("td",{colSpan:3,children:(0,y.jsx)("p",{className:"error",children:n})})},t)}))]})]}),(0,y.jsx)("div",{className:"share-list-container",children:(0,y.jsxs)("table",{className:"table-thead-hidden",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"50%",children:(0,m.ih)("User")}),(0,y.jsx)("th",{width:"35%",children:(0,m.ih)("Permission")}),(0,y.jsx)("th",{width:"15%"})]})}),(0,y.jsx)(rn,{items:e,permissions:this.permissions,deleteShareItem:this.deleteShareItem,onChangeUserPermission:this.onChangeUserPermission})]})})]})}}]),n}(l.Component),an=sn,on=n(94414),ln=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onMouseEnter=function(){i.setState({isOperationShow:!0})},i.onMouseLeave=function(){i.setState({isOperationShow:!1})},i.deleteShareItem=function(){var e=i.props.item;i.props.deleteShareItem(e.group_id)},i.onChangeUserPermission=function(e){var t=i.props.item;i.props.onChangeUserPermission(t,e)},i.state={isOperationShow:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=f.c.getSharedPermission(e);return(0,y.jsxs)("tr",{onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,children:[(0,y.jsx)("td",{className:"name",children:e.group_name}),(0,y.jsx)("td",{children:(0,y.jsx)(tn.Z,{repoID:e.repo_id,isTextMode:!0,autoFocus:!0,isEditIconShow:this.state.isOperationShow,currentPermission:t,permissions:this.props.permissions,onPermissionChanged:this.onChangeUserPermission})}),(0,y.jsx)("td",{children:(0,y.jsx)("span",{className:"sf2-icon-x3 action-icon ".concat(this.state.isOperationShow?"":"hide"),onClick:this.deleteShareItem,title:(0,m.ih)("Delete")})})]})}}]),n}(l.Component),cn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props.items;return(0,y.jsx)("tbody",{children:t.map((function(t,n){return(0,y.jsx)(ln,{item:t,permissions:e.props.permissions,deleteShareItem:e.props.deleteShareItem,onChangeUserPermission:e.props.onChangeUserPermission},n)}))})}}]),n}(l.Component),hn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleSelectChange=function(e){i.setState({selectedOption:e})},i.loadOptions=function(){I.I.shareableGroups().then((function(e){i.options=[];for(var t=0;t0)for(var n=0;n0)for(var n=0;n0&&this.state.errorMsg.map((function(e,t){var n=e.group_name+": "+e.error_msg;return(0,y.jsx)("tr",{children:(0,y.jsx)("td",{colSpan:3,children:(0,y.jsx)("p",{className:"error",children:n})})},t)}))]})]}),(0,y.jsx)("div",{className:"share-list-container",children:(0,y.jsxs)("table",{className:"table-thead-hidden",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"50%",children:(0,m.ih)("Group")}),(0,y.jsx)("th",{width:"35%",children:(0,m.ih)("Permission")}),(0,y.jsx)("th",{width:"15%"})]})}),(0,y.jsx)(cn,{items:this.state.sharedItems,permissions:this.permissions,deleteShareItem:this.deleteShareItem,onChangeUserPermission:this.onChangeUserPermission})]})})]})}}]),n}(l.Component),dn=hn,un=(n(36491),function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getInitialActiveTab=function(){return"shareToUser"},i.toggle=function(e){i.state.activeTab!==e&&i.setState({activeTab:e})},i.renderDirContent=function(){var e=i.state.activeTab,t=i.props,n=t.enableDirPrivateShare,r=t.isGroupOwnedRepo;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("div",{className:"share-dialog-side",children:(0,y.jsx)(Kt.Z,{pills:!0,children:n&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(Xt.Z,{children:(0,y.jsx)($t.Z,{className:"shareToUser"===e?"active":"",onClick:i.toggle.bind((0,ee.Z)(i),"shareToUser"),children:(0,m.ih)("Share to user")})}),(0,y.jsx)(Xt.Z,{children:(0,y.jsx)($t.Z,{className:"shareToGroup"===e?"active":"",onClick:i.toggle.bind((0,ee.Z)(i),"shareToGroup"),children:(0,m.ih)("Share to group")})})]})})}),(0,y.jsx)("div",{className:"share-dialog-main",children:(0,y.jsx)(Jt.Z,{activeTab:i.state.activeTab,children:n&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(en.Z,{tabId:"shareToUser",children:(0,y.jsx)(an,{itemType:"library",isGroupOwnedRepo:r,itemPath:i.props.itemPath,repoID:i.props.repoID,isRepoOwner:i.state.isRepoOwner})}),(0,y.jsx)(en.Z,{tabId:"shareToGroup",children:(0,y.jsx)(dn,{itemType:"library",isGroupOwnedRepo:r,itemPath:i.props.itemPath,repoID:i.props.repoID,isRepoOwner:i.state.isRepoOwner})})]})})})]})},i.state={activeTab:i.getInitialActiveTab(),isRepoOwner:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsx)("div",{children:(0,y.jsxs)(u.Z,{isOpen:!0,style:{maxWidth:"720px"},className:"share-dialog",toggle:this.props.toggleDialog,children:[(0,y.jsxs)(ke.Z,{toggle:this.props.toggleDialog,children:[(0,m.ih)("Share")," ",(0,y.jsx)("span",{className:"op-target",title:this.props.itemName,children:this.props.itemName})]}),(0,y.jsx)(_e.Z,{className:"share-dialog-content",children:this.renderDirContent()})]})})}}]),n}(l.Component)),gn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).submit=function(){var e=i.state.keepDays;i.state.autoHistory&&(e=i.state.expireDays);var t=i.props.repoID;if(/^-?\d+$/.test(e)){var n=(0,m.ih)("Successfully set library history.");I.I.sysAdminUpdateRepoHistorySetting(t,e).then((function(e){P.Z.success(n),i.setState({keepDays:e.data.keep_days}),i.props.toggleDialog()})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))}else i.setState({errorInfo:(0,m.ih)("Please enter a non-negative integer")})},i.handleKeyDown=function(e){"Enter"===e.key&&(i.submit(),e.preventDefault())},i.onChange=function(e){var t=e.target.value;i.setState({keepDays:t,expireDays:t})},i.setLimitDays=function(e){"allHistory"===e?i.setState({keepDays:-1}):"noHistory"===e?i.setState({keepDays:0}):i.setState({disabled:!1}),i.setState({allHistory:"allHistory"===e,noHistory:"noHistory"===e,autoHistory:"autoHistory"===e})},i.state={keepDays:-1,expireDays:30,disabled:!0,allHistory:!0,noHistory:!1,autoHistory:!1,errorInfo:""},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminGetRepoHistorySetting(this.props.repoID).then((function(t){e.setState({keepDays:t.data.keep_days,allHistory:t.data.keep_days<0,noHistory:0===t.data.keep_days,autoHistory:t.data.keep_days>0,disabled:!(t.data.keep_days>0),expireDays:t.data.keep_days>0?t.data.keep_days:30})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))}},{key:"render",value:function(){var e=this,t=this.props.itemName;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggleDialog,children:[(0,y.jsxs)(ke.Z,{toggle:this.props.toggleDialog,children:[(0,y.jsx)("span",{className:"op-target",title:t,children:t})," ",(0,m.ih)("History Setting")]}),(0,y.jsx)(_e.Z,{children:(0,y.jsxs)(Ne.Z,{children:[(0,y.jsxs)(Me.Z,{check:!0,children:[(0,y.jsx)(te.Z,{type:"radio",name:"radio1",checked:this.state.allHistory,onChange:function(){e.setLimitDays("allHistory")}})," ",(0,y.jsx)(Ue.Z,{children:(0,m.ih)("Keep full history")})]}),(0,y.jsxs)(Me.Z,{check:!0,children:[(0,y.jsx)(te.Z,{type:"radio",name:"radio1",checked:this.state.noHistory,onChange:function(){e.setLimitDays("noHistory")}})," ",(0,y.jsx)(Ue.Z,{children:(0,m.ih)("Don't keep history")})]}),(0,y.jsxs)(Me.Z,{check:!0,children:[(0,y.jsx)(te.Z,{type:"radio",name:"radio1",checked:this.state.autoHistory,onChange:function(){e.setLimitDays("autoHistory")}})," ",(0,y.jsx)(Ue.Z,{children:(0,m.ih)("Only keep a period of history:")}),(0,y.jsx)(te.Z,{type:"text",className:"expire-input",value:this.state.expireDays,onChange:this.onChange,disabled:this.state.disabled,onKeyDown:this.handleKeyDown})," ",(0,y.jsx)(Ue.Z,{children:(0,y.jsx)("span",{children:(0,m.ih)("days")})})]}),this.state.errorInfo&&(0,y.jsx)(Fe.Z,{color:"danger",children:this.state.errorInfo})]})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggleDialog,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.submit,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),pn=window.sysadmin.pageOptions.enableSysAdminViewRepo,mn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.getPreviousPageList=function(){i.props.getListByPage(i.props.pageInfo.current_page-1)},i.getNextPageList=function(){i.props.getListByPage(i.props.pageInfo.current_page+1)},i.sortByFileCount=function(e){e.preventDefault(),i.props.sortItems("file_count")},i.sortBySize=function(e){e.preventDefault(),i.props.sortItems("size")},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items,s=t.pageInfo,a=t.curPerPage,o=t.sortBy;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center",children:i});var c=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No libraries")})}),h=(0,y.jsx)("span",{className:"fas fa-sort"}),d=(0,y.jsx)("span",{className:"fas fa-caret-down"}),u=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%"}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"15%",children:void 0!=o?(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("a",{className:"d-inline-block table-sort-op",href:"#",onClick:this.sortByFileCount,children:[(0,m.ih)("Files")," ","file_count"==o?d:h]})," / ",(0,y.jsxs)("a",{className:"d-inline-block table-sort-op",href:"#",onClick:this.sortBySize,children:[(0,m.ih)("Size")," ","size"==o?d:h]})]}):(0,m.ih)("Files")/(0,m.ih)("Size")}),(0,y.jsx)("th",{width:"32%",children:"ID"}),(0,y.jsx)("th",{width:"18%",children:(0,m.ih)("Owner")}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(fn,{repo:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,onDeleteRepo:e.props.onDeleteRepo,onTransferRepo:e.props.onTransferRepo},n)}))})]}),s&&(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPageList,gotoNextPage:this.getNextPageList,currentPage:s.current_page,hasNextPage:s.has_next_page,curPerPage:a,resetPerPage:this.props.resetPerPage})]});return r.length?u:c}}]),n}(l.Component),fn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onDeleteRepo=function(e){I.I.sysAdminDeleteRepo(e.id).then((function(t){i.props.onDeleteRepo(e),i.setState({isDeleteDialogOpen:!1,isRepoDeleted:!0});var n=(0,m.ih)("Successfully deleted {name}.").replace("{name}",e.name);P.Z.success(n)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t),i.setState({isRepoDeleted:!1})}))},i.onTransferRepo=function(e){I.I.sysAdminTransferRepo(i.props.repo.id,e.email).then((function(e){i.props.onTransferRepo(e.data);var t=(0,m.ih)("Successfully transferred the library.");P.Z.success(t)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)})),i.toggleTransferDialog()},i.handleMouseOver=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseOut=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.onMenuItemClick=function(e){switch(e){case"Share":i.toggleShareDialog();break;case"Delete":i.toggleDeleteDialog();break;case"Transfer":i.toggleTransferDialog();break;case"History Setting":i.toggleHistorySettingDialog()}},i.toggleShareDialog=function(){i.setState({isShareDialogOpen:!i.state.isShareDialogOpen})},i.toggleDeleteDialog=function(){i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen})},i.toggleTransferDialog=function(){i.setState({isTransferDialogOpen:!i.state.isTransferDialogOpen})},i.toggleHistorySettingDialog=function(){i.setState({isHistorySettingDialogOpen:!i.state.isHistorySettingDialogOpen})},i.renderRepoName=function(){var e=i.props.repo;return e.name?m._y&&pn&&!e.encrypted?(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/libraries/").concat(e.id,"/"),children:e.name}):e.name:"--"},i.translateOperations=function(e){var t="";switch(e){case"Share":t=(0,m.ih)("Share");break;case"Delete":t=(0,m.ih)("Delete");break;case"Transfer":t=(0,m.ih)("Transfer");break;case"History Setting":t=(0,m.ih)("History Setting")}return t},i.getOperations=function(){var e=["Delete","Transfer"];return i.props.repo.encrypted||e.push("Share"),e.push("History Setting"),e},i.state={isOpIconShown:!1,highlight:!1,isShareDialogOpen:!1,isDeleteDialogOpen:!1,isTransferDialogOpen:!1,isHistorySettingDialogOpen:!1,isRepoDeleted:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e,t=this.props.repo,n=this.state,i=n.isOpIconShown,r=n.isShareDialogOpen,s=n.isDeleteDialogOpen,a=n.isTransferDialogOpen,o=n.isHistorySettingDialogOpen,c=f.c.getLibIconUrl(t),h=f.c.getLibIconTitle(t),d=t.owner_email.indexOf("@seafile_group"),u=-1!=d;return u&&(e=t.owner_email.substring(0,d)),(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseOver,onMouseLeave:this.handleMouseOut,children:[(0,y.jsx)("td",{children:(0,y.jsx)("img",{src:c,title:h,alt:h,width:"24"})}),(0,y.jsx)("td",{children:this.renderRepoName()}),(0,y.jsx)("td",{children:"".concat(t.file_count," / ").concat(f.c.bytesToSize(t.size))}),(0,y.jsx)("td",{children:t.id}),(0,y.jsx)("td",{children:u?(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/departments/").concat(e,"/"),children:t.owner_name}):(0,y.jsx)(we,{email:t.owner_email,name:t.owner_name})}),(0,y.jsx)("td",{children:!u&&i&&(0,y.jsx)(Je.Z,{operations:this.getOperations(),translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),r&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(un,{itemName:t.name,itemPath:"/",repoID:t.id,isGroupOwnedRepo:u,repoEncrypted:t.encrypted,enableDirPrivateShare:!0,userPerm:t.permission,toggleDialog:this.toggleShareDialog})}),s&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(Qt.Z,{repo:t,isRepoDeleted:this.state.isRepoDeleted,onDeleteRepo:this.onDeleteRepo,toggle:this.toggleDeleteDialog})}),a&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(kt.Z,{itemName:t.name,submit:this.onTransferRepo,canTransferToDept:!1,toggleDialog:this.toggleTransferDialog})}),o&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(gn,{repoID:t.id,itemName:t.name,toggleDialog:this.toggleHistorySettingDialog})})]})}}]),n}(l.Component),vn=mn,xn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleCreateRepoDialog=function(){i.setState({isCreateRepoDialogOpen:!i.state.isCreateRepoDialogOpen})},i.getReposByPage=function(e){var t=i.state,n=t.perPage,r=t.sortBy;I.I.sysAdminListAllRepos(e,n,r).then((function(e){i.setState({loading:!1,repos:e.data.repos,pageInfo:e.data.page_info})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.sortItems=function(e){i.setState({currentPage:1,sortBy:e},(function(){var e=new URL(location.href),t=new URLSearchParams(e.search),n=i.state,r=n.currentPage,s=n.sortBy;t.set("page",r),t.set("order_by",s),e.search=t.toString(),(0,g.c4)(e.toString()),i.getReposByPage(r)}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getReposByPage(1)}))},i.createRepo=function(e,t){I.I.sysAdminCreateRepo(e,t).then((function(e){i.state.repos.unshift(e.data),i.setState({repos:i.state.repos})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.onDeleteRepo=function(e){var t=i.state.repos.filter((function(t){return t.id!=e.id}));i.setState({repos:t})},i.onTransferRepo=function(e){var t=i.state.repos.map((function(t){return t.id==e.id?e:t}));i.setState({repos:t})},i.getSearch=function(){return(0,y.jsx)(Qe,{placeholder:(0,m.ih)("Search libraries by name or ID"),submit:i.searchRepos})},i.searchRepos=function(e){i.getValueLength(e)<3?P.Z.notify((0,m.ih)("Required at least three letters.")):(0,g.c4)("".concat(m.ze,"sys/search-libraries/?name_or_id=").concat(encodeURIComponent(e)))},i.state={loading:!0,errorMsg:"",repos:[],pageInfo:{},perPage:25,sortBy:"",isCreateRepoDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=void 0===i?1:i,s=n.perPage,a=n.sortBy;this.setState({sortBy:t.get("order_by")||a,perPage:parseInt(t.get("per_page")||s),currentPage:parseInt(t.get("page")||r)},(function(){e.getReposByPage(e.state.currentPage)}))}},{key:"getValueLength",value:function(e){for(var t,n=0,i=0,r=e.length;i=128&&t<=2047?n+=2:t>=2048&&t<=65535&&(n+=3);return n}},{key:"render",value:function(){var e=this.state.isCreateRepoDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({search:this.getSearch()},this.props),{},{children:(0,y.jsxs)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleCreateRepoDialog,children:[(0,y.jsx)("i",{className:"fas fa-plus-square text-secondary mr-1"}),(0,m.ih)("New Library")]})})),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Gt,{currentItem:"all"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(vn,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.repos,sortBy:this.state.sortBy,sortItems:this.sortItems,pageInfo:this.state.pageInfo,curPerPage:this.state.perPage,getListByPage:this.getReposByPage,resetPerPage:this.resetPerPage,onDeleteRepo:this.onDeleteRepo,onTransferRepo:this.onTransferRepo})})]})}),e&&(0,y.jsx)(Wt,{createRepo:this.createRepo,toggleDialog:this.toggleCreateRepoDialog})]})}}]),n}(l.Component),yn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg,i=e.items;return t?(0,y.jsx)(Z.Z,{}):n?(0,y.jsx)("p",{className:"error text-center",children:n}):(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"33%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"34%",children:"ID"}),(0,y.jsx)("th",{width:"33%",children:(0,m.ih)("Description")})]})}),(0,y.jsx)("tbody",{children:i.map((function(e,t){return(0,y.jsx)(bn,{item:e},t)}))})]})})}}]),n}(l.Component),bn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item;return(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/libraries/").concat(e.id,"/"),children:e.name})}),(0,y.jsx)("td",{children:e.id}),(0,y.jsx)("td",{children:e.description})]})}}]),n}(l.Component),jn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).state={loading:!0,errorMsg:"",items:[]},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminGetSystemRepoInfo().then((function(t){var n=[];n.push(t.data),e.setState({items:n,loading:!1})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Gt,{currentItem:"system"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(yn,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.items})})]})})]})}}]),n}(l.Component),Sn=window.sysadmin.pageOptions.trashReposExpireDays,Dn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.getPreviousPageList=function(){i.props.getListByPage(i.props.pageInfo.current_page-1)},i.getNextPageList=function(){i.props.getListByPage(i.props.pageInfo.current_page+1)},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items,s=t.pageInfo,a=t.curPerPage;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var o=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No deleted libraries")})}),c=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("p",{className:"mt-4 small text-secondary",children:(0,m.ih)("Tip: libraries deleted {trashReposExpireDays} days ago will be cleaned automatically.").replace("{trashReposExpireDays}",Sn)}),(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%"}),(0,y.jsx)("th",{width:"43%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"27%",children:(0,m.ih)("Owner")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Deleted Time")}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(wn,{repo:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,onDeleteRepo:e.props.onDeleteRepo,onRestoreRepo:e.props.onRestoreRepo},n)}))})]}),s&&(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPageList,gotoNextPage:this.getNextPageList,currentPage:s.current_page,hasNextPage:s.has_next_page,curPerPage:a,resetPerPage:this.props.resetPerPage})]});return r.length?c:o}}]),n}(l.Component),wn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseOver=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseOut=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.onDeleteRepo=function(){var e=i.props.repo;I.I.sysAdminDeleteTrashRepo(e.id).then((function(t){i.props.onDeleteRepo(e);var n=(0,m.ih)("Successfully deleted {name}.").replace("{name}",e.name);P.Z.success(n)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.onRestoreRepo=function(){var e=i.props.repo;I.I.sysAdminRestoreTrashRepo(e.id).then((function(t){i.props.onRestoreRepo(e);var n=(0,m.ih)("Successfully restored the library.");P.Z.success(n)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.toggleDeleteRepoDialog=function(e){e&&e.preventDefault(),i.setState({isDeleteRepoDialogOpen:!i.state.isDeleteRepoDialogOpen})},i.toggleRestoreRepoDialog=function(e){e&&e.preventDefault(),i.setState({isRestoreRepoDialogOpen:!i.state.isRestoreRepoDialogOpen})},i.translateOperations=function(e){var t="";switch(e){case"Restore":t=(0,m.ih)("Restore");break;case"Delete":t=(0,m.ih)("Delete")}return t},i.onMenuItemClick=function(e){switch(e){case"Restore":i.toggleRestoreRepoDialog();break;case"Delete":i.toggleDeleteRepoDialog()}},i.state={highlight:!1,isOpIconShown:!1,isDeleteRepoDialogOpen:!1,isRestoreRepoDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.repo,t=this.state,n=t.isOpIconShown,i=t.isDeleteRepoDialogOpen,r=t.isRestoreRepoDialogOpen,s=f.c.getLibIconUrl(e),a=f.c.getLibIconTitle(e),o=''+f.c.HTMLescape(e.name)+"";return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{onMouseEnter:this.handleMouseOver,onMouseLeave:this.handleMouseOut,children:[(0,y.jsx)("td",{children:(0,y.jsx)("img",{src:s,title:a,alt:a,width:"24"})}),(0,y.jsx)("td",{children:e.name}),(0,y.jsx)("td",{children:-1==e.owner.indexOf("@seafile_group")?(0,y.jsx)(we,{email:e.owner,name:e.owner_name}):e.group_name}),(0,y.jsx)("td",{children:L()(e.delete_time).fromNow()}),(0,y.jsx)("td",{children:n&&(0,y.jsx)(Je.Z,{operations:["Restore","Delete"],translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),i&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Library"),message:(0,m.ih)("Are you sure you want to delete {placeholder} completely?").replace("{placeholder}",o),executeOperation:this.onDeleteRepo,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleDeleteRepoDialog})}),r&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Restore Library"),message:(0,m.ih)("Are you sure you want to restore {placeholder}?").replace("{placeholder}",o),executeOperation:this.onRestoreRepo,confirmBtnText:(0,m.ih)("Restore"),toggleDialog:this.toggleRestoreRepoDialog})})]})}}]),n}(l.Component),In=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleCleanTrashDialog=function(){i.setState({isCleanTrashDialogOpen:!i.state.isCleanTrashDialogOpen})},i.getReposByPage=function(e){var t=i.state.perPage;I.I.sysAdminListTrashRepos(e,t).then((function(e){i.setState({repos:e.data.repos,pageInfo:e.data.page_info,loading:!1})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getReposByPage(1)}))},i.onDeleteRepo=function(e){var t=i.state.repos.filter((function(t){return t.id!=e.id}));i.setState({repos:t})},i.onRestoreRepo=function(e){var t=i.state.repos.filter((function(t){return t.id!=e.id}));i.setState({repos:t})},i.cleanTrash=function(){I.I.sysAdminCleanTrashRepos().then((function(e){i.setState({repos:[]}),P.Z.success((0,m.ih)("Successfully cleared trash."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.getSearch=function(){return(0,y.jsx)(Qe,{placeholder:(0,m.ih)("Search libraries by owner"),submit:i.searchRepos})},i.searchRepos=function(e){I.I.sysAdminSearchTrashRepos(e).then((function(e){i.setState({repos:e.data.repos,pageInfo:null,errorMsg:"",loading:!1})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.state={loading:!0,errorMsg:"",repos:[],pageInfo:{},perPage:25,isCleanTrashDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=void 0===i?1:i,s=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||s),currentPage:parseInt(t.get("page")||r)},(function(){e.getReposByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state.isCleanTrashDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[this.state.repos.length?(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:(0,y.jsx)(w.Z,{className:"operation-item",onClick:this.toggleCleanTrashDialog,children:(0,m.ih)("Clean")})})):(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Gt,{currentItem:"trash"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Dn,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.repos,pageInfo:this.state.pageInfo,onDeleteRepo:this.onDeleteRepo,onRestoreRepo:this.onRestoreRepo,getListByPage:this.getReposByPage,resetPerPage:this.resetPerPage,curPerPage:this.state.perPage})})]})}),e&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Clear Trash"),message:(0,m.ih)("Are you sure you want to clear trash?"),executeOperation:this.cleanTrash,confirmBtnText:(0,m.ih)("Clear"),toggleDialog:this.toggleCleanTrashDialog})]})}}]),n}(l.Component),Pn=In,Zn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getRepos=function(e){var t=i.state,n=t.name,r=t.perPage;i.getValueLength(n)<3?P.Z.notify((0,m.ih)("Required at least three letters.")):I.I.sysAdminSearchRepos(n,e,r).then((function(e){i.setState({loading:!1,errorMsg:"",repos:e.data.repo_list,pageInfo:e.data.page_info})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.searchRepos=function(){var e=i.state.currentPage;i.getRepos(e)},i.onDeleteRepo=function(e){var t=i.state.repos.filter((function(t){return t.id!=e.id}));i.setState({repos:t})},i.onTransferRepo=function(e){var t=i.state.repos.map((function(t){return t.id==e.id?e:t}));i.setState({repos:t})},i.handleNameInputChange=function(e){i.setState({name:e.target.value,currentPage:1},i.checkSubmitBtnActive)},i.checkSubmitBtnActive=function(){var e=i.state.name;i.setState({isSubmitBtnActive:e.trim()})},i.handleKeyDown=function(e){13===e.keyCode&&(i.state.isSubmitBtnActive&&i.searchRepos())},i.resetPerPage=function(e){i.setState({perPage:e,currentPage:1},(function(){i.searchRepos()}))},i.state={name:"",currentPage:1,perPage:25,isSubmitBtnActive:!1,loading:!0,errorMsg:"",repos:[],pageInfo:{}},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(document.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({name:t.get("name_or_id")||"",perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getRepos(e.state.currentPage)}))}},{key:"getValueLength",value:function(e){for(var t,n=0,i=0,r=e.length;i=128&&t<=2047?n+=2:t>=2048&&t<=65535&&(n+=3);return n}},{key:"render",value:function(){var e=this.state,t=e.name,n=e.isSubmitBtnActive;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Libraries")})}),(0,y.jsxs)("div",{className:"cur-view-content",children:[(0,y.jsxs)("div",{className:"mt-4 mb-6",children:[(0,y.jsx)("h4",{className:"border-bottom font-weight-normal mb-2 pb-1",children:(0,m.ih)("Search Libraries")}),(0,y.jsx)("p",{className:"text-secondary small",children:(0,m.ih)("Tip: you can search by keyword in name or ID.")}),(0,y.jsxs)(Ne.Z,{tag:"div",children:[(0,y.jsxs)(Me.Z,{row:!0,children:[(0,y.jsx)(Ue.Z,{for:"name",sm:1,children:(0,m.ih)("Name or ID")}),(0,y.jsx)(xt.Z,{sm:5,children:(0,y.jsx)(te.Z,{type:"text",name:"name",id:"name",value:t,onChange:this.handleNameInputChange,onKeyDown:this.handleKeyDown})})]}),(0,y.jsx)(Me.Z,{row:!0,children:(0,y.jsx)(xt.Z,{sm:{size:5,offset:1},children:(0,y.jsx)("button",{className:"btn btn-outline-primary",disabled:!n,onClick:this.searchRepos,children:(0,m.ih)("Submit")})})})]})]}),(0,y.jsxs)("div",{className:"mt-4 mb-6",children:[(0,y.jsx)("h4",{className:"border-bottom font-weight-normal mb-2 pb-1",children:(0,m.ih)("Result")}),(0,y.jsx)(vn,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.repos,pageInfo:this.state.pageInfo,curPerPage:this.state.perPage,getListByPage:this.getRepos,resetPerPage:this.resetPerPage,onDeleteRepo:this.onDeleteRepo,onTransferRepo:this.onTransferRepo})]})]})]})})]})}}]),n}(l.Component),kn=n(55294),_n=n(77066),Nn=function(){function e(t){(0,r.Z)(this,e),this.name=t.obj_name,this.mtime=t.last_update,this.size=t.file_size,this.is_file=t.is_file}return(0,s.Z)(e,[{key:"isDir",value:function(){return!this.is_file}}]),e}(),Mn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,r.Z)(this,n);for(var i=arguments.length,s=new Array(i),a=0;a'+f.c.HTMLescape(this.props.groupName)+"",n=(0,m.ih)("Transfer Group {placeholder} to").replace("{placeholder}",t);return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggleDialog,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggleDialog,children:(0,y.jsx)("span",{dangerouslySetInnerHTML:{__html:n}})}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)(He.Z,{ref:"userSelect",isMulti:!1,className:"reviewer-select",placeholder:(0,m.ih)("Select a user"),onSelectChange:this.handleSelectChange})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggleDialog,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.submit,disabled:e,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),Un=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.getPreviousPage=function(){i.props.getListByPage(i.props.pageInfo.current_page-1)},i.getNextPage=function(){i.props.getListByPage(i.props.pageInfo.current_page+1)},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items,s=t.pageInfo,a=t.curPerPage;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var o=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No groups")})}),c=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"35%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"40%",children:(0,m.ih)("Owner")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Created At")}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(En,{item:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,deleteGroup:e.props.deleteGroup,transferGroup:e.props.transferGroup},n)}))})]}),s&&(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:s.current_page,hasNextPage:s.has_next_page,curPerPage:a,resetPerPage:this.props.resetPerPage})]});return r.length?c:o}}]),n}(l.Component),En=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.onMenuItemClick=function(e){switch(e){case"Delete":i.toggleDeleteDialog();break;case"Transfer":i.toggleTransferDialog()}},i.toggleDeleteDialog=function(e){e&&e.preventDefault(),i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen})},i.toggleTransferDialog=function(e){e&&e.preventDefault(),i.setState({isTransferDialogOpen:!i.state.isTransferDialogOpen})},i.deleteGroup=function(){i.props.deleteGroup(i.props.item.id)},i.transferGroup=function(e){i.props.transferGroup(i.props.item.id,e)},i.translateOperations=function(e){var t="";switch(e){case"Delete":t=(0,m.ih)("Delete");break;case"Transfer":t=(0,m.ih)("Transfer")}return t},i.state={isOpIconShown:!1,highlight:!1,isDeleteDialogOpen:!1,isTransferDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state,n=t.isOpIconShown,i=t.isDeleteDialogOpen,r=t.isTransferDialogOpen,s=''+f.c.HTMLescape(e.name)+"",a=(0,m.ih)("Are you sure you want to delete {placeholder} ?").replace("{placeholder}",s),o=0==e.parent_group_id?"".concat(m.ze,"sys/groups/").concat(e.id,"/libraries/"):"".concat(m.ze,"sys/departments/").concat(e.id,"/");return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)(g.rU,{to:o,children:e.name})}),(0,y.jsx)("td",{children:"system admin"==e.owner?"--":(0,y.jsx)(we,{email:e.owner,name:e.owner_name})}),(0,y.jsx)("td",{children:(0,y.jsx)("span",{title:L()(e.created_at).format("llll"),children:L()(e.created_at).fromNow()})}),(0,y.jsx)("td",{children:n&&"system admin"!=e.owner&&(0,y.jsx)(Je.Z,{operations:["Delete","Transfer"],translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),i&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Group"),message:a,executeOperation:this.deleteGroup,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleDeleteDialog}),r&&(0,y.jsx)(Rn,{groupName:e.name,transferGroup:this.transferGroup,toggleDialog:this.toggleTransferDialog})]})}}]),n}(l.Component),zn=Un,Bn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleCreateGroupDialog=function(){i.setState({isCreateGroupDialogOpen:!i.state.isCreateGroupDialogOpen})},i.getGroupListByPage=function(e){I.I.sysAdminListAllGroups(e,i.state.perPage).then((function(e){i.setState({loading:!1,groupList:e.data.groups,pageInfo:e.data.page_info})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getGroupListByPage(1)}))},i.createGroup=function(e,t){I.I.sysAdminCreateNewGroup(e,t).then((function(e){var t=i.state.groupList;t.unshift(e.data),i.setState({groupList:t}),i.toggleCreateGroupDialog()})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteGroup=function(e){I.I.sysAdminDismissGroupByID(e).then((function(t){var n=i.state.groupList.filter((function(t){return t.id!=e}));i.setState({groupList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.transferGroup=function(e,t){I.I.sysAdminTransferGroup(t,e).then((function(t){var n=i.state.groupList.map((function(n){return n.id==e&&(n=t.data),n}));i.setState({groupList:n}),P.Z.success((0,m.ih)("Successfully transferred the group."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.getSearch=function(){return(0,y.jsx)(Qe,{placeholder:(0,m.ih)("Search groups by name"),submit:i.searchGroups})},i.searchGroups=function(e){(0,g.c4)("".concat(m.ze,"sys/search-groups/?name=").concat(encodeURIComponent(e)))},i.state={loading:!0,errorMsg:"",groupList:[],pageInfo:{},perPage:25,isCreateGroupDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=void 0===i?1:i,s=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||s),currentPage:parseInt(t.get("page")||r)},(function(){e.getGroupListByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state.isCreateGroupDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({search:this.getSearch()},this.props),{},{children:(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(w.Z,{className:"operation-item",onClick:this.toggleCreateGroupDialog,children:(0,m.ih)("New Group")}),(0,y.jsx)("a",{className:"btn btn-secondary operation-item",href:"".concat(m.ze,"sys/groupadmin/export-excel/"),children:(0,m.ih)("Export Excel")})]})})),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Groups")})}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(zn,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.groupList,pageInfo:this.state.pageInfo,deleteGroup:this.deleteGroup,transferGroup:this.transferGroup,getListByPage:this.getGroupListByPage,resetPerPage:this.resetPerPage,curPerPage:this.state.perPage})})]})}),e&&(0,y.jsx)(Fn,{createGroup:this.createGroup,toggleDialog:this.toggleCreateGroupDialog})]})}}]),n}(l.Component),Vn=Bn,Hn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getGroups=function(){var e=i.state.name;I.I.sysAdminSearchGroups(e).then((function(e){i.setState({loading:!1,groupList:e.data.group_list})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.deleteGroup=function(e){I.I.sysAdminDismissGroupByID(e).then((function(t){var n=i.state.groupList.filter((function(t){return t.id!=e}));i.setState({groupList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.transferGroup=function(e,t){I.I.sysAdminTransferGroup(t,e).then((function(t){var n=i.state.groupList.map((function(n){return n.id==e&&(n=t.data),n}));i.setState({groupList:n}),P.Z.success((0,m.ih)("Successfully transferred the group."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.handleNameInputChange=function(e){i.setState({name:e.target.value},i.checkSubmitBtnActive)},i.checkSubmitBtnActive=function(){var e=i.state.name;i.setState({isSubmitBtnActive:e.trim()})},i.handleKeyDown=function(e){13===e.keyCode&&(i.state.isSubmitBtnActive&&i.getGroups())},i.state={name:"",isSubmitBtnActive:!1,loading:!0,errorMsg:"",groupList:[],pageInfo:null},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=new URL(document.location).searchParams;this.setState({name:e.get("name")||""},this.getGroups)}},{key:"render",value:function(){var e=this.state,t=e.name,n=e.isSubmitBtnActive;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Groups")})}),(0,y.jsxs)("div",{className:"cur-view-content",children:[(0,y.jsxs)("div",{className:"mt-4 mb-6",children:[(0,y.jsx)("h4",{className:"border-bottom font-weight-normal mb-2 pb-1",children:(0,m.ih)("Search Groups")}),(0,y.jsx)("p",{className:"text-secondary small",children:(0,m.ih)("Tip: you can search by keyword in name.")}),(0,y.jsxs)(Ne.Z,{tag:"div",children:[(0,y.jsxs)(Me.Z,{row:!0,children:[(0,y.jsx)(Ue.Z,{for:"name",sm:1,children:(0,m.ih)("Name")}),(0,y.jsx)(xt.Z,{sm:5,children:(0,y.jsx)(te.Z,{type:"text",name:"name",id:"name",value:t,onChange:this.handleNameInputChange,onKeyDown:this.handleKeyDown})})]}),(0,y.jsx)(Me.Z,{row:!0,children:(0,y.jsx)(xt.Z,{sm:{size:5,offset:1},children:(0,y.jsx)("button",{className:"btn btn-outline-primary",disabled:!n,onClick:this.getGroups,children:(0,m.ih)("Submit")})})})]})]}),(0,y.jsxs)("div",{className:"mt-4 mb-6",children:[(0,y.jsx)("h4",{className:"border-bottom font-weight-normal mb-2 pb-1",children:(0,m.ih)("Result")}),(0,y.jsx)(zn,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.groupList,deleteGroup:this.deleteGroup,transferGroup:this.transferGroup})]})]})]})})]})}}]),n}(l.Component),Wn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"repos",urlPart:"groups/"+i.props.groupID+"/libraries",text:(0,m.ih)("Libraries")},{name:"members",urlPart:"groups/"+i.props.groupID+"/members",text:(0,m.ih)("Members")}],i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.groupName,n=e.currentItem;return(0,y.jsxs)("div",{children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsxs)("h3",{className:"sf-heading",children:[(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/groups/"),children:(0,m.ih)("Groups")})," / ",t]})}),(0,y.jsx)("ul",{className:"nav border-bottom mx-4",children:this.navItems.map((function(e,t){return(0,y.jsx)("li",{className:"nav-item mr-2",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/").concat(e.urlPart,"/"),className:"nav-link ".concat(n==e.name?" active":""),children:e.text})},t)}))})]})}}]),n}(l.Component),Yn=Wn,Gn=window.sysadmin.pageOptions.enableSysAdminViewRepo,qn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,r.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var s=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No libraries")})}),a=(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%"}),(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Size")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Shared By")}),(0,y.jsx)("th",{width:"10%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(Qn,{item:t,unshareRepo:e.props.unshareRepo},n)}))})]})});return r.length?a:s}}]),n}(l.Component),Qn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.setState({isOpIconShown:!0})},i.handleMouseLeave=function(){i.setState({isOpIconShown:!1})},i.toggleUnshareRepoDialog=function(e){e&&e.preventDefault(),i.setState({isUnshareRepoDialogOpen:!i.state.isUnshareRepoDialogOpen})},i.unshareRepo=function(){var e=i.props.item;i.props.unshareRepo(e.repo_id,e.name),i.toggleUnshareRepoDialog()},i.renderRepoName=function(){var e=i.props.item,t=e;return t.id=e.repo_id,t.name?m._y&&Gn&&!t.encrypted?(0,y.jsx)("a",{href:"".concat(m.ze,"sys/libraries/").concat(t.id,"/"),children:t.name}):t.name:"--"},i.state={isOpIconShown:!1,isUnshareRepoDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.isOpIconShown,n=e.isUnshareRepoDialogOpen,i=this.props.item,r=f.c.getLibIconUrl(i),s=f.c.getLibIconTitle(i),a=''+f.c.HTMLescape(i.name)+"",o=(0,m.ih)("Are you sure you want to unshare {placeholder} ?").replace("{placeholder}",a);return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)("img",{src:r,title:s,alt:s,width:"24"})}),(0,y.jsx)("td",{children:this.renderRepoName()}),(0,y.jsx)("td",{children:f.c.bytesToSize(i.size)}),(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:i.shared_by,name:i.shared_by_name})}),(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:"#",className:"action-icon sf2-icon-x3 ".concat(t?"":"invisible"),title:(0,m.ih)("Unshare"),onClick:this.toggleUnshareRepoDialog})})]}),n&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Unshare Library"),message:o,executeOperation:this.unshareRepo,confirmBtnText:(0,m.ih)("Unshare"),toggleDialog:this.toggleUnshareRepoDialog})]})}}]),n}(l.Component),Kn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).unshareRepo=function(e,t){I.I.sysAdminUnshareRepoFromGroup(i.props.groupID,e).then((function(n){var r=i.state.repoList.filter((function(t){return t.repo_id!=e}));i.setState({repoList:r});var s=(0,m.ih)("Successfully unshared library {placeholder}").replace("{placeholder}",t);P.Z.success(s)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",groupName:"",repoList:[]},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminListGroupRepos(this.props.groupID).then((function(t){e.setState({loading:!1,repoList:t.data.libraries,groupName:t.data.group_name})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Yn,{groupID:this.props.groupID,groupName:this.state.groupName,currentItem:"repos"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(qn,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.repoList,unshareRepo:this.unshareRepo})})]})})]})}}]),n}(l.Component),Xn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleSelectChange=function(e){i.setState({selectedOptions:e,isSubmitBtnDisabled:!e.length})},i.addMembers=function(){var e=i.state.selectedOptions.map((function(e){return e.email}));i.props.addMembers(e),i.props.toggle()},i.state={selectedOptions:null,isSubmitBtnDisabled:!0},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.isSubmitBtnDisabled;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:(0,m.ih)("Add Member")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)(He.Z,{ref:"userSelect",isMulti:!0,className:"reviewer-select",placeholder:(0,m.ih)("Search users"),onSelectChange:this.handleSelectChange})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.addMembers,disabled:e,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),$n=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleItemFreezed=function(e){i.setState({isItemFreezed:e})},i.getPreviousPageList=function(){i.props.getListByPage(i.props.pageInfo.current_page-1)},i.getNextPageList=function(){i.props.getListByPage(i.props.pageInfo.current_page+1)},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items,s=t.pageInfo,a=t.curPerPage;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var o=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No members")})}),c=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%"}),(0,y.jsx)("th",{width:"55%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Role")}),(0,y.jsx)("th",{width:"10%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(Jn,{item:t,isItemFreezed:e.state.isItemFreezed,toggleItemFreezed:e.toggleItemFreezed,removeMember:e.props.removeMember,updateMemberRole:e.props.updateMemberRole},n)}))})]}),s&&(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPageList,gotoNextPage:this.getNextPageList,currentPage:s.current_page,hasNextPage:s.has_next_page,curPerPage:a,resetPerPage:this.props.resetPerPage})]});return r.length?c:o}}]),n}(l.Component),Jn=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({highlighted:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({highlighted:!1})},i.toggleDeleteDialog=function(e){e&&e.preventDefault(),i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen})},i.removeMember=function(){var e=i.props.item;i.props.removeMember(e.email,e.name),i.toggleDeleteDialog()},i.updateMemberRole=function(e){i.props.updateMemberRole(i.props.item.email,e.value)},i.roleOptions=[{value:"Admin",text:(0,m.ih)("Admin"),isSelected:!1},{value:"Member",text:(0,m.ih)("Member"),isSelected:!1}],i.state={highlighted:!1,isDeleteDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.highlighted,n=e.isDeleteDialogOpen,i=this.props.item,r=''+f.c.HTMLescape(i.name)+"",s=(0,m.ih)("Are you sure you want to remove {placeholder} ?").replace("{placeholder}",r),a=i.role;this.roleOptions=this.roleOptions.map((function(e){return e.isSelected=e.value==a,e}));var o=this.roleOptions.filter((function(e){return e.isSelected}))[0];return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:t?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)("img",{src:i.avatar_url,alt:"",className:"rounded-circle",width:"24"})}),(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:i.email,name:i.name})}),(0,y.jsx)("td",{children:"Owner"==i.role?(0,m.ih)("Owner"):(0,y.jsx)($e.Z,{isDropdownToggleShown:t,currentSelectedOption:o,options:this.roleOptions,selectOption:this.updateMemberRole,toggleItemFreezed:this.props.toggleItemFreezed})}),(0,y.jsx)("td",{children:"Owner"!=i.role&&(0,y.jsx)("a",{href:"#",className:"action-icon sf2-icon-x3 ".concat(t?"":"invisible"),title:(0,m.ih)("Remove"),onClick:this.toggleDeleteDialog})})]}),n&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Remove Member"),message:s,executeOperation:this.removeMember,confirmBtnText:(0,m.ih)("Remove"),toggleDialog:this.toggleDeleteDialog})]})}}]),n}(l.Component),ei=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getListByPage=function(e){var t=i.state.perPage;I.I.sysAdminListGroupMembers(i.props.groupID,e,t).then((function(e){i.setState({loading:!1,memberList:e.data.members,groupName:e.data.group_name,pageInfo:e.data.page_info})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getListByPage(1)}))},i.toggleAddMemgerDialog=function(){i.setState({isAddMemberDialogOpen:!i.state.isAddMemberDialogOpen})},i.addMembers=function(e){I.I.sysAdminAddGroupMember(i.props.groupID,e).then((function(e){var t=e.data.success;t.length&&(i.setState({memberList:t.concat(i.state.memberList)}),t.forEach((function(e){var t=(0,m.ih)("Successfully added {email_placeholder}").replace("{email_placeholder}",e.email);P.Z.success(t)}))),e.data.failed.forEach((function(e){var t=(0,m.ih)("Failed to add {email_placeholder}: {error_msg_placeholder}").replace("{email_placeholder}",e.email).replace("{error_msg_placeholder}",e.error_msg);P.Z.danger(t,{duration:3})}))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.removeMember=function(e,t){I.I.sysAdminDeleteGroupMember(i.props.groupID,e).then((function(n){var r=i.state.memberList.filter((function(t){return t.email!=e}));i.setState({memberList:r}),P.Z.success((0,m.ih)("Successfully removed {placeholder}.").replace("{placeholder}",t))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.updateMemberRole=function(e,t){var n="Admin"==t;I.I.sysAdminUpdateGroupMemberRole(i.props.groupID,e,n).then((function(n){var r=i.state.memberList.map((function(n){return n.email==e&&(n.role=t),n}));i.setState({memberList:r})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",groupName:"",memberList:[],pageInfo:{},currentPage:1,perPage:25,isAddMemberDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({currentPage:parseInt(t.get("page")||i),perPage:parseInt(t.get("per_page")||r)},(function(){e.getListByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state.isAddMemberDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleAddMemgerDialog,children:(0,m.ih)("Add Member")})})),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Yn,{currentItem:"members",groupID:this.props.groupID,groupName:this.state.groupName}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)($n,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.memberList,removeMember:this.removeMember,updateMemberRole:this.updateMemberRole,pageInfo:this.state.pageInfo,curPerPage:this.state.perPage,getListByPage:this.getListByPage,resetPerPage:this.resetPerPage})})]})}),e&&(0,y.jsx)(Xn,{addMembers:this.addMembers,toggle:this.toggleAddMemgerDialog})]})}}]),n}(l.Component),ti=(n(74351),function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsx)("div",{className:"h-100 org-departments",children:this.props.children})}}]),n}(l.Component)),ni=ti,ii=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleSubmit=function(){if(i.validateName()){var e=-1;i.props.parentGroupID&&(e=i.props.parentGroupID),I.I.sysAdminAddNewDepartment(e,i.state.departName.trim()).then((function(e){i.props.toggle(),i.props.onAddNewDepartment(e.data)})).catch((function(e){var t=(0,m.ih)(e.response.data.error_msg);i.setState({errMessage:t})}))}},i.validateName=function(){var e="";return!!i.state.departName.trim().length||(e=(0,m.ih)("Name is required"),i.setState({errMessage:e}),!1)},i.handleChange=function(e){i.setState({departName:e.target.value})},i.handleKeyDown=function(e){"Enter"===e.key&&(i.handleSubmit(),e.preventDefault())},i.state={departName:"",errMessage:""},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.parentGroupID?(0,m.ih)("New Sub-department"):(0,m.ih)("New Department");return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,autoFocus:!1,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:e}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsx)(Ne.Z,{children:(0,y.jsxs)(Me.Z,{children:[(0,y.jsx)(Ue.Z,{for:"departName",children:(0,m.ih)("Name")}),(0,y.jsx)(te.Z,{id:"departName",onKeyDown:this.handleKeyDown,value:this.state.departName,onChange:this.handleChange,autoFocus:!0})]})}),this.state.errMessage&&(0,y.jsx)("p",{className:"error",children:this.state.errMessage})]}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),ri=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleSubmit=function(){i.validateName()&&I.I.sysAdminRenameDepartment(i.props.groupID,i.state.departmentName.trim()).then((function(e){i.props.toggle(),i.props.onDepartmentNameChanged(e.data),P.Z.success((0,m.ih)("Success"))})).catch((function(e){var t=f.c.getErrorMsg(e);i.setState({errMessage:t})}))},i.validateName=function(){var e="";return!!i.state.departmentName.trim().length||(e=(0,m.ih)("Name is required"),i.setState({errMessage:e}),!1)},i.handleChange=function(e){i.setState({departmentName:e.target.value})},i.handleKeyDown=function(e){"Enter"===e.key&&(i.handleSubmit(),e.preventDefault())},i.onAfterModelOpened=function(){i.newInput.current&&(i.newInput.current.focus(),i.newInput.current.select())},i.state={departmentName:i.props.name,errMessage:""},i.newInput=l.createRef(),i}return(0,s.Z)(n,[{key:"render",value:function(){var e=(0,m.ih)("Rename Department");return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,onOpened:this.onAfterModelOpened,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:e}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsx)(Ne.Z,{children:(0,y.jsxs)(Me.Z,{children:[(0,y.jsx)(Ue.Z,{for:"departmentName",children:(0,m.ih)("Name")}),(0,y.jsx)(te.Z,{id:"departmentName",onKeyDown:this.handleKeyDown,value:this.state.departmentName,onChange:this.handleChange,innerRef:this.newInput})]})}),this.state.errMessage&&(0,y.jsx)("p",{className:"error",children:this.state.errMessage})]}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),si=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).deleteDepart=function(){i.props.toggle();var e=i.props.group;I.I.sysAdminDeleteDepartment(e.id).then((function(t){i.props.onDeleteDepartment(e.id)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.group,t=(0,m.ih)("Are you sure you want to delete {placeholder} ?");return t=t.replace("{placeholder}",''+f.c.HTMLescape(e.name)+""),(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:(0,m.ih)("Delete Department")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)("p",{dangerouslySetInnerHTML:{__html:t}})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.deleteDepart,children:(0,m.ih)("Delete")})]})]})}}]),n}(l.Component),ai=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).setGroupQuota=function(){var e=i.state.quota;if(e.length&&/^[1-9]\d*$/im.test(e)||-2==e){i.setState({errMessage:""});var t=-2==i.state.quota?i.state.quota:1e6*i.state.quota;I.I.sysAdminUpdateDepartmentQuota(i.props.groupID,t).then((function(e){i.props.toggle(),i.props.onSetQuota(e.data)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))}else{var n=(0,m.ih)("Quota is invalid.");i.setState({errMessage:n})}},i.handleChange=function(e){var t=e.target.value.trim();i.setState({quota:t})},i.handleKeyDown=function(e){"Enter"===e.key&&(i.setGroupQuota(),e.preventDefault())},i.state={quota:"",errMessage:""},i}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,autoFocus:!1,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:(0,m.ih)("Set Quota")}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsxs)(Ce.Z,{children:[(0,y.jsx)(te.Z,{onKeyDown:this.handleKeyDown,value:this.state.quota,onChange:this.handleChange,autoFocus:!0}),(0,y.jsx)(Ae.Z,{addonType:"append",children:"MB"})]}),(0,y.jsxs)("p",{className:"tip",children:[(0,y.jsx)("br",{}),(0,y.jsx)("span",{children:(0,m.ih)("An integer that is greater than 0 or equal to -2.")}),(0,y.jsx)("br",{}),(0,y.jsx)("span",{children:(0,m.ih)("Tip: -2 means no limit.")})]}),this.state.errMessage&&(0,y.jsx)("p",{className:"error",children:this.state.errMessage})]}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.setGroupQuota,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),oi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseOver=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseOut=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.translateOperations=function(e){var t="";switch(e){case"Rename":t=(0,m.ih)("Rename");break;case"Delete":t=(0,m.ih)("Delete")}return t},i.onMenuItemClick=function(e){switch(e){case"Rename":i.toggleRenameDialog();break;case"Delete":i.toggleDeleteDialog()}},i.toggleRenameDialog=function(){i.setState({isRenameDialogOpen:!i.state.isRenameDialogOpen})},i.toggleDeleteDialog=function(){i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen})},i.toggleSetQuotaDialog=function(){i.setState({isSetQuotaDialogOpen:!i.state.isSetQuotaDialogOpen})},i.state={isOpIconShown:!1,highlight:!1,isSetQuotaDialogOpen:!1,isDeleteDialogOpen:!1,isRenameDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.group,t=this.state,n=t.highlight,i=t.isOpIconShown,r=t.isRenameDialogOpen,s=t.isDeleteDialogOpen,a=t.isSetQuotaDialogOpen,o=m.ze+"sys/departments/"+e.id+"/";return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseOver,onMouseLeave:this.handleMouseOut,children:[(0,y.jsx)("td",{children:(0,y.jsx)(g.rU,{to:o,children:e.name})}),(0,y.jsx)("td",{children:L()(e.created_at).fromNow()}),(0,y.jsxs)("td",{children:[f.c.bytesToSize(e.quota)," ",(0,y.jsx)("span",{onClick:this.toggleSetQuotaDialog,title:(0,m.ih)("Edit"),className:"fa fa-pencil-alt attr-action-icon ".concat(n?"":"vh")})]}),(0,y.jsx)("td",{children:i&&(0,y.jsx)(Je.Z,{operations:["Rename","Delete"],translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),s&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(si,{group:e,onDeleteDepartment:this.props.onDeleteDepartment,toggle:this.toggleDeleteDialog})}),a&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(ai,{groupID:e.id,onSetQuota:this.props.onSetDepartmentQuota,toggle:this.toggleSetQuotaDialog})}),r&&(0,y.jsx)(ri,{groupID:e.id,name:e.name,toggle:this.toggleRenameDialog,onDepartmentNameChanged:this.props.onDepartmentNameChanged})]})}}]),n}(l.Component),li=oi;L().locale(m.KQ);var ci=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.listDepartments=function(){I.I.sysAdminListAllDepartments().then((function(e){i.setState({groups:e.data.data})}))},i.toggleAddDepartDialog=function(){i.setState({isShowAddDepartDialog:!i.state.isShowAddDepartDialog})},i.onDepartmentNameChanged=function(e){i.setState({groups:i.state.groups.map((function(t){return t.id==e.id&&(t.name=e.name),t}))})},i.onAddNewDepartment=function(e){var t=i.state.groups;t.unshift(e),i.setState({groups:t})},i.onDeleteDepartment=function(e){var t=i.state.groups;i.setState({groups:t.filter((function(t){return t.id!=e}))})},i.onSetDepartmentQuota=function(e){var t=i.state.groups;i.setState({groups:t.map((function(t){return t.id==e.id&&(t.quota=e.quota),t}))})},i.state={groups:null,groupID:"",isShowAddDepartDialog:!1,isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.listDepartments()}},{key:"render",value:function(){var e=this,t=this.state.groups,n=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("button",{className:"btn btn-secondary operation-item",title:(0,m.ih)("New Department"),onClick:this.toggleAddDepartDialog,children:(0,m.ih)("New Department")}),this.state.isShowAddDepartDialog&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(ii,{onAddNewDepartment:this.onAddNewDepartment,groupID:this.state.groupID,toggle:this.toggleAddDepartDialog})})]});return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:n})),(0,y.jsx)("div",{className:"main-panel-center flex-row h-100",children:(0,y.jsxs)("div",{className:"cur-view-container o-auto",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("div",{className:"fleft",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Departments")})})}),(0,y.jsx)("div",{className:"cur-view-content",children:t&&t.length>0?(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"40%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Created At")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Quota")}),(0,y.jsx)("th",{width:"15%"})]})}),(0,y.jsx)("tbody",{children:t.map((function(t,n){return(0,y.jsx)(l.Fragment,{children:(0,y.jsx)(li,{group:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,onDepartmentNameChanged:e.onDepartmentNameChanged,onDeleteDepartment:e.onDeleteDepartment,onSetDepartmentQuota:e.onSetDepartmentQuota})},t.id)}))})]}):(0,y.jsx)("p",{className:"no-group",children:(0,m.ih)("No departments")})})]})})]})}}]),n}(l.Component),hi=ci,di=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleSelectChange=function(e){i.setState({selectedOption:e})},i.handleSubmit=function(){if(i.state.selectedOption){var e=i.state.selectedOption.map((function(e){return e.email}));i.refs.orgSelect.clearSelect(),i.setState({errMessage:[]}),I.I.sysAdminAddGroupMember(i.props.groupID,e).then((function(e){i.setState({selectedOption:null}),e.data.failed.length>0&&i.setState({errMessage:e.data.failed[0].error_msg}),e.data.success.length>0&&(i.props.onAddNewMembers(e.data.success),i.props.toggle())})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))}},i.state={selectedOption:null,errMessage:""},i}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:(0,m.ih)("Add Member")}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsx)(He.Z,{placeholder:(0,m.ih)("Search users"),onSelectChange:this.handleSelectChange,ref:"orgSelect",isMulti:!0,className:"org-add-member-select"}),this.state.errMessage&&(0,y.jsx)("p",{className:"error",children:this.state.errMessage})]}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),ui=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleSubmit=function(){i.validateName()&&I.I.sysAdminAddRepoInDepartment(i.props.groupID,i.state.repoName.trim()).then((function(e){i.props.toggle(),i.props.onAddNewRepo(e.data)})).catch((function(e){var t=f.c.getErrorMsg(e);i.setState({errMessage:t})}))},i.validateName=function(){var e="";return!!i.state.repoName.trim().length||(e=(0,m.ih)("Name is required"),i.setState({errMessage:e}),!1)},i.handleChange=function(e){i.setState({repoName:e.target.value})},i.handleKeyDown=function(e){"Enter"===e.key&&(i.handleSubmit(),e.preventDefault())},i.state={repoName:"",errMessage:""},i}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,autoFocus:!1,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:(0,m.ih)("New Library")}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsx)(Ne.Z,{children:(0,y.jsxs)(Me.Z,{children:[(0,y.jsx)(Ue.Z,{for:"repoName",children:(0,m.ih)("Name")}),(0,y.jsx)(te.Z,{id:"repoName",onKeyDown:this.handleKeyDown,value:this.state.repoName,onChange:this.handleChange,autoFocus:!0})]})}),this.state.errMessage&&(0,y.jsx)("p",{className:"error",children:this.state.errMessage})]}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component);L().locale(m.KQ);var gi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getDepartmentInfo=function(e){I.I.sysAdminGetDepartmentInfo(e,!0).then((function(e){i.setState({ancestorGroups:e.data.ancestor_groups,groupName:e.data.name})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.onDepartmentNameChanged=function(e){i.setState({groupName:e.name})},i.toggleRenameDepartmentDialog=function(){i.setState({isShowRenameDepartmentDialog:!i.state.isShowRenameDepartmentDialog})},i.toggleAddRepoDialog=function(){i.setState({isShowAddRepoDialog:!i.state.isShowAddRepoDialog})},i.toggleAddMemberDialog=function(){i.setState({isShowAddMemberDialog:!i.state.isShowAddMemberDialog})},i.toggleAddDepartmentDialog=function(){i.setState({isShowAddDepartmentDialog:!i.state.isShowAddDepartmentDialog})},i.state={groupName:"",ancestorGroups:[],isShowAddDepartmentDialog:!1,isShowAddMemberDialog:!1,isShowRenameDepartmentDialog:!1,isShowAddRepoDialog:!1},i.navItems=[{name:"subDepartments",urlPart:"/",text:(0,m.ih)("Sub-departments")},{name:"members",urlPart:"/members/",text:(0,m.ih)("Members")},{name:"repos",urlPart:"/libraries/",text:(0,m.ih)("Libraries")}],i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this.props.groupID;this.getDepartmentInfo(e)}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.props.groupID!==e.groupID&&this.getDepartmentInfo(e.groupID)}},{key:"render",value:function(){var e=this.props,t=e.groupID,n=e.currentItem,r=this.state.groupName,s="btn btn-secondary operation-item",a=(0,y.jsxs)(l.Fragment,{children:[t&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("button",{className:s,title:(0,m.ih)("Rename Department"),onClick:this.toggleRenameDepartmentDialog,children:(0,m.ih)("Rename Department")}),"subDepartments"==n&&(0,y.jsx)("button",{className:s,title:(0,m.ih)("New Sub-department"),onClick:this.toggleAddDepartmentDialog,children:(0,m.ih)("New Sub-department")}),"members"==n&&(0,y.jsx)("button",{className:s,title:(0,m.ih)("Add Member"),onClick:this.toggleAddMemberDialog,children:(0,m.ih)("Add Member")}),"repos"==n&&(0,y.jsx)("button",{className:s,onClick:this.toggleAddRepoDialog,title:(0,m.ih)("New Library"),children:(0,m.ih)("New Library")})]}),this.state.isShowRenameDepartmentDialog&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(ri,{groupID:t,name:r,toggle:this.toggleRenameDepartmentDialog,onDepartmentNameChanged:this.onDepartmentNameChanged})}),this.state.isShowAddMemberDialog&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(di,{toggle:this.toggleAddMemberDialog,onAddNewMembers:this.props.onAddNewMembers,groupID:t})}),this.state.isShowAddRepoDialog&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(ui,{toggle:this.toggleAddRepoDialog,onAddNewRepo:this.props.onAddNewRepo,groupID:t})}),this.state.isShowAddDepartmentDialog&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(ii,{onAddNewDepartment:this.props.onAddNewDepartment,parentGroupID:t,toggle:this.toggleAddDepartmentDialog})})]});return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:a})),(0,y.jsx)("div",{className:"main-panel-center flex-row h-100",children:(0,y.jsxs)("div",{className:"cur-view-container o-auto",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("div",{className:"fleft",children:(0,y.jsxs)("h3",{className:"sf-heading",children:[t?(0,y.jsx)(g.rU,{to:m.ze+"sys/departments/",children:(0,m.ih)("Departments")}):(0,y.jsx)("span",{children:(0,m.ih)("Departments")}),this.state.ancestorGroups.map((function(e){var t=m.ze+"sys/departments/"+e.id+"/";return(0,y.jsxs)("span",{children:[" / ",(0,y.jsx)(g.rU,{to:t,children:e.name})]},e.id)})),t&&(0,y.jsxs)("span",{children:[" / ",r]})]})})}),(0,y.jsx)("ul",{className:"nav border-bottom mx-4",children:this.navItems.map((function(e,i){return(0,y.jsx)("li",{className:"nav-item mr-2",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/departments/").concat(t).concat(e.urlPart),className:"nav-link ".concat(n==e.name?" active":""),children:e.text})},i)}))}),this.props.children]})})]})}}]),n}(l.Component);L().locale(m.KQ);var pi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).listSubDepartments=function(e){I.I.sysAdminGetDepartmentInfo(e,!0).then((function(e){i.setState({groups:e.data.groups})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.onSubDepartmentNameChanged=function(e){i.setState({groups:i.state.groups.map((function(t){return t.id==e.id&&(t.name=e.name),t}))})},i.onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.onAddNewDepartment=function(e){var t=i.state.groups;t.unshift(e),i.setState({groups:t})},i.onDeleteDepartment=function(e){var t=i.state.groups;i.setState({groups:t.filter((function(t){return t.id!=e}))})},i.onSetDepartmentQuota=function(e){var t=i.state.groups;i.setState({groups:t.map((function(t){return t.id==e.id&&(t.quota=e.quota),t}))})},i.state={isItemFreezed:!1,groups:[]},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.listSubDepartments(this.props.groupID)}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.props.groupID!==e.groupID&&this.listSubDepartments(e.groupID)}},{key:"render",value:function(){var e=this,t=this.state.groups,n=this.props.groupID;return(0,y.jsx)(gi,{groupID:n,currentItem:"subDepartments",onAddNewDepartment:this.onAddNewDepartment,children:(0,y.jsx)("div",{className:"cur-view-content",children:t&&t.length>0?(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"40%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Created At")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Quota")}),(0,y.jsx)("th",{width:"15%"})]})}),(0,y.jsx)("tbody",{children:t.map((function(t,n){return(0,y.jsx)(li,{isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,onDepartmentNameChanged:e.onSubDepartmentNameChanged,group:t,onDeleteDepartment:e.onDeleteDepartment,onSetDepartmentQuota:e.onSetDepartmentQuota},t.id)}))})]}):(0,y.jsx)("p",{className:"no-group",children:(0,m.ih)("No sub-departments")})})})}}]),n}(l.Component),mi=pi,fi=n(93433),vi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).deleteMember=function(){var e=i.props.member.email;I.I.sysAdminDeleteGroupMember(i.props.groupID,e).then((function(e){e.data.success&&(i.props.onMemberChanged(),i.props.toggle())})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=(0,m.ih)("Are you sure you want to delete {placeholder} ?");return e=e.replace("{placeholder}",''+f.c.HTMLescape(this.props.member.name)+""),(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:(0,m.ih)("Delete Member")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)("div",{dangerouslySetInnerHTML:{__html:e}})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.deleteMember,children:(0,m.ih)("Delete")})]})]})}}]),n}(l.Component),xi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onMouseEnter=function(){i.props.isItemFreezed||i.setState({highlight:!0})},i.onMouseLeave=function(){i.props.isItemFreezed||i.setState({highlight:!1})},i.onChangeUserRole=function(e){var t="Admin"===e.value;I.I.sysAdminUpdateGroupMemberRole(i.props.groupID,i.props.member.email,t).then((function(e){i.props.onMemberChanged()})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)})),i.setState({highlight:!1})},i.state={highlight:!1},i.roleOptions=[{value:"Admin",text:(0,m.ih)("Admin"),isSelected:!1},{value:"Member",text:(0,m.ih)("Member"),isSelected:!1}],i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.member,t=this.state.highlight;if("Owner"===e.role)return null;this.roleOptions=this.roleOptions.map((function(t){return t.isSelected=t.value==e.role,t}));var n=this.roleOptions.filter((function(e){return e.isSelected}))[0];return(0,y.jsxs)("tr",{className:t?"tr-highlight":"",onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)("img",{src:e.avatar_url,alt:"member-header",width:"24",className:"avatar"})}),(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:e.email,name:e.name})}),(0,y.jsx)("td",{children:(0,y.jsx)($e.Z,{isDropdownToggleShown:t,currentSelectedOption:n,options:this.roleOptions,selectOption:this.onChangeUserRole,toggleItemFreezed:this.props.toggleItemFreezed})}),(0,y.jsx)("td",{className:"cursor-pointer text-center",onClick:this.props.showDeleteMemberDialog.bind(this,e),children:(0,y.jsx)("span",{className:"sf2-icon-x3 action-icon ".concat(t?"":"vh"),title:"Delete"})})]})}}]),n}(l.Component);L().locale(m.KQ);var yi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).listMembers=function(e,t,n){I.I.sysAdminListGroupMembers(e,t,n).then((function(e){i.setState({members:e.data.members,currentPageInfo:e.data.page_info})})).catch((function(e){var t=f.c.getErrorMsg(e);i.setState({membersErrorMsg:t})}))},i.getPreviousPageList=function(){i.listMembers(i.props.groupID,i.state.currentPageInfo.current_page-1,i.state.perPage)},i.getNextPageList=function(){i.listMembers(i.props.groupID,i.state.currentPageInfo.current_page+1,i.state.perPage)},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.listMembers(i.props.groupID,1,e)}))},i.toggleCancel=function(){i.setState({showDeleteMemberDialog:!1})},i.onMemberChanged=function(){i.listMembers(i.props.groupID,i.state.currentPageInfo.current_page,i.state.perPage)},i.toggleItemFreezed=function(e){i.setState({isItemFreezed:e})},i.showDeleteMemberDialog=function(e){i.setState({showDeleteMemberDialog:!0,deletedMember:e})},i.onAddNewMembers=function(e){var t=i.state.members;t.unshift.apply(t,(0,fi.Z)(e)),i.setState({members:t})},i.state={isItemFreezed:!1,members:[],membersErrorMsg:"",currentPageInfo:{},currentPage:1,perPage:25,deletedMember:{},showDeleteMemberDialog:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){var t=e.props.groupID;e.listMembers(t,e.state.currentPage,e.state.perPage)}))}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.props.groupID!==e.groupID&&this.listMembers(e.groupID,this.state.currentPage,this.state.perPage)}},{key:"render",value:function(){var e=this,t=this.state,n=t.members,i=t.membersErrorMsg,r=this.props.groupID;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(gi,{groupID:r,currentItem:"members",onAddNewMembers:this.onAddNewMembers,children:(0,y.jsx)("div",{className:"cur-view-content",children:i?(0,y.jsx)("p",{className:"error text-center",children:i}):0==n.length?(0,y.jsx)("p",{className:"no-member",children:(0,m.ih)("No members")}):(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%"}),(0,y.jsx)("th",{width:"50%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Role")}),(0,y.jsx)("th",{width:"30%"})]})}),(0,y.jsx)("tbody",{children:n.map((function(t,n){return(0,y.jsx)(l.Fragment,{children:(0,y.jsx)(xi,{member:t,showDeleteMemberDialog:e.showDeleteMemberDialog,isItemFreezed:e.state.isItemFreezed,onMemberChanged:e.onMemberChanged,toggleItemFreezed:e.toggleItemFreezed,groupID:r})},n)}))})]}),this.state.currentPageInfo&&(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPageList,gotoNextPage:this.getNextPageList,currentPage:this.state.currentPageInfo.current_page,hasNextPage:this.state.currentPageInfo.has_next_page,curPerPage:this.state.perPage,resetPerPage:this.resetPerPage})]})})}),this.state.showDeleteMemberDialog&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(vi,{toggle:this.toggleCancel,onMemberChanged:this.onMemberChanged,member:this.state.deletedMember,groupID:r})})]})}}]),n}(l.Component),bi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).deleteRepo=function(){I.I.sysAdminDeleteRepoInDepartment(i.props.groupID,i.props.repo.repo_id).then((function(e){e.data.success&&(i.props.onRepoChanged(),i.props.toggle())})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.repo,t=(0,m.ih)("Are you sure you want to delete {placeholder} ?");return t=t.replace("{placeholder}",''+f.c.HTMLescape(e.name||e.repo_name)+""),(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:(0,m.ih)("Delete Library")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)("div",{dangerouslySetInnerHTML:{__html:t}})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.deleteRepo,children:(0,m.ih)("Delete")})]})]})}}]),n}(l.Component),ji=window.sysadmin.pageOptions.enableSysAdminViewRepo,Si=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onMouseEnter=function(){i.setState({highlight:!0})},i.onMouseLeave=function(){i.setState({highlight:!1})},i.state={highlight:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.repo,t=e.name||e.repo_name,n=this.state.highlight,i=f.c.getLibIconUrl(e);return(0,y.jsxs)("tr",{className:n?"tr-highlight":"",onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)("img",{src:i,width:"24",alt:(0,m.ih)("icon")})}),ji?(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:"".concat(m.ze,"sys/libraries/").concat(e.repo_id,"/").concat(encodeURIComponent(t),"/"),children:t})}):(0,y.jsx)("td",{children:t}),(0,y.jsx)("td",{children:f.c.bytesToSize(e.size)}),(0,y.jsx)("td",{className:"cursor-pointer text-center",onClick:this.props.showDeleteRepoDialog.bind(this,e),children:(0,y.jsx)("span",{className:"sf2-icon-delete action-icon ".concat(n?"":"vh"),title:"Delete"})})]})}}]),n}(l.Component);L().locale(m.KQ);var Di=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).listGroupRepo=function(e){I.I.sysAdminListGroupRepos(e).then((function(e){i.setState({repos:e.data.libraries})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.toggleCancel=function(){i.setState({showDeleteRepoDialog:!1})},i.onRepoChanged=function(){i.listGroupRepo(i.props.groupID)},i.showDeleteRepoDialog=function(e){i.setState({showDeleteRepoDialog:!0,deletedRepo:e})},i.onAddNewRepo=function(e){var t=i.state.repos;t.unshift(e),i.setState({repos:t})},i.state={repos:[],deletedRepo:{},showDeleteRepoDialog:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this.props.groupID;this.listGroupRepo(e)}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.props.groupID!==e.groupID&&this.listGroupRepo(e.groupID)}},{key:"render",value:function(){var e=this,t=this.state.repos,n=this.props.groupID;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(gi,{groupID:n,currentItem:"repos",onAddNewRepo:this.onAddNewRepo,children:t.length>0?(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%"}),(0,y.jsx)("th",{width:"50%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Size")}),(0,y.jsx)("th",{width:"15%"})]})}),(0,y.jsx)("tbody",{children:t.map((function(t,n){return(0,y.jsx)(Si,{repo:t,showDeleteRepoDialog:e.showDeleteRepoDialog},n)}))})]})}):(0,y.jsx)("p",{className:"no-libraty",children:(0,m.ih)("No libraries")})}),this.state.showDeleteRepoDialog&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(bi,{toggle:this.toggleCancel,onRepoChanged:this.onRepoChanged,repo:this.state.deletedRepo,groupID:n})})]})}}]),n}(l.Component),wi=Di,Ii=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"shareLinks",urlPart:"share-links",text:(0,m.ih)("Share Links")},{name:"uploadLinks",urlPart:"upload-links",text:(0,m.ih)("Upload Links")}],i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.currentItem;return(0,y.jsx)("div",{className:"cur-view-path tab-nav-container",children:(0,y.jsx)("ul",{className:"nav",children:this.navItems.map((function(t,n){return(0,y.jsx)("li",{className:"nav-item",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/").concat(t.urlPart,"/"),className:"nav-link".concat(e==t.name?" active":""),children:t.text})},n)}))})})}}]),n}(l.Component),Pi=Ii,Zi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getPreviousPage=function(){i.props.getShareLinksByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getShareLinksByPage(i.props.currentPage+1)},i.sortByTime=function(e){e.preventDefault(),i.props.sortItems("ctime")},i.sortByCount=function(e){e.preventDefault(),i.props.sortItems("view_cnt")},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items,s=t.perPage,a=t.currentPage,o=t.hasNextPage,c=t.sortBy,h=t.sortOrder;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center",children:i});var d=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No share links")})}),u=(0,y.jsx)("span",{className:"fas fa-sort"}),g=(0,y.jsx)("span",{className:"fas ".concat("asc"==h?"fa-caret-up":"fa-caret-down")}),p=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"18%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"18%",children:(0,m.ih)("Token")}),(0,y.jsx)("th",{width:"18%",children:(0,m.ih)("Owner")}),(0,y.jsx)("th",{width:"15%",children:(0,y.jsxs)("a",{className:"d-inline-block table-sort-op",href:"#",onClick:this.sortByTime,children:[(0,m.ih)("Created At")," ","ctime"==c?g:u]})}),(0,y.jsx)("th",{width:"10%",children:(0,y.jsxs)("a",{className:"d-inline-block table-sort-op",href:"#",onClick:this.sortByCount,children:[(0,m.ih)("Count")," ","view_cnt"==c?g:u]})}),(0,y.jsx)("th",{width:"11%",children:(0,m.ih)("Expiration")}),(0,y.jsx)("th",{width:"10%"})]})}),r&&(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(ki,{item:t,deleteShareLink:e.props.deleteShareLink},n)}))})]}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:a,hasNextPage:o,curPerPage:s,resetPerPage:this.props.resetPerPage})]});return r.length?p:d}}]),n}(l.Component),ki=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseOver=function(){i.setState({isOpIconShown:!0})},i.handleMouseOut=function(){i.setState({isOpIconShown:!1})},i.deleteShareLink=function(){i.props.deleteShareLink(i.props.item.token)},i.renderExpiration=function(){var e=i.props.item;if(!e.expire_date)return"--";var t=L()(e.expire_date).format("YYYY-MM-DD"),n=L()(e.expire_date).format("YYYY-MM-DD HH:mm:ss");return(0,y.jsx)("span",{className:e.is_expired?"error":"",title:n,children:t})},i.state={isOpIconShown:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.isOpIconShown,t=this.props.item,n="action-icon sf2-icon-delete ".concat(e?"":"invisible");return(0,y.jsxs)("tr",{onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,children:[(0,y.jsx)("td",{children:t.obj_name}),(0,y.jsx)("td",{children:t.token}),(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:t.creator_email,name:t.creator_name})}),(0,y.jsx)("td",{children:L()(t.ctime).fromNow()}),(0,y.jsx)("td",{children:t.view_cnt}),(0,y.jsx)("td",{children:this.renderExpiration()}),(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:"#",className:n,title:(0,m.ih)("Remove"),onClick:this.deleteShareLink})})]})}}]),n}(l.Component),_i=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getShareLinksByPage=function(e){var t=i.state,n=t.perPage,r=t.sortBy,s=t.sortOrder;I.I.sysAdminListShareLinks(e,n,r,s).then((function(t){i.setState({shareLinkList:t.data.share_link_list,loading:!1,currentPage:e,hasNextPage:f.c.hasNextPage(e,n,t.data.count)})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.sortItems=function(e){i.setState({currentPage:1,sortBy:e,sortOrder:"asc"==i.state.sortOrder?"desc":"asc"},(function(){var e=new URL(location.href),t=new URLSearchParams(e.search),n=i.state,r=n.currentPage,s=n.sortBy,a=n.sortOrder;t.set("page",r),t.set("order_by",s),t.set("direction",a),e.search=t.toString(),(0,g.c4)(e.toString()),i.getShareLinksByPage(r)}))},i.deleteShareLink=function(e){I.I.sysAdminDeleteShareLink(e).then((function(t){var n=i.state.shareLinkList.filter((function(t){return t.token!=e}));i.setState({shareLinkList:n})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){return i.getShareLinksByPage(i.initPage)}))},i.state={loading:!0,errorMsg:"",shareLinkList:[],perPage:25,currentPage:1,hasNextPage:!1,sortBy:"",sortOrder:"asc"},i.initPage=1,i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage,s=n.sortBy,a=n.sortOrder;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i),sortBy:t.get("order_by")||s,sortOrder:t.get("direction")||a},(function(){e.getShareLinksByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state,t=e.shareLinkList,n=e.currentPage,r=e.perPage,s=e.hasNextPage;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Pi,{currentItem:"shareLinks"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Zi,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:t,currentPage:n,perPage:r,hasNextPage:s,getShareLinksByPage:this.getShareLinksByPage,resetPerPage:this.resetPerPage,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder,sortItems:this.sortItems,deleteShareLink:this.deleteShareLink})})]})})]})}}]),n}(l.Component),Ni=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getPreviousPage=function(){i.props.getUploadLinksByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getUploadLinksByPage(i.props.currentPage+1)},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items,s=t.perPage,a=t.currentPage,o=t.hasNextPage;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center",children:i});var c=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No upload links")})}),h=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"18%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"18%",children:(0,m.ih)("Token")}),(0,y.jsx)("th",{width:"18%",children:(0,m.ih)("Owner")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Created At")}),(0,y.jsx)("th",{width:"10%",children:(0,m.ih)("Count")}),(0,y.jsx)("th",{width:"11%",children:(0,m.ih)("Expiration")}),(0,y.jsx)("th",{width:"10%"})]})}),r&&(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(Mi,{item:t,deleteUploadLink:e.props.deleteUploadLink},n)}))})]}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:a,hasNextPage:o,curPerPage:s,resetPerPage:this.props.resetPerPage})]});return r.length?h:c}}]),n}(l.Component),Mi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseOver=function(){i.setState({isOpIconShown:!0})},i.handleMouseOut=function(){i.setState({isOpIconShown:!1})},i.deleteUploadLink=function(){i.props.deleteUploadLink(i.props.item.token)},i.renderExpiration=function(){var e=i.props.item;if(!e.expire_date)return"--";var t=L()(e.expire_date).format("YYYY-MM-DD"),n=L()(e.expire_date).format("YYYY-MM-DD HH:mm:ss");return(0,y.jsx)("span",{className:e.is_expired?"error":"",title:n,children:t})},i.state={isOpIconShown:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state.isOpIconShown,t=this.props.item,n="action-icon sf2-icon-delete ".concat(e?"":"invisible");return(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("tr",{onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,children:[(0,y.jsx)("td",{children:t.path}),(0,y.jsx)("td",{children:t.token}),(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:t.creator_email,name:t.creator_name})}),(0,y.jsx)("td",{children:L()(t.ctime).fromNow()}),(0,y.jsx)("td",{children:t.view_cnt}),(0,y.jsx)("td",{children:this.renderExpiration()}),(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:"#",className:n,title:(0,m.ih)("Remove"),onClick:this.deleteUploadLink})})]})})}}]),n}(l.Component),Ci=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getUploadLinksByPage=function(e){var t=i.state.perPage;I.I.sysAdminListAllUploadLinks(e,t).then((function(n){i.setState({uploadLinkList:n.data.upload_link_list,loading:!1,currentPage:e,hasNextPage:f.c.hasNextPage(e,t,n.data.count)})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.deleteUploadLink=function(e){I.I.sysAdminDeleteUploadLink(e).then((function(t){var n=i.state.uploadLinkList.filter((function(t){return t.token!=e}));i.setState({uploadLinkList:n})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){return i.getUploadLinksByPage(i.initPage)}))},i.state={loading:!0,errorMsg:"",uploadLinkList:[],perPage:25,currentPage:1,hasNextPage:!1},i.initPage=1,i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getUploadLinksByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state,t=e.uploadLinkList,n=e.currentPage,r=e.perPage,s=e.hasNextPage;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Pi,{currentItem:"uploadLinks"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Ni,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:t,currentPage:n,perPage:r,hasNextPage:s,getUploadLinksByPage:this.getUploadLinksByPage,resetPerPage:this.resetPerPage,deleteUploadLink:this.deleteUploadLink})})]})})]})}}]),n}(l.Component),Ai=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).checkSubmitBtnActive=function(){var e=i.state,t=e.name,n=e.email,r=e.password,s=e.passwordAgain,a=!0;a=""!=t.trim()&&""!=n.trim()&&""!=r.trim()&&""!=s.trim(),i.setState({isSubmitBtnActive:a})},i.toggle=function(){i.props.toggleDialog()},i.inputPassword=function(e){var t=e.target.value;i.setState({password:t},i.checkSubmitBtnActive)},i.inputPasswordAgain=function(e){var t=e.target.value;i.setState({passwordAgain:t},i.checkSubmitBtnActive)},i.inputEmail=function(e){var t=e.target.value;i.setState({email:t},i.checkSubmitBtnActive)},i.inputName=function(e){var t=e.target.value;i.setState({name:t},i.checkSubmitBtnActive)},i.handleSubmit=function(){var e=i.state,t=e.name,n=e.email,r=e.password;if(r==e.passwordAgain){var s={orgName:t.trim(),ownerEmail:n.trim(),password:r.trim()};i.props.addOrg(s),i.toggle()}else i.setState({errorMsg:(0,m.ih)("Passwords do not match.")})},i.state={name:"",email:"",password:"",passwordAgain:"",errorMsg:"",isSubmitBtnActive:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.errorMsg,n=e.password,i=e.passwordAgain,r=e.email,s=e.name,a=e.isSubmitBtnActive;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.toggle,children:(0,m.ih)("Add Organization")}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsxs)(Ne.Z,{autoComplete:"off",children:[(0,y.jsxs)(Me.Z,{children:[(0,y.jsx)(Ue.Z,{children:(0,m.ih)("Name")}),(0,y.jsx)(te.Z,{value:s,onChange:this.inputName})]}),(0,y.jsxs)(Me.Z,{children:[(0,y.jsxs)(Ue.Z,{children:[(0,m.ih)("Owner"),(0,y.jsx)("span",{className:"small text-secondary ml-1 fas fa-question-circle",title:(0,m.ih)("Owner can use admin panel in an organization, must be a new account.")})]}),(0,y.jsx)(te.Z,{value:r,onChange:this.inputEmail})]}),(0,y.jsxs)(Me.Z,{children:[(0,y.jsx)(Ue.Z,{children:(0,m.ih)("Password")}),(0,y.jsx)(te.Z,{type:"password",value:n,onChange:this.inputPassword})]}),(0,y.jsxs)(Me.Z,{children:[(0,y.jsx)(Ue.Z,{children:(0,m.ih)("Password again")}),(0,y.jsx)(te.Z,{type:"password",value:i,onChange:this.inputPasswordAgain})]})]}),t&&(0,y.jsx)(Fe.Z,{color:"danger",children:t})]}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,disabled:!a,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),Li=window.sysadmin.pageOptions.availableRoles,Oi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleItemFreezed=function(e){i.setState({isItemFreezed:e})},i.getPreviousPage=function(){i.props.getListByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getListByPage(i.props.currentPage+1)},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var s=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No organizations")})}),a=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Creator")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Role")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Space Used")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Created At")}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(Ti,{item:t,updateRole:e.props.updateRole,deleteOrg:e.props.deleteOrg,isItemFreezed:e.state.isItemFreezed,toggleItemFreezed:e.toggleItemFreezed},n)}))})]}),this.props.currentPage&&(0,y.jsx)(ae.Z,{currentPage:this.props.currentPage,hasNextPage:this.props.hasNextPage,curPerPage:this.props.curPerPage,resetPerPage:this.props.resetPerPage,gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage})]});return r.length?a:s}}]),n}(l.Component),Ti=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({highlighted:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({highlighted:!1})},i.toggleDeleteDialog=function(e){e&&e.preventDefault(),i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen},(function(){i.state.isDeleteDialogOpen&&I.I.sysAdminGetOrg(i.props.item.org_id).then((function(e){var t=''+f.c.HTMLescape(e.data.org_name)+"",n=''+f.c.HTMLescape(e.data.users_count)+"",r=''+f.c.HTMLescape(e.data.repos_count)+"",s=(0,m.ih)("Are you sure you want to delete {placeholder} ?").replace("{placeholder}",t)+"
    "+(0,m.ih)("{userCount} user(s) and {repoCount} libraries of this organization will also be deleted.").replace("{userCount}",n).replace("{repoCount}",r);i.setState({deleteDialogMsg:s})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))}))},i.translateRole=function(e){switch(e){case"default":return(0,m.ih)("Default");case"guest":return(0,m.ih)("Guest");default:return e}},i.updateRole=function(e){i.props.updateRole(i.props.item.org_id,e.value)},i.deleteOrg=function(){P.Z.notify((0,m.ih)("It may take some time, please wait.")),i.props.deleteOrg(i.props.item.org_id)},i.state={highlighted:!1,isDeleteDialogOpen:!1,deleteDialogMsg:""},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props.item,n=this.state,i=n.highlighted,r=n.isDeleteDialogOpen,s=n.deleteDialogMsg,a=t.role;this.roleOptions=Li.map((function(t){return{value:t,text:e.translateRole(t),isSelected:t==a}}));var o=this.roleOptions.filter((function(e){return e.isSelected}))[0];return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:i?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/organizations/").concat(t.org_id,"/info/"),children:t.org_name})}),(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:t.creator_email,name:t.creator_name})}),(0,y.jsx)("td",{children:(0,y.jsx)($e.Z,{isDropdownToggleShown:i,currentSelectedOption:o,options:this.roleOptions,selectOption:this.updateRole,toggleItemFreezed:this.props.toggleItemFreezed})}),(0,y.jsx)("td",{children:"".concat(f.c.bytesToSize(t.quota_usage)," / ").concat(t.quota>0?f.c.bytesToSize(t.quota):"--")}),(0,y.jsx)("td",{children:L()(t.ctime).format("YYYY-MM-DD HH:mm:ss")}),(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:"#",className:"action-icon sf2-icon-delete ".concat(i?"":"invisible"),title:(0,m.ih)("Delete"),onClick:this.toggleDeleteDialog})})]}),r&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Organization"),message:s,executeOperation:this.deleteOrg,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleDeleteDialog})]})}}]),n}(l.Component),Fi=Oi,Ri=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getItemsByPage=function(e){var t=i.state.perPage;I.I.sysAdminListOrgs(e,t).then((function(n){i.setState({loading:!1,orgList:n.data.organizations,currentPage:e,hasNextPage:f.c.hasNextPage(e,t,n.data.total_count)})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getItemsByPage(1)}))},i.toggleAddOrgDialog=function(){i.setState({isAddOrgDialogOpen:!i.state.isAddOrgDialogOpen})},i.updateRole=function(e,t){var n={};n.role=t,I.I.sysAdminUpdateOrg(e,n).then((function(n){var r=i.state.orgList.map((function(n){return n.org_id==e&&(n.role=t),n}));i.setState({orgList:r}),P.Z.success((0,m.ih)("Edit succeeded"))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.addOrg=function(e){var t=e.orgName,n=e.ownerEmail,r=e.password;I.I.sysAdminAddOrg(t,n,r).then((function(e){var t=i.state.orgList;t.unshift(e.data),i.setState({orgList:t})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteOrg=function(e){I.I.sysAdminDeleteOrg(e).then((function(t){var n=i.state.orgList.filter((function(t){return t.org_id!=e}));i.setState({orgList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.getSearch=function(){return(0,y.jsx)(Qe,{placeholder:(0,m.ih)("Search organizations"),submit:i.searchItems})},i.searchItems=function(e){(0,g.c4)("".concat(m.ze,"sys/search-organizations/?query=").concat(encodeURIComponent(e)))},i.state={loading:!0,errorMsg:"",orgList:[],currentPage:1,perPage:25,hasNextPage:!1,isAddOrgDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getItemsByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state.isAddOrgDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({search:this.getSearch()},this.props),{},{children:(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleAddOrgDialog,children:(0,m.ih)("Add Organization")})})),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Organizations")})}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Fi,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.orgList,currentPage:this.state.currentPage,hasNextPage:this.state.hasNextPage,curPerPage:this.state.perPage,resetPerPage:this.resetPerPage,getListByPage:this.getItemsByPage,updateRole:this.updateRole,deleteOrg:this.deleteOrg})})]})}),e&&(0,y.jsx)(Ai,{addOrg:this.addOrg,toggleDialog:this.toggleAddOrgDialog})]})}}]),n}(l.Component),Ui=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getItems=function(){I.I.sysAdminSearchOrgs(i.state.query.trim()).then((function(e){i.setState({loading:!1,orgList:e.data.organization_list})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.updateRole=function(e,t){var n={};n.role=t,I.I.sysAdminUpdateOrg(e,n).then((function(n){var r=i.state.orgList.map((function(n){return n.org_id==e&&(n.role=t),n}));i.setState({orgList:r}),P.Z.success((0,m.ih)("Edit succeeded"))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteOrg=function(e){I.I.sysAdminDeleteOrg(e).then((function(t){var n=i.state.orgList.filter((function(t){return t.org_id!=e}));i.setState({orgList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.handleInputChange=function(e){i.setState({query:e.target.value},i.checkSubmitBtnActive)},i.checkSubmitBtnActive=function(){var e=i.state.query;i.setState({isSubmitBtnActive:e.trim()})},i.handleKeyDown=function(e){13===e.keyCode&&(i.state.isSubmitBtnActive&&i.getItems())},i.state={query:"",isSubmitBtnActive:!1,loading:!0,errorMsg:"",orgList:[]},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=new URL(document.location).searchParams;this.setState({query:e.get("query")||""},this.getItems)}},{key:"render",value:function(){var e=this.state,t=e.query,n=e.isSubmitBtnActive;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Organizations")})}),(0,y.jsxs)("div",{className:"cur-view-content",children:[(0,y.jsxs)("div",{className:"mt-4 mb-6",children:[(0,y.jsx)("h4",{className:"border-bottom font-weight-normal mb-2 pb-1",children:(0,m.ih)("Search Organizations")}),(0,y.jsx)("p",{className:"text-secondary small",children:(0,m.ih)("Tip: you can search by keyword in name.")}),(0,y.jsxs)(Ne.Z,{tag:"div",children:[(0,y.jsxs)(Me.Z,{row:!0,children:[(0,y.jsx)(Ue.Z,{for:"name",sm:1,children:(0,m.ih)("Name")}),(0,y.jsx)(xt.Z,{sm:5,children:(0,y.jsx)(te.Z,{type:"text",name:"query",id:"name",value:t,onChange:this.handleInputChange,onKeyDown:this.handleKeyDown})})]}),(0,y.jsx)(Me.Z,{row:!0,children:(0,y.jsx)(xt.Z,{sm:{size:5,offset:1},children:(0,y.jsx)("button",{className:"btn btn-outline-primary",disabled:!n,onClick:this.getItems,children:(0,m.ih)("Submit")})})})]})]}),(0,y.jsxs)("div",{className:"mt-4 mb-6",children:[(0,y.jsx)("h4",{className:"border-bottom font-weight-normal mb-2 pb-1",children:(0,m.ih)("Result")}),(0,y.jsx)(Fi,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.orgList,updateRole:this.updateRole,deleteOrg:this.deleteOrg})]})]})]})})]})}}]),n}(l.Component),Ei=n(56153),zi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggle=function(){i.props.toggle()},i.handleInputChange=function(e){var t=e.target.value;i.setState({name:t,isSubmitBtnActive:""!=t.trim()})},i.handleKeyDown=function(e){"Enter"==e.key&&(i.handleSubmit(),e.preventDefault())},i.handleSubmit=function(){i.props.updateName(i.state.name.trim()),i.toggle()},i.state={name:i.props.name,isSubmitBtnActive:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.name,n=e.isSubmitBtnActive;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.toggle,children:(0,m.ih)("Set Name")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)(Ne.Z,{children:(0,y.jsx)(Me.Z,{children:(0,y.jsx)(te.Z,{type:"text",value:t,onKeyDown:this.handleKeyDown,onChange:this.handleInputChange})})})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,disabled:!n,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),Bi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggle=function(){i.props.toggle()},i.handleInputChange=function(e){var t=e.target.value;i.setState({value:t,isSubmitBtnActive:""!=t.trim()})},i.handleKeyDown=function(e){"Enter"==e.key&&(i.handleSubmit(),e.preventDefault())},i.handleSubmit=function(){i.props.updateValue(i.state.value.trim()),i.toggle()},i.state={value:i.props.value,isSubmitBtnActive:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.state,t=e.value,n=e.isSubmitBtnActive;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.toggle,children:(0,m.ih)("Set max number of members")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)(Ne.Z,{children:(0,y.jsx)(Me.Z,{children:(0,y.jsx)(te.Z,{type:"text",className:"form-control",value:t,onKeyDown:this.handleKeyDown,onChange:this.handleInputChange})})})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,disabled:!n,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),Vi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"info",urlPart:"info",text:(0,m.ih)("Info")},{name:"users",urlPart:"users",text:(0,m.ih)("Members")},{name:"groups",urlPart:"groups",text:(0,m.ih)("Groups")},{name:"repos",urlPart:"libraries",text:(0,m.ih)("Libraries")}],i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.currentItem,n=e.orgID,i=e.orgName;return(0,y.jsxs)("div",{children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsxs)("h3",{className:"sf-heading",children:[(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/organizations/"),children:(0,m.ih)("Organizations")})," / ",i]})}),(0,y.jsx)("ul",{className:"nav border-bottom mx-4",children:this.navItems.map((function(e,i){return(0,y.jsx)("li",{className:"nav-item mr-2",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/organizations/").concat(n,"/").concat(e.urlPart,"/"),className:"nav-link ".concat(t==e.name?" active":""),children:e.text})},i)}))})]})}}]),n}(l.Component),Hi=Vi,Wi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleSetQuotaDialog=function(){i.setState({isSetQuotaDialogOpen:!i.state.isSetQuotaDialogOpen})},i.toggleSetNameDialog=function(){i.setState({isSetNameDialogOpen:!i.state.isSetNameDialogOpen})},i.toggleSetMaxUserNumberDialog=function(){i.setState({isSetMaxUserNumberDialogOpen:!i.state.isSetMaxUserNumberDialogOpen})},i.showEditIcon=function(e){return(0,y.jsx)("span",{title:(0,m.ih)("Edit"),className:"fa fa-pencil-alt attr-action-icon",onClick:e})},i.state={isSetQuotaDialogOpen:!1,isSetNameDialogOpen:!1,isSetMaxUserNumberDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg;if(t)return(0,y.jsx)(Z.Z,{});if(n)return(0,y.jsx)("p",{className:"error text-center",children:n});var i=this.props.orgInfo,r=i.org_name,s=i.users_count,a=i.max_user_number,o=i.groups_count,c=i.quota,h=i.quota_usage,d=i.enable_saml_login,u=i.url_prefix,g=i.metadata_url,p=i.domain,v=this.state,x=v.isSetQuotaDialogOpen,b=v.isSetNameDialogOpen,j=v.isSetMaxUserNumberDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("dl",{className:"m-0",children:[(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Name")}),(0,y.jsxs)("dd",{className:"info-item-content",children:[r,this.showEditIcon(this.toggleSetNameDialog)]}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Number of members")}),(0,y.jsx)("dd",{className:"info-item-content",children:s}),a&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Max number of members")}),(0,y.jsxs)("dd",{className:"info-item-content",children:[a,this.showEditIcon(this.toggleSetMaxUserNumberDialog)]})]}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Number of groups")}),(0,y.jsx)("dd",{className:"info-item-content",children:o}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Space Used")}),(0,y.jsxs)("dd",{className:"info-item-content",children:["".concat(f.c.bytesToSize(h)," / ").concat(c>0?f.c.bytesToSize(c):"--"),this.showEditIcon(this.toggleSetQuotaDialog)]}),d&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("SAML Config")}),(0,y.jsx)("dd",{className:"info-item-content",children:(0,y.jsxs)(Ei.Z,{className:"my-4",children:[(0,y.jsx)(xt.Z,{md:"3",children:(0,m.ih)("Custom SAML Login URL")}),(0,y.jsx)(xt.Z,{md:"6",children:"".concat(m.xx,"/org/custom/").concat(u)})]})}),(0,y.jsx)("dd",{className:"info-item-content",children:(0,y.jsxs)(Ei.Z,{className:"my-4",children:[(0,y.jsx)(xt.Z,{md:"3",children:(0,m.ih)("App Federation Metadata URL")}),(0,y.jsx)(xt.Z,{md:"6",children:g})]})}),(0,y.jsx)("dd",{className:"info-item-content",children:(0,y.jsxs)(Ei.Z,{className:"my-4",children:[(0,y.jsx)(xt.Z,{md:"3",children:(0,m.ih)("Email Domain")}),(0,y.jsx)(xt.Z,{md:"6",children:p})]})})]})]}),x&&(0,y.jsx)(Te,{updateQuota:this.props.updateQuota,toggle:this.toggleSetQuotaDialog}),b&&(0,y.jsx)(zi,{name:r,updateName:this.props.updateName,toggle:this.toggleSetNameDialog}),j&&(0,y.jsx)(Bi,{value:a,updateValue:this.props.updateMaxUserNumber,toggle:this.toggleSetMaxUserNumberDialog})]})}}]),n}(l.Component),Yi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).updateQuota=function(e){var t={quota:e};I.I.sysAdminUpdateOrg(i.props.orgID,t).then((function(e){var t=Object.assign(i.state.orgInfo,{quota:e.data.quota});i.setState({orgInfo:t}),P.Z.success((0,m.ih)("Successfully set quota."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.updateName=function(e){var t={orgName:e};I.I.sysAdminUpdateOrg(i.props.orgID,t).then((function(e){var t=Object.assign(i.state.orgInfo,{org_name:e.data.org_name});i.setState({orgInfo:t}),P.Z.success((0,m.ih)("Successfully set name."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.updateMaxUserNumber=function(e){var t={maxUserNumber:e};I.I.sysAdminUpdateOrg(i.props.orgID,t).then((function(e){var t=Object.assign(i.state.orgInfo,{max_user_number:e.data.max_user_number});i.setState({orgInfo:t}),P.Z.success((0,m.ih)("Successfully set max number of members."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",orgInfo:{}},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminGetOrg(this.props.orgID).then((function(t){e.setState({loading:!1,orgInfo:t.data})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this.state.orgInfo;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Hi,{currentItem:"info",orgID:this.props.orgID,orgName:e.org_name}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Wi,{orgID:this.props.orgID,loading:this.state.loading,errorMsg:this.state.errorMsg,orgInfo:this.state.orgInfo,updateQuota:this.updateQuota,updateName:this.updateName,updateMaxUserNumber:this.updateMaxUserNumber})})]})})]})}}]),n}(l.Component),Gi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleItemFreezed=function(e){i.setState({isItemFreezed:e})},i.onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var s=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No members")})}),a=(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Status")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Membership")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Space Used")}),(0,y.jsxs)("th",{width:"25%",children:[(0,m.ih)("Created At")," / ",(0,m.ih)("Last Login")]}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(qi,{item:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,toggleItemFreezed:e.toggleItemFreezed,updateStatus:e.props.updateStatus,updateMembership:e.props.updateMembership,deleteUser:e.props.deleteUser},n)}))})]})});return r.length?a:s}}]),n}(l.Component),qi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.onMenuItemClick=function(e){switch(e){case"Delete":i.toggleDeleteDialog();break;case"Reset Password":i.toggleResetPasswordDialog()}},i.toggleDeleteDialog=function(e){e&&e.preventDefault(),i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen})},i.toggleResetPasswordDialog=function(e){e&&e.preventDefault(),i.setState({isResetPasswordDialogOpen:!i.state.isResetPasswordDialogOpen})},i.updateStatus=function(e){i.props.updateStatus(i.props.item.email,e.value)},i.updateMembership=function(e){i.props.updateMembership(i.props.item.email,e.value)},i.deleteUser=function(){var e=i.props.item;i.props.deleteUser(e.org_id,e.email)},i.resetPassword=function(){I.I.sysAdminResetUserPassword(i.props.item.email).then((function(e){P.Z.success(e.data.reset_tip)})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.translateOperations=function(e){var t="";switch(e){case"Delete":t=(0,m.ih)("Delete");break;case"Reset Password":t=(0,m.ih)("Reset Password")}return t},i.translateStatus=function(e){switch(e){case"active":return(0,m.ih)("Active");case"inactive":return(0,m.ih)("Inactive")}},i.translateMembership=function(e){switch(e){case"Admin":return(0,m.ih)("Admin");case"Member":return(0,m.ih)("Member")}},i.state={isOpIconShown:!1,highlight:!1,isDeleteDialogOpen:!1,isResetPasswordDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props.item,n=this.state,i=n.highlight,r=n.isOpIconShown,s=n.isDeleteDialogOpen,a=n.isResetPasswordDialogOpen,o=''+f.c.HTMLescape(t.name)+"",c=(0,m.ih)("Are you sure you want to delete {placeholder} ?").replace("{placeholder}",o),h=(0,m.ih)("Are you sure you want to reset the password of {placeholder} ?").replace("{placeholder}",o),d=t.active?"active":"inactive";this.statusOptions=["active","inactive"].map((function(t){return{value:t,text:e.translateStatus(t),isSelected:t==d}}));var u=this.statusOptions.filter((function(e){return e.isSelected}))[0],g=t.is_org_staff?"Admin":"Member";this.membershipOptions=["Admin","Member"].map((function(t){return{value:t,text:e.translateMembership(t),isSelected:t==g}}));var p=this.membershipOptions.filter((function(e){return e.isSelected}))[0];return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:t.email,name:t.name})}),(0,y.jsx)("td",{children:(0,y.jsx)($e.Z,{isDropdownToggleShown:i,currentSelectedOption:u,options:this.statusOptions,selectOption:this.updateStatus,toggleItemFreezed:this.props.toggleItemFreezed})}),(0,y.jsx)("td",{children:(0,y.jsx)($e.Z,{isDropdownToggleShown:i,currentSelectedOption:p,options:this.membershipOptions,selectOption:this.updateMembership,toggleItemFreezed:this.props.toggleItemFreezed})}),(0,y.jsx)("td",{children:"".concat(f.c.bytesToSize(t.quota_usage)," / ").concat(t.quota_total>0?f.c.bytesToSize(t.quota_total):"--")}),(0,y.jsxs)("td",{children:[L()(t.create_time).format("YYYY-MM-DD HH:mm:ss")," / ",t.last_login?L()(t.last_login).fromNow():"--"]}),(0,y.jsx)("td",{children:r&&t.email!=m.b6&&(0,y.jsx)(Je.Z,{operations:["Delete","Reset Password"],translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),s&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Member"),message:c,executeOperation:this.deleteUser,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleDeleteDialog}),a&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Reset Password"),message:h,executeOperation:this.resetPassword,confirmBtnText:(0,m.ih)("Reset"),toggleDialog:this.toggleResetPasswordDialog})]})}}]),n}(l.Component),Qi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleAddUserDialog=function(){i.setState({isAddUserDialogOpen:!i.state.isAddUserDialogOpen})},i.addUser=function(e){var t=e.email,n=e.name,r=e.password;I.I.sysAdminAddOrgUser(i.props.orgID,t,n,r).then((function(e){var t=i.state.userList;t.unshift(e.data),i.setState({userList:t})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteUser=function(e,t){I.I.sysAdminDeleteOrgUser(e,t).then((function(e){var n=i.state.userList.filter((function(e){return e.email!=t}));i.setState({userList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.updateStatus=function(e,t){var n="active"==t;I.I.sysAdminUpdateOrgUser(i.props.orgID,e,"active",n).then((function(t){var n=i.state.userList.map((function(n){return n.email==e&&(n.active=t.data.active),n}));i.setState({userList:n})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.updateMembership=function(e,t){var n="Admin"==t;I.I.sysAdminUpdateOrgUser(i.props.orgID,e,"is_org_staff",n).then((function(t){var n=i.state.userList.map((function(n){return n.email==e&&(n.is_org_staff=t.data.is_org_staff),n}));i.setState({userList:n})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",orgName:"",userList:[],isAddUserDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminGetOrg(this.props.orgID).then((function(t){e.setState({orgName:t.data.org_name})})),I.I.sysAdminListOrgUsers(this.props.orgID).then((function(t){e.setState({loading:!1,userList:t.data.users})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this.state,t=e.isAddUserDialogOpen,n=e.orgName;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleAddUserDialog,children:(0,m.ih)("Add Member")})})),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Hi,{currentItem:"users",orgID:this.props.orgID,orgName:n}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Gi,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.userList,updateStatus:this.updateStatus,updateMembership:this.updateMembership,deleteUser:this.deleteUser})})]})}),t&&(0,y.jsx)(Ve,{addUser:this.addUser,toggleDialog:this.toggleAddUserDialog})]})}}]),n}(l.Component),Ki=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,r.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var s=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No groups")})}),a=(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Creator")}),(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Created At")}),(0,y.jsx)("th",{width:"10%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(Xi,{item:t,deleteGroup:e.props.deleteGroup},n)}))})]})});return r.length?a:s}}]),n}(l.Component),Xi=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.setState({isOpIconShown:!0})},i.handleMouseLeave=function(){i.setState({isOpIconShown:!1})},i.toggleDeleteDialog=function(e){e&&e.preventDefault(),i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen})},i.deleteGroup=function(){i.toggleDeleteDialog(),i.props.deleteGroup(i.props.item.group_id)},i.state={isOpIconShown:!1,isDeleteDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state,n=t.isOpIconShown,i=t.isDeleteDialogOpen,r=''+f.c.HTMLescape(e.group_name)+"",s=(0,m.ih)("Are you sure you want to delete {placeholder} ?").replace("{placeholder}",r),a=0==e.parent_group_id?"".concat(m.ze,"sys/groups/").concat(e.group_id,"/libraries/"):"".concat(m.ze,"sys/departments/").concat(e.group_id,"/");return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:a,children:e.group_name})}),(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:e.creator_email,name:e.creator_name})}),(0,y.jsx)("td",{children:L()(e.created_at).format("YYYY-MM-DD HH:mm:ss")}),(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:"#",className:"action-icon sf2-icon-delete ".concat(n?"":"invisible"),title:(0,m.ih)("Delete"),onClick:this.toggleDeleteDialog})})]}),i&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Group"),message:s,executeOperation:this.deleteGroup,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleDeleteDialog})]})}}]),n}(l.Component),$i=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).deleteGroup=function(e){I.I.sysAdminDismissGroupByID(e).then((function(t){var n=i.state.groupList.filter((function(t){return t.group_id!=e}));i.setState({groupList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",orgName:"",groupList:[]},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminGetOrg(this.props.orgID).then((function(t){e.setState({orgName:t.data.org_name})})),I.I.sysAdminListOrgGroups(this.props.orgID).then((function(t){e.setState({loading:!1,groupList:t.data.group_list})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Hi,{currentItem:"groups",orgID:this.props.orgID,orgName:this.state.orgName}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Ki,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.groupList,deleteGroup:this.deleteGroup})})]})})]})}}]),n}(l.Component),Ji=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var s=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No libraries")})}),a=(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%"}),(0,y.jsx)("th",{width:"30%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"35%",children:(0,m.ih)("ID")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Owner")}),(0,y.jsx)("th",{width:"10%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(er,{item:t,deleteRepo:e.props.deleteRepo},n)}))})]})});return r.length?a:s}}]),n}(l.Component),er=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.setState({isOpIconShown:!0})},i.handleMouseLeave=function(){i.setState({isOpIconShown:!1})},i.toggleDeleteDialog=function(e){e&&e.preventDefault(),i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen})},i.deleteRepo=function(){i.props.deleteRepo(i.props.item.repo_id)},i.state={isOpIconShown:!1,isDeleteDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state,n=t.isOpIconShown,i=t.isDeleteDialogOpen,r=f.c.getLibIconUrl(e),s=f.c.getLibIconTitle(e),a=''+f.c.HTMLescape(e.repo_name)+"",o=(0,m.ih)("Are you sure you want to delete {placeholder} ?").replace("{placeholder}",a);return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)("img",{src:r,title:s,alt:s,width:"24"})}),(0,y.jsx)("td",{children:e.repo_name}),(0,y.jsx)("td",{children:e.repo_id}),(0,y.jsx)("td",{children:e.owner_email?-1==e.owner_email.indexOf("@seafile_group")?(0,y.jsx)(we,{email:e.owner_email,name:e.owner_name}):e.owner_name:"--"}),(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:"#",className:"action-icon sf2-icon-delete ".concat(n?"":"invisible"),title:(0,m.ih)("Delete"),onClick:this.toggleDeleteDialog})})]}),i&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Library"),message:o,executeOperation:this.deleteRepo,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleDeleteDialog})]})}}]),n}(l.Component),tr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).deleteRepo=function(e){I.I.sysAdminDeleteRepo(e).then((function(t){var n=i.state.repoList.filter((function(t){return t.repo_id!=e}));i.setState({repoList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",orgName:"",repoList:[]},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminGetOrg(this.props.orgID).then((function(t){e.setState({orgName:t.data.org_name})})),I.I.sysAdminListOrgRepos(this.props.orgID).then((function(t){e.setState({loading:!1,repoList:t.data.repo_list})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Hi,{currentItem:"repos",orgID:this.props.orgID,orgName:this.state.orgName}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Ji,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.repoList,deleteRepo:this.deleteRepo})})]})})]})}}]),n}(l.Component),nr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleChange=function(e){var t=e.target.value;i.setState({value:t,isSubmitBtnActive:""!=t.trim()})},i.handleSubmit=function(){i.toggle(),i.props.addInstitution(i.state.value.trim())},i.toggle=function(){i.props.toggle()},i.state={value:"",isSubmitBtnActive:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.toggle,children:(0,m.ih)("Add institution")}),(0,y.jsx)(_e.Z,{children:(0,y.jsxs)(Ne.Z,{children:[(0,y.jsx)("p",{children:(0,m.ih)("Name")}),(0,y.jsx)(Me.Z,{children:(0,y.jsx)(te.Z,{value:this.state.value,onChange:this.handleChange})})]})}),(0,y.jsx)(Oe.Z,{children:(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,disabled:!this.state.isSubmitBtnActive,children:(0,m.ih)("Submit")})})]})}}]),n}(l.Component),ir=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getPreviousPage=function(){i.props.getInstitutionsByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getInstitutionsByPage(i.props.currentPage+1)},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items,s=t.perPage,a=t.currentPage,o=t.hasNextPage;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var c=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No institutions")})}),h=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"75%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Created At")}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(rr,{item:t,deleteInstitution:e.props.deleteInstitution},n)}))})]}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:a,hasNextPage:o,curPerPage:s,resetPerPage:this.props.resetPerPage})]});return r.length?h:c}}]),n}(l.Component),rr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.setState({isOpIconShown:!0})},i.handleMouseLeave=function(){i.setState({isOpIconShown:!1})},i.toggleDeleteDialog=function(e){e&&e.preventDefault(),i.setState({isDeleteDialogOpen:!i.state.isDeleteDialogOpen})},i.deleteInstitution=function(){i.props.deleteInstitution(i.props.item.id)},i.state={isOpIconShown:!1,isDeleteDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state,n=t.isOpIconShown,i=t.isDeleteDialogOpen,r=''+f.c.HTMLescape(e.name)+"",s=(0,m.ih)("Are you sure you want to delete {placeholder} ?").replace("{placeholder}",r);return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/institutions/").concat(e.id,"/info/"),children:e.name})}),(0,y.jsx)("td",{children:L()(e.ctime).fromNow()}),(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:"#",className:"action-icon sf2-icon-delete ".concat(n?"":"invisible"),title:(0,m.ih)("Delete"),onClick:this.toggleDeleteDialog})})]}),i&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete Institution"),message:s,executeOperation:this.deleteInstitution,confirmBtnText:(0,m.ih)("Delete"),toggleDialog:this.toggleDeleteDialog})]})}}]),n}(l.Component),sr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getInstitutionsByPage=function(e){var t=i.state.perPage;I.I.sysAdminListInstitutions(e,t).then((function(n){i.setState({loading:!1,institutionList:n.data.institution_list,currentPage:e,hasNextPage:f.c.hasNextPage(e,t,n.data.total_count)})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){return i.getInstitutionsByPage(i.initPage)}))},i.toggleAddInstitutionDialog=function(){i.setState({isAddInstitutionDialogOpen:!i.state.isAddInstitutionDialogOpen})},i.addInstitution=function(e){I.I.sysAdminAddInstitution(e).then((function(e){var t=i.state.institutionList;t.push(e.data),i.setState({institutionList:t})})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteInstitution=function(e){I.I.sysAdminDeleteInstitution(e).then((function(t){var n=i.state.institutionList.filter((function(t){return t.id!=e}));i.setState({institutionList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",institutionList:[],perPage:25,currentPage:1,hasNextPage:!1,isAddInstitutionDialogOpen:!1},i.initPage=1,i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getInstitutionsByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state,t=e.isAddInstitutionDialogOpen,n=e.hasNextPage,r=e.currentPage,s=e.perPage;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleAddInstitutionDialog,children:(0,m.ih)("Add Institution")})})),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Institutions")})}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(ir,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.institutionList,deleteInstitution:this.deleteInstitution,currentPage:r,perPage:s,hasNextPage:n,getInstitutionsByPage:this.getInstitutionsByPage,resetPerPage:this.resetPerPage})})]})}),t&&(0,y.jsx)(nr,{addInstitution:this.addInstitution,toggle:this.toggleAddInstitutionDialog})]})}}]),n}(l.Component),ar=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"info",urlPart:"info",text:(0,m.ih)("Info")},{name:"members",urlPart:"members",text:(0,m.ih)("Members")},{name:"admins",urlPart:"admins",text:(0,m.ih)("Admins")}],i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.currentItem,n=e.institutionID,i=e.institutionName;return(0,y.jsxs)("div",{children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsxs)("h3",{className:"sf-heading",children:[(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/institutions/"),children:(0,m.ih)("Institutions")})," / ",i]})}),(0,y.jsx)("ul",{className:"nav border-bottom mx-4",children:this.navItems.map((function(e,i){return(0,y.jsx)("li",{className:"nav-item mr-2",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/institutions/").concat(n,"/").concat(e.urlPart,"/"),className:"nav-link ".concat(t==e.name?" active":""),children:e.text})},i)}))})]})}}]),n}(l.Component),or=ar,lr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleSetQuotaDialog=function(){i.setState({isSetQuotaDialogOpen:!i.state.isSetQuotaDialogOpen})},i.showEditIcon=function(e){return(0,y.jsx)("span",{title:(0,m.ih)("Edit"),className:"fa fa-pencil-alt attr-action-icon",onClick:e})},i.state={isSetQuotaDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg,i=e.institutionInfo;if(t)return(0,y.jsx)(Z.Z,{});if(n)return(0,y.jsx)("p",{className:"error text-center",children:n});var r=i.name,s=i.user_count,a=i.quota_total,o=i.quota_used,c=this.state.isSetQuotaDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("dl",{className:"m-0",children:[(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Name")}),(0,y.jsx)("dd",{className:"info-item-content",children:r}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Number of members")}),(0,y.jsx)("dd",{className:"info-item-content",children:s}),(0,y.jsx)("dt",{className:"info-item-heading",children:(0,m.ih)("Space Used")}),(0,y.jsxs)("dd",{className:"info-item-content",children:["".concat(f.c.bytesToSize(o)," / ").concat(a>0?f.c.bytesToSize(a):"--"),this.showEditIcon(this.toggleSetQuotaDialog)]})]}),c&&(0,y.jsx)(Te,{updateQuota:this.props.updateQuota,toggle:this.toggleSetQuotaDialog})]})}}]),n}(l.Component),cr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).updateQuota=function(e){I.I.sysAdminUpdateInstitution(i.props.institutionID,e).then((function(e){var t=Object.assign(i.state.institutionInfo,{quota_total:e.data.quota_total});i.setState({institutionInfo:t}),P.Z.success((0,m.ih)("Successfully set quota."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",institutionInfo:{}},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminGetInstitution(this.props.institutionID).then((function(t){e.setState({loading:!1,institutionInfo:t.data})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this.state.institutionInfo;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(or,{currentItem:"info",institutionID:this.props.institutionID,institutionName:e.name}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(lr,{loading:this.state.loading,errorMsg:this.state.errorMsg,institutionInfo:this.state.institutionInfo,updateQuota:this.updateQuota})})]})})]})}}]),n}(l.Component),hr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleSelectChange=function(e){i.setState({selectedOption:e})},i.handleSubmit=function(){if(i.state.selectedOption){var e=i.state.selectedOption.map((function(e){return e.email}));i.props.addUser(e)}},i.state={selectedOption:[]},i}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:(0,m.ih)("Add Member")}),(0,y.jsx)(_e.Z,{children:(0,y.jsx)(He.Z,{placeholder:(0,m.ih)("Search users"),onSelectChange:this.handleSelectChange,isMulti:!0,className:"org-add-member-select"})}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,children:(0,m.ih)("Submit")}),(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")})]})]})}}]),n}(l.Component),dr=hr,ur=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.getPreviousPage=function(){i.props.getInstitutionUsersByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getInstitutionUsersByPage(i.props.currentPage+1)},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items,s=t.perPage,a=t.currentPage,o=t.hasNextPage;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var c=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No members")})}),h=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"10%",children:(0,m.ih)("Status")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Space Used")}),(0,y.jsxs)("th",{width:"40%",children:[(0,m.ih)("Created At")," / ",(0,m.ih)("Last Login")]}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(gr,{item:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,setAdmin:e.props.setAdmin,deleteUser:e.props.deleteUser},n)}))})]}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:a,hasNextPage:o,curPerPage:s,resetPerPage:this.props.resetPerPage})]});return r.length?h:c}}]),n}(l.Component),gr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.toggleSetAdminDialog=function(e){e&&e.preventDefault(),i.setState({isSetAdminDialogOpen:!i.state.isSetAdminDialogOpen})},i.setAdmin=function(){i.props.setAdmin(i.props.item.email)},i.onMenuItemClick=function(e){switch(e){case"Delete":i.props.deleteUser(i.props.item.email);break;case"Set Admin":i.toggleSetAdminDialog()}},i.getOperations=function(){var e=[];return i.props.item.is_institution_admin||e.push("Set Admin"),e.push("Delete"),e},i.translateOperations=function(e){var t="";switch(e){case"Delete":t=(0,m.ih)("Delete");break;case"Set Admin":t=(0,m.ih)("Set Admin")}return t},i.state={isOpIconShown:!1,highlight:!1,isSetAdminDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state,n=t.isOpIconShown,i=t.isSetAdminDialogOpen,r=''+f.c.HTMLescape(e.name)+"",s=(0,m.ih)("Are you sure you want to set {placeholder} as Admin?").replace("{placeholder}",r);return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:e.email,name:e.name})}),(0,y.jsx)("td",{children:e.is_active?(0,m.ih)("Active"):(0,m.ih)("Inactive")}),(0,y.jsx)("td",{children:"".concat(f.c.bytesToSize(e.quota_usage)," / ").concat(e.quota_total>0?f.c.bytesToSize(e.quota_total):"--")}),(0,y.jsxs)("td",{children:[L()(e.create_time).format("YYYY-MM-DD HH:mm:ss")," / ",e.last_login?L()(e.last_login).fromNow():"--"]}),(0,y.jsx)("td",{children:n&&(0,y.jsx)(Je.Z,{operations:this.getOperations(),translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),i&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Set Admin"),message:s,executeOperation:this.setAdmin,toggleDialog:this.toggleSetAdminDialog,confirmBtnText:(0,m.ih)("Set Admin")})]})}}]),n}(l.Component),pr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getInstitutionUsersByPage=function(e){var t=i.state.perPage;I.I.sysAdminListInstitutionUsers(i.props.institutionID,e,t).then((function(n){i.setState({loading:!1,userList:n.data.user_list,currentPage:e,hasNextPage:f.c.hasNextPage(e,t,n.data.total_count)})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.setAdmin=function(e){I.I.sysAdminUpdateInstitutionUser(i.props.institutionID,e,!0).then((function(t){var n=i.state.userList.map((function(t){return t.email==e&&(t.is_institution_admin=!0),t}));i.setState({userList:n}),P.Z.success((0,m.ih)("Success"))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.toggleAddUserDialog=function(){i.setState({isAddUserDialogOpen:!i.state.isAddUserDialogOpen})},i.resetPerPage=function(e){i.setState({perPage:e},(function(){return i.getInstitutionUsersByPage(i.initPage)}))},i.addUser=function(e){I.I.sysAdminAddInstitutionUserBatch(i.props.institutionID,e).then((function(e){i.toggleAddUserDialog();var t=e.data.success,n=e.data.failed;if(t.length){var r=i.state.userList.concat(t);i.setState({userList:r})}n.forEach((function(e){P.Z.danger(e.error_msg)}))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteUser=function(e){I.I.sysAdminDeleteInstitutionUser(i.props.institutionID,e).then((function(t){var n=i.state.userList.filter((function(t){return t.email!=e}));i.setState({userList:n}),P.Z.success("success")})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",institutionName:"",userList:[],perPage:25,currentPage:1,hasNextPage:!1,isAddUserDialogOpen:!1},i.initPage=1,i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminGetInstitution(this.props.institutionID).then((function(t){e.setState({institutionName:t.data.name})}));var t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getInstitutionUsersByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state,t=e.isAddUserDialogOpen,n=e.institutionName,r=e.hasNextPage,s=e.currentPage,a=e.perPage;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleAddUserDialog,children:(0,m.ih)("Add Member")})})),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(or,{currentItem:"members",institutionID:this.props.institutionID,institutionName:n}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(ur,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.userList,setAdmin:this.setAdmin,deleteUser:this.deleteUser,currentPage:s,perPage:a,hasNextPage:r,getInstitutionUsersByPage:this.getInstitutionUsersByPage,resetPerPage:this.resetPerPage})})]})}),t&&(0,y.jsx)(dr,{addUser:this.addUser,toggle:this.toggleAddUserDialog})]})}}]),n}(l.Component),mr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center mt-4",children:i});var s=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No admins")})}),a=(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"10%",children:(0,m.ih)("Status")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Space Used")}),(0,y.jsxs)("th",{width:"40%",children:[(0,m.ih)("Created At")," / ",(0,m.ih)("Last Login")]}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(fr,{item:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,revokeAdmin:e.props.revokeAdmin,deleteUser:e.props.deleteUser},n)}))})]})});return r.length?a:s}}]),n}(l.Component),fr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.toggleRevokeAdminDialog=function(e){e&&e.preventDefault(),i.setState({isRevokeAdminDialogOpen:!i.state.isRevokeAdminDialogOpen})},i.revokeAdmin=function(){i.props.revokeAdmin(i.props.item)},i.onMenuItemClick=function(e){if("Revoke Admin"===e)i.toggleRevokeAdminDialog()},i.translateOperations=function(e){var t="";if("Revoke Admin"===e)t=(0,m.ih)("Revoke Admin");return t},i.state={isOpIconShown:!1,highlight:!1,isRevokeAdminDialogOpen:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item,t=this.state,n=t.isOpIconShown,i=t.isRevokeAdminDialogOpen,r=''+f.c.HTMLescape(e.name)+"",s=(0,m.ih)("Are you sure you want to revoke the admin permission of {placeholder} ?").replace("{placeholder}",r);return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:e.email,name:e.name})}),(0,y.jsx)("td",{children:e.is_active?(0,m.ih)("Active"):(0,m.ih)("Inactive")}),(0,y.jsx)("td",{children:"".concat(f.c.bytesToSize(e.quota_usage)," / ").concat(e.quota_total>0?f.c.bytesToSize(e.quota_total):"--")}),(0,y.jsxs)("td",{children:[L()(e.create_time).format("YYYY-MM-DD HH:mm:ss")," / ",e.last_login?L()(e.last_login).fromNow():"--"]}),(0,y.jsx)("td",{children:n&&(0,y.jsx)(Je.Z,{operations:["Revoke Admin"],translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),i&&(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Revoke Admin"),message:s,executeOperation:this.revokeAdmin,confirmBtnText:(0,m.ih)("Revoke"),toggleDialog:this.toggleRevokeAdminDialog})]})}}]),n}(l.Component),vr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).revokeAdmin=function(e){var t=e.email,n=e.name;I.I.sysAdminUpdateInstitutionUser(i.props.institutionID,t,!1).then((function(e){var r=i.state.userList.filter((function(e){return e.email!=t}));i.setState({userList:r}),P.Z.success((0,m.ih)("Successfully revoked the admin permission of {placeholder}.").replace("{placeholder}",n))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteUser=function(e){I.I.sysAdminDeleteInstitutionUser(i.props.institutionID,e).then((function(t){var n=i.state.userList.filter((function(t){return t.email!=e}));i.setState({userList:n}),P.Z.success("success")})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",institutionName:"",userList:[],isAddUserDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminGetInstitution(this.props.institutionID).then((function(t){e.setState({institutionName:t.data.name})})),I.I.sysAdminListInstitutionAdmins(this.props.institutionID).then((function(t){e.setState({loading:!1,userList:t.data.user_list})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this.state.institutionName;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(or,{currentItem:"admins",institutionID:this.props.institutionID,institutionName:e}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(mr,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:this.state.userList,revokeAdmin:this.revokeAdmin,deleteUser:this.deleteUser})})]})})]})}}]),n}(l.Component),xr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"loginLogs",urlPart:"logs/login",text:(0,m.ih)("Login")},{name:"fileAccessLogs",urlPart:"logs/file-access",text:(0,m.ih)("File Access")},{name:"fileUpdateLogs",urlPart:"logs/file-update",text:(0,m.ih)("File Update")},{name:"sharePermissionLogs",urlPart:"logs/share-permission",text:(0,m.ih)("Permission")}],i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.currentItem;return(0,y.jsx)("div",{className:"cur-view-path tab-nav-container",children:(0,y.jsx)("ul",{className:"nav",children:this.navItems.map((function(t,n){return(0,y.jsx)("li",{className:"nav-item",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/").concat(t.urlPart,"/"),className:"nav-link".concat(e==t.name?" active":""),children:t.text})},n)}))})})}}]),n}(l.Component),yr=xr,br=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).downloadExcel=function(){if(i.isValidDateStr()){var e=i.state,t=e.startDateStr,n=e.endDateStr,r=m.ze;switch(i.props.logType){case"login":r+="sys/loginadmin/export-excel/";break;case"fileAccess":r+="sys/log/fileaudit/export-excel/";break;case"fileUpdate":r+="sys/log/fileupdate/export-excel/";break;case"sharePermission":r+="sys/log/permaudit/export-excel/"}location.href=r+"?start="+t+"&end="+n,i.props.toggle()}},i.isValidDateStr=function(){var e=i.state,t=e.startDateStr,n=e.endDateStr;return!!(L()(t,"YYYY-MM-DD",!0).isValid()&&L()(n,"YYYY-MM-DD",!0).isValid()&&L()(t).isBefore(n))||(i.setState({errMsg:(0,m.ih)("Date Invalid.")}),!1)},i.handleStartChange=function(e){var t=e.target.value.trim();i.setState({startDateStr:t,errMsg:""})},i.handleEndChange=function(e){var t=e.target.value.trim();i.setState({endDateStr:t,errMsg:""})},i.state={loading:!0,startDateStr:"",endDateStr:"",errMsg:""},i}return(0,s.Z)(n,[{key:"render",value:function(){return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.props.toggle,autoFocus:!1,children:[(0,y.jsx)(ke.Z,{toggle:this.props.toggle,children:(0,m.ih)("Choose date")}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsxs)(Me.Z,{children:[(0,y.jsx)(Ue.Z,{children:(0,m.ih)("Start date")}),(0,y.jsx)(te.Z,{value:this.state.startDateStr,onChange:this.handleStartChange,placeholder:"yyyy-mm-dd",autoFocus:!0})]}),(0,y.jsxs)(Me.Z,{children:[(0,y.jsx)(Ue.Z,{children:(0,m.ih)("End date")}),(0,y.jsx)(te.Z,{value:this.state.endDateStr,onChange:this.handleEndChange,placeholder:"yyyy-mm-dd"})]}),this.state.errMsg&&(0,y.jsx)(Fe.Z,{className:"mt-2",color:"danger",children:(0,m.ih)(this.state.errMsg)})]}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.props.toggle,children:(0,m.ih)("Cancel")}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.downloadExcel,children:(0,m.ih)("Submit")})]})]})}}]),n}(l.Component),jr=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,r.Z)(this,n);for(var i=arguments.length,s=new Array(i),a=0;a0?t.avatar.substring(0,t.avatar.length-1)+"100":m.ze+"media/avatars/default.png",(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{children:!t.email&&(0,y.jsx)("input",{type:"checkbox",className:"vam",onChange:function(){return e.props.onUserChecked(t)},checked:t.userid in n?"checked":""})}),(0,y.jsx)("td",{children:(0,y.jsx)("img",{className:"avatar",src:s,alt:""})}),(0,y.jsx)("td",{children:t.name}),(0,y.jsx)("td",{children:t.mobile}),(0,y.jsx)("td",{children:t.contact_email}),(0,y.jsx)("td",{children:t.email&&(0,y.jsx)("i",{className:"sf2-icon-tick"})})]},i.toString()+t.userid)}));return(0,y.jsxs)("div",{className:"dir-content-main",children:[r&&(0,y.jsx)(Z.Z,{}),!r&&this.props.membersList.length>0&&(0,y.jsxs)(ns.Z,{hover:!0,children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%",children:s.length>0&&(0,y.jsx)("input",{type:"checkbox",className:"vam",checked:this.props.isCheckedAll,onChange:function(){return e.props.onAllUsersChecked()}})}),(0,y.jsx)("th",{width:"10%"}),(0,y.jsx)("th",{width:"20%",children:"\u540d\u79f0"}),(0,y.jsx)("th",{width:"20%",children:"\u624b\u673a\u53f7"}),(0,y.jsx)("th",{width:"30%",children:"\u90ae\u7bb1"}),(0,y.jsx)("th",{width:"15%",children:"\u5df2\u6dfb\u52a0"})]})}),(0,y.jsx)("tbody",{children:a})]}),!r&&0===this.props.membersList.length&&(0,y.jsxs)("div",{className:"message empty-tip text-center",children:[(0,y.jsx)("img",{src:"".concat(m.ze,"media/img/member-list-empty-2x.png"),alt:""}),(0,y.jsx)("h4",{children:"\u6210\u5458\u5217\u8868\u4e3a\u7a7a"})]})]})}}]),n}(l.Component),rs=n(81694),ss=n.n(rs),as=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleChildren=function(e){e.preventDefault(),e.stopPropagation(),i.setState({isChildrenShow:!i.state.isChildrenShow})},i.dropdownToggle=function(e){e.stopPropagation(),i.setState({dropdownOpen:!i.state.dropdownOpen})},i.onMouseEnter=function(){i.setState({active:!0})},i.onMouseLeave=function(){i.state.dropdownOpen||i.setState({active:!1})},i.importDepartmentDialogToggle=function(e){i.setState({active:!1}),i.props.importDepartmentDialogToggle(e)},i.renderTreeNodes=function(e){if(e.length>0)return e.map((function(e){return(0,y.jsx)(n,{department:e,isChildrenShow:i.state.isChildrenShow,onChangeDepartment:i.props.onChangeDepartment,checkedDepartmentId:i.props.checkedDepartmentId,importDepartmentDialogToggle:i.importDepartmentDialogToggle},e.id)}))},i.changeDept=function(e){var t=i.props,n=t.department,r=t.checkedDepartmentId;i.props.onChangeDepartment(e),r!==n.id||i.state.isChildrenShow||i.setState({isChildrenShow:!0})},i.state={isChildrenShow:!1,dropdownOpen:!1,active:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){0===this.props.index&&(this.setState({isChildrenShow:!0}),this.props.onChangeDepartment(this.props.department.id))}},{key:"render",value:function(){var e=this,t=this.props,n=t.isChildrenShow,i=t.department,r=t.checkedDepartmentId,s=ss()({"folder-toggle-icon fa fa-caret-down":i.children&&this.state.isChildrenShow,"folder-toggle-icon fa fa-caret-right":i.children&&!this.state.isChildrenShow}),a=ss()({"tree-node-inner":!0,"tree-node-inner-hover":this.state.active,"tree-node-hight-light":r===i.id});return(0,y.jsxs)(l.Fragment,{children:[n&&(0,y.jsxs)("div",{className:a,onClick:function(){return e.changeDept(i.id)},onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,children:[(0,y.jsx)("span",{className:"tree-node-icon",onClick:function(t){return e.toggleChildren(t)},children:(0,y.jsx)("i",{className:s})}),(0,y.jsx)("span",{className:"tree-node-text",children:i.name}),m._y&&(0,y.jsxs)(wr.Z,{isOpen:this.state.dropdownOpen,toggle:function(t){return e.dropdownToggle(t)},direction:"down",style:this.state.active?{}:{opacity:0},children:[(0,y.jsx)(Ir.Z,{tag:"i",className:"fa fa-ellipsis-v cursor-pointer attr-action-icon",title:(0,m.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":this.state.dropdownOpen}),(0,y.jsx)(Pr.Z,{className:"drop-list",right:!0,children:(0,y.jsx)(Zr.Z,{onClick:this.importDepartmentDialogToggle.bind(this,i),id:i.id,children:"\u5bfc\u5165\u90e8\u95e8"})})]})]}),this.state.isChildrenShow&&(0,y.jsx)("div",{className:"department-children",children:i.children&&this.renderTreeNodes(i.children)})]})}}]),n}(l.Component),os=as,ls=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,r.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props.departmentsTree;return(0,y.jsx)("div",{className:"dir-content-nav",children:(0,y.jsx)("div",{className:"tree-view tree",children:this.props.isTreeLoading?(0,y.jsx)(Z.Z,{}):(0,y.jsx)("div",{className:"tree-node",children:t.length>0&&t.map((function(t,n){return(0,y.jsx)(os,{index:n,department:t,isChildrenShow:!0,onChangeDepartment:e.props.onChangeDepartment,checkedDepartmentId:e.props.checkedDepartmentId,importDepartmentDialogToggle:e.props.importDepartmentDialogToggle},t.id)}))})})})}}]),n}(l.Component),cs=ls,hs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggle=function(){i.props.importDepartmentDialogToggle(null)},i.handleSubmit=function(){i.props.onImportDepartmentSubmit(),i.setState({isLoading:!0})},i.state={isLoading:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.departmentsCount,n=e.membersCount,i=e.departmentName;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsxs)(ke.Z,{toggle:this.toggle,children:[(0,y.jsx)("span",{children:"\u5bfc\u5165\u90e8\u95e8 "}),(0,y.jsx)("span",{className:"op-target",title:i,children:i})]}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsxs)("p",{children:["\u5c06\u8981\u5bfc\u5165 ",(0,y.jsx)("strong",{children:t})," \u4e2a\u90e8\u95e8\uff0c\u5176\u4e2d\u5305\u62ec ",(0,y.jsx)("strong",{children:n})," \u4e2a\u6210\u5458"]}),this.state.isLoading&&(0,y.jsx)(Z.Z,{})]}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.toggle,children:"\u53d6\u6d88"}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,children:"\u5bfc\u5165"})]})]})}}]),n}(l.Component),ds=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getDepartmentsTree=function(e){for(var t=[],n=[],i=0;i0&&(e.children=t),-1!==s.indexOf(e.parentid)}))},i.getWorkWeixinDepartmentsList=function(e){I.I.adminListWorkWeixinDepartments(e).then((function(t){if(e)i.setState({importDepartmentChildrenCount:t.data.department.length,importDepartmentMembersCount:i.state.membersTempObj[e].length});else{var n=i.getDepartmentsTree(t.data.department);i.setState({isTreeLoading:!1,departmentsTree:n})}})).catch((function(e){i.handleError(e),i.setState({isTreeLoading:!1,isMembersListLoading:!1}),e.response&&403===e.response.status&&(window.location=m.ze+"sys/useradmin/")}))},i.getWorkWeixinDepartmentMembersList=function(e){i.setState({isMembersListLoading:!0}),I.I.adminListWorkWeixinDepartmentMembers(e,{fetch_child:!0}).then((function(t){var n=i.state.membersTempObj;n[e]=t.data.userlist;var r=i.getCanCheckUserIds(t.data.userlist);i.setState({membersTempObj:n,membersList:t.data.userlist,isMembersListLoading:!1,canCheckUserIds:r})})).catch((function(e){i.setState({isMembersListLoading:!1}),i.handleError(e)}))},i.getCanCheckUserIds=function(e){var t=[];return e.forEach((function(e){e.email||t.push(e.userid)})),t},i.onChangeDepartment=function(e){if(i.setState({newUsersTempObj:{},isCheckedAll:!1,checkedDepartmentId:e}),e in i.state.membersTempObj){var t=i.getCanCheckUserIds(i.state.membersTempObj[e]);i.setState({membersList:i.state.membersTempObj[e],canCheckUserIds:t})}else i.getWorkWeixinDepartmentMembersList(e)},i.onUserChecked=function(e){if(-1!==i.state.canCheckUserIds.indexOf(e.userid)){var t=i.state.newUsersTempObj;e.userid in t?(delete t[e.userid],i.state.isCheckedAll&&i.setState({isCheckedAll:!1})):(t[e.userid]=e,Object.keys(t).length===i.state.canCheckUserIds.length&&i.setState({isCheckedAll:!0})),i.setState({newUsersTempObj:t})}},i.onAllUsersChecked=function(){i.setState({isCheckedAll:!i.state.isCheckedAll},(function(){if(i.state.isCheckedAll){for(var e={},t=i.state.membersList.filter((function(e){return-1!==i.state.canCheckUserIds.indexOf(e.userid)})),n=0;n0?t.avatar:m.ze+"media/avatars/default.png",(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{children:!t.email&&(0,y.jsx)("input",{type:"checkbox",className:"vam",onChange:function(){return e.props.onUserChecked(t)},checked:t.userid in n?"checked":""})}),(0,y.jsx)("td",{children:(0,y.jsx)("img",{className:"avatar",src:s,alt:""})}),(0,y.jsx)("td",{children:t.name}),(0,y.jsx)("td",{children:t.mobile}),(0,y.jsx)("td",{children:t.contact_email}),(0,y.jsx)("td",{children:t.email&&(0,y.jsx)("i",{className:"sf2-icon-tick"})})]},i.toString()+t.userid)}));return(0,y.jsxs)("div",{className:"dir-content-main",children:[r&&(0,y.jsx)(Z.Z,{}),!r&&this.props.membersList.length>0&&(0,y.jsxs)(ns.Z,{hover:!0,children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"5%",children:s.length>0&&(0,y.jsx)("input",{type:"checkbox",className:"vam",checked:this.props.isCheckedAll,onChange:function(){return e.props.onAllUsersChecked()}})}),(0,y.jsx)("th",{width:"10%"}),(0,y.jsx)("th",{width:"20%",children:"\u540d\u79f0"}),(0,y.jsx)("th",{width:"20%",children:"\u624b\u673a\u53f7"}),(0,y.jsx)("th",{width:"30%",children:"\u90ae\u7bb1"}),(0,y.jsx)("th",{width:"15%",children:"\u5df2\u6dfb\u52a0"})]})}),(0,y.jsx)("tbody",{children:a})]}),!r&&0===this.props.membersList.length&&(0,y.jsxs)("div",{className:"message empty-tip text-center",children:[(0,y.jsx)("img",{src:"".concat(m.ze,"media/img/member-list-empty-2x.png"),alt:""}),(0,y.jsx)("h4",{children:"\u6210\u5458\u5217\u8868\u4e3a\u7a7a"})]})]})}}]),n}(l.Component),gs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleChildren=function(e){e.preventDefault(),e.stopPropagation(),i.setState({isChildrenShow:!i.state.isChildrenShow})},i.dropdownToggle=function(e){e.stopPropagation(),i.setState({dropdownOpen:!i.state.dropdownOpen})},i.onMouseEnter=function(){i.setState({active:!0})},i.onMouseLeave=function(){i.state.dropdownOpen||i.setState({active:!1})},i.importDepartmentDialogToggle=function(e){i.setState({active:!1}),i.props.importDepartmentDialogToggle(e)},i.renderTreeNodes=function(e){if(e.length>0)return e.map((function(e){return(0,y.jsx)(n,{department:e,isChildrenShow:i.state.isChildrenShow,onChangeDepartment:i.props.onChangeDepartment,checkedDepartmentId:i.props.checkedDepartmentId,importDepartmentDialogToggle:i.importDepartmentDialogToggle},e.id)}))},i.changeDept=function(e){var t=i.props,n=t.department,r=t.checkedDepartmentId;i.props.onChangeDepartment(e),r!==n.id||i.state.isChildrenShow||i.setState({isChildrenShow:!0})},i.state={isChildrenShow:!1,dropdownOpen:!1,active:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){0===this.props.index&&(this.setState({isChildrenShow:!0}),this.props.onChangeDepartment(this.props.department.id))}},{key:"render",value:function(){var e=this,t=this.props,n=t.isChildrenShow,i=t.department,r=t.checkedDepartmentId,s=ss()({"folder-toggle-icon fa fa-caret-down":i.children&&this.state.isChildrenShow,"folder-toggle-icon fa fa-caret-right":i.children&&!this.state.isChildrenShow}),a=ss()({"tree-node-inner":!0,"tree-node-inner-hover":this.state.active,"tree-node-hight-light":r===i.id});return(0,y.jsxs)(l.Fragment,{children:[n&&(0,y.jsxs)("div",{className:a,onClick:function(){return e.changeDept(i.id)},onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,children:[(0,y.jsx)("span",{className:"tree-node-icon",onClick:function(t){return e.toggleChildren(t)},children:(0,y.jsx)("i",{className:s})}),(0,y.jsx)("span",{className:"tree-node-text",children:i.name}),m._y&&(0,y.jsxs)(wr.Z,{isOpen:this.state.dropdownOpen,toggle:function(t){return e.dropdownToggle(t)},direction:"down",style:this.state.active?{}:{opacity:0},children:[(0,y.jsx)(Ir.Z,{tag:"i",className:"fa fa-ellipsis-v cursor-pointer attr-action-icon",title:(0,m.ih)("More Operations"),"data-toggle":"dropdown","aria-expanded":this.state.dropdownOpen}),(0,y.jsx)(Pr.Z,{className:"drop-list",right:!0,children:(0,y.jsx)(Zr.Z,{onClick:this.importDepartmentDialogToggle.bind(this,i),id:i.id,children:"\u5bfc\u5165\u90e8\u95e8"})})]})]}),this.state.isChildrenShow&&(0,y.jsx)("div",{className:"department-children",children:i.children&&this.renderTreeNodes(i.children)})]})}}]),n}(l.Component),ps=gs,ms=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,r.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props.departmentsTree;return(0,y.jsx)("div",{className:"dir-content-nav",children:(0,y.jsx)("div",{className:"tree-view tree",children:this.props.isTreeLoading?(0,y.jsx)(Z.Z,{}):(0,y.jsx)("div",{className:"tree-node",children:t.length>0&&t.map((function(t,n){return(0,y.jsx)(ps,{index:n,department:t,isChildrenShow:!0,onChangeDepartment:e.props.onChangeDepartment,checkedDepartmentId:e.props.checkedDepartmentId,importDepartmentDialogToggle:e.props.importDepartmentDialogToggle},t.id)}))})})})}}]),n}(l.Component),fs=ms,vs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggle=function(){i.props.importDepartmentDialogToggle(null)},i.handleSubmit=function(){i.props.onImportDepartmentSubmit(),i.setState({isLoading:!0})},i.state={isLoading:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.departmentsCount,n=e.membersCount,i=e.departmentName;return(0,y.jsxs)(u.Z,{isOpen:!0,toggle:this.toggle,children:[(0,y.jsxs)(ke.Z,{toggle:this.toggle,children:[(0,y.jsx)("span",{children:"\u5bfc\u5165\u90e8\u95e8 "}),(0,y.jsx)("span",{className:"op-target",title:i,children:i})]}),(0,y.jsxs)(_e.Z,{children:[(0,y.jsxs)("p",{children:["\u5c06\u8981\u5bfc\u5165 ",(0,y.jsx)("strong",{children:t})," \u4e2a\u90e8\u95e8\uff0c\u5176\u4e2d\u5305\u62ec ",(0,y.jsx)("strong",{children:n})," \u4e2a\u6210\u5458"]}),this.state.isLoading&&(0,y.jsx)(Z.Z,{})]}),(0,y.jsxs)(Oe.Z,{children:[(0,y.jsx)(w.Z,{color:"secondary",onClick:this.toggle,children:"\u53d6\u6d88"}),(0,y.jsx)(w.Z,{color:"primary",onClick:this.handleSubmit,children:"\u5bfc\u5165"})]})]})}}]),n}(l.Component),xs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getDepartmentsTree=function(e){for(var t=[],n=[],i=0;i0&&(e.children=t),-1!==s.indexOf(e.parentid)}))},i.getDingtalkDepartmentsList=function(e){I.I.adminListDingtalkDepartments(e).then((function(t){if(e)i.setState({importDepartmentChildrenCount:t.data.department.length,importDepartmentMembersCount:i.state.membersTempObj[e].length});else{var n=i.getDepartmentsTree(t.data.department);i.setState({isTreeLoading:!1,departmentsTree:n})}})).catch((function(e){i.handleError(e),i.setState({isTreeLoading:!1,isMembersListLoading:!1}),e.response&&403===e.response.status&&(window.location=m.ze+"sys/useradmin/")}))},i.getDingtalkDepartmentMembersList=function(e){i.setState({isMembersListLoading:!0}),I.I.adminListDingtalkDepartmentMembers(e).then((function(t){var n=i.state.membersTempObj;n[e]=t.data.userlist;var r=i.getCanCheckUserIds(t.data.userlist);i.setState({membersTempObj:n,membersList:t.data.userlist,isMembersListLoading:!1,canCheckUserIds:r})})).catch((function(e){i.setState({isMembersListLoading:!1}),i.handleError(e)}))},i.getCanCheckUserIds=function(e){var t=[];return e.forEach((function(e){e.email||t.push(e.userid)})),t},i.onChangeDepartment=function(e){if(i.setState({newUsersTempObj:{},isCheckedAll:!1,checkedDepartmentId:e}),e in i.state.membersTempObj){var t=i.getCanCheckUserIds(i.state.membersTempObj[e]);i.setState({membersList:i.state.membersTempObj[e],canCheckUserIds:t})}else i.getDingtalkDepartmentMembersList(e)},i.onUserChecked=function(e){if(-1!==i.state.canCheckUserIds.indexOf(e.userid)){var t=i.state.newUsersTempObj;e.userid in t?(delete t[e.userid],i.state.isCheckedAll&&i.setState({isCheckedAll:!1})):(t[e.userid]=e,Object.keys(t).length===i.state.canCheckUserIds.length&&i.setState({isCheckedAll:!0})),i.setState({newUsersTempObj:t})}},i.onAllUsersChecked=function(){i.setState({isCheckedAll:!i.state.isCheckedAll},(function(){if(i.state.isCheckedAll){for(var e={},t=i.state.membersList.filter((function(e){return-1!==i.state.canCheckUserIds.indexOf(e.userid)})),n=0;n|!\[\]\(\S+\)|<\S+>/g,_s=/^/,Ns=/^!\[\]\((\S+)\)/,Ms=/^\[.+\]\(\S+\)/,Cs=/^<\S+>$/,As=function(e){for(var t="",n=e.replace(ks,""),i=0;i=0||e.search(Cs)>=0)t.links.push(e);else{var n=e.match(_s),i=e.match(Ns);n?t.images.push(n[1]):i&&t.images.push(i[1])}})),t}(r);return{previewText:t,images:s.images,links:s.links}}return{previewText:t,images:[],links:[]}},Ls=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,r.Z)(this,n);for(var i=arguments.length,s=new Array(i),a=0;a'+f.c.HTMLescape(e.name)+"",o=(0,m.ih)("Are you sure you want to delete {placeholder} ?").replace("{placeholder}",a);return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("tr",{onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:e.name}),(0,y.jsx)("td",{children:e.version_number}),(0,y.jsx)("td",{className:"ellipsis",children:(0,y.jsx)("a",{href:"#",onClick:this.toggleTermsContentDialog,children:s.previewText})}),(0,y.jsx)("td",{children:L()(e.ctime).fromNow()}),(0,y.jsx)("td",{children:e.activate_time?L()(e.activate_time).fromNow():"--"}),(0,y.jsx)("td",{children:this.state.isOpIconShown&&(0,y.jsx)(Je.Z,{operations:["Update","Delete"],translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]}),n&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(Ye.Z,{title:(0,m.ih)("Delete T&C"),message:o,toggleDialog:this.toggleDeleteDialog,executeOperation:this.deleteTerm,confirmBtnText:(0,m.ih)("Delete")})}),i&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(Zs,{updateTerm:this.updateTerm,toggle:this.toggleUpdateDialog,isUpdate:!0,oldTermObj:e})}),r&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(Os,{content:e.text,onClosePreviewDialog:this.toggleTermsContentDialog})})]})}}]),n}(l.Component),Fs=Ts,Rs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.items;if(n)return(0,y.jsx)(Z.Z,{});if(i)return(0,y.jsx)("p",{className:"error text-center",children:i});var s=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No terms and conditions")})}),a=(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"10%",children:(0,m.ih)("Version")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Text")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Created")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Activated")}),(0,y.jsx)("th",{width:"5%"})]})}),r&&(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(Fs,{item:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,deleteTerm:e.props.deleteTerm,updateTerm:e.props.updateTerm},n)}))})]})});return r.length?a:s}}]),n}(l.Component),Us=Rs,Es=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).toggleAddTermDialog=function(){i.setState({isAddTermDialogOpen:!i.state.isAddTermDialogOpen})},i.addTerm=function(e,t,n,i){I.I.sysAdminAddTermAndCondition(e,t,n,i).then((function(e){location.reload()})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.updateTerm=function(e,t,n,r,s){I.I.sysAdminUpdateTermAndCondition(e,t,n,r,s).then((function(t){var n=i.state.termList.map((function(n){return n.id==e?t.data:n}));i.setState({termList:n}),P.Z.success((0,m.ih)("Update succeeded."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.deleteTerm=function(e){I.I.sysAdminDeleteTermAndCondition(e).then((function(t){var n=i.state.termList.filter((function(t){return t.id!=e}));i.setState({termList:n}),P.Z.success((0,m.ih)("Successfully deleted 1 item."))})).catch((function(e){var t=f.c.getErrorMsg(e);P.Z.danger(t)}))},i.state={loading:!0,errorMsg:"",termList:[],isAddTermDialogOpen:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this;I.I.sysAdminListTermsAndConditions().then((function(t){e.setState({termList:t.data.term_and_condition_list,loading:!1})})).catch((function(t){e.setState({loading:!1,errorMsg:f.c.getErrorMsg(t,!0)})}))}},{key:"render",value:function(){var e=this.state,t=e.termList,n=e.isAddTermDialogOpen;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:(0,y.jsx)(w.Z,{className:"btn btn-secondary operation-item",onClick:this.toggleAddTermDialog,children:(0,m.ih)("Add")})})),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Terms and Conditions")})}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Us,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:t,deleteTerm:this.deleteTerm,updateTerm:this.updateTerm})})]})}),n&&(0,y.jsx)(qt.Z,{children:(0,y.jsx)(Zs,{isUpdate:!1,addTerm:this.addTerm,toggle:this.toggleAddTermDialog})})]})}}]),n}(l.Component),zs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"all",urlPart:"all",text:(0,m.ih)("All")},{name:"unhandled",urlPart:"unhandled",text:(0,m.ih)("Unhandled")}],i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.currentItem;return(0,y.jsx)("div",{className:"cur-view-path tab-nav-container",children:(0,y.jsx)("ul",{className:"nav",children:this.navItems.map((function(t,n){return(0,y.jsx)("li",{className:"nav-item",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/virus-files/").concat(t.urlPart,"/"),className:"nav-link".concat(e==t.name?" active":""),children:t.text})},n)}))})})}}]),n}(l.Component),Bs=zs,Vs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.onMenuItemClick=function(e){i.props.handleFile(i.props.virusFile.virus_id,e)},i.translateOperations=function(e){var t="";switch(e){case"delete":t=(0,m.ih)("Delete");break;case"ignore":t=(0,m.ih)("Ignore");break;case"do-not-ignore":t=(0,m.ih)("Don't ignore")}return t},i.state={highlight:!1,isOpIconShown:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.virusFile,t="",n=[];return e.has_deleted?t=(0,y.jsx)("span",{className:"text-green",children:(0,m.ih)("Deleted")}):e.has_ignored?(t=(0,y.jsx)("span",{className:"text-orange",children:(0,m.ih)("Ignored")}),n=["do-not-ignore"]):(t=(0,y.jsx)("span",{className:"text-red",children:(0,m.ih)("Unhandled")}),n=["delete","ignore"]),(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{children:e.repo_name}),(0,y.jsx)("td",{children:e.repo_owner}),(0,y.jsx)("td",{children:e.file_path}),(0,y.jsx)("td",{children:t}),(0,y.jsx)("td",{children:n.length>0&&this.state.isOpIconShown&&(0,y.jsx)(Je.Z,{operations:n,translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]})}}]),n}(l.Component),Hs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.getPreviousPage=function(){i.props.getListByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getListByPage(i.props.currentPage+1)},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.virusFiles,s=t.curPerPage,a=t.hasNextPage,o=t.currentPage;return n?(0,y.jsx)(Z.Z,{}):i?(0,y.jsx)("p",{className:"error text-center mt-4",children:i}):(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"27%",children:(0,m.ih)("Library")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Owner")}),(0,y.jsx)("th",{width:"28%",children:(0,m.ih)("Virus File")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Status")}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(Vs,{virusFile:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,handleFile:e.props.handleFile},n)}))})]}),r.length>0&&(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:o,hasNextPage:a,curPerPage:s,resetPerPage:this.props.resetPerPage})]})}}]),n}(l.Component),Ws=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getListByPage=function(e){var t=i.state.perPage;I.I.listVirusFiles(e,t).then((function(e){var t=e.data;i.setState({loading:!1,virusFiles:t.virus_file_list,hasNextPage:t.has_next_page})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getListByPage(1)}))},i.handleFile=function(e,t){var n;switch(t){case"delete":n=I.I.deleteVirusFile(e);break;case"ignore":n=I.I.toggleIgnoreVirusFile(e,!0);break;case"do-not-ignore":n=I.I.toggleIgnoreVirusFile(e,!1)}n.then((function(n){i.setState({virusFiles:i.state.virusFiles.map((function(i){return i.virus_id==e&&("delete"==t?i.has_deleted=!0:i=n.data.virus_file),i}))})})).catch((function(e){P.Z.danger(f.c.getErrorMsg(e))}))},i.state={loading:!0,errorMsg:"",virusFiles:[],currentPage:1,perPage:25,hasNextPage:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getListByPage(e.state.currentPage)}))}},{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Bs,{currentItem:"all"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Hs,{loading:this.state.loading,errorMsg:this.state.errorMsg,virusFiles:this.state.virusFiles,currentPage:this.state.currentPage,hasNextPage:this.state.hasNextPage,curPerPage:this.state.perPage,resetPerPage:this.resetPerPage,getListByPage:this.getListByPage,handleFile:this.handleFile})})]})})]})}}]),n}(l.Component),Ys=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).handleMouseEnter=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!0,highlight:!0})},i.handleMouseLeave=function(){i.props.isItemFreezed||i.setState({isOpIconShown:!1,highlight:!1})},i.onUnfreezedItem=function(){i.setState({highlight:!1,isOpIconShow:!1}),i.props.onUnfreezedItem()},i.onMenuItemClick=function(e){i.props.handleFile(i.props.virusFile.virus_id,e)},i.translateOperations=function(e){var t="";switch(e){case"delete":t=(0,m.ih)("Delete");break;case"ignore":t=(0,m.ih)("Ignore");break;case"do-not-ignore":t=(0,m.ih)("Don't ignore")}return t},i.toggleItemSelected=function(e){i.props.toggleItemSelected(i.props.virusFile,e.target.checked)},i.state={highlight:!1,isOpIconShown:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.virusFile,t="",n=[];return e.has_deleted?t=(0,y.jsx)("span",{className:"text-green",children:(0,m.ih)("Deleted")}):e.has_ignored?(t=(0,y.jsx)("span",{className:"text-orange",children:(0,m.ih)("Ignored")}),n=["do-not-ignore"]):(t=(0,y.jsx)("span",{className:"text-red",children:(0,m.ih)("Unhandled")}),n=["delete","ignore"]),(0,y.jsxs)("tr",{className:this.state.highlight?"tr-highlight":"",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,children:[(0,y.jsx)("td",{className:"text-center",children:(0,y.jsx)("input",{type:"checkbox",checked:e.isSelected,onChange:this.toggleItemSelected})}),(0,y.jsx)("td",{children:e.repo_name}),(0,y.jsx)("td",{children:e.repo_owner}),(0,y.jsx)("td",{children:e.file_path}),(0,y.jsx)("td",{children:t}),(0,y.jsx)("td",{children:n.length>0&&this.state.isOpIconShown&&(0,y.jsx)(Je.Z,{operations:n,translateOperations:this.translateOperations,onMenuItemClick:this.onMenuItemClick,onFreezedItem:this.props.onFreezedItem,onUnfreezedItem:this.onUnfreezedItem})})]})}}]),n}(l.Component),Gs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).onFreezedItem=function(){i.setState({isItemFreezed:!0})},i.onUnfreezedItem=function(){i.setState({isItemFreezed:!1})},i.getPreviousPage=function(){i.props.getListByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getListByPage(i.props.currentPage+1)},i.state={isItemFreezed:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.loading,i=t.errorMsg,r=t.virusFiles,s=t.curPerPage,a=t.hasNextPage,o=t.currentPage,c=t.isAllItemsSelected;return n?(0,y.jsx)(Z.Z,{}):i?(0,y.jsx)("p",{className:"error text-center mt-4",children:i}):(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"3%",className:"text-center",children:(0,y.jsx)("input",{type:"checkbox",checked:c,onChange:this.props.toggleAllSelected})}),(0,y.jsx)("th",{width:"24%",children:(0,m.ih)("Library")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Owner")}),(0,y.jsx)("th",{width:"28%",children:(0,m.ih)("Virus File")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Status")}),(0,y.jsx)("th",{width:"5%"})]})}),(0,y.jsx)("tbody",{children:r.map((function(t,n){return(0,y.jsx)(Ys,{virusFile:t,isItemFreezed:e.state.isItemFreezed,onFreezedItem:e.onFreezedItem,onUnfreezedItem:e.onUnfreezedItem,handleFile:e.props.handleFile,toggleItemSelected:e.props.toggleItemSelected},n)}))})]}),r.length>0&&(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:o,hasNextPage:a,curPerPage:s,resetPerPage:this.props.resetPerPage})]})}}]),n}(l.Component),qs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getListByPage=function(e){var t=i.state.perPage;I.I.listVirusFiles(e,t,!1).then((function(e){var t=e.data,n=t.virus_file_list.map((function(e){return e.isSelected=!1,e}));i.setState({loading:!1,virusFiles:n,hasNextPage:t.has_next_page})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){i.getListByPage(1)}))},i.handleFile=function(e,t){var n;switch(t){case"delete":n=I.I.deleteVirusFile(e);break;case"ignore":n=I.I.toggleIgnoreVirusFile(e,!0);break;case"do-not-ignore":n=I.I.toggleIgnoreVirusFile(e,!1)}n.then((function(n){i.setState({virusFiles:i.state.virusFiles.map((function(i){return i.virus_id==e&&("delete"==t?i.has_deleted=!0:i=n.data.virus_file),i}))})})).catch((function(e){P.Z.danger(f.c.getErrorMsg(e))}))},i.toggleAllSelected=function(){i.setState((function(e){return{isAllItemsSelected:!e.isAllItemsSelected,virusFiles:i.state.virusFiles.map((function(t){return t.isSelected=!e.isAllItemsSelected,t}))}}))},i.toggleItemSelected=function(e,t){i.setState({virusFiles:i.state.virusFiles.map((function(n){return n===e&&(n.isSelected=t),n}))},(function(){i.setState({isAllItemsSelected:!i.state.virusFiles.some((function(e){return!e.isSelected}))})}))},i.handleSelectedItems=function(e){var t=i.state.virusFiles.filter((function(t){return"delete-virus"==e?t.isSelected&&!t.has_deleted:t.isSelected&&!t.has_ignored})).map((function(e){return e.virus_id}));I.I.batchProcessVirusFiles(t,e).then((function(t){var n=i.state.virusFiles;t.data.success.forEach((function(t){var i=n.find((function(e){return e.virus_id==t.virus_id}));"delete-virus"==e?i.has_deleted=!0:i.has_ignored=!0})),i.setState({virusFiles:n}),t.data.failed.forEach((function(t){var i=n.find((function(e){return e.virus_id==t.virus_id})),r="delete-virus"==e?(0,m.ih)("Failed to delete %(virus_file) from library %(library): %(error_msg)"):(0,m.ih)("Failed to ignore %(virus_file) from library %(library): %(error_msg)");r=r.replace("%(virus_file)",i.file_path).replace("%(library)",i.repo_name).replace("%(error_msg)",t.error_msg),P.Z.danger(r)}))})).catch((function(e){P.Z.danger(f.c.getErrorMsg(e))}))},i.deleteSelectedItems=function(){i.handleSelectedItems("delete-virus")},i.ignoreSelectedItems=function(){i.handleSelectedItems("ignore-virus")},i.state={loading:!0,errorMsg:"",virusFiles:[],isAllItemsSelected:!1,selectedItems:[],currentPage:1,perPage:25,hasNextPage:!1},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getListByPage(e.state.currentPage)}))}},{key:"render",value:function(){return(0,y.jsxs)(l.Fragment,{children:[this.state.virusFiles.some((function(e){return e.isSelected}))?(0,y.jsx)(N,(0,i.Z)((0,i.Z)({},this.props),{},{children:(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(w.Z,{onClick:this.deleteSelectedItems,className:"operation-item",children:(0,m.ih)("Delete")}),(0,y.jsx)(w.Z,{onClick:this.ignoreSelectedItems,className:"operation-item",children:(0,m.ih)("Ignore")})]})})):(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Bs,{currentItem:"unhandled"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Gs,{loading:this.state.loading,errorMsg:this.state.errorMsg,virusFiles:this.state.virusFiles,currentPage:this.state.currentPage,hasNextPage:this.state.hasNextPage,curPerPage:this.state.perPage,resetPerPage:this.resetPerPage,getListByPage:this.getListByPage,handleFile:this.handleFile,isAllItemsSelected:this.state.isAllItemsSelected,toggleAllSelected:this.toggleAllSelected,toggleItemSelected:this.toggleItemSelected})})]})})]})}}]),n}(l.Component),Qs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).navItems=[{name:"adminOperationLogs",urlPart:"admin-logs/operation",text:(0,m.ih)("Admin Operation Logs")},{name:"adminLoginLogs",urlPart:"admin-logs/login",text:(0,m.ih)("Admin Login Logs")}],i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.currentItem;return(0,y.jsx)("div",{className:"cur-view-path tab-nav-container",children:(0,y.jsx)("ul",{className:"nav",children:this.navItems.map((function(t,n){return(0,y.jsx)("li",{className:"nav-item",children:(0,y.jsx)(g.rU,{to:"".concat(m.ze,"sys/").concat(t.urlPart,"/"),className:"nav-link".concat(e==t.name?" active":""),children:t.text})},n)}))})})}}]),n}(l.Component),Ks=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getPreviousPage=function(){i.props.getLogsByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getLogsByPage(i.props.currentPage+1)},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg,i=e.items,r=e.perPage,s=e.currentPage,a=e.hasNextPage;if(t)return(0,y.jsx)(Z.Z,{});if(n)return(0,y.jsx)("p",{className:"error text-center",children:n});var o=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No Admin operation logs")})}),c=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Operation")}),(0,y.jsx)("th",{width:"50%",children:(0,m.ih)("Detail")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Time")})]})}),i&&(0,y.jsx)("tbody",{children:i.map((function(e,t){return(0,y.jsx)(Xs,{item:e},t)}))})]}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:s,hasNextPage:a,curPerPage:r,resetPerPage:this.props.resetPerPage})]});return i.length?c:o}}]),n}(l.Component),Xs=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getOperationText=function(e){switch(e){case"repo_create":return(0,m.ih)("Create Library");case"repo_delete":return(0,m.ih)("Delete Library");case"repo_transfer":return(0,m.ih)("Transfer Library");case"group_create":return(0,m.ih)("Create Group");case"group_transfer":return(0,m.ih)("Transfer Group");case"group_delete":return(0,m.ih)("Delete Group");case"user_add":return(0,m.ih)("Add User");case"user_delete":return(0,m.ih)("Delete User");default:return""}},i.getOperationDetail=function(e){var t=e.detail,n="";t.owner&&(n=m.ze+"sys/users/"+encodeURIComponent(t.owner)+"/");var i="";t.email&&(i=m.ze+"sys/users/"+encodeURIComponent(t.email)+"/");var r="",s="",a="";switch("repo_create"!=e.operation&&"repo_delete"!=e.operation&&"repo_transfer"!=e.operation||(s=m.ze+"sys/libraries/"+t.id+"/"+encodeURIComponent(t.name)+"/"),"group_create"!=e.operation&&"group_delete"!=e.operation&&"group_transfer"!=e.operation||(a=m.ze+"sys/groups/"+t.id+"/libraries/"),e.operation){case"repo_create":return r=(0,m.ih)("Created library {library_name} with {owner} as its owner").replace("{owner}",''+t.owner+""),r=m._y&&m.MW?r.replace("{library_name}",''+t.name+""):r.replace("{library_name}",''+t.name+"");case"repo_delete":return r=(0,m.ih)("Deleted library {library_name}").replace("{library_name}",''+t.name+"");case"repo_transfer":return r=(0,m.ih)("Transferred library {library_name} from {user_from} to {user_to}").replace("{user_from}",''+t.from+"").replace("{user_to}",''+t.to+""),r=m._y&&m.MW?r.replace("{library_name}",''+t.name+""):r.replace("{library_name}",''+t.name+"");case"group_create":return r=(0,m.ih)("Created group {group_name}").replace("{group_name}",''+t.name+"");case"group_transfer":return r=(0,m.ih)("Transferred group {group_name} from {user_from} to {user_to}").replace("{user_from}",''+t.from+"").replace("{user_to}",''+t.to+"").replace("{group_name}",''+t.name+"");case"group_delete":return r=(0,m.ih)("Deleted group {group_name}").replace("{group_name}",''+t.name+"");case"user_add":return r=(0,m.ih)("Added user {user}").replace("{user}",''+t.email+"");case"user_delete":return r=(0,m.ih)("Deleted user {user}").replace("{user}",''+t.email+"");default:return""}},i.state={isOpIconShown:!1},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item;return(0,y.jsxs)("tr",{onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,children:[(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:e.email,name:e.name})}),(0,y.jsx)("td",{children:this.getOperationText(e.operation)}),(0,y.jsx)("td",{children:(0,y.jsx)("span",{dangerouslySetInnerHTML:{__html:this.getOperationDetail(e)}})}),(0,y.jsx)("td",{children:L()(e.datetime).fromNow()})]})}}]),n}(l.Component),$s=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getLogsByPage=function(e){var t=i.state.perPage;I.I.sysAdminListAdminLogs(e,t).then((function(n){i.setState({logList:n.data.data,loading:!1,currentPage:e,hasNextPage:f.c.hasNextPage(e,t,n.data.total_count)})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){return i.getLogsByPage(i.initPage)}))},i.state={loading:!0,errorMsg:"",logList:[],perPage:25,currentPage:1,hasNextPage:!1},i.initPage=1,i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getLogsByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state,t=e.logList,n=e.currentPage,r=e.perPage,s=e.hasNextPage;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Qs,{currentItem:"adminOperationLogs"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Ks,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:t,currentPage:n,perPage:r,hasNextPage:s,getLogsByPage:this.getLogsByPage,resetPerPage:this.resetPerPage})})]})})]})}}]),n}(l.Component),Js=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getPreviousPage=function(){i.props.getLogsByPage(i.props.currentPage-1)},i.getNextPage=function(){i.props.getLogsByPage(i.props.currentPage+1)},i}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.loading,n=e.errorMsg,i=e.items,r=e.perPage,s=e.currentPage,a=e.hasNextPage;if(t)return(0,y.jsx)(Z.Z,{});if(n)return(0,y.jsx)("p",{className:"error text-center",children:n});var o=(0,y.jsx)(fe.Z,{children:(0,y.jsx)("h2",{children:(0,m.ih)("No Admin login logs")})}),c=(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Name")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("IP")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Status")}),(0,y.jsx)("th",{width:"25%",children:(0,m.ih)("Time")})]})}),i&&(0,y.jsx)("tbody",{children:i.map((function(e,t){return(0,y.jsx)(ea,{item:e},t)}))})]}),(0,y.jsx)(ae.Z,{gotoPreviousPage:this.getPreviousPage,gotoNextPage:this.getNextPage,currentPage:s,hasNextPage:a,curPerPage:r,resetPerPage:this.props.resetPerPage})]});return i.length?c:o}}]),n}(l.Component),ea=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){return(0,r.Z)(this,n),t.call(this,e)}return(0,s.Z)(n,[{key:"render",value:function(){var e=this.props.item;return(0,y.jsxs)("tr",{onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,children:[(0,y.jsx)("td",{children:(0,y.jsx)(we,{email:e.email,name:e.name})}),(0,y.jsx)("td",{children:e.login_ip}),(0,y.jsx)("td",{children:e.login_success?(0,m.ih)("Success"):(0,m.ih)("Failed")}),(0,y.jsx)("td",{children:L()(e.login_time).fromNow()})]})}}]),n}(l.Component),ta=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getLogsByPage=function(e){var t=i.state.perPage;I.I.sysAdminListAdminLoginLogs(e,t).then((function(n){i.setState({logList:n.data.data,loading:!1,currentPage:e,hasNextPage:f.c.hasNextPage(e,t,n.data.total_count)})})).catch((function(e){i.setState({loading:!1,errorMsg:f.c.getErrorMsg(e,!0)})}))},i.resetPerPage=function(e){i.setState({perPage:e},(function(){return i.getLogsByPage(i.initPage)}))},i.state={loading:!0,errorMsg:"",logList:[],perPage:25,currentPage:1,hasNextPage:!1},i.initPage=1,i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=new URL(window.location).searchParams,n=this.state,i=n.currentPage,r=n.perPage;this.setState({perPage:parseInt(t.get("per_page")||r),currentPage:parseInt(t.get("page")||i)},(function(){e.getLogsByPage(e.state.currentPage)}))}},{key:"render",value:function(){var e=this.state,t=e.logList,n=e.currentPage,r=e.perPage,s=e.hasNextPage;return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center flex-row",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)(Qs,{currentItem:"adminLoginLogs"}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsx)(Js,{loading:this.state.loading,errorMsg:this.state.errorMsg,items:t,currentPage:n,perPage:r,hasNextPage:s,getLogsByPage:this.getLogsByPage,resetPerPage:this.resetPerPage})})]})})]})}}]),n}(l.Component),na=function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).listAbuseReports=function(){I.I.sysAdminListAbuseReports().then((function(e){i.setState({abuseReportList:e.data.abuse_report_list})})).catch((function(e){i.handleError(e)}))},i.updateAbuseReport=function(e,t){I.I.sysAdminUpdateAbuseReport(e,t).then((function(e){var n=i.state.abuseReportList.map((function(n,i){return n.id===t&&(n.handled=e.data.handled),n}));i.setState({abuseReportList:n})})).catch((function(e){i.handleError(e)}))},i.handleError=function(e){e.response?P.Z.danger(e.response.data.error_msg||e.response.data.detail||(0,m.ih)("Error"),{duration:3}):P.Z.danger((0,m.ih)("Please check the network."),{duration:3})},i.state={abuseReportList:[]},i}return(0,s.Z)(n,[{key:"componentDidMount",value:function(){this.listAbuseReports()}},{key:"render",value:function(){var e=this,t=this.state.abuseReportList.map((function(t,n){var i=(!t.handled).toString(),r=t.id,s=m.ze+"lib/"+t.repo_id+"/file"+t.file_path;return(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{children:t.repo_name}),(0,y.jsx)("td",{children:(0,y.jsx)("a",{href:s,target:"_blank",rel:"noreferrer",children:t.file_path})}),(0,y.jsx)("td",{children:t.reporter}),(0,y.jsx)("td",{children:t.abuse_type}),(0,y.jsx)("td",{children:t.description}),(0,y.jsx)("td",{children:L()(t.time).format("YYYY-MM-DD")}),(0,y.jsx)("td",{children:(0,y.jsx)("p",{onClick:e.updateAbuseReport.bind(e,i,r),className:"op-target ellipsis ellipsis-op-target cursor-pointer",children:(0,m.ih)(t.handled.toString())})})]},n)}));return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,(0,i.Z)({},this.props)),(0,y.jsx)("div",{className:"main-panel-center",children:(0,y.jsxs)("div",{className:"cur-view-container",children:[(0,y.jsx)("div",{className:"cur-view-path",children:(0,y.jsx)("h3",{className:"sf-heading",children:(0,m.ih)("Abuse Reports")})}),(0,y.jsx)("div",{className:"cur-view-content",children:(0,y.jsxs)("table",{className:"table-hover",children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Library")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("File")}),(0,y.jsx)("th",{width:"10%",children:(0,m.ih)("Reporter")}),(0,y.jsx)("th",{width:"15%",children:(0,m.ih)("Abuse Type")}),(0,y.jsx)("th",{width:"20%",children:(0,m.ih)("Description")}),(0,y.jsx)("th",{width:"10%",children:(0,m.ih)("Time")}),(0,y.jsx)("th",{width:"5%",children:(0,m.ih)("Handled")})]})}),(0,y.jsx)("tbody",{children:t})]})})]})})]})}}]),n}(l.Component),ia=(n(28421),n(58108),function(e){(0,a.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this,e)).getCurrentTabForPageList=function(e){for(var t,n,i="".concat(m.ze,"sys/"),r=0,s=e.length;r1&&(r-=1)),[360*r,100*s,100*c]},r.rgb.hwb=function(e){var t=e[0],n=e[1],i=e[2];return[r.rgb.hsl(e)[0],1/255*Math.min(t,Math.min(n,i))*100,100*(i=1-1/255*Math.max(t,Math.max(n,i)))]},r.rgb.cmyk=function(e){var t,n=e[0]/255,i=e[1]/255,r=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-i,1-r)))/(1-t)||0),100*((1-i-t)/(1-t)||0),100*((1-r-t)/(1-t)||0),100*t]},r.rgb.keyword=function(e){var n=t[e];if(n)return n;var r,s=1/0;for(var a in i)if(i.hasOwnProperty(a)){var o=l(e,i[a]);o.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*t+.7152*n+.0722*i),100*(.0193*t+.1192*n+.9505*i)]},r.rgb.lab=function(e){var t=r.rgb.xyz(e),n=t[0],i=t[1],s=t[2];return i/=100,s/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(s=s>.008856?Math.pow(s,1/3):7.787*s+16/116))]},r.hsl.rgb=function(e){var t,n,i,r,s,a=e[0]/360,o=e[1]/100,l=e[2]/100;if(0===o)return[s=255*l,s,s];t=2*l-(n=l<.5?l*(1+o):l+o-l*o),r=[0,0,0];for(var c=0;c<3;c++)(i=a+1/3*-(c-1))<0&&i++,i>1&&i--,s=6*i<1?t+6*(n-t)*i:2*i<1?n:3*i<2?t+(n-t)*(2/3-i)*6:t,r[c]=255*s;return r},r.hsl.hsv=function(e){var t=e[0],n=e[1]/100,i=e[2]/100,r=n,s=Math.max(i,.01);return n*=(i*=2)<=1?i:2-i,r*=s<=1?s:2-s,[t,100*(0===i?2*r/(s+r):2*n/(i+n)),(i+n)/2*100]},r.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,i=e[2]/100,r=Math.floor(t)%6,s=t-Math.floor(t),a=255*i*(1-n),o=255*i*(1-n*s),l=255*i*(1-n*(1-s));switch(i*=255,r){case 0:return[i,l,a];case 1:return[o,i,a];case 2:return[a,i,l];case 3:return[a,o,i];case 4:return[l,a,i];case 5:return[i,a,o]}},r.hsv.hsl=function(e){var t,n,i,r=e[0],s=e[1]/100,a=e[2]/100,o=Math.max(a,.01);return i=(2-s)*a,n=s*o,[r,100*(n=(n/=(t=(2-s)*o)<=1?t:2-t)||0),100*(i/=2)]},r.hwb.rgb=function(e){var t,n,i,r,s,a,o,l=e[0]/360,c=e[1]/100,h=e[2]/100,d=c+h;switch(d>1&&(c/=d,h/=d),i=6*l-(t=Math.floor(6*l)),0!==(1&t)&&(i=1-i),r=c+i*((n=1-h)-c),t){default:case 6:case 0:s=n,a=r,o=c;break;case 1:s=r,a=n,o=c;break;case 2:s=c,a=n,o=r;break;case 3:s=c,a=r,o=n;break;case 4:s=r,a=c,o=n;break;case 5:s=n,a=c,o=r}return[255*s,255*a,255*o]},r.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,i=e[2]/100,r=e[3]/100;return[255*(1-Math.min(1,t*(1-r)+r)),255*(1-Math.min(1,n*(1-r)+r)),255*(1-Math.min(1,i*(1-r)+r))]},r.xyz.rgb=function(e){var t,n,i,r=e[0]/100,s=e[1]/100,a=e[2]/100;return n=-.9689*r+1.8758*s+.0415*a,i=.0557*r+-.204*s+1.057*a,t=(t=3.2406*r+-1.5372*s+-.4986*a)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]},r.xyz.lab=function(e){var t=e[0],n=e[1],i=e[2];return n/=100,i/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},r.lab.xyz=function(e){var t,n,i,r=e[0];t=e[1]/500+(n=(r+16)/116),i=n-e[2]/200;var s=Math.pow(n,3),a=Math.pow(t,3),o=Math.pow(i,3);return n=s>.008856?s:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,i=o>.008856?o:(i-16/116)/7.787,[t*=95.047,n*=100,i*=108.883]},r.lab.lch=function(e){var t,n=e[0],i=e[1],r=e[2];return(t=360*Math.atan2(r,i)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(i*i+r*r),t]},r.lch.lab=function(e){var t,n=e[0],i=e[1];return t=e[2]/360*2*Math.PI,[n,i*Math.cos(t),i*Math.sin(t)]},r.rgb.ansi16=function(e){var t=e[0],n=e[1],i=e[2],s=1 in arguments?arguments[1]:r.rgb.hsv(e)[2];if(0===(s=Math.round(s/50)))return 30;var a=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===s&&(a+=60),a},r.hsv.ansi16=function(e){return r.rgb.ansi16(r.hsv.rgb(e),e[2])},r.rgb.ansi256=function(e){var t=e[0],n=e[1],i=e[2];return t===n&&n===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(i/255*5)},r.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},r.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},r.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},r.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var i=parseInt(n,16);return[i>>16&255,i>>8&255,255&i]},r.rgb.hcg=function(e){var t,n=e[0]/255,i=e[1]/255,r=e[2]/255,s=Math.max(Math.max(n,i),r),a=Math.min(Math.min(n,i),r),o=s-a;return t=o<=0?0:s===n?(i-r)/o%6:s===i?2+(r-n)/o:4+(n-i)/o+4,t/=6,[360*(t%=1),100*o,100*(o<1?a/(1-o):0)]},r.hsl.hcg=function(e){var t=e[1]/100,n=e[2]/100,i=1,r=0;return(i=n<.5?2*t*n:2*t*(1-n))<1&&(r=(n-.5*i)/(1-i)),[e[0],100*i,100*r]},r.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,i=t*n,r=0;return i<1&&(r=(n-i)/(1-i)),[e[0],100*i,100*r]},r.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,i=e[2]/100;if(0===n)return[255*i,255*i,255*i];var r=[0,0,0],s=t%1*6,a=s%1,o=1-a,l=0;switch(Math.floor(s)){case 0:r[0]=1,r[1]=a,r[2]=0;break;case 1:r[0]=o,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=a;break;case 3:r[0]=0,r[1]=o,r[2]=1;break;case 4:r[0]=a,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=o}return l=(1-n)*i,[255*(n*r[0]+l),255*(n*r[1]+l),255*(n*r[2]+l)]},r.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),i=0;return n>0&&(i=t/n),[e[0],100*i,100*n]},r.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,i=0;return n>0&&n<.5?i=t/(2*n):n>=.5&&n<1&&(i=t/(2*(1-n))),[e[0],100*i,100*n]},r.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},r.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,i=n-t,r=0;return i<1&&(r=(n-i)/(1-i)),[e[0],100*i,100*r]},r.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},r.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},r.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},r.gray.hsl=r.gray.hsv=function(e){return[0,0,e[0]]},r.gray.hwb=function(e){return[0,100,e[0]]},r.gray.cmyk=function(e){return[0,0,0,e[0]]},r.gray.lab=function(e){return[e[0],0,0]},r.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},r.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}}));function s(){for(var e={},t=Object.keys(r),n=t.length,i=0;i1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}function u(e){var t=function(t){if(void 0===t||null===t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"===typeof n)for(var i=n.length,r=0;r=0&&t<1?C(Math.round(255*t)):"")}function D(e,t){return t<1||e[3]&&e[3]<1?w(e,t):"rgb("+e[0]+", "+e[1]+", "+e[2]+")"}function w(e,t){return void 0===t&&(t=void 0!==e[3]?e[3]:1),"rgba("+e[0]+", "+e[1]+", "+e[2]+", "+t+")"}function I(e,t){return t<1||e[3]&&e[3]<1?P(e,t):"rgb("+Math.round(e[0]/255*100)+"%, "+Math.round(e[1]/255*100)+"%, "+Math.round(e[2]/255*100)+"%)"}function P(e,t){return"rgba("+Math.round(e[0]/255*100)+"%, "+Math.round(e[1]/255*100)+"%, "+Math.round(e[2]/255*100)+"%, "+(t||e[3]||1)+")"}function Z(e,t){return t<1||e[3]&&e[3]<1?k(e,t):"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)"}function k(e,t){return void 0===t&&(t=void 0!==e[3]?e[3]:1),"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+t+")"}function _(e,t){return void 0===t&&(t=void 0!==e[3]?e[3]:1),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+(void 0!==t&&1!==t?", "+t:"")+")"}function N(e){return A[e.slice(0,3)]}function M(e,t,n){return Math.min(Math.max(t,e),n)}function C(e){var t=e.toString(16).toUpperCase();return t.length<2?"0"+t:t}var A={};for(var L in p)A[p[L]]=L;var O=function e(t){return t instanceof e?t:this instanceof e?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"===typeof t?(n=m.getRgba(t))?this.setValues("rgb",n):(n=m.getHsla(t))?this.setValues("hsl",n):(n=m.getHwb(t))&&this.setValues("hwb",n):"object"===typeof t&&(void 0!==(n=t).r||void 0!==n.red?this.setValues("rgb",n):void 0!==n.l||void 0!==n.lightness?this.setValues("hsl",n):void 0!==n.v||void 0!==n.value?this.setValues("hsv",n):void 0!==n.w||void 0!==n.whiteness?this.setValues("hwb",n):void 0===n.c&&void 0===n.cyan||this.setValues("cmyk",n)))):new e(t);var n};O.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var e=this.values;return 1!==e.alpha?e.hwb.concat([e.alpha]):e.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var e=this.values;return e.rgb.concat([e.alpha])},hslaArray:function(){var e=this.values;return e.hsl.concat([e.alpha])},alpha:function(e){return void 0===e?this.values.alpha:(this.setValues("alpha",e),this)},red:function(e){return this.setChannel("rgb",0,e)},green:function(e){return this.setChannel("rgb",1,e)},blue:function(e){return this.setChannel("rgb",2,e)},hue:function(e){return e&&(e=(e%=360)<0?360+e:e),this.setChannel("hsl",0,e)},saturation:function(e){return this.setChannel("hsl",1,e)},lightness:function(e){return this.setChannel("hsl",2,e)},saturationv:function(e){return this.setChannel("hsv",1,e)},whiteness:function(e){return this.setChannel("hwb",1,e)},blackness:function(e){return this.setChannel("hwb",2,e)},value:function(e){return this.setChannel("hsv",2,e)},cyan:function(e){return this.setChannel("cmyk",0,e)},magenta:function(e){return this.setChannel("cmyk",1,e)},yellow:function(e){return this.setChannel("cmyk",2,e)},black:function(e){return this.setChannel("cmyk",3,e)},hexString:function(){return m.hexString(this.values.rgb)},rgbString:function(){return m.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return m.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return m.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return m.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return m.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return m.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return m.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var e=this.values.rgb;return e[0]<<16|e[1]<<8|e[2]},luminosity:function(){for(var e=this.values.rgb,t=[],n=0;nn?(t+.05)/(n+.05):(n+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},dark:function(){var e=this.values.rgb;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var e=[],t=0;t<3;t++)e[t]=255-this.values.rgb[t];return this.setValues("rgb",e),this},lighten:function(e){var t=this.values.hsl;return t[2]+=t[2]*e,this.setValues("hsl",t),this},darken:function(e){var t=this.values.hsl;return t[2]-=t[2]*e,this.setValues("hsl",t),this},saturate:function(e){var t=this.values.hsl;return t[1]+=t[1]*e,this.setValues("hsl",t),this},desaturate:function(e){var t=this.values.hsl;return t[1]-=t[1]*e,this.setValues("hsl",t),this},whiten:function(e){var t=this.values.hwb;return t[1]+=t[1]*e,this.setValues("hwb",t),this},blacken:function(e){var t=this.values.hwb;return t[2]+=t[2]*e,this.setValues("hwb",t),this},greyscale:function(){var e=this.values.rgb,t=.3*e[0]+.59*e[1]+.11*e[2];return this.setValues("rgb",[t,t,t]),this},clearer:function(e){var t=this.values.alpha;return this.setValues("alpha",t-t*e),this},opaquer:function(e){var t=this.values.alpha;return this.setValues("alpha",t+t*e),this},rotate:function(e){var t=this.values.hsl,n=(t[0]+e)%360;return t[0]=n<0?360+n:n,this.setValues("hsl",t),this},mix:function(e,t){var n=this,i=e,r=void 0===t?.5:t,s=2*r-1,a=n.alpha()-i.alpha(),o=((s*a===-1?s:(s+a)/(1+s*a))+1)/2,l=1-o;return this.rgb(o*n.red()+l*i.red(),o*n.green()+l*i.green(),o*n.blue()+l*i.blue()).alpha(n.alpha()*r+i.alpha()*(1-r))},toJSON:function(){return this.rgb()},clone:function(){var e,t,n=new O,i=this.values,r=n.values;for(var s in i)i.hasOwnProperty(s)&&(e=i[s],"[object Array]"===(t={}.toString.call(e))?r[s]=e.slice(0):"[object Number]"===t?r[s]=e:console.error("unexpected color value:",e));return n}},O.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},O.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},O.prototype.getValues=function(e){for(var t=this.values,n={},i=0;i=0;r--)t.call(n,e[r],r);else for(r=0;r=1?e:-(Math.sqrt(1-e*e)-1)},easeOutCirc:function(e){return Math.sqrt(1-(e-=1)*e)},easeInOutCirc:function(e){return(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)},easeInElastic:function(e){var t=1.70158,n=0,i=1;return 0===e?0:1===e?1:(n||(n=.3),i<1?(i=1,t=n/4):t=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n))},easeOutElastic:function(e){var t=1.70158,n=0,i=1;return 0===e?0:1===e?1:(n||(n=.3),i<1?(i=1,t=n/4):t=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*e)*Math.sin((e-t)*(2*Math.PI)/n)+1)},easeInOutElastic:function(e){var t=1.70158,n=0,i=1;return 0===e?0:2===(e/=.5)?1:(n||(n=.45),i<1?(i=1,t=n/4):t=n/(2*Math.PI)*Math.asin(1/i),e<1?i*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)*.5+1)},easeInBack:function(e){var t=1.70158;return e*e*((t+1)*e-t)},easeOutBack:function(e){var t=1.70158;return(e-=1)*e*((t+1)*e+t)+1},easeInOutBack:function(e){var t=1.70158;return(e/=.5)<1?e*e*((1+(t*=1.525))*e-t)*.5:.5*((e-=2)*e*((1+(t*=1.525))*e+t)+2)},easeInBounce:function(e){return 1-E.easeOutBounce(1-e)},easeOutBounce:function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},easeInOutBounce:function(e){return e<.5?.5*E.easeInBounce(2*e):.5*E.easeOutBounce(2*e-1)+.5}},z={effects:E};U.easingEffects=E;var B=Math.PI,V=B/180,H=2*B,W=B/2,Y=B/4,G=2*B/3,q={clear:function(e){e.ctx.clearRect(0,0,e.width,e.height)},roundedRect:function(e,t,n,i,r,s){if(s){var a=Math.min(s,r/2,i/2),o=t+a,l=n+a,c=t+i-a,h=n+r-a;e.moveTo(t,l),ot.left-n&&e.xt.top-n&&e.y0&&e.requestAnimationFrame()},advance:function(){for(var e,t,n,i,r=this.animations,s=0;s=n?(se.callback(e.onAnimationComplete,[e],t),t.animating=!1,r.splice(s,1)):++s}},ve=se.options.resolve,xe=["push","pop","shift","splice","unshift"];function ye(e,t){e._chartjs?e._chartjs.listeners.push(t):(Object.defineProperty(e,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[t]}}),xe.forEach((function(t){var n="onData"+t.charAt(0).toUpperCase()+t.slice(1),i=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:function(){var t=Array.prototype.slice.call(arguments),r=i.apply(this,t);return se.each(e._chartjs.listeners,(function(e){"function"===typeof e[n]&&e[n].apply(e,t)})),r}})})))}function be(e,t){var n=e._chartjs;if(n){var i=n.listeners,r=i.indexOf(t);-1!==r&&i.splice(r,1),i.length>0||(xe.forEach((function(t){delete e[t]})),delete e._chartjs)}}var je=function(e,t){this.initialize(e,t)};se.extend(je.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(e,t){var n=this;n.chart=e,n.index=t,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(e){this.index=e},linkScales:function(){var e=this,t=e.getMeta(),n=e.chart,i=n.scales,r=e.getDataset(),s=n.options.scales;null!==t.xAxisID&&t.xAxisID in i&&!r.xAxisID||(t.xAxisID=r.xAxisID||s.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in i&&!r.yAxisID||(t.yAxisID=r.yAxisID||s.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(e){return this.chart.scales[e]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&be(this._data,this)},createMetaDataset:function(){var e=this,t=e.datasetElementType;return t&&new t({_chart:e.chart,_datasetIndex:e.index})},createMetaData:function(e){var t=this,n=t.dataElementType;return n&&new n({_chart:t.chart,_datasetIndex:t.index,_index:e})},addElements:function(){var e,t,n=this,i=n.getMeta(),r=n.getDataset().data||[],s=i.data;for(e=0,t=r.length;ei&&e.insertElements(i,r-i)},insertElements:function(e,t){for(var n=0;nr?(s=r/t.innerRadius,e.arc(a,o,t.innerRadius-r,i+s,n-s,!0)):e.arc(a,o,r,i+Math.PI/2,n-Math.PI/2),e.closePath(),e.clip()}function Ie(e,t,n,i){var r,s=n.endAngle;for(i&&(n.endAngle=n.startAngle+De,we(e,n),n.endAngle=s,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=De,n.fullCircles--)),e.beginPath(),e.arc(n.x,n.y,n.innerRadius,n.startAngle+De,n.startAngle,!0),r=0;ro;)r-=De;for(;r=a&&r<=o,c=s>=n.innerRadius&&s<=n.outerRadius;return l&&c}return!1},getCenterPoint:function(){var e=this._view,t=(e.startAngle+e.endAngle)/2,n=(e.innerRadius+e.outerRadius)/2;return{x:e.x+Math.cos(t)*n,y:e.y+Math.sin(t)*n}},getArea:function(){var e=this._view;return Math.PI*((e.endAngle-e.startAngle)/(2*Math.PI))*(Math.pow(e.outerRadius,2)-Math.pow(e.innerRadius,2))},tooltipPosition:function(){var e=this._view,t=e.startAngle+(e.endAngle-e.startAngle)/2,n=(e.outerRadius-e.innerRadius)/2+e.innerRadius;return{x:e.x+Math.cos(t)*n,y:e.y+Math.sin(t)*n}},draw:function(){var e,t=this._chart.ctx,n=this._view,i="inner"===n.borderAlign?.33:0,r={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-i,0),pixelMargin:i,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/De)};if(t.save(),t.fillStyle=n.backgroundColor,t.strokeStyle=n.borderColor,r.fullCircles){for(r.endAngle=r.startAngle+De,t.beginPath(),t.arc(r.x,r.y,r.outerRadius,r.startAngle,r.endAngle),t.arc(r.x,r.y,r.innerRadius,r.endAngle,r.startAngle,!0),t.closePath(),e=0;ee.x&&(t=Ue(t,"left","right")):e.basen?n:i,r:l.right||r<0?0:r>t?t:r,b:l.bottom||s<0?0:s>n?n:s,l:l.left||a<0?0:a>t?t:a}}function Be(e){var t=Re(e),n=t.right-t.left,i=t.bottom-t.top,r=ze(e,n/2,i/2);return{outer:{x:t.left,y:t.top,w:n,h:i},inner:{x:t.left+r.l,y:t.top+r.t,w:n-r.l-r.r,h:i-r.t-r.b}}}function Ve(e,t,n){var i=null===t,r=null===n,s=!(!e||i&&r)&&Re(e);return s&&(i||t>=s.left&&t<=s.right)&&(r||n>=s.top&&n<=s.bottom)}X._set("global",{elements:{rectangle:{backgroundColor:Te,borderColor:Te,borderSkipped:"bottom",borderWidth:0}}});var He=ge.extend({_type:"rectangle",draw:function(){var e=this._chart.ctx,t=this._view,n=Be(t),i=n.outer,r=n.inner;e.fillStyle=t.backgroundColor,e.fillRect(i.x,i.y,i.w,i.h),i.w===r.w&&i.h===r.h||(e.save(),e.beginPath(),e.rect(i.x,i.y,i.w,i.h),e.clip(),e.fillStyle=t.borderColor,e.rect(r.x,r.y,r.w,r.h),e.fill("evenodd"),e.restore())},height:function(){var e=this._view;return e.base-e.y},inRange:function(e,t){return Ve(this._view,e,t)},inLabelRange:function(e,t){var n=this._view;return Fe(n)?Ve(n,e,null):Ve(n,null,t)},inXRange:function(e){return Ve(this._view,e,null)},inYRange:function(e){return Ve(this._view,null,e)},getCenterPoint:function(){var e,t,n=this._view;return Fe(n)?(e=n.x,t=(n.y+n.base)/2):(e=(n.x+n.base)/2,t=n.y),{x:e,y:t}},getArea:function(){var e=this._view;return Fe(e)?e.width*Math.abs(e.y-e.base):e.height*Math.abs(e.x-e.base)},tooltipPosition:function(){var e=this._view;return{x:e.x,y:e.y}}}),We={},Ye=Ze,Ge=Ne,qe=Oe,Qe=He;We.Arc=Ye,We.Line=Ge,We.Point=qe,We.Rectangle=Qe;var Ke=se._deprecated,Xe=se.valueOrDefault;function $e(e,t){var n,i,r,s,a=e._length;for(r=1,s=t.length;r0?Math.min(a,Math.abs(i-n)):a,n=i;return a}function Je(e,t,n){var i,r,s=n.barThickness,a=t.stackCount,o=t.pixels[e],l=se.isNullOrUndef(s)?$e(t.scale,t.pixels):-1;return se.isNullOrUndef(s)?(i=l*n.categoryPercentage,r=n.barPercentage):(i=s*a,r=1),{chunk:i/a,ratio:r,start:o-i/2}}function et(e,t,n){var i,r=t.pixels,s=r[e],a=e>0?r[e-1]:null,o=e=0&&f.min>=0?f.min:f.max,j=void 0===f.start?f.end:f.max>=0&&f.min>=0?f.max-f.min:f.min-f.max,S=m.length;if(x||void 0===x&&void 0!==y)for(i=0;i=0&&c.max>=0?c.max:c.min,(f.min<0&&s<0||f.max>=0&&s>0)&&(b+=s));return a=u.getPixelForValue(b),l=(o=u.getPixelForValue(b+j))-a,void 0!==v&&Math.abs(l)=0&&!g||j<0&&g?a-v:a+v),{size:l,base:a,head:o,center:o+l/2}},calculateBarIndexPixels:function(e,t,n,i){var r=this,s="flex"===i.barThickness?et(t,n,i):Je(t,n,i),a=r.getStackIndex(e,r.getMeta().stack),o=s.start+s.chunk*a+s.chunk/2,l=Math.min(Xe(i.maxBarThickness,1/0),s.chunk*s.ratio);return{base:o-l/2,head:o+l/2,center:o,size:l}},draw:function(){var e=this,t=e.chart,n=e._getValueScale(),i=e.getMeta().data,r=e.getDataset(),s=i.length,a=0;for(se.canvas.clipArea(t.ctx,t.chartArea);a=at?-ot:x<-at?ot:0)+f,b=Math.cos(x),j=Math.sin(x),S=Math.cos(y),D=Math.sin(y),w=x<=0&&y>=0||y>=ot,I=x<=lt&&y>=lt||y>=ot+lt,P=x<=-lt&&y>=-lt||y>=at+lt,Z=x===-at||y>=at?-1:Math.min(b,b*m,S,S*m),k=P?-1:Math.min(j,j*m,D,D*m),_=w?1:Math.max(b,b*m,S,S*m),N=I?1:Math.max(j,j*m,D,D*m);c=(_-Z)/2,h=(N-k)/2,d=-(_+Z)/2,u=-(N+k)/2}for(i=0,r=p.length;i0&&!isNaN(e)?ot*(Math.abs(e)/t):0},getMaxBorderWidth:function(e){var t,n,i,r,s,a,o,l,c=this,h=0,d=c.chart;if(!e)for(t=0,n=d.data.datasets.length;t(h=o>h?o:h)?l:h);return h},setHoverStyle:function(e){var t=e._model,n=e._options,i=se.getHoverColor;e.$previousStyle={backgroundColor:t.backgroundColor,borderColor:t.borderColor,borderWidth:t.borderWidth},t.backgroundColor=st(n.hoverBackgroundColor,i(n.backgroundColor)),t.borderColor=st(n.hoverBorderColor,i(n.borderColor)),t.borderWidth=st(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(e){for(var t=0,n=0;n0&>(c[e-1]._model,l)&&(n.controlPointPreviousX=h(n.controlPointPreviousX,l.left,l.right),n.controlPointPreviousY=h(n.controlPointPreviousY,l.top,l.bottom)),e0&&(s=e.getDatasetMeta(s[0]._datasetIndex).data),s},"x-axis":function(e,t){return _t(e,t,{intersect:!1})},point:function(e,t){return Pt(e,wt(t,e))},nearest:function(e,t,n){var i=wt(t,e);n.axis=n.axis||"xy";var r=kt(n.axis);return Zt(e,i,n.intersect,r)},x:function(e,t,n){var i=wt(t,e),r=[],s=!1;return It(e,(function(e){e.inXRange(i.x)&&r.push(e),e.inRange(i.x,i.y)&&(s=!0)})),n.intersect&&!s&&(r=[]),r},y:function(e,t,n){var i=wt(t,e),r=[],s=!1;return It(e,(function(e){e.inYRange(i.y)&&r.push(e),e.inRange(i.x,i.y)&&(s=!0)})),n.intersect&&!s&&(r=[]),r}}},Mt=se.extend;function Ct(e,t){return se.where(e,(function(e){return e.pos===t}))}function At(e,t){return e.sort((function(e,n){var i=t?n:e,r=t?e:n;return i.weight===r.weight?i.index-r.index:i.weight-r.weight}))}function Lt(e){var t,n,i,r=[];for(t=0,n=(e||[]).length;t div {\r\n\tposition: absolute;\r\n\twidth: 1000000px;\r\n\theight: 1000000px;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n\r\n.chartjs-size-monitor-shrink > div {\r\n\tposition: absolute;\r\n\twidth: 200%;\r\n\theight: 200%;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n",Yt=n(Object.freeze({__proto__:null,default:Wt})),Gt="$chartjs",qt="chartjs-",Qt=qt+"size-monitor",Kt=qt+"render-monitor",Xt=qt+"render-animation",$t=["animationstart","webkitAnimationStart"],Jt={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function en(e,t){var n=se.getStyle(e,t),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}function tn(e,t){var n=e.style,i=e.getAttribute("height"),r=e.getAttribute("width");if(e[Gt]={initial:{height:i,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===r||""===r){var s=en(e,"width");void 0!==s&&(e.width=s)}if(null===i||""===i)if(""===e.style.height)e.height=e.width/(t.options.aspectRatio||2);else{var a=en(e,"height");void 0!==s&&(e.height=a)}return e}var nn=!!function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("e",null,t)}catch(n){}return e}()&&{passive:!0};function rn(e,t,n){e.addEventListener(t,n,nn)}function sn(e,t,n){e.removeEventListener(t,n,nn)}function an(e,t,n,i,r){return{type:e,chart:t,native:r||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function on(e,t){var n=Jt[e.type]||e.type,i=se.getRelativePosition(e,t);return an(n,t,i.x,i.y,e)}function ln(e,t){var n=!1,i=[];return function(){i=Array.prototype.slice.call(arguments),t=t||this,n||(n=!0,se.requestAnimFrame.call(window,(function(){n=!1,e.apply(t,i)})))}}function cn(e){var t=document.createElement("div");return t.className=e||"",t}function hn(e){var t=1e6,n=cn(Qt),i=cn(Qt+"-expand"),r=cn(Qt+"-shrink");i.appendChild(cn()),r.appendChild(cn()),n.appendChild(i),n.appendChild(r),n._reset=function(){i.scrollLeft=t,i.scrollTop=t,r.scrollLeft=t,r.scrollTop=t};var s=function(){n._reset(),e()};return rn(i,"scroll",s.bind(i,"expand")),rn(r,"scroll",s.bind(r,"shrink")),n}function dn(e,t){var n=e[Gt]||(e[Gt]={}),i=n.renderProxy=function(e){e.animationName===Xt&&t()};se.each($t,(function(t){rn(e,t,i)})),n.reflow=!!e.offsetParent,e.classList.add(Kt)}function un(e){var t=e[Gt]||{},n=t.renderProxy;n&&(se.each($t,(function(t){sn(e,t,n)})),delete t.renderProxy),e.classList.remove(Kt)}function gn(e,t,n){var i=e[Gt]||(e[Gt]={}),r=i.resizer=hn(ln((function(){if(i.resizer){var r=n.options.maintainAspectRatio&&e.parentNode,s=r?r.clientWidth:0;t(an("resize",n)),r&&r.clientWidth0){var s=e[0];s.label?n=s.label:s.xLabel?n=s.xLabel:r>0&&s.index-1?e.split("\n"):e}function Pn(e){var t=e._xScale,n=e._yScale||e._scale,i=e._index,r=e._datasetIndex,s=e._chart.getDatasetMeta(r).controller,a=s._getIndexScale(),o=s._getValueScale();return{xLabel:t?t.getLabelForIndex(i,r):"",yLabel:n?n.getLabelForIndex(i,r):"",label:a?""+a.getLabelForIndex(i,r):"",value:o?""+o.getLabelForIndex(i,r):"",index:i,datasetIndex:r,x:e._model.x,y:e._model.y}}function Zn(e){var t=X.global;return{xPadding:e.xPadding,yPadding:e.yPadding,xAlign:e.xAlign,yAlign:e.yAlign,rtl:e.rtl,textDirection:e.textDirection,bodyFontColor:e.bodyFontColor,_bodyFontFamily:jn(e.bodyFontFamily,t.defaultFontFamily),_bodyFontStyle:jn(e.bodyFontStyle,t.defaultFontStyle),_bodyAlign:e.bodyAlign,bodyFontSize:jn(e.bodyFontSize,t.defaultFontSize),bodySpacing:e.bodySpacing,titleFontColor:e.titleFontColor,_titleFontFamily:jn(e.titleFontFamily,t.defaultFontFamily),_titleFontStyle:jn(e.titleFontStyle,t.defaultFontStyle),titleFontSize:jn(e.titleFontSize,t.defaultFontSize),_titleAlign:e.titleAlign,titleSpacing:e.titleSpacing,titleMarginBottom:e.titleMarginBottom,footerFontColor:e.footerFontColor,_footerFontFamily:jn(e.footerFontFamily,t.defaultFontFamily),_footerFontStyle:jn(e.footerFontStyle,t.defaultFontStyle),footerFontSize:jn(e.footerFontSize,t.defaultFontSize),_footerAlign:e.footerAlign,footerSpacing:e.footerSpacing,footerMarginTop:e.footerMarginTop,caretSize:e.caretSize,cornerRadius:e.cornerRadius,backgroundColor:e.backgroundColor,opacity:0,legendColorBackground:e.multiKeyBackground,displayColors:e.displayColors,borderColor:e.borderColor,borderWidth:e.borderWidth}}function kn(e,t){var n=e._chart.ctx,i=2*t.yPadding,r=0,s=t.body,a=s.reduce((function(e,t){return e+t.before.length+t.lines.length+t.after.length}),0);a+=t.beforeBody.length+t.afterBody.length;var o=t.title.length,l=t.footer.length,c=t.titleFontSize,h=t.bodyFontSize,d=t.footerFontSize;i+=o*c,i+=o?(o-1)*t.titleSpacing:0,i+=o?t.titleMarginBottom:0,i+=a*h,i+=a?(a-1)*t.bodySpacing:0,i+=l?t.footerMarginTop:0,i+=l*d,i+=l?(l-1)*t.footerSpacing:0;var u=0,g=function(e){r=Math.max(r,n.measureText(e).width+u)};return n.font=se.fontString(c,t._titleFontStyle,t._titleFontFamily),se.each(t.title,g),n.font=se.fontString(h,t._bodyFontStyle,t._bodyFontFamily),se.each(t.beforeBody.concat(t.afterBody),g),u=t.displayColors?h+2:0,se.each(s,(function(e){se.each(e.before,g),se.each(e.lines,g),se.each(e.after,g)})),u=0,n.font=se.fontString(d,t._footerFontStyle,t._footerFontFamily),se.each(t.footer,g),{width:r+=2*t.xPadding,height:i}}function _n(e,t){var n,i,r,s,a,o=e._model,l=e._chart,c=e._chart.chartArea,h="center",d="center";o.yl.height-t.height&&(d="bottom");var u=(c.left+c.right)/2,g=(c.top+c.bottom)/2;"center"===d?(n=function(e){return e<=u},i=function(e){return e>u}):(n=function(e){return e<=t.width/2},i=function(e){return e>=l.width-t.width/2}),r=function(e){return e+t.width+o.caretSize+o.caretPadding>l.width},s=function(e){return e-t.width-o.caretSize-o.caretPadding<0},a=function(e){return e<=g?"top":"bottom"},n(o.x)?(h="left",r(o.x)&&(h="center",d=a(o.y))):i(o.x)&&(h="right",s(o.x)&&(h="center",d=a(o.y)));var p=e._options;return{xAlign:p.xAlign?p.xAlign:h,yAlign:p.yAlign?p.yAlign:d}}function Nn(e,t,n,i){var r=e.x,s=e.y,a=e.caretSize,o=e.caretPadding,l=e.cornerRadius,c=n.xAlign,h=n.yAlign,d=a+o,u=l+o;return"right"===c?r-=t.width:"center"===c&&((r-=t.width/2)+t.width>i.width&&(r=i.width-t.width),r<0&&(r=0)),"top"===h?s+=d:s-="bottom"===h?t.height+d:t.height/2,"center"===h?"left"===c?r+=d:"right"===c&&(r-=d):"left"===c?r-=u:"right"===c&&(r+=u),{x:r,y:s}}function Mn(e,t){return"center"===t?e.x+e.width/2:"right"===t?e.x+e.width-e.xPadding:e.x+e.xPadding}function Cn(e){return wn([],In(e))}var An=ge.extend({initialize:function(){this._model=Zn(this._options),this._lastActive=[]},getTitle:function(){var e=this,t=e._options.callbacks,n=t.beforeTitle.apply(e,arguments),i=t.title.apply(e,arguments),r=t.afterTitle.apply(e,arguments),s=[];return s=wn(s,In(n)),s=wn(s,In(i)),s=wn(s,In(r))},getBeforeBody:function(){return Cn(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(e,t){var n=this,i=n._options.callbacks,r=[];return se.each(e,(function(e){var s={before:[],lines:[],after:[]};wn(s.before,In(i.beforeLabel.call(n,e,t))),wn(s.lines,i.label.call(n,e,t)),wn(s.after,In(i.afterLabel.call(n,e,t))),r.push(s)})),r},getAfterBody:function(){return Cn(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var e=this,t=e._options.callbacks,n=t.beforeFooter.apply(e,arguments),i=t.footer.apply(e,arguments),r=t.afterFooter.apply(e,arguments),s=[];return s=wn(s,In(n)),s=wn(s,In(i)),s=wn(s,In(r))},update:function(e){var t,n,i=this,r=i._options,s=i._model,a=i._model=Zn(r),o=i._active,l=i._data,c={xAlign:s.xAlign,yAlign:s.yAlign},h={x:s.x,y:s.y},d={width:s.width,height:s.height},u={x:s.caretX,y:s.caretY};if(o.length){a.opacity=1;var g=[],p=[];u=Dn[r.position].call(i,o,i._eventPosition);var m=[];for(t=0,n=o.length;t0&&n.stroke()},draw:function(){var e=this._chart.ctx,t=this._view;if(0!==t.opacity){var n={width:t.width,height:t.height},i={x:t.x,y:t.y},r=Math.abs(t.opacity<.001)?0:t.opacity,s=t.title.length||t.beforeBody.length||t.body.length||t.afterBody.length||t.footer.length;this._options.enabled&&s&&(e.save(),e.globalAlpha=r,this.drawBackground(i,t,e,n),i.y+=t.yPadding,se.rtl.overrideTextDirection(e,t.textDirection),this.drawTitle(i,t,e),this.drawBody(i,t,e),this.drawFooter(i,t,e),se.rtl.restoreTextDirection(e,t.textDirection),e.restore())}},handleEvent:function(e){var t=this,n=t._options,i=!1;return t._lastActive=t._lastActive||[],"mouseout"===e.type?t._active=[]:(t._active=t._chart.getElementsAtEventForMode(e,n.mode,n),n.reverse&&t._active.reverse()),(i=!se.arrayEquals(t._active,t._lastActive))&&(t._lastActive=t._active,(n.enabled||n.custom)&&(t._eventPosition={x:e.x,y:e.y},t.update(!0),t.pivot())),i}}),Ln=Dn,On=An;On.positioners=Ln;var Tn=se.valueOrDefault;function Fn(){return se.merge(Object.create(null),[].slice.call(arguments),{merger:function(e,t,n,i){if("xAxes"===e||"yAxes"===e){var r,s,a,o=n[e].length;for(t[e]||(t[e]=[]),r=0;r=t[e].length&&t[e].push({}),!t[e][r].type||a.type&&a.type!==t[e][r].type?se.merge(t[e][r],[bn.getScaleDefaults(s),a]):se.merge(t[e][r],a)}else se._merger(e,t,n,i)}})}function Rn(){return se.merge(Object.create(null),[].slice.call(arguments),{merger:function(e,t,n,i){var r=t[e]||Object.create(null),s=n[e];"scales"===e?t[e]=Fn(r,s):"scale"===e?t[e]=se.merge(r,[bn.getScaleDefaults(s.type),s]):se._merger(e,t,n,i)}})}function Un(e){var t=(e=e||Object.create(null)).data=e.data||{};return t.datasets=t.datasets||[],t.labels=t.labels||[],e.options=Rn(X.global,X[e.type],e.options||{}),e}function En(e){var t=e.options;se.each(e.scales,(function(t){Vt.removeBox(e,t)})),t=Rn(X.global,X[e.config.type],t),e.options=e.config.options=t,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=t.tooltips,e.tooltip.initialize()}function zn(e,t,n){var i,r=function(e){return e.id===i};do{i=t+n++}while(se.findIndex(e,r)>=0);return i}function Bn(e){return"top"===e||"bottom"===e}function Vn(e,t){return function(n,i){return n[e]===i[e]?n[t]-i[t]:n[e]-i[e]}}X._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Hn=function(e,t){return this.construct(e,t),this};se.extend(Hn.prototype,{construct:function(e,t){var n=this;t=Un(t);var i=xn.acquireContext(e,t),r=i&&i.canvas,s=r&&r.height,a=r&&r.width;n.id=se.uid(),n.ctx=i,n.canvas=r,n.config=t,n.width=a,n.height=s,n.aspectRatio=s?a/s:null,n.options=t.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,Hn.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(e){n.config.data=e}}),i&&r?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var e=this;return yn.notify(e,"beforeInit"),se.retinaScale(e,e.options.devicePixelRatio),e.bindEvents(),e.options.responsive&&e.resize(!0),e.initToolTip(),yn.notify(e,"afterInit"),e},clear:function(){return se.canvas.clear(this),this},stop:function(){return fe.cancelAnimation(this),this},resize:function(e){var t=this,n=t.options,i=t.canvas,r=n.maintainAspectRatio&&t.aspectRatio||null,s=Math.max(0,Math.floor(se.getMaximumWidth(i))),a=Math.max(0,Math.floor(r?s/r:se.getMaximumHeight(i)));if((t.width!==s||t.height!==a)&&(i.width=t.width=s,i.height=t.height=a,i.style.width=s+"px",i.style.height=a+"px",se.retinaScale(t,n.devicePixelRatio),!e)){var o={width:s,height:a};yn.notify(t,"resize",[o]),n.onResize&&n.onResize(t,o),t.stop(),t.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var e=this.options,t=e.scales||{},n=e.scale;se.each(t.xAxes,(function(e,n){e.id||(e.id=zn(t.xAxes,"x-axis-",n))})),se.each(t.yAxes,(function(e,n){e.id||(e.id=zn(t.yAxes,"y-axis-",n))})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var e=this,t=e.options,n=e.scales||{},i=[],r=Object.keys(n).reduce((function(e,t){return e[t]=!1,e}),{});t.scales&&(i=i.concat((t.scales.xAxes||[]).map((function(e){return{options:e,dtype:"category",dposition:"bottom"}})),(t.scales.yAxes||[]).map((function(e){return{options:e,dtype:"linear",dposition:"left"}})))),t.scale&&i.push({options:t.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),se.each(i,(function(t){var i=t.options,s=i.id,a=Tn(i.type,t.dtype);Bn(i.position)!==Bn(t.dposition)&&(i.position=t.dposition),r[s]=!0;var o=null;if(s in n&&n[s].type===a)(o=n[s]).options=i,o.ctx=e.ctx,o.chart=e;else{var l=bn.getScaleConstructor(a);if(!l)return;o=new l({id:s,type:a,options:i,ctx:e.ctx,chart:e}),n[o.id]=o}o.mergeTicksOptions(),t.isDefault&&(e.scale=o)})),se.each(r,(function(e,t){e||delete n[t]})),e.scales=n,bn.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e,t,n=this,i=[],r=n.data.datasets;for(e=0,t=r.length;e=0;--n)i.drawDataset(t[n],e);yn.notify(i,"afterDatasetsDraw",[e])}},drawDataset:function(e,t){var n=this,i={meta:e,index:e.index,easingValue:t};!1!==yn.notify(n,"beforeDatasetDraw",[i])&&(e.controller.draw(t),yn.notify(n,"afterDatasetDraw",[i]))},_drawTooltip:function(e){var t=this,n=t.tooltip,i={tooltip:n,easingValue:e};!1!==yn.notify(t,"beforeTooltipDraw",[i])&&(n.draw(),yn.notify(t,"afterTooltipDraw",[i]))},getElementAtEvent:function(e){return Nt.modes.single(this,e)},getElementsAtEvent:function(e){return Nt.modes.label(this,e,{intersect:!0})},getElementsAtXAxis:function(e){return Nt.modes["x-axis"](this,e,{intersect:!0})},getElementsAtEventForMode:function(e,t,n){var i=Nt.modes[t];return"function"===typeof i?i(this,e,n):[]},getDatasetAtEvent:function(e){return Nt.modes.dataset(this,e,{intersect:!0})},getDatasetMeta:function(e){var t=this,n=t.data.datasets[e];n._meta||(n._meta={});var i=n._meta[t.id];return i||(i=n._meta[t.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n.order||0,index:e}),i},getVisibleDatasetCount:function(){for(var e=0,t=0,n=this.data.datasets.length;t=0;i--){var r=e[i];if(t(r))return r}},se.isNumber=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},se.almostEquals=function(e,t,n){return Math.abs(e-t)=e},se.max=function(e){return e.reduce((function(e,t){return isNaN(t)?e:Math.max(e,t)}),Number.NEGATIVE_INFINITY)},se.min=function(e){return e.reduce((function(e,t){return isNaN(t)?e:Math.min(e,t)}),Number.POSITIVE_INFINITY)},se.sign=Math.sign?function(e){return Math.sign(e)}:function(e){return 0===(e=+e)||isNaN(e)?e:e>0?1:-1},se.toRadians=function(e){return e*(Math.PI/180)},se.toDegrees=function(e){return e*(180/Math.PI)},se._decimalPlaces=function(e){if(se.isFinite(e)){for(var t=1,n=0;Math.round(e*t)/t!==e;)t*=10,n++;return n}},se.getAngleFromPoint=function(e,t){var n=t.x-e.x,i=t.y-e.y,r=Math.sqrt(n*n+i*i),s=Math.atan2(i,n);return s<-.5*Math.PI&&(s+=2*Math.PI),{angle:s,distance:r}},se.distanceBetweenPoints=function(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))},se.aliasPixel=function(e){return e%2===0?0:.5},se._alignPixel=function(e,t,n){var i=e.currentDevicePixelRatio,r=n/2;return Math.round((t-r)*i)/i+r},se.splineCurve=function(e,t,n,i){var r=e.skip?t:e,s=t,a=n.skip?t:n,o=Math.sqrt(Math.pow(s.x-r.x,2)+Math.pow(s.y-r.y,2)),l=Math.sqrt(Math.pow(a.x-s.x,2)+Math.pow(a.y-s.y,2)),c=o/(o+l),h=l/(o+l),d=i*(c=isNaN(c)?0:c),u=i*(h=isNaN(h)?0:h);return{previous:{x:s.x-d*(a.x-r.x),y:s.y-d*(a.y-r.y)},next:{x:s.x+u*(a.x-r.x),y:s.y+u*(a.y-r.y)}}},se.EPSILON=Number.EPSILON||1e-14,se.splineCurveMonotone=function(e){var t,n,i,r,s,a,o,l,c,h=(e||[]).map((function(e){return{model:e._model,deltaK:0,mK:0}})),d=h.length;for(t=0;t0?h[t-1]:null,(r=t0?h[t-1]:null,r=t=e.length-1?e[0]:e[t+1]:t>=e.length-1?e[e.length-1]:e[t+1]},se.previousItem=function(e,t,n){return n?t<=0?e[e.length-1]:e[t-1]:t<=0?e[0]:e[t-1]},se.niceNum=function(e,t){var n=Math.floor(se.log10(e)),i=e/Math.pow(10,n);return(t?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},se.requestAnimFrame="undefined"===typeof window?function(e){e()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){return window.setTimeout(e,1e3/60)},se.getRelativePosition=function(e,t){var n,i,r=e.originalEvent||e,s=e.target||e.srcElement,a=s.getBoundingClientRect(),o=r.touches;o&&o.length>0?(n=o[0].clientX,i=o[0].clientY):(n=r.clientX,i=r.clientY);var l=parseFloat(se.getStyle(s,"padding-left")),c=parseFloat(se.getStyle(s,"padding-top")),h=parseFloat(se.getStyle(s,"padding-right")),d=parseFloat(se.getStyle(s,"padding-bottom")),u=a.right-a.left-l-h,g=a.bottom-a.top-c-d;return{x:n=Math.round((n-a.left-l)/u*s.width/t.currentDevicePixelRatio),y:i=Math.round((i-a.top-c)/g*s.height/t.currentDevicePixelRatio)}},se.getConstraintWidth=function(e){return n(e,"max-width","clientWidth")},se.getConstraintHeight=function(e){return n(e,"max-height","clientHeight")},se._calculatePadding=function(e,t,n){return(t=se.getStyle(e,t)).indexOf("%")>-1?n*parseInt(t,10)/100:parseInt(t,10)},se._getParentNode=function(e){var t=e.parentNode;return t&&"[object ShadowRoot]"===t.toString()&&(t=t.host),t},se.getMaximumWidth=function(e){var t=se._getParentNode(e);if(!t)return e.clientWidth;var n=t.clientWidth,i=n-se._calculatePadding(t,"padding-left",n)-se._calculatePadding(t,"padding-right",n),r=se.getConstraintWidth(e);return isNaN(r)?i:Math.min(i,r)},se.getMaximumHeight=function(e){var t=se._getParentNode(e);if(!t)return e.clientHeight;var n=t.clientHeight,i=n-se._calculatePadding(t,"padding-top",n)-se._calculatePadding(t,"padding-bottom",n),r=se.getConstraintHeight(e);return isNaN(r)?i:Math.min(i,r)},se.getStyle=function(e,t){return e.currentStyle?e.currentStyle[t]:document.defaultView.getComputedStyle(e,null).getPropertyValue(t)},se.retinaScale=function(e,t){var n=e.currentDevicePixelRatio=t||"undefined"!==typeof window&&window.devicePixelRatio||1;if(1!==n){var i=e.canvas,r=e.height,s=e.width;i.height=r*n,i.width=s*n,e.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=r+"px",i.style.width=s+"px")}},se.fontString=function(e,t,n){return t+" "+e+"px "+n},se.longestText=function(e,t,n,i){var r=(i=i||{}).data=i.data||{},s=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(r=i.data={},s=i.garbageCollect=[],i.font=t),e.font=t;var a,o,l,c,h,d=0,u=n.length;for(a=0;an.length){for(a=0;ai&&(i=s),i},se.numberOfLabelLines=function(e){var t=1;return se.each(e,(function(e){se.isArray(e)&&e.length>t&&(t=e.length)})),t},se.color=T?function(e){return e instanceof CanvasGradient&&(e=X.global.defaultColor),T(e)}:function(e){return console.error("Color.js not found!"),e},se.getHoverColor=function(e){return e instanceof CanvasPattern||e instanceof CanvasGradient?e:se.color(e).saturate(.5).darken(.1).rgbString()}};function Gn(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function qn(e){this.options=e||{}}se.extend(qn.prototype,{formats:Gn,parse:Gn,format:Gn,add:Gn,diff:Gn,startOf:Gn,endOf:Gn,_create:function(e){return e}}),qn.override=function(e){se.extend(qn.prototype,e)};var Qn={_date:qn},Kn={formatters:{values:function(e){return se.isArray(e)?e:""+e},linear:function(e,t,n){var i=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(i)>1&&e!==Math.floor(e)&&(i=e-Math.floor(e));var r=se.log10(Math.abs(i)),s="";if(0!==e)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var a=se.log10(Math.abs(e)),o=Math.floor(a)-Math.floor(r);o=Math.max(Math.min(o,20),0),s=e.toExponential(o)}else{var l=-1*Math.floor(r);l=Math.max(Math.min(l,20),0),s=e.toFixed(l)}else s="0";return s},logarithmic:function(e,t,n){var i=e/Math.pow(10,Math.floor(se.log10(e)));return 0===e?"0":1===i||2===i||5===i||0===t||t===n.length-1?e.toExponential():""}}},Xn=se.isArray,$n=se.isNullOrUndef,Jn=se.valueOrDefault,ei=se.valueAtIndexOrDefault;function ti(e,t){for(var n=[],i=e.length/t,r=0,s=e.length;rl+c)))return a}function ii(e,t){se.each(e,(function(e){var n,i=e.gc,r=i.length/2;if(r>t){for(n=0;nc)return s;return Math.max(c,1)}function ui(e){var t,n,i=[];for(t=0,n=e.length;t=u||h<=1||!o.isHorizontal()?o.labelRotation=d:(t=(e=o._getLabelSizes()).widest.width,n=e.highest.height-e.highest.offset,i=Math.min(o.maxWidth,o.chart.width-t),t+6>(r=l.offset?o.maxWidth/h:i/(h-1))&&(r=i/(h-(l.offset?.5:1)),s=o.maxHeight-si(l.gridLines)-c.padding-ai(l.scaleLabel),a=Math.sqrt(t*t+n*n),g=se.toDegrees(Math.min(Math.asin(Math.min((e.highest.height+6)/r,1)),Math.asin(Math.min(s/a,1))-Math.asin(n/a))),g=Math.max(d,Math.min(u,g))),o.labelRotation=g)},afterCalculateTickRotation:function(){se.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){se.callback(this.options.beforeFit,[this])},fit:function(){var e=this,t=e.minSize={width:0,height:0},n=e.chart,i=e.options,r=i.ticks,s=i.scaleLabel,a=i.gridLines,o=e._isVisible(),l="bottom"===i.position,c=e.isHorizontal();if(c?t.width=e.maxWidth:o&&(t.width=si(a)+ai(s)),c?o&&(t.height=si(a)+ai(s)):t.height=e.maxHeight,r.display&&o){var h=li(r),d=e._getLabelSizes(),u=d.first,g=d.last,p=d.widest,m=d.highest,f=.4*h.minor.lineHeight,v=r.padding;if(c){var x=0!==e.labelRotation,y=se.toRadians(e.labelRotation),b=Math.cos(y),j=Math.sin(y),S=j*p.width+b*(m.height-(x?m.offset:0))+(x?0:f);t.height=Math.min(e.maxHeight,t.height+S+v);var D,w,I=e.getPixelForTick(0)-e.left,P=e.right-e.getPixelForTick(e.getTicks().length-1);x?(D=l?b*u.width+j*u.offset:j*(u.height-u.offset),w=l?j*(g.height-g.offset):b*g.width+j*g.offset):(D=u.width/2,w=g.width/2),e.paddingLeft=Math.max((D-I)*e.width/(e.width-I),0)+3,e.paddingRight=Math.max((w-P)*e.width/(e.width-P),0)+3}else{var Z=r.mirror?0:p.width+v+f;t.width=Math.min(e.maxWidth,t.width+Z),e.paddingTop=u.height/2,e.paddingBottom=g.height/2}}e.handleMargins(),c?(e.width=e._length=n.width-e.margins.left-e.margins.right,e.height=t.height):(e.width=t.width,e.height=e._length=n.height-e.margins.top-e.margins.bottom)},handleMargins:function(){var e=this;e.margins&&(e.margins.left=Math.max(e.paddingLeft,e.margins.left),e.margins.top=Math.max(e.paddingTop,e.margins.top),e.margins.right=Math.max(e.paddingRight,e.margins.right),e.margins.bottom=Math.max(e.paddingBottom,e.margins.bottom))},afterFit:function(){se.callback(this.options.afterFit,[this])},isHorizontal:function(){var e=this.options.position;return"top"===e||"bottom"===e},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(e){if($n(e))return NaN;if(("number"===typeof e||e instanceof Number)&&!isFinite(e))return NaN;if(e)if(this.isHorizontal()){if(void 0!==e.x)return this.getRightValue(e.x)}else if(void 0!==e.y)return this.getRightValue(e.y);return e},_convertTicksToLabels:function(e){var t,n,i,r=this;for(r.ticks=e.map((function(e){return e.value})),r.beforeTickToLabelConversion(),t=r.convertTicksToLabels(e)||r.ticks,r.afterTickToLabelConversion(),n=0,i=e.length;ni-1?null:t.getPixelForDecimal(e*r+(n?r/2:0))},getPixelForDecimal:function(e){var t=this;return t._reversePixels&&(e=1-e),t._startPixel+e*t._length},getDecimalForPixel:function(e){var t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var e=this,t=e.min,n=e.max;return e.beginAtZero?0:t<0&&n<0?n:t>0&&n>0?t:0},_autoSkip:function(e){var t,n,i,r,s=this,a=s.options.ticks,o=s._length,l=a.maxTicksLimit||o/s._tickSize()+1,c=a.major.enabled?ui(e):[],h=c.length,d=c[0],u=c[h-1];if(h>l)return gi(e,c,h/l),ci(e);if(i=di(c,e,o,l),h>0){for(t=0,n=h-1;t1?(u-d)/(h-1):null,pi(e,i,se.isNullOrUndef(r)?0:d-r,d),pi(e,i,u,se.isNullOrUndef(r)?e.length:u+r),ci(e)}return pi(e,i),ci(e)},_tickSize:function(){var e=this,t=e.options.ticks,n=se.toRadians(e.labelRotation),i=Math.abs(Math.cos(n)),r=Math.abs(Math.sin(n)),s=e._getLabelSizes(),a=t.autoSkipPadding||0,o=s?s.widest.width+a:0,l=s?s.highest.height+a:0;return e.isHorizontal()?l*i>o*r?o/i:l/r:l*r=0&&(a=e),void 0!==s&&(e=n.indexOf(s))>=0&&(o=e),t.minIndex=a,t.maxIndex=o,t.min=n[a],t.max=n[o]},buildTicks:function(){var e=this,t=e._getLabels(),n=e.minIndex,i=e.maxIndex;e.ticks=0===n&&i===t.length-1?t:t.slice(n,i+1)},getLabelForIndex:function(e,t){var n=this,i=n.chart;return i.getDatasetMeta(t).controller._getValueScaleId()===n.id?n.getRightValue(i.data.datasets[t].data[e]):n._getLabels()[e]},_configure:function(){var e=this,t=e.options.offset,n=e.ticks;fi.prototype._configure.call(e),e.isHorizontal()||(e._reversePixels=!e._reversePixels),n&&(e._startValue=e.minIndex-(t?.5:0),e._valueRange=Math.max(n.length-(t?0:1),1))},getPixelForValue:function(e,t,n){var i,r,s,a=this;return vi(t)||vi(n)||(e=a.chart.data.datasets[n].data[t]),vi(e)||(i=a.isHorizontal()?e.x:e.y),(void 0!==i||void 0!==e&&isNaN(t))&&(r=a._getLabels(),e=se.valueOrDefault(i,e),t=-1!==(s=r.indexOf(e))?s:t,isNaN(t)&&(t=e)),a.getPixelForDecimal((t-a._startValue)/a._valueRange)},getPixelForTick:function(e){var t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e],e+this.minIndex)},getValueForPixel:function(e){var t=this,n=Math.round(t._startValue+t.getDecimalForPixel(e)*t._valueRange);return Math.min(Math.max(n,0),t.ticks.length-1)},getBasePixel:function(){return this.bottom}}),bi=xi;yi._defaults=bi;var ji=se.noop,Si=se.isNullOrUndef;function Di(e,t){var n,i,r,s,a=[],o=1e-14,l=e.stepSize,c=l||1,h=e.maxTicks-1,d=e.min,u=e.max,g=e.precision,p=t.min,m=t.max,f=se.niceNum((m-p)/h/c)*c;if(fh&&(f=se.niceNum(s*f/h/c)*c),l||Si(g)?n=Math.pow(10,se._decimalPlaces(f)):(n=Math.pow(10,g),f=Math.ceil(f*n)/n),i=Math.floor(p/f)*f,r=Math.ceil(m/f)*f,l&&(!Si(d)&&se.almostWhole(d/f,f/1e3)&&(i=d),!Si(u)&&se.almostWhole(u/f,f/1e3)&&(r=u)),s=(r-i)/f,s=se.almostEquals(s,Math.round(s),f/1e3)?Math.round(s):Math.ceil(s),i=Math.round(i*n)/n,r=Math.round(r*n)/n,a.push(Si(d)?i:d);for(var v=1;v0&&i>0&&(e.min=0)}var r=void 0!==t.min||void 0!==t.suggestedMin,s=void 0!==t.max||void 0!==t.suggestedMax;void 0!==t.min?e.min=t.min:void 0!==t.suggestedMin&&(null===e.min?e.min=t.suggestedMin:e.min=Math.min(e.min,t.suggestedMin)),void 0!==t.max?e.max=t.max:void 0!==t.suggestedMax&&(null===e.max?e.max=t.suggestedMax:e.max=Math.max(e.max,t.suggestedMax)),r!==s&&e.min>=e.max&&(r?e.max=e.min+1:e.min=e.max-1),e.min===e.max&&(e.max++,t.beginAtZero||e.min--)},getTickLimit:function(){var e,t=this,n=t.options.ticks,i=n.stepSize,r=n.maxTicksLimit;return i?e=Math.ceil(t.max/i)-Math.floor(t.min/i)+1:(e=t._computeTickLimit(),r=r||11),r&&(e=Math.min(r,e)),e},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:ji,buildTicks:function(){var e=this,t=e.options.ticks,n=e.getTickLimit(),i={maxTicks:n=Math.max(2,n),min:t.min,max:t.max,precision:t.precision,stepSize:se.valueOrDefault(t.fixedStepSize,t.stepSize)},r=e.ticks=Di(i,e);e.handleDirectionalChanges(),e.max=se.max(r),e.min=se.min(r),t.reverse?(r.reverse(),e.start=e.max,e.end=e.min):(e.start=e.min,e.end=e.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),fi.prototype.convertTicksToLabels.call(e)},_configure:function(){var e,t=this,n=t.getTicks(),i=t.min,r=t.max;fi.prototype._configure.call(t),t.options.offset&&n.length&&(i-=e=(r-i)/Math.max(n.length-1,1)/2,r+=e),t._startValue=i,t._endValue=r,t._valueRange=r-i}}),Ii={position:"left",ticks:{callback:Kn.formatters.linear}},Pi=0,Zi=1;function ki(e,t,n){var i=[n.type,void 0===t&&void 0===n.stack?n.index:"",n.stack].join(".");return void 0===e[i]&&(e[i]={pos:[],neg:[]}),e[i]}function _i(e,t,n,i){var r,s,a=e.options,o=ki(t,a.stacked,n),l=o.pos,c=o.neg,h=i.length;for(r=0;rt.length-1?null:this.getPixelForValue(t[e])}}),Ci=Ii;Mi._defaults=Ci;var Ai=se.valueOrDefault,Li=se.math.log10;function Oi(e,t){var n,i,r=[],s=Ai(e.min,Math.pow(10,Math.floor(Li(t.min)))),a=Math.floor(Li(t.max)),o=Math.ceil(t.max/Math.pow(10,a));0===s?(n=Math.floor(Li(t.minNotZero)),i=Math.floor(t.minNotZero/Math.pow(10,n)),r.push(s),s=i*Math.pow(10,n)):(n=Math.floor(Li(s)),i=Math.floor(s/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{r.push(s),10===++i&&(i=1,l=++n>=0?1:l),s=Math.round(i*Math.pow(10,n)*l)/l}while(n=0?e:t}var Ri=fi.extend({determineDataLimits:function(){var e,t,n,i,r,s,a=this,o=a.options,l=a.chart,c=l.data.datasets,h=a.isHorizontal();function d(e){return h?e.xAxisID===a.id:e.yAxisID===a.id}a.min=Number.POSITIVE_INFINITY,a.max=Number.NEGATIVE_INFINITY,a.minNotZero=Number.POSITIVE_INFINITY;var u=o.stacked;if(void 0===u)for(e=0;e0){var t=se.min(e),n=se.max(e);a.min=Math.min(a.min,t),a.max=Math.max(a.max,n)}}))}else for(e=0;e0?e.minNotZero=e.min:e.max<1?e.minNotZero=Math.pow(10,Math.floor(Li(e.max))):e.minNotZero=n)},buildTicks:function(){var e=this,t=e.options.ticks,n=!e.isHorizontal(),i={min:Fi(t.min),max:Fi(t.max)},r=e.ticks=Oi(i,e);e.max=se.max(r),e.min=se.min(r),t.reverse?(n=!n,e.start=e.max,e.end=e.min):(e.start=e.min,e.end=e.max),n&&r.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),fi.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(e,t){return this._getScaleLabel(this.chart.data.datasets[t].data[e])},getPixelForTick:function(e){var t=this.tickValues;return e<0||e>t.length-1?null:this.getPixelForValue(t[e])},_getFirstTickValue:function(e){var t=Math.floor(Li(e));return Math.floor(e/Math.pow(10,t))*Math.pow(10,t)},_configure:function(){var e=this,t=e.min,n=0;fi.prototype._configure.call(e),0===t&&(t=e._getFirstTickValue(e.minNotZero),n=Ai(e.options.ticks.fontSize,X.global.defaultFontSize)/e._length),e._startValue=Li(t),e._valueOffset=n,e._valueRange=(Li(e.max)-Li(t))/(1-n)},getPixelForValue:function(e){var t=this,n=0;return(e=+t.getRightValue(e))>t.min&&e>0&&(n=(Li(e)-t._startValue)/t._valueRange+t._valueOffset),t.getPixelForDecimal(n)},getValueForPixel:function(e){var t=this,n=t.getDecimalForPixel(e);return 0===n&&0===t.min?0:Math.pow(10,t._startValue+(n-t._valueOffset)*t._valueRange)}}),Ui=Ti;Ri._defaults=Ui;var Ei=se.valueOrDefault,zi=se.valueAtIndexOrDefault,Bi=se.options.resolve,Vi={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:Kn.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(e){return e}}};function Hi(e){var t=e.ticks;return t.display&&e.display?Ei(t.fontSize,X.global.defaultFontSize)+2*t.backdropPaddingY:0}function Wi(e,t,n){return se.isArray(n)?{w:se.longestText(e,e.font,n),h:n.length*t}:{w:e.measureText(n).width,h:t}}function Yi(e,t,n,i,r){return e===i||e===r?{start:t-n/2,end:t+n/2}:er?{start:t-n,end:t}:{start:t,end:t+n}}function Gi(e){var t,n,i,r=se.options._parseFont(e.options.pointLabels),s={l:0,r:e.width,t:0,b:e.height-e.paddingTop},a={};e.ctx.font=r.string,e._pointLabelSizes=[];var o=e.chart.data.labels.length;for(t=0;ts.r&&(s.r=h.end,a.r=l),d.starts.b&&(s.b=d.end,a.b=l)}e.setReductions(e.drawingArea,s,a)}function qi(e){return 0===e||180===e?"center":e<180?"left":"right"}function Qi(e,t,n,i){var r,s,a=n.y+i/2;if(se.isArray(t))for(r=0,s=t.length;r270||e<90)&&(n.y-=t.h)}function Xi(e){var t=e.ctx,n=e.options,i=n.pointLabels,r=Hi(n),s=e.getDistanceFromCenterForValue(n.ticks.reverse?e.min:e.max),a=se.options._parseFont(i);t.save(),t.font=a.string,t.textBaseline="middle";for(var o=e.chart.data.labels.length-1;o>=0;o--){var l=0===o?r/2:0,c=e.getPointPosition(o,s+l+5),h=zi(i.fontColor,o,X.global.defaultFontColor);t.fillStyle=h;var d=e.getIndexAngle(o),u=se.toDegrees(d);t.textAlign=qi(u),Ki(u,e._pointLabelSizes[o],c),Qi(t,e.pointLabels[o],c,a.lineHeight)}t.restore()}function $i(e,t,n,i){var r,s=e.ctx,a=t.circular,o=e.chart.data.labels.length,l=zi(t.color,i-1),c=zi(t.lineWidth,i-1);if((a||o)&&l&&c){if(s.save(),s.strokeStyle=l,s.lineWidth=c,s.setLineDash&&(s.setLineDash(t.borderDash||[]),s.lineDashOffset=t.borderDashOffset||0),s.beginPath(),a)s.arc(e.xCenter,e.yCenter,n,0,2*Math.PI);else{r=e.getPointPosition(0,n),s.moveTo(r.x,r.y);for(var h=1;h0&&i>0?n:0)},_drawGrid:function(){var e,t,n,i=this,r=i.ctx,s=i.options,a=s.gridLines,o=s.angleLines,l=Ei(o.lineWidth,a.lineWidth),c=Ei(o.color,a.color);if(s.pointLabels.display&&Xi(i),a.display&&se.each(i.ticks,(function(e,n){0!==n&&(t=i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]),$i(i,a,t,n))})),o.display&&l&&c){for(r.save(),r.lineWidth=l,r.strokeStyle=c,r.setLineDash&&(r.setLineDash(Bi([o.borderDash,a.borderDash,[]])),r.lineDashOffset=Bi([o.borderDashOffset,a.borderDashOffset,0])),e=i.chart.data.labels.length-1;e>=0;e--)t=i.getDistanceFromCenterForValue(s.ticks.reverse?i.min:i.max),n=i.getPointPosition(e,t),r.beginPath(),r.moveTo(i.xCenter,i.yCenter),r.lineTo(n.x,n.y),r.stroke();r.restore()}},_drawLabels:function(){var e=this,t=e.ctx,n=e.options.ticks;if(n.display){var i,r,s=e.getIndexAngle(0),a=se.options._parseFont(n),o=Ei(n.fontColor,X.global.defaultFontColor);t.save(),t.font=a.string,t.translate(e.xCenter,e.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",se.each(e.ticks,(function(s,l){(0!==l||n.reverse)&&(i=e.getDistanceFromCenterForValue(e.ticksAsNumbers[l]),n.showLabelBackdrop&&(r=t.measureText(s).width,t.fillStyle=n.backdropColor,t.fillRect(-r/2-n.backdropPaddingX,-i-a.size/2-n.backdropPaddingY,r+2*n.backdropPaddingX,a.size+2*n.backdropPaddingY)),t.fillStyle=o,t.fillText(s,0,-i))})),t.restore()}},_drawTitle:se.noop}),tr=Vi;er._defaults=tr;var nr=se._deprecated,ir=se.options.resolve,rr=se.valueOrDefault,sr=Number.MIN_SAFE_INTEGER||-9007199254740991,ar=Number.MAX_SAFE_INTEGER||9007199254740991,or={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},lr=Object.keys(or);function cr(e,t){return e-t}function hr(e){var t,n,i,r={},s=[];for(t=0,n=e.length;tt&&o=0&&a<=o;){if(r=e[(i=a+o>>1)-1]||null,s=e[i],!r)return{lo:null,hi:s};if(s[t]n))return{lo:r,hi:s};o=i-1}}return{lo:s,hi:null}}function mr(e,t,n,i){var r=pr(e,t,n),s=r.lo?r.hi?r.lo:e[e.length-2]:e[0],a=r.lo?r.hi?r.hi:e[e.length-1]:e[1],o=a[t]-s[t],l=o?(n-s[t])/o:0,c=(a[i]-s[i])*l;return s[i]+c}function fr(e,t){var n=e._adapter,i=e.options.time,r=i.parser,s=r||i.format,a=t;return"function"===typeof r&&(a=r(a)),se.isFinite(a)||(a="string"===typeof s?n.parse(a,s):n.parse(a)),null!==a?+a:(r||"function"!==typeof s||(a=s(t),se.isFinite(a)||(a=n.parse(a))),a)}function vr(e,t){if(se.isNullOrUndef(t))return null;var n=e.options.time,i=fr(e,e.getRightValue(t));return null===i||n.round&&(i=+e._adapter.startOf(i,n.round)),i}function xr(e,t,n,i){var r,s,a,o=lr.length;for(r=lr.indexOf(e);r=lr.indexOf(n);s--)if(a=lr[s],or[a].common&&e._adapter.diff(r,i,a)>=t-1)return a;return lr[n?lr.indexOf(n):0]}function br(e){for(var t=lr.indexOf(e)+1,n=lr.length;t1e5*c)throw t+" and "+n+" are too far apart with stepSize of "+c+" "+l;for(r=d;r=0&&(t[s].major=!0);return t}function wr(e,t,n){var i,r,s=[],a={},o=t.length;for(i=0;i1?hr(p).sort(cr):p.sort(cr),u=Math.min(u,p[0]),g=Math.max(g,p[p.length-1])),u=vr(o,dr(h))||u,g=vr(o,ur(h))||g,u=u===ar?+c.startOf(Date.now(),d):u,g=g===sr?+c.endOf(Date.now(),d)+1:g,o.min=Math.min(u,g),o.max=Math.max(u+1,g),o._table=[],o._timestamps={data:p,datasets:m,labels:f}},buildTicks:function(){var e,t,n,i=this,r=i.min,s=i.max,a=i.options,o=a.ticks,l=a.time,c=i._timestamps,h=[],d=i.getLabelCapacity(r),u=o.source,g=a.distribution;for(c="data"===u||"auto"===u&&"series"===g?c.data:"labels"===u?c.labels:jr(i,r,s,d),"ticks"===a.bounds&&c.length&&(r=c[0],s=c[c.length-1]),r=vr(i,dr(a))||r,s=vr(i,ur(a))||s,e=0,t=c.length;e=r&&n<=s&&h.push(n);return i.min=r,i.max=s,i._unit=l.unit||(o.autoSkip?xr(l.minUnit,i.min,i.max,d):yr(i,h.length,l.minUnit,i.min,i.max)),i._majorUnit=o.major.enabled&&"year"!==i._unit?br(i._unit):void 0,i._table=gr(i._timestamps.data,r,s,g),i._offsets=Sr(i._table,h,r,s,a),o.reverse&&h.reverse(),wr(i,h,i._majorUnit)},getLabelForIndex:function(e,t){var n=this,i=n._adapter,r=n.chart.data,s=n.options.time,a=r.labels&&e=0&&e0?o:1}}),Zr=Ir;Pr._defaults=Zr;var kr={category:yi,linear:Mi,logarithmic:Ri,radialLinear:er,time:Pr},_r={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Qn._date.override("function"===typeof e?{_id:"moment",formats:function(){return _r},parse:function(t,n){return"string"===typeof t&&"string"===typeof n?t=e(t,n):t instanceof e||(t=e(t)),t.isValid()?t.valueOf():null},format:function(t,n){return e(t).format(n)},add:function(t,n,i){return e(t).add(n,i).valueOf()},diff:function(t,n,i){return e(t).diff(e(n),i)},startOf:function(t,n,i){return t=e(t),"isoWeek"===n?t.isoWeekday(i).valueOf():t.startOf(n).valueOf()},endOf:function(t,n){return e(t).endOf(n).valueOf()},_create:function(t){return e(t)}}:{}),X._set("global",{plugins:{filler:{propagate:!0}}});var Nr={dataset:function(e){var t=e.fill,n=e.chart,i=n.getDatasetMeta(t),r=i&&n.isDatasetVisible(t)&&i.dataset._children||[],s=r.length||0;return s?function(e,t){return t=n)&&i;switch(s){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return s;default:return!1}}function Cr(e){var t,n=e.el._model||{},i=e.el._scale||{},r=e.fill,s=null;if(isFinite(r))return null;if("start"===r?s=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===r?s=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?s=n.scaleZero:i.getBasePixel&&(s=i.getBasePixel()),void 0!==s&&null!==s){if(void 0!==s.x&&void 0!==s.y)return s;if(se.isFinite(s))return{x:(t=i.isHorizontal())?s:null,y:t?null:s}}return null}function Ar(e){var t,n,i,r,s,a=e.el._scale,o=a.options,l=a.chart.data.labels.length,c=e.fill,h=[];if(!l)return null;for(t=o.ticks.reverse?a.max:a.min,n=o.ticks.reverse?a.min:a.max,i=a.getPointPositionForValue(0,t),r=0;r0;--s)se.canvas.lineTo(e,n[s],n[s-1],!0);else for(a=n[0].cx,o=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-a,2)+Math.pow(n[0].y-o,2)),s=r-1;s>0;--s)e.arc(a,o,l,n[s].angle,n[s-1].angle,!0)}}function Ur(e,t,n,i,r,s){var a,o,l,c,h,d,u,g,p=t.length,m=i.spanGaps,f=[],v=[],x=0,y=0;for(e.beginPath(),a=0,o=p;a=0;--n)(t=l[n].$filler)&&t.visible&&(r=(i=t.el)._view,s=i._children||[],a=t.mapper,o=r.backgroundColor||X.global.defaultColor,a&&o&&s.length&&(se.canvas.clipArea(c,e.chartArea),Ur(c,s,a,r,o,i._loop),se.canvas.unclipArea(c)))}},zr=se.rtl.getRtlAdapter,Br=se.noop,Vr=se.valueOrDefault;function Hr(e,t){return e.usePointStyle&&e.boxWidth>t?t:e.boxWidth}X._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(e,t){var n=t.datasetIndex,i=this.chart,r=i.getDatasetMeta(n);r.hidden=null===r.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(e){var t=e.data.datasets,n=e.options.legend||{},i=n.labels&&n.labels.usePointStyle;return e._getSortedDatasetMetas().map((function(n){var r=n.controller.getStyle(i?0:void 0);return{text:t[n.index].label,fillStyle:r.backgroundColor,hidden:!e.isDatasetVisible(n.index),lineCap:r.borderCapStyle,lineDash:r.borderDash,lineDashOffset:r.borderDashOffset,lineJoin:r.borderJoinStyle,lineWidth:r.borderWidth,strokeStyle:r.borderColor,pointStyle:r.pointStyle,rotation:r.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(e){var t,n,i,r=document.createElement("ul"),s=e.data.datasets;for(r.setAttribute("class",e.id+"-legend"),t=0,n=s.length;tl.width)&&(d+=a+n.padding,h[h.length-(t>0?0:1)]=0),o[t]={left:0,top:0,width:i,height:a},h[h.length-1]+=i+n.padding})),l.height+=d}else{var u=n.padding,g=e.columnWidths=[],p=e.columnHeights=[],m=n.padding,f=0,v=0;se.each(e.legendItems,(function(e,t){var i=Hr(n,a)+a/2+r.measureText(e.text).width;t>0&&v+a+2*u>l.height&&(m+=f+n.padding,g.push(f),p.push(v),f=0,v=0),f=Math.max(f,i),v+=a+u,o[t]={left:0,top:0,width:i,height:a}})),m+=f,g.push(f),p.push(v),l.width+=m}e.width=l.width,e.height=l.height}else e.width=l.width=e.height=l.height=0},afterFit:Br,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var e=this,t=e.options,n=t.labels,i=X.global,r=i.defaultColor,s=i.elements.line,a=e.height,o=e.columnHeights,l=e.width,c=e.lineWidths;if(t.display){var h,d=zr(t.rtl,e.left,e.minSize.width),u=e.ctx,g=Vr(n.fontColor,i.defaultFontColor),p=se.options._parseFont(n),m=p.size;u.textAlign=d.textAlign("left"),u.textBaseline="middle",u.lineWidth=.5,u.strokeStyle=g,u.fillStyle=g,u.font=p.string;var f=Hr(n,m),v=e.legendHitBoxes,x=function(e,t,i){if(!(isNaN(f)||f<=0)){u.save();var a=Vr(i.lineWidth,s.borderWidth);if(u.fillStyle=Vr(i.fillStyle,r),u.lineCap=Vr(i.lineCap,s.borderCapStyle),u.lineDashOffset=Vr(i.lineDashOffset,s.borderDashOffset),u.lineJoin=Vr(i.lineJoin,s.borderJoinStyle),u.lineWidth=a,u.strokeStyle=Vr(i.strokeStyle,r),u.setLineDash&&u.setLineDash(Vr(i.lineDash,s.borderDash)),n&&n.usePointStyle){var o=f*Math.SQRT2/2,l=d.xPlus(e,f/2),c=t+m/2;se.canvas.drawPoint(u,i.pointStyle,o,l,c,i.rotation)}else u.fillRect(d.leftForLtr(e,f),t,f,m),0!==a&&u.strokeRect(d.leftForLtr(e,f),t,f,m);u.restore()}},y=function(e,t,n,i){var r=m/2,s=d.xPlus(e,f+r),a=t+r;u.fillText(n.text,s,a),n.hidden&&(u.beginPath(),u.lineWidth=2,u.moveTo(s,a),u.lineTo(d.xPlus(s,i),a),u.stroke())},b=function(e,i){switch(t.align){case"start":return n.padding;case"end":return e-i;default:return(e-i+n.padding)/2}},j=e.isHorizontal();h=j?{x:e.left+b(l,c[0]),y:e.top+n.padding,line:0}:{x:e.left+n.padding,y:e.top+b(a,o[0]),line:0},se.rtl.overrideTextDirection(e.ctx,t.textDirection);var S=m+n.padding;se.each(e.legendItems,(function(t,i){var r=u.measureText(t.text).width,s=f+m/2+r,g=h.x,p=h.y;d.setWidth(e.minSize.width),j?i>0&&g+s+n.padding>e.left+e.minSize.width&&(p=h.y+=S,h.line++,g=h.x=e.left+b(l,c[h.line])):i>0&&p+S>e.top+e.minSize.height&&(g=h.x=g+e.columnWidths[h.line]+n.padding,h.line++,p=h.y=e.top+b(a,o[h.line]));var D=d.x(g);x(D,p,t),v[i].left=d.leftForLtr(D,v[i].width),v[i].top=p,y(D,p,t,r),j?h.x+=s+n.padding:h.y+=S})),se.rtl.restoreTextDirection(e.ctx,t.textDirection)}},_getLegendItemAt:function(e,t){var n,i,r,s=this;if(e>=s.left&&e<=s.right&&t>=s.top&&t<=s.bottom)for(r=s.legendHitBoxes,n=0;n=(i=r[n]).left&&e<=i.left+i.width&&t>=i.top&&t<=i.top+i.height)return s.legendItems[n];return null},handleEvent:function(e){var t,n=this,i=n.options,r="mouseup"===e.type?"click":e.type;if("mousemove"===r){if(!i.onHover&&!i.onLeave)return}else{if("click"!==r)return;if(!i.onClick)return}t=n._getLegendItemAt(e.x,e.y),"click"===r?t&&i.onClick&&i.onClick.call(n,e.native,t):(i.onLeave&&t!==n._hoveredItem&&(n._hoveredItem&&i.onLeave.call(n,e.native,n._hoveredItem),n._hoveredItem=t),i.onHover&&t&&i.onHover.call(n,e.native,t))}});function Yr(e,t){var n=new Wr({ctx:e.ctx,options:t,chart:e});Vt.configure(e,n,t),Vt.addBox(e,n),e.legend=n}var Gr={id:"legend",_element:Wr,beforeInit:function(e){var t=e.options.legend;t&&Yr(e,t)},beforeUpdate:function(e){var t=e.options.legend,n=e.legend;t?(se.mergeIf(t,X.global.legend),n?(Vt.configure(e,n,t),n.options=t):Yr(e,t)):n&&(Vt.removeBox(e,n),delete e.legend)},afterEvent:function(e,t){var n=e.legend;n&&n.handleEvent(t)}},qr=se.noop;X._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var Qr=ge.extend({initialize:function(e){var t=this;se.extend(t,e),t.legendHitBoxes=[]},beforeUpdate:qr,update:function(e,t,n){var i=this;return i.beforeUpdate(),i.maxWidth=e,i.maxHeight=t,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:qr,beforeSetDimensions:qr,setDimensions:function(){var e=this;e.isHorizontal()?(e.width=e.maxWidth,e.left=0,e.right=e.width):(e.height=e.maxHeight,e.top=0,e.bottom=e.height),e.paddingLeft=0,e.paddingTop=0,e.paddingRight=0,e.paddingBottom=0,e.minSize={width:0,height:0}},afterSetDimensions:qr,beforeBuildLabels:qr,buildLabels:qr,afterBuildLabels:qr,beforeFit:qr,fit:function(){var e,t=this,n=t.options,i=t.minSize={},r=t.isHorizontal();n.display?(e=(se.isArray(n.text)?n.text.length:1)*se.options._parseFont(n).lineHeight+2*n.padding,t.width=i.width=r?t.maxWidth:e,t.height=i.height=r?e:t.maxHeight):t.width=i.width=t.height=i.height=0},afterFit:qr,isHorizontal:function(){var e=this.options.position;return"top"===e||"bottom"===e},draw:function(){var e=this,t=e.ctx,n=e.options;if(n.display){var i,r,s,a=se.options._parseFont(n),o=a.lineHeight,l=o/2+n.padding,c=0,h=e.top,d=e.left,u=e.bottom,g=e.right;t.fillStyle=se.valueOrDefault(n.fontColor,X.global.defaultFontColor),t.font=a.string,e.isHorizontal()?(r=d+(g-d)/2,s=h+l,i=g-d):(r="left"===n.position?d+l:g-l,s=h+(u-h)/2,i=u-h,c=Math.PI*("left"===n.position?-.5:.5)),t.save(),t.translate(r,s),t.rotate(c),t.textAlign="center",t.textBaseline="middle";var p=n.text;if(se.isArray(p))for(var m=0,f=0;f=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function p(e){for(var t=1;t1;if(t&&r&&!i){var s=!1;e.forEach((function(e){e.label||(s=!0)})),s&&console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the "label" property on each dataset is used. Alternatively, you may provide a "datasetKeyProvider" as a prop that returns a unique key.')}}},{key:"getCurrentDatasets",value:function(){return this.chartInstance&&this.chartInstance.config.data&&this.chartInstance.config.data.datasets||[]}},{key:"saveCurrentDatasets",value:function(){var e=this;this.datasets=this.datasets||{},this.getCurrentDatasets().forEach((function(t){e.datasets[e.props.datasetKeyProvider(t)]=t}))}},{key:"updateChart",value:function(){var e=this,t=this.props.options,n=this.memoizeDataProps(this.props);if(this.chartInstance){t&&(this.chartInstance.options=a.default.helpers.configMerge(this.chartInstance.options,t));var i=this.getCurrentDatasets(),r=n.datasets||[];this.checkDatasets(i);var s=(0,l.default)(i,this.props.datasetKeyProvider);this.chartInstance.config.data.datasets=r.map((function(t){var n=s[e.props.datasetKeyProvider(t)];if(n&&n.type===t.type&&t.data){n.data.splice(t.data.length),t.data.forEach((function(e,i){n.data[i]=t.data[i]}));t.data;var i=u(t,["data"]);return p(p({},n),i)}return t}));n.datasets;var o=u(n,["datasets"]);this.chartInstance.config.data=p(p({},this.chartInstance.config.data),o),this.chartInstance.update()}}},{key:"renderChart",value:function(){var e=this.props,t=e.options,i=e.legend,r=e.type,s=e.plugins,l=this.element,c=this.memoizeDataProps();"undefined"===typeof i||(0,o.default)(n.defaultProps.legend,i)||(t.legend=i),this.chartInstance=new a.default(l,{type:r,data:c,options:t,plugins:s})}},{key:"destroyChart",value:function(){if(this.chartInstance){this.saveCurrentDatasets();var e=Object.values(this.datasets);this.chartInstance.config.data.datasets=e,this.chartInstance.destroy()}}},{key:"render",value:function(){var e=this.props,t=e.height,n=e.width,i=e.id;return r.default.createElement("canvas",{ref:this.ref,height:t,width:n,id:i,onClick:this.handleOnClick})}}]),n}(r.default.Component);D(I,"getLabelAsKey",(function(e){return e.label})),D(I,"propTypes",{data:s.default.oneOfType([s.default.object,s.default.func]).isRequired,getDatasetAtEvent:s.default.func,getElementAtEvent:s.default.func,getElementsAtEvent:s.default.func,height:s.default.number,legend:s.default.object,onElementsClick:s.default.func,options:s.default.object,plugins:s.default.arrayOf(s.default.object),redraw:s.default.bool,type:function(e,t,n){if(!a.default.controllers[e[t]])return new Error("Invalid chart type `"+e[t]+"` supplied to `"+n+"`.")},width:s.default.number,datasetKeyProvider:s.default.func}),D(I,"defaultProps",{legend:{display:!0,position:"bottom"},type:"doughnut",height:150,width:300,redraw:!1,options:{},datasetKeyProvider:I.getLabelAsKey});var P=function(e){x(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return v(n,[{key:"render",value:function(){var e=this;return r.default.createElement(I,h({},this.props,{ref:function(t){return e.chartInstance=t&&t.chartInstance},type:"doughnut"}))}}]),n}(r.default.Component);var Z=function(e){x(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return v(n,[{key:"render",value:function(){var e=this;return r.default.createElement(I,h({},this.props,{ref:function(t){return e.chartInstance=t&&t.chartInstance},type:"pie"}))}}]),n}(r.default.Component);var k=function(e){x(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return v(n,[{key:"render",value:function(){var e=this;return r.default.createElement(I,h({},this.props,{ref:function(t){return e.chartInstance=t&&t.chartInstance},type:"line"}))}}]),n}(r.default.Component);t.x1=k;var _=function(e){x(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return v(n,[{key:"render",value:function(){var e=this;return r.default.createElement(I,h({},this.props,{ref:function(t){return e.chartInstance=t&&t.chartInstance},type:"bar"}))}}]),n}(r.default.Component);var N=function(e){x(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return v(n,[{key:"render",value:function(){var e=this;return r.default.createElement(I,h({},this.props,{ref:function(t){return e.chartInstance=t&&t.chartInstance},type:"horizontalBar"}))}}]),n}(r.default.Component);var M=function(e){x(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return v(n,[{key:"render",value:function(){var e=this;return r.default.createElement(I,h({},this.props,{ref:function(t){return e.chartInstance=t&&t.chartInstance},type:"radar"}))}}]),n}(r.default.Component);var C=function(e){x(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return v(n,[{key:"render",value:function(){var e=this;return r.default.createElement(I,h({},this.props,{ref:function(t){return e.chartInstance=t&&t.chartInstance},type:"polarArea"}))}}]),n}(r.default.Component);var A=function(e){x(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return v(n,[{key:"render",value:function(){var e=this;return r.default.createElement(I,h({},this.props,{ref:function(t){return e.chartInstance=t&&t.chartInstance},type:"bubble"}))}}]),n}(r.default.Component);var L=function(e){x(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return v(n,[{key:"render",value:function(){var e=this;return r.default.createElement(I,h({},this.props,{ref:function(t){return e.chartInstance=t&&t.chartInstance},type:"scatter"}))}}]),n}(r.default.Component);a.default.defaults},64668:function(e,t,n){"use strict";var i=n(87462),r=n(63366),s=n(72791),a=n(52007),o=n.n(a),l=n(81694),c=n.n(l),h=n(15489),d={className:o().string,cssModule:o().object,size:o().string,bordered:o().bool,borderless:o().bool,striped:o().bool,dark:o().bool,hover:o().bool,responsive:o().oneOfType([o().bool,o().string]),tag:h.iC,responsiveTag:h.iC,innerRef:o().oneOfType([o().func,o().string,o().object])},u=function(e){var t=e.className,n=e.cssModule,a=e.size,o=e.bordered,l=e.borderless,d=e.striped,u=e.dark,g=e.hover,p=e.responsive,m=e.tag,f=e.responsiveTag,v=e.innerRef,x=(0,r.Z)(e,["className","cssModule","size","bordered","borderless","striped","dark","hover","responsive","tag","responsiveTag","innerRef"]),y=(0,h.mx)(c()(t,"table",!!a&&"table-"+a,!!o&&"table-bordered",!!l&&"table-borderless",!!d&&"table-striped",!!u&&"table-dark",!!g&&"table-hover"),n),b=s.createElement(m,(0,i.Z)({},x,{ref:v,className:y}));if(p){var j=(0,h.mx)(!0===p?"table-responsive":"table-responsive-"+p,n);return s.createElement(f,{className:j},b)}return b};u.propTypes=d,u.defaultProps={tag:"table",responsiveTag:"div"},t.Z=u},74351:function(){},75299:function(){},64718:function(){}},function(e){e.O(0,[351],(function(){return t=71356,e(e.s=t);var t}));e.O()}]); +//# sourceMappingURL=sysAdmin.91d1d2f2.js.map \ No newline at end of file diff --git a/media/assets/frontend/static/js/sysAdmin.91d1d2f2.js.LICENSE.txt b/media/assets/frontend/static/js/sysAdmin.91d1d2f2.js.LICENSE.txt new file mode 100644 index 00000000000..fc3919d1e27 --- /dev/null +++ b/media/assets/frontend/static/js/sysAdmin.91d1d2f2.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*! + * Chart.js v2.9.4 + * https://www.chartjs.org + * (c) 2020 Chart.js Contributors + * Released under the MIT License + */ diff --git a/media/assets/frontend/static/js/sysAdmin.91d1d2f2.js.map b/media/assets/frontend/static/js/sysAdmin.91d1d2f2.js.map new file mode 100644 index 00000000000..9ef9dd00f45 --- /dev/null +++ b/media/assets/frontend/static/js/sysAdmin.91d1d2f2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/sysAdmin.91d1d2f2.js","mappings":"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","sources":["_i18n/i18n-seafile-editor.js","components/dialog/commit-details.js","components/dialog/create-folder-dialog.js","components/dialog/op-menu.js","components/dialog/share-admin-link.js","components/dialog/sysadmin-dialog/sysadmin-unlink-device-dialog.js","pages/sys-admin/side-panel.js","pages/sys-admin/main-panel.js","pages/sys-admin/main-panel-topbar.js","pages/sys-admin/info.js","pages/sys-admin/statistic/statistic-nav.js","pages/sys-admin/statistic/picker.js","pages/sys-admin/statistic/statistic-common-tool.js","pages/sys-admin/statistic/statistic-chart.js","pages/sys-admin/statistic/statistic-file.js","pages/sys-admin/statistic/statistic-storage.js","pages/sys-admin/statistic/traffic-table.js","pages/sys-admin/statistic/traffic-table-body.js","pages/sys-admin/statistic/statistic-traffic-orgs.js","pages/sys-admin/statistic/statistic-traffic-users.js","pages/sys-admin/statistic/statistic-traffic.js","pages/sys-admin/statistic/statistic-users.js","pages/sys-admin/statistic/statistic-reports.js","pages/sys-admin/devices/devices-nav.js","pages/sys-admin/devices/devices-by-platform.js","pages/sys-admin/devices/desktop-devices.js","pages/sys-admin/devices/mobile-devices.js","pages/sys-admin/user-link.js","pages/sys-admin/devices/devices-errors.js","components/dialog/sysadmin-dialog/set-quota.js","components/dialog/sysadmin-dialog/sysadmin-import-user-dialog.js","components/select-editor/sysadmin-user-role-editor.js","components/dialog/sysadmin-dialog/sysadmin-add-user-dialog.js","components/dialog/sysadmin-dialog/sysadmin-batch-add-admin-dialog.js","models/sysadmin-user.js","models/sysadmin-admin-user.js","pages/sys-admin/search.js","pages/sys-admin/users/users-nav.js","pages/sys-admin/users/users-content.js","pages/sys-admin/users/users.js","pages/sys-admin/users/admin-users.js","pages/sys-admin/users/ldap-imported-users.js","pages/sys-admin/users/ldap-users.js","pages/sys-admin/users/search-users.js","components/dialog/sysadmin-dialog/set-upload-download-rate-limit.js","components/dialog/sysadmin-dialog/update-user.js","pages/sys-admin/users/user-nav.js","pages/sys-admin/users/user-info.js","pages/sys-admin/users/user-repos.js","pages/sys-admin/users/user-shared-repos.js","pages/sys-admin/users/user-links.js","pages/sys-admin/users/user-groups.js","components/dialog/sysadmin-dialog/sysadmin-create-repo-dialog.js","pages/sys-admin/repos/repos-nav.js","components/dialog/sysadmin-dialog/sysadmin-share-to-user.js","components/dialog/sysadmin-dialog/sysadmin-share-to-group.js","components/dialog/sysadmin-dialog/sysadmin-share-dialog.js","components/dialog/sysadmin-dialog/sysadmin-lib-history-setting-dialog.js","pages/sys-admin/repos/repos.js","pages/sys-admin/repos/all-repos.js","pages/sys-admin/repos/system-repo.js","pages/sys-admin/repos/trash-repos.js","pages/sys-admin/repos/search-repos.js","models/system-admin/dirent.js","pages/sys-admin/repos/dir-path-bar.js","pages/sys-admin/repos/dir-content.js","pages/sys-admin/repos/dir-view.js","components/dialog/sysadmin-dialog/sysadmin-create-group-dialog.js","components/dialog/sysadmin-dialog/sysadmin-group-transfer-dialog.js","pages/sys-admin/groups/groups-content.js","pages/sys-admin/groups/groups.js","pages/sys-admin/groups/search-groups.js","pages/sys-admin/groups/group-nav.js","pages/sys-admin/groups/group-repos.js","components/dialog/sysadmin-dialog/sysadmin-group-add-member-dialog.js","pages/sys-admin/groups/group-members.js","pages/sys-admin/departments/departments.js","components/dialog/sysadmin-dialog/sysadmin-add-department-dialog.js","components/dialog/sysadmin-dialog/sysadmin-rename-department-dialog.js","components/dialog/sysadmin-dialog/sysadmin-delete-department-dialog.js","components/dialog/sysadmin-dialog/sysadmin-set-group-quota-dialog.js","pages/sys-admin/departments/group-item.js","pages/sys-admin/departments/department-list.js","components/dialog/sysadmin-dialog/sysadmin-add-member-dialog.js","components/dialog/sysadmin-dialog/sysadmin-add-repo-dialog.js","pages/sys-admin/departments/department.js","pages/sys-admin/departments/sub-departments.js","components/dialog/sysadmin-dialog/sysadmin-delete-member-dialog.js","pages/sys-admin/departments/member-item.js","pages/sys-admin/departments/department-members.js","components/dialog/sysadmin-dialog/sysadmin-delete-repo-dialog.js","pages/sys-admin/departments/repo-item.js","pages/sys-admin/departments/department-libraries.js","pages/sys-admin/links/links-nav.js","pages/sys-admin/links/share-links.js","pages/sys-admin/links/upload-links.js","components/dialog/sysadmin-dialog/sysadmin-add-org-dialog.js","pages/sys-admin/orgs/orgs-content.js","pages/sys-admin/orgs/orgs.js","pages/sys-admin/orgs/search-orgs.js","components/dialog/sysadmin-dialog/sysadmin-set-org-name-dialog.js","components/dialog/sysadmin-dialog/sysadmin-set-org-max-user-number-dialog.js","pages/sys-admin/orgs/org-nav.js","pages/sys-admin/orgs/org-info.js","pages/sys-admin/orgs/org-users.js","pages/sys-admin/orgs/org-groups.js","pages/sys-admin/orgs/org-repos.js","components/dialog/sysadmin-dialog/sysadmin-add-institution-dialog.js","pages/sys-admin/institutions/institutions.js","pages/sys-admin/institutions/institution-nav.js","pages/sys-admin/institutions/institution-info.js","components/dialog/sysadmin-dialog/sysadmin-add-institution-member-dialog.js","pages/sys-admin/institutions/institution-users.js","pages/sys-admin/institutions/institution-admins.js","pages/sys-admin/logs-page/logs-nav.js","components/dialog/sysadmin-dialog/sysadmin-logs-export-excel-dialog.js","pages/sys-admin/logs-page/login-logs.js","pages/sys-admin/logs-page/file-access-item-menu.js","pages/sys-admin/logs-page/file-access-toggle-filter.js","pages/sys-admin/logs-page/file-access-logs.js","pages/sys-admin/logs-page/file-update-logs.js","pages/sys-admin/logs-page/share-permission-logs.js","pages/sys-admin/web-settings/section.js","pages/sys-admin/web-settings/setting-item-base.js","pages/sys-admin/web-settings/input-item.js","pages/sys-admin/web-settings/file-item.js","pages/sys-admin/web-settings/checkbox-item.js","pages/sys-admin/web-settings/web-settings.js","components/dialog/sysadmin-dialog/sysadmin-add-sys-notification-dialog.js","pages/sys-admin/notifications/notifications.js","pages/sys-admin/file-scan-records.js","pages/sys-admin/work-weixin/work-weixin-department-members-list.js","pages/sys-admin/work-weixin/work-weixin-departments-tree-node.js","pages/sys-admin/work-weixin/work-weixin-departments-tree-panel.js","components/dialog/import-work-weixin-department-dialog.js","pages/sys-admin/work-weixin-departments.js","pages/sys-admin/dingtalk/dingtalk-department-members-list.js","pages/sys-admin/dingtalk/dingtalk-departments-tree-node.js","pages/sys-admin/dingtalk/dingtalk-departments-tree-panel.js","components/dialog/import-dingtalk-department-dialog.js","pages/sys-admin/dingtalk-departments.js","pages/sys-admin/invitations/invitations.js","components/dialog/terms-editor-dialog.js","components/dialog/sysadmin-dialog/sysadmin-add-or-update-term-dialog.js","utils/markdown-utils.js","components/dialog/terms-preview-dialog.js","pages/sys-admin/terms-and-conditions/item.js","pages/sys-admin/terms-and-conditions/content.js","pages/sys-admin/terms-and-conditions/terms-and-conditions.js","pages/sys-admin/virus-scan/nav.js","pages/sys-admin/virus-scan/all-virus-files.js","pages/sys-admin/virus-scan/unhandled-virus-files.js","pages/sys-admin/admin-logs/logs-nav.js","pages/sys-admin/admin-logs/operation-logs.js","pages/sys-admin/admin-logs/login-logs.js","pages/sys-admin/abuse-reports.js","pages/sys-admin/index.js","../node_modules/chart.js/dist/Chart.js","../node_modules/lodash/_arrayAggregator.js","../node_modules/lodash/_baseAggregator.js","../node_modules/lodash/_createAggregator.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/keyBy.js","../node_modules/react-chartjs-2/es/index.js","../node_modules/reactstrap/es/Table.js"],"sourcesContent":["import i18n from 'i18next';\nimport Backend from 'i18next-xhr-backend';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport { initReactI18next } from 'react-i18next';\nimport { mediaUrl } from '../utils/constants';\n\nconst lang = window.app.pageOptions.lang;\n\ni18n\n .use(Backend)\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n lng: lang,\n fallbackLng: 'en',\n ns: ['seafile-editor'],\n defaultNS: 'seafile-editor',\n\n whitelist: ['en', 'zh-CN', 'fr', 'de', 'cs', 'es', 'es-AR', 'es-MX', 'ru'],\n\n backend: {\n loadPath: mediaUrl + 'locales/{{ lng }}/{{ ns }}.json',\n // loadPath: '/media/locales/{{lng}}/{{ns}}.json',\n },\n\n debug: false, // console log if debug: true\n\n interpolation: {\n escapeValue: false, // not needed for react!!\n },\n\n\n load: 'currentOnly',\n\n react: {\n wait: true,\n }\n });\n\nexport default i18n;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\nimport moment from 'moment';\nimport { gettext } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../loading';\n\nimport '../../css/commit-details.css';\n\nconst propTypes = {\n repoID: PropTypes.string.isRequired,\n commitID: PropTypes.string.isRequired,\n commitTime: PropTypes.string.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass CommitDetails extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true,\n errorMsg: '',\n };\n }\n\n componentDidMount() {\n const {repoID, commitID} = this.props;\n seafileAPI.getCommitDetails(repoID, commitID).then((res) => {\n this.setState({\n isLoading: false,\n errorMsg: '',\n commitDetails: res.data\n });\n }).catch((error) => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({\n isLoading: false,\n errorMsg: errorMsg\n });\n });\n }\n\n render() {\n const { toggleDialog, commitTime} = this.props;\n return (\n \n {gettext('Modification Details')}\n \n

    {moment(commitTime).format('YYYY-MM-DD HH:mm:ss')}

    \n \n
    \n
    \n );\n }\n}\n\nclass Content extends React.Component {\n\n renderDetails = (data) => {\n const detailsData = [\n {type: 'new', title: gettext('New files')},\n {type: 'removed', title: gettext('Deleted files')},\n {type: 'renamed', title: gettext('Renamed or Moved files')},\n {type: 'modified', title: gettext('Modified files')},\n {type: 'newdir', title: gettext('New directories')},\n {type: 'deldir', title: gettext('Deleted directories')}\n ];\n\n let showDesc = true;\n for (let i = 0, len = detailsData.length; i < len; i++) {\n if (data[detailsData[i].type].length) {\n showDesc = false;\n break;\n }\n }\n if (showDesc) {\n return

    {data.cmt_desc}

    ;\n }\n\n return (\n \n {detailsData.map((item, index) => {\n if (!data[item.type].length) {\n return null;\n }\n return (\n \n
    {item.title}
    \n
      \n {\n data[item.type].map((item, index) => {\n return
    • ;\n })\n }\n
    \n
    \n );\n })}\n
    \n );\n };\n\n render() {\n const {isLoading, errorMsg, commitDetails} = this.props.data;\n\n if (isLoading) {\n return ;\n }\n\n if (errorMsg) {\n return

    {errorMsg}

    ;\n }\n\n return this.renderDetails(commitDetails);\n }\n}\n\nContent.propTypes = {\n data: PropTypes.object.isRequired,\n};\n\nCommitDetails.propTypes = propTypes;\n\nexport default CommitDetails;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter, Form, FormGroup, Label, Alert } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n fileType: PropTypes.string,\n parentPath: PropTypes.string.isRequired,\n onAddFolder: PropTypes.func.isRequired,\n checkDuplicatedName: PropTypes.func.isRequired,\n addFolderCancel: PropTypes.func.isRequired,\n};\n\nclass CreateForder extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n parentPath: '',\n childName: '',\n errMessage: '',\n isSubmitBtnActive: false,\n };\n }\n\n componentDidMount() {\n let parentPath = this.props.parentPath;\n if (parentPath[parentPath.length - 1] === '/') { // mainPanel\n this.setState({parentPath: parentPath});\n } else {\n this.setState({parentPath: parentPath + '/'}); // sidePanel\n }\n }\n\n handleChange = (e) => {\n if (!e.target.value.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n\n this.setState({childName: e.target.value});\n };\n\n handleSubmit = () => {\n if (!this.state.isSubmitBtnActive) {\n return;\n }\n\n let newName = this.state.childName;\n let isDuplicated = this.checkDuplicatedName();\n\n if (isDuplicated) {\n let errMessage = gettext('The name \"{name}\" is already taken. Please choose a different name.');\n errMessage = errMessage.replace('{name}', Utils.HTMLescape(newName));\n this.setState({errMessage: errMessage});\n } else {\n let path = this.state.parentPath + newName;\n this.props.onAddFolder(path);\n }\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n toggle = () => {\n this.props.addFolderCancel();\n };\n\n checkDuplicatedName = () => {\n let isDuplicated = this.props.checkDuplicatedName(this.state.childName);\n return isDuplicated;\n };\n\n render() {\n return (\n \n {gettext('New Folder')}\n \n
    \n \n \n \n \n
    \n {this.state.errMessage && {this.state.errMessage}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nCreateForder.propTypes = propTypes;\n\nexport default CreateForder;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\n\nconst propTypes = {\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n onMenuItemClick: PropTypes.func.isRequired,\n operations: PropTypes.array.isRequired,\n translateOperations: PropTypes.func.isRequired\n};\n\nclass OpMenu extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemMenuShow: false\n };\n }\n\n onMenuItemClick = (e) => {\n let operation = Utils.getEventData(e, 'op');\n this.props.onMenuItemClick(operation);\n };\n\n onDropdownToggleClick = (e) => {\n this.toggleOperationMenu(e);\n };\n\n toggleOperationMenu = (e) => {\n this.setState(\n {isItemMenuShow: !this.state.isItemMenuShow},\n () => {\n if (this.state.isItemMenuShow) {\n this.props.onFreezedItem();\n } else {\n this.props.onUnfreezedItem();\n }\n }\n );\n };\n\n render() {\n const { operations, translateOperations } = this.props;\n return (\n \n \n \n {operations.map((item, index )=> {\n return ({translateOperations(item)});\n })}\n \n \n );\n }\n}\n\nOpMenu.propTypes = propTypes;\n\nexport default OpMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport copy from '../copy-to-clipboard';\nimport { gettext } from '../../utils/constants';\nimport toaster from '../../components/toast';\n\nconst propTypes = {\n link: PropTypes.string.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass ShareAdminLink extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n copyToClipboard = () => {\n copy(this.props.link);\n this.props.toggleDialog();\n toaster.success(gettext('The link is copied to the clipboard.'), {duration: 2});\n };\n\n render() {\n const { link, toggleDialog } = this.props;\n return (\n \n {gettext('Link')}\n \n {link}\n \n \n \n \n \n \n );\n }\n}\n\nShareAdminLink.propTypes = propTypes;\n\nexport default ShareAdminLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext, isPro } from '../../../utils/constants';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\n\nconst propTypes = {\n unlinkDevice: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass SysAdminUnlinkDevice extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n inputChecked: false\n };\n }\n\n handleInputChange = (e) => {\n this.setState({\n inputChecked: e.target.checked\n });\n };\n\n unlinkDevice = () => {\n this.props.toggleDialog();\n this.props.unlinkDevice(this.state.inputChecked);\n };\n\n render() {\n const { inputChecked } = this.state;\n const toggle = this.props.toggleDialog;\n return (\n \n {gettext('Unlink device')}\n \n

    {gettext('Are you sure you want to unlink this device?')}

    \n {isPro &&\n
    \n \n \n
    \n }\n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminUnlinkDevice.propTypes = propTypes;\n\nexport default SysAdminUnlinkDevice;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport Logo from '../../components/logo';\nimport { gettext, siteRoot, isPro, otherPermission, canViewSystemInfo, canViewStatistic,\n canConfigSystem, canManageLibrary, canManageUser, canManageGroup, canViewUserLog,\n canViewAdminLog, constanceEnabled, multiTenancy, multiInstitution, sysadminExtraEnabled,\n enableGuestInvitation, enableTermsAndConditions, enableFileScan, enableWorkWeixin, enableDingtalk,\n enableShareLinkReportAbuse, isDBSqlite3 } from '../../utils/constants';\n\nconst propTypes = {\n isSidePanelClosed: PropTypes.bool.isRequired,\n onCloseSidePanel: PropTypes.func.isRequired,\n currentTab: PropTypes.string.isRequired,\n tabItemClick: PropTypes.func.isRequired\n};\n\nclass SidePanel extends React.Component {\n\n getActiveClass = (tab) => {\n return this.props.currentTab == tab ? 'active' : '';\n };\n\n render() {\n return (\n
    \n
    \n \n
    \n
    \n
    \n
    \n

    {gettext('System Admin')}

    \n
      \n {canViewSystemInfo &&\n
    • \n this.props.tabItemClick('info')}\n >\n \n {gettext('Info')}\n \n
    • \n }\n {(isPro || !isDBSqlite3) && canViewStatistic &&\n
    • \n this.props.tabItemClick('statistic')}\n >\n \n {gettext('Statistic')}\n \n
    • \n }\n {otherPermission &&\n
    • \n this.props.tabItemClick('devices')}\n >\n \n {gettext('Devices')}\n \n
    • \n }\n {constanceEnabled && canConfigSystem &&\n
    • \n this.props.tabItemClick('web-settings')}\n >\n \n {gettext('Settings')}\n \n
    • \n }\n {canManageLibrary &&\n
    • \n this.props.tabItemClick('libraries')}\n >\n \n {gettext('Libraries')}\n \n
    • \n }\n {canManageUser &&\n
    • \n this.props.tabItemClick('users')}\n >\n \n {gettext('Users')}\n \n
    • \n }\n {canManageGroup &&\n
    • \n this.props.tabItemClick('groups')}\n >\n \n {gettext('Groups')}\n \n
    • \n }\n {isPro && canManageGroup &&\n
    • \n this.props.tabItemClick('departments')}\n >\n \n {gettext('Departments')}\n \n
    • \n }\n {multiTenancy && otherPermission &&\n
    • \n this.props.tabItemClick('organizations')}\n >\n \n {gettext('Organizations')}\n \n
    • \n }\n {multiInstitution && otherPermission &&\n
    • \n this.props.tabItemClick('institutions')}\n >\n \n {gettext('Institutions')}\n \n
    • \n }\n {otherPermission &&\n
    • \n this.props.tabItemClick('notifications')}\n >\n \n {gettext('Notifications')}\n \n
    • \n }\n {otherPermission &&\n
    • \n this.props.tabItemClick('links')}\n >\n \n {gettext('Links')}\n \n
    • \n }\n {sysadminExtraEnabled && canViewUserLog &&\n
    • \n this.props.tabItemClick('logs')}\n >\n \n {gettext('Logs')}\n \n
    • \n }\n {isPro && otherPermission && enableFileScan &&\n
    • \n this.props.tabItemClick('file-scan-records')}\n >\n \n {gettext('File Scan')}\n \n
    • \n }\n {isPro && otherPermission &&\n
    • \n this.props.tabItemClick('virus-files')}\n >\n \n {gettext('Virus Scan')}\n \n
    • \n }\n {isPro && enableGuestInvitation && otherPermission &&\n
    • \n this.props.tabItemClick('invitations')}\n >\n \n {gettext('Invitations')}\n \n
    • \n }\n {otherPermission && enableTermsAndConditions &&\n
    • \n this.props.tabItemClick('termsandconditions')}\n >\n \n {gettext('Terms and Conditions')}\n \n
    • \n }\n {isPro && canViewAdminLog &&\n
    • \n this.props.tabItemClick('adminLogs')}\n >\n \n {gettext('Admin Logs')}\n \n
    • \n }\n {otherPermission && enableWorkWeixin &&\n
    • \n this.props.tabItemClick('work-weixin')}\n >\n \n {'企业微信集成'}\n \n
    • \n }\n\n {otherPermission && enableDingtalk &&\n
    • \n this.props.tabItemClick('dingtalk')}\n >\n \n {'钉钉集成'}\n \n
    • \n }\n\n {otherPermission && enableShareLinkReportAbuse &&\n
    • \n this.props.tabItemClick('abuse-reports')}\n >\n \n {gettext('Abuse Reports')}\n \n
    • \n }\n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nSidePanel.propTypes = propTypes;\n\nexport default SidePanel;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n children: PropTypes.object.isRequired,\n};\n\nclass MainPanel extends Component {\n\n render() {\n return (\n
    \n {this.props.children}\n
    \n );\n }\n}\n\nMainPanel.propTypes = propTypes;\n\nexport default MainPanel;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Account from '../../components/common/account';\nimport { gettext } from '../../utils/constants';\n\nconst propTypes = {\n children: PropTypes.object,\n search: PropTypes.any,\n toggleSidePanel: PropTypes.func\n};\n\nclass MainPanelTopbar extends Component {\n\n render() {\n return (\n
    \n
    \n \n
    \n {this.props.children}\n
    \n
    \n
    \n {this.props.search && this.props.search}\n \n
    \n
    \n );\n }\n}\n\nMainPanelTopbar.propTypes = propTypes;\n\nexport default MainPanelTopbar;\n","import React, { Component, Fragment } from 'react';\nimport { Button } from 'reactstrap';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext, isPro, isDefaultAdmin } from '../../utils/constants';\nimport toaster from '../../components/toast';\nimport { Utils } from '../../utils/utils';\nimport Loading from '../../components/loading';\nimport MainPanelTopbar from './main-panel-topbar';\n\nimport '../../css/system-info.css';\n\nclass Info extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n sysInfo: {}\n };\n this.fileInput = React.createRef();\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetSysInfo().then((res) => {\n this.setState({\n loading: false,\n sysInfo: res.data\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n uploadLicenseFile = (e) => {\n\n // no file selected\n if (!this.fileInput.current.files.length) {\n return;\n }\n const file = this.fileInput.current.files[0];\n seafileAPI.sysAdminUploadLicense(file).then((res) => {\n let info = this.state.sysInfo;\n Object.assign(info, res.data, {with_license: true});\n this.setState({\n sysInfo: info\n });\n }).catch((error) => {\n let errMsg = Utils.getErrorMsg(error);\n toaster.danger(errMsg);\n });\n };\n\n openFileInput = () => {\n this.fileInput.current.click();\n };\n\n renderLicenseDescString = (license_mode, license_to, license_expiration) => {\n if (license_mode == 'life-time') {\n if (window.app.config.lang == 'zh-cn') {\n return '永久授权给 ' + license_to + ',技术支持服务至 ' + license_expiration + ' 到期';\n } else {\n return gettext('licensed to {placeholder_license_to}, upgrade service expired in {placeholder_license_expiration}')\n .replace('{placeholder_license_to}', license_to).replace('{placeholder_license_expiration}', license_expiration);\n }\n } else {\n return gettext('licensed to {placeholder_license_to}, expires on {placeholder_license_expiration}')\n .replace('{placeholder_license_to}', license_to).replace('{placeholder_license_expiration}', license_expiration);\n }\n };\n\n render() {\n let { license_mode, license_to, license_expiration, org_count,\n repos_count, total_files_count, total_storage, total_devices_count,\n current_connected_devices_count, license_maxusers, multi_tenancy_enabled,\n active_users_count, users_count, groups_count, with_license } = this.state.sysInfo;\n let { loading, errorMsg } = this.state;\n\n return (\n \n \n
    \n
    \n

    {gettext('Info')}

    \n
    \n {loading && }\n {errorMsg &&

    {errorMsg}

    }\n {(!loading && !errorMsg) &&\n
    \n
    {gettext('System Info')}
    \n {isPro ?\n
    \n {gettext('Professional Edition')}\n {with_license &&\n ' ' + this.renderLicenseDescString(license_mode, license_to, license_expiration)\n }
    \n {isDefaultAdmin &&\n \n \n \n \n }\n
    :\n
    \n {gettext('Community Edition')}\n {gettext('Upgrade to Pro Edition')}\n
    \n }\n
    {gettext('Libraries')} / {gettext('Files')}
    \n
    {repos_count} / {total_files_count}
    \n\n
    {gettext('Storage Used')}
    \n
    {Utils.bytesToSize(total_storage)}
    \n\n
    {gettext('Total Devices')} / {gettext('Current Connected Devices')}
    \n
    {total_devices_count} / {current_connected_devices_count}
    \n\n {isPro ?\n \n
    {gettext('Activated Users')} / {gettext('Total Users')} / {gettext('Limits')}
    \n
    {active_users_count}{' / '}{users_count}{' / '}{with_license ? license_maxusers : '--'}
    \n
    :\n \n
    {gettext('Activated Users')} / {gettext('Total Users')}
    \n
    {active_users_count} / {users_count}
    \n
    \n }\n\n
    {gettext('Groups')}
    \n
    {groups_count}
    \n\n {multi_tenancy_enabled &&\n \n
    {gettext('Organizations')}
    \n
    {org_count}
    \n
    \n }\n
    \n }\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default Info;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'fileStatistic', urlPart: 'statistics/file', text: gettext('File')},\n {name: 'storageStatistic', urlPart: 'statistics/storage', text: gettext('Storage')},\n {name: 'usersStatistic', urlPart: 'statistics/user', text: gettext('Users')},\n {name: 'trafficStatistic', urlPart: 'statistics/traffic', text: gettext('Traffic')},\n {name: 'reportsStatistic', urlPart: 'statistics/reports', text: gettext('Reports')},\n ];\n }\n\n render() {\n const { currentItem } = this.props;\n return (\n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport Calendar from '@seafile/seafile-calendar';\nimport DatePicker from '@seafile/seafile-calendar/lib/Picker';\nimport { translateCalendar } from '../../../utils/date-format-utils';\n\nimport '@seafile/seafile-calendar/assets/index.css';\n\nconst FORMAT = 'YYYY-MM-DD';\n\nclass Picker extends React.Component {\n\n constructor(props) {\n super(props);\n this.defaultCalendarValue = null;\n }\n\n componentDidMount() {\n let lang = window.app.config.lang;\n this.defaultCalendarValue = moment().locale(lang).clone();\n }\n\n render() {\n const props = this.props;\n const calendar = ();\n return (\n \n {\n ({value}) => {\n return (\n \n \n \n );\n }\n }\n \n );\n }\n}\n\nPicker.propTypes = {\n disabledDate: PropTypes.func.isRequired,\n value: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default Picker;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport moment from 'moment';\nimport { gettext } from '../../../utils/constants';\nimport Picker from './picker';\n\nconst propTypes = {\n getActiviesFiles: PropTypes.func.isRequired,\n children: PropTypes.object,\n};\n\nclass StatisticCommonTool extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n statisticType: 'oneWeek',\n startValue: null,\n endValue: null,\n };\n }\n\n componentDidMount() {\n let today = moment().format('YYYY-MM-DD 00:00:00');\n let endTime = today;\n let startTime = moment().subtract(6,'d').format('YYYY-MM-DD 00:00:00');\n let group_by = 'day';\n this.props.getActiviesFiles(startTime, endTime, group_by);\n }\n\n changeActive = (statisticTypeName) => {\n let { statisticType } = this.state;\n if (statisticType === statisticTypeName) {\n return;\n }\n let today = moment().format('YYYY-MM-DD 00:00:00');\n let endTime = today;\n let startTime;\n switch(statisticTypeName) {\n case 'oneWeek' :\n startTime = moment().subtract(6,'d').format('YYYY-MM-DD 00:00:00');\n break;\n case 'oneMonth' :\n startTime = moment().subtract(29,'d').format('YYYY-MM-DD 00:00:00');\n break;\n case 'oneYear' :\n startTime = moment().subtract(364,'d').format('YYYY-MM-DD 00:00:00');\n break;\n }\n this.setState({\n statisticType: statisticTypeName,\n });\n let group_by = 'day';\n this.props.getActiviesFiles(startTime, endTime, group_by);\n };\n\n disabledStartDate = (startValue) => {\n if (!startValue) {\n return false;\n }\n let today = moment().format();\n\n const endValue = this.state.endValue;\n if (!endValue) {\n let startTime = moment(startValue).format();\n return today < startTime;\n }\n return endValue.isBefore(startValue) || moment(startValue).format() > today;\n };\n\n disabledEndDate = (endValue) => {\n if (!endValue) {\n return false;\n }\n let today = moment().format();\n const startValue = this.state.startValue;\n if (!startValue) {\n let endTime = moment(endValue).format();\n return today < endTime;\n }\n return endValue.isBefore(startValue) || moment(endValue).format() > today;\n };\n\n onChange = (field, value) => {\n this.setState({\n [field]: value,\n });\n };\n\n onSubmit = () => {\n let { startValue, endValue } = this.state;\n if(!startValue || !endValue) {\n return;\n }\n this.setState({\n statisticType: 'itemButton',\n });\n let startTime = moment(startValue).format('YYYY-MM-DD 00:00:00');\n let endTime = moment(endValue).format('YYYY-MM-DD 00:00:00');\n let group_by = 'day';\n this.props.getActiviesFiles(startTime, endTime, group_by);\n };\n\n render() {\n let { statisticType, endValue, startValue } = this.state;\n return(\n \n {this.props.children}\n
    \n
    \n
    {gettext('7 Days')}
    \n
    {gettext('30 Days')}
    \n
    {gettext('1 Year')}
    \n
    \n
    \n \n -\n \n \n
    \n
    \n
    \n );\n }\n}\n\nStatisticCommonTool.propTypes = propTypes;\n\nexport default StatisticCommonTool;\n","import React from 'react';\nimport { Line } from 'react-chartjs-2';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../../utils/utils';\n\nconst propTypes = {\n labels: PropTypes.array.isRequired,\n filesData: PropTypes.array.isRequired,\n suggestedMaxNumbers: PropTypes.number.isRequired,\n isLegendStatus: PropTypes.bool.isRequired,\n chartTitle: PropTypes.string.isRequired,\n isTitleCallback: PropTypes.bool,\n isTicksCallback: PropTypes.bool,\n};\n\nclass StatisticChart extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n data: {},\n opations: {}\n };\n }\n\n componentDidMount() {\n let { labels, filesData, isTitleCallback, isTicksCallback, suggestedMaxNumbers, isLegendStatus, chartTitle } = this.props;\n let _this = this;\n let data = {\n labels: labels,\n datasets: filesData\n };\n let options = {\n title: {\n display: true,\n fontSize: 14,\n text: chartTitle,\n },\n elements: {\n line: {\n fill: false,\n tension: 0, // disable bezier curves, i.e, draw straight lines\n borderWidth: 2\n }\n },\n legend: {\n display: isLegendStatus,\n labels: {\n usePointStyle: true\n }\n },\n tooltips: {\n callbacks: {\n label: function(tooltipItem, data) {\n if (isTitleCallback) {\n return _this.titleCallback(tooltipItem, data);\n }\n return data.datasets[tooltipItem.datasetIndex].label + ': ' + tooltipItem.yLabel;\n }\n }\n },\n layout: {\n padding: {\n right: 100,\n }\n },\n scales: {\n yAxes: [{\n ticks: {\n beginAtZero: true,\n suggestedMax: suggestedMaxNumbers,\n callback: function(value, index, values) {\n if (isTicksCallback) {\n return _this.ticksCallback(value, index, values);\n }\n return value;\n }\n }\n }],\n xAxes: [{\n ticks: {\n maxTicksLimit: 20\n }\n }]\n }\n };\n this.setState({\n data: data,\n options: options\n });\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n let data = {\n labels: nextProps.labels,\n datasets: nextProps.filesData\n };\n this.setState({data: data});\n }\n\n titleCallback = (tooltipItem, data) => {\n return data.datasets[tooltipItem.datasetIndex].label + ': ' + Utils.bytesToSize(tooltipItem.yLabel);\n };\n\n ticksCallback = (value, index, values) => {\n return Utils.bytesToSize(value);\n };\n\n render() {\n\n let { data, options } = this.state;\n return (\n \n );\n }\n}\n\nStatisticChart.propTypes = propTypes;\n\nexport default StatisticChart;\n","import React, { Fragment } from 'react';\nimport moment from 'moment';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport StatisticNav from './statistic-nav';\nimport StatisticCommonTool from './statistic-common-tool';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport StatisticChart from './statistic-chart';\nimport Loading from '../../../components/loading';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\n\nimport '../../../css/system-stat.css';\n\nclass StatisticFile extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n filesData: [],\n labels: [],\n isLoading: true\n };\n }\n\n getActiviesFiles = (startTime, endTime, groupBy) => {\n let { filesData } = this.state;\n seafileAPI.sysAdminStatisticFiles(startTime, endTime, groupBy).then((res) => {\n let labels = [],\n added = [],\n deleted = [],\n visited = [],\n modified = [];\n let data = res.data;\n if (Array.isArray(data)) {\n data.forEach(item => {\n labels.push(moment(item.datetime).format('YYYY-MM-DD'));\n added.push(item.added);\n deleted.push(item.deleted);\n modified.push(item.modified);\n visited.push(item.visited);\n });\n let addedData = {\n label: gettext('Added'),\n data: added,\n borderColor: '#57cd6b',\n backgroundColor: '#57cd6b'};\n let visitedData = {\n label: gettext('Visited'),\n data: visited,\n borderColor: '#fd913a',\n backgroundColor: '#fd913a'};\n let modifiedData = {\n label: gettext('Modified'),\n data: modified,\n borderColor: '#72c3fc',\n backgroundColor: '#72c3fc'};\n let deletedData = {\n label: gettext('Deleted'),\n data: deleted,\n borderColor: '#f75356',\n backgroundColor: '#f75356'};\n filesData = [visitedData, addedData, modifiedData, deletedData];\n }\n this.setState({\n filesData: filesData,\n labels: labels,\n isLoading: false\n });\n }).catch(err => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n let { labels, filesData, isLoading } = this.state;\n\n return(\n \n \n
    \n \n
    \n \n {isLoading && }\n {!isLoading && labels.length > 0 &&\n \n }\n
    \n
    \n
    \n );\n }\n}\n\nexport default StatisticFile;\n","import React, { Fragment } from 'react';\nimport moment from 'moment';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport StatisticNav from './statistic-nav';\nimport StatisticCommonTool from './statistic-common-tool';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport StatisticChart from './statistic-chart';\nimport Loading from '../../../components/loading';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\n\nclass StatisticStorage extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n filesData: [],\n labels: [],\n isLoading: true\n };\n }\n\n getActiviesFiles = (startTime, endTime, groupBy) => {\n let { filesData } = this.state;\n seafileAPI.sysAdminStatisticStorages(startTime, endTime, groupBy).then((res) => {\n let labels = [],\n totalStorage = [];\n let data = res.data;\n if (Array.isArray(data)) {\n data.forEach(item => {\n labels.push(moment(item.datetime).format('YYYY-MM-DD'));\n totalStorage.push(item.total_storage);\n });\n let total_storage = {\n label: gettext('Total Storage'),\n data: totalStorage,\n borderColor: '#fd913a',\n backgroundColor: '#fd913a'};\n filesData = [total_storage];\n }\n this.setState({\n filesData: filesData,\n labels: labels,\n isLoading: false\n });\n }).catch(err => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n let { labels, filesData, isLoading } = this.state;\n return(\n \n \n
    \n \n
    \n \n {isLoading && }\n {!isLoading && labels.length > 0 &&\n \n }\n
    \n
    \n
    \n );\n }\n}\n\nexport default StatisticStorage;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n type: PropTypes.string.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n sortItems: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),\n};\n\nclass TrafficTable extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { type, sortBy, sortOrder } = this.props;\n const sortIcon = sortOrder == 'asc' ? : ;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.props.children}\n \n
    {type == 'user' ? gettext('User') : gettext('Organization')}
    {gettext('Sync Upload')} {sortBy === 'sync_file_upload' && sortIcon}
    {gettext('Sync Download')} {sortBy === 'sync_file_download' && sortIcon}
    {gettext('Web Upload')} {sortBy === 'web_file_upload' && sortIcon}
    {gettext('Web Download')} {sortBy === 'web_file_download' && sortIcon}
    {gettext('Share link upload')} {sortBy === 'link_file_upload' && sortIcon}
    {gettext('Share link download')} {sortBy === 'link_file_download' && sortIcon}
    \n );\n }\n}\n\nTrafficTable.propTypes = propTypes;\n\nexport default TrafficTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../../utils/utils';\nimport { siteRoot } from '../../../utils/constants';\n\nconst propTypes = {\n type: PropTypes.string.isRequired,\n userTrafficItem: PropTypes.object.isRequired,\n};\n\nclass TrafficTableBody extends React.Component {\n\n trafficName = () => {\n let { userTrafficItem, type } = this.props;\n switch(type) {\n case 'user':\n if (userTrafficItem.name) {\n return (\n {userTrafficItem.name}\n );\n }\n return({'--'});\n case 'org':\n return({userTrafficItem.org_name});\n }\n };\n\n render() {\n let { userTrafficItem } = this.props;\n\n let syncUploadSize = Utils.bytesToSize(userTrafficItem.sync_file_upload);\n let syncDownloadSize = Utils.bytesToSize(userTrafficItem.sync_file_download);\n let webUploadSize = Utils.bytesToSize(userTrafficItem.web_file_upload);\n let webDownloadSize = Utils.bytesToSize(userTrafficItem.web_file_download);\n let linkUploadSize = Utils.bytesToSize(userTrafficItem.link_file_upload);\n let linkDownloadSize = Utils.bytesToSize(userTrafficItem.link_file_download);\n\n return(\n \n {this.trafficName()}\n {syncUploadSize}\n {syncDownloadSize}\n {webUploadSize}\n {webDownloadSize}\n {linkUploadSize}\n {linkDownloadSize}\n \n );\n }\n}\n\nTrafficTableBody.propTypes = propTypes;\n\nexport default TrafficTableBody;\n","import React, { Fragment } from 'react';\nimport { Input } from 'reactstrap';\nimport moment from 'moment';\nimport { gettext } from '../../../utils/constants';\nimport TrafficTable from './traffic-table';\nimport TrafficTableBody from './traffic-table-body';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport Paginator from '../../../components/paginator';\nimport Loading from '../../../components/loading';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\n\nclass OrgsTraffic extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n orgTrafficList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n month: moment().format('YYYYMM'),\n isLoading: false,\n errorMessage: '',\n sortBy: 'link_file_download',\n sortOrder: 'desc'\n };\n this.initPage = 1;\n this.initMonth = moment().format('YYYYMM');\n }\n\n componentDidMount() {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getTrafficList(this.initMonth, this.state.currentPage);\n });\n }\n\n getPreviousPage = () => {\n this.getTrafficList(this.state.month, this.state.currentPage - 1);\n };\n\n getNextPage = () => {\n this.getTrafficList(this.state.month, this.state.currentPage + 1);\n };\n\n handleChange = (e) => {\n let month = e.target.value;\n this.setState({\n month: month\n });\n };\n\n handleKeyPress = (e) => {\n let { month } = this.state;\n if (e.key === 'Enter') {\n let pattern = /^([012]\\d{3})(0[1-9]|1[012])$/;\n if (!pattern.test(month)) {\n let errorMessage = gettext('Invalid month, should be yyyymm.');\n this.setState({\n errorMessage: errorMessage\n });\n return;\n }\n this.getTrafficList(month, this.initPage);\n e.target.blur();\n e.preventDefault();\n }\n };\n\n getTrafficList = (month, page) => {\n const { perPage, sortBy, sortOrder } = this.state;\n const orderBy = sortOrder == 'asc' ? sortBy : `${sortBy}_${sortOrder}`;\n this.setState({isLoading: true, errorMessage: ''});\n seafileAPI.sysAdminListOrgTraffic(month, page, perPage, orderBy).then(res => {\n let orgTrafficList = res.data.org_monthly_traffic_list.slice(0);\n this.setState({\n month: month,\n currentPage: page,\n orgTrafficList: orgTrafficList,\n hasNextPage: res.data.has_next_page,\n isLoading: false\n });\n }).catch(err => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n sortItems = (sortBy) => {\n this.setState({\n sortBy: sortBy,\n sortOrder: this.state.sortOrder == 'asc' ? 'desc' : 'asc'\n }, () => {\n const { month, currentPage } = this.state;\n this.getTrafficList(month, currentPage);\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getTrafficList(this.initPage, this.initMonth));\n };\n\n render() {\n const {\n isLoading, errorMessage, orgTrafficList,\n currentPage, hasNextPage, perPage,\n sortBy, sortOrder\n } = this.state;\n return (\n \n
    \n {gettext('Month:')}\n \n {errorMessage &&
    {errorMessage}
    }\n
    \n {isLoading && }\n {!isLoading &&\n \n {orgTrafficList.length > 0 && orgTrafficList.map((item, index) => {\n return(\n \n );\n })}\n \n }\n \n
    \n );\n }\n}\n\nexport default OrgsTraffic;\n","import React, { Fragment } from 'react';\nimport { Input } from 'reactstrap';\nimport TrafficTable from './traffic-table';\nimport TrafficTableBody from './traffic-table-body';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport Paginator from '../../../components/paginator';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\n\nclass UsersTraffic extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n userTrafficList: [],\n hasNextPage: false,\n perPage: 25,\n currentPage: 1,\n month: moment().format('YYYYMM'),\n isLoading: false,\n errorMessage: '',\n sortBy: 'link_file_download',\n sortOrder: 'desc'\n };\n this.initPage = 1;\n this.initMonth = moment().format('YYYYMM');\n }\n\n componentDidMount() {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getTrafficList(this.initMonth, this.state.currentPage);\n });\n }\n\n getPreviousPage = () => {\n this.getTrafficList(this.state.month, this.state.currentPage - 1);\n };\n\n getNextPage = () => {\n this.getTrafficList(this.state.month, this.state.currentPage + 1);\n };\n\n handleChange = (e) => {\n let month = e.target.value;\n this.setState({\n month: month\n });\n };\n\n handleKeyPress = (e) => {\n let { month } = this.state;\n if (e.key === 'Enter') {\n let pattern = /^([012]\\d{3})(0[1-9]|1[012])$/;\n if (!pattern.test(month)) {\n let errorMessage = gettext('Invalid month, should be yyyymm.');\n this.setState({\n errorMessage: errorMessage\n });\n return;\n }\n this.getTrafficList(month, this.initPage);\n e.target.blur();\n e.preventDefault();\n }\n };\n\n getTrafficList = (month, page) => {\n const { perPage, sortBy, sortOrder } = this.state;\n const orderBy = sortOrder == 'asc' ? sortBy : `${sortBy}_${sortOrder}`;\n this.setState({\n isLoading: true,\n errorMessage: ''\n });\n seafileAPI.sysAdminListUserTraffic(month, page, perPage, orderBy).then(res => {\n let userTrafficList = res.data.user_monthly_traffic_list.slice(0);\n this.setState({\n month: month,\n currentPage: page,\n userTrafficList: userTrafficList,\n hasNextPage: res.data.has_next_page,\n isLoading: false\n });\n }).catch(err => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n sortItems = (sortBy) => {\n this.setState({\n sortBy: sortBy,\n sortOrder: this.state.sortOrder == 'asc' ? 'desc' : 'asc'\n }, () => {\n const { month, currentPage } = this.state;\n this.getTrafficList(month, currentPage);\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getTrafficList(this.initMonth, this.initPage));\n };\n\n render() {\n const {\n isLoading, errorMessage, userTrafficList,\n currentPage, hasNextPage, perPage,\n sortBy, sortOrder\n } = this.state;\n return (\n \n
    \n {gettext('Month:')}\n \n {errorMessage &&
    {errorMessage}
    }\n
    \n {isLoading && }\n {!isLoading &&\n \n {userTrafficList.length > 0 && userTrafficList.map((item, index) => {\n return(\n \n );\n })}\n \n }\n \n
    \n );\n }\n}\n\nexport default UsersTraffic;\n","import React, { Fragment } from 'react';\nimport moment from 'moment';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport StatisticNav from './statistic-nav';\nimport StatisticCommonTool from './statistic-common-tool';\nimport Loading from '../../../components/loading';\nimport OrgsTraffic from './statistic-traffic-orgs';\nimport UsersTraffic from './statistic-traffic-users';\nimport StatisticChart from './statistic-chart';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\n\nclass StatisticTraffic extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n filesData: [],\n linkData: [],\n syncData: [],\n webData: [],\n labels: [],\n isLoading: true,\n tabActive: 'system'\n };\n }\n\n changeTabActive = activeName => {\n this.setState({tabActive: activeName});\n };\n\n getActiviesFiles = (startTime, endTime, groupBy) => {\n seafileAPI.sysAdminStatisticTraffic(startTime, endTime, groupBy).then((res) => {\n let labels = [];\n let total_upload = [],\n total_download = [],\n link_upload = [],\n link_download = [],\n sync_upload = [],\n sync_download = [],\n web_upload = [],\n web_download = [];\n let data = res.data;\n if (Array.isArray(data)) {\n data.forEach(item => {\n labels.push(moment(item.datetime).format('YYYY-MM-DD'));\n link_upload.push(item['link-file-upload']);\n link_download.push(item['link-file-download']);\n sync_upload.push(item['sync-file-upload']);\n sync_download.push(item['sync-file-download']);\n web_upload.push(item['web-file-upload']);\n web_download.push(item['web-file-download']);\n total_upload.push(item['link-file-upload'] + item['sync-file-upload'] + item['web-file-upload']);\n total_download.push(item['link-file-download'] + item['sync-file-download'] + item['web-file-download']);\n });\n let linkUpload = {\n label: gettext('Upload'),\n data: link_upload,\n borderColor: '#fd913a',\n backgroundColor: '#fd913a'};\n let linkDownload = {\n label: gettext('Download'),\n data: link_download,\n borderColor: '#57cd6b',\n backgroundColor: '#57cd6b'};\n let syncUpload = {\n label: gettext('Upload'),\n data: sync_upload,\n borderColor: '#fd913a',\n backgroundColor: '#fd913a'};\n let syncDownload = {\n label: gettext('Download'),\n data: sync_download,\n borderColor: '#57cd6b',\n backgroundColor: '#57cd6b'};\n let webUpload = {\n label: gettext('Upload'),\n data: web_upload,\n borderColor: '#fd913a',\n backgroundColor: '#fd913a'};\n let webDownload = {\n label: gettext('Download'),\n data: web_download,\n borderColor: '#57cd6b',\n backgroundColor: '#57cd6b'};\n let totalUpload = {\n label: gettext('Upload'),\n data: total_upload,\n borderColor: '#fd913a',\n backgroundColor: '#fd913a'};\n let totalDownload = {\n label: gettext('Download'),\n data: total_download,\n borderColor: '#57cd6b',\n backgroundColor: '#57cd6b'};\n let linkData = [linkUpload, linkDownload];\n let syncData = [syncUpload, syncDownload];\n let webData = [webUpload, webDownload];\n let filesData = [totalUpload, totalDownload];\n this.setState({\n linkData: linkData,\n syncData: syncData,\n webData: webData,\n filesData: filesData,\n labels: labels,\n isLoading: false\n });\n }\n }).catch(err => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n renderCommonTool = () => {\n let { tabActive } = this.state;\n if (tabActive === 'system') {\n return (\n \n
    \n
    {gettext('System')}
    \n
    {gettext('Users')}
    \n
    {gettext('Organizations')}
    \n
    \n
    \n );\n }\n return (\n
    \n
    {gettext('System')}
    \n
    {gettext('Users')}
    \n
    {gettext('Organizations')}
    \n
    \n );\n };\n\n render() {\n let { labels, filesData, linkData, syncData, webData, isLoading, tabActive } = this.state;\n\n return (\n \n \n
    \n \n
    \n {this.renderCommonTool()}\n {isLoading && }\n {!isLoading && tabActive === 'system' &&\n
    \n
    \n {labels.length > 0 &&\n \n }\n
    \n
    \n {labels.length > 0 &&\n \n }\n
    \n
    \n {labels.length > 0 &&\n \n }\n
    \n
    \n {labels.length > 0 &&\n \n }\n
    \n
    \n }\n {!isLoading && tabActive === 'user' &&\n \n }\n {!isLoading && tabActive === 'organizations' &&\n \n }\n
    \n
    \n
    \n );\n }\n}\n\nexport default StatisticTraffic;\n","import React, { Fragment } from 'react';\nimport moment from 'moment';\nimport { gettext } from '../../../utils/constants';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport StatisticNav from './statistic-nav';\nimport StatisticCommonTool from './statistic-common-tool';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport StatisticChart from './statistic-chart';\nimport Loading from '../../../components/loading';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\n\nclass StatisticUsers extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n filesData: [],\n labels: [],\n isLoading: true,\n };\n }\n\n getActiviesFiles = (startTime, endTime, groupBy) => {\n let { filesData } = this.state;\n seafileAPI.sysAdminStatisticActiveUsers(startTime, endTime, groupBy).then((res) => {\n let labels = [],\n count = [];\n let data = res.data;\n if (Array.isArray(data)) {\n data.forEach(item => {\n labels.push(moment(item.datetime).format('YYYY-MM-DD'));\n count.push(item.count);\n });\n let userCount = {\n label: gettext('Active Users'),\n data: count,\n borderColor: '#fd913a',\n backgroundColor: '#fd913a'};\n filesData = [userCount];\n }\n this.setState({\n filesData: filesData,\n labels: labels,\n isLoading: false\n });\n }).catch(err => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n let { labels, filesData, isLoading } = this.state;\n return (\n \n \n
    \n \n
    \n \n {isLoading && }\n {!isLoading && labels.length > 0 &&\n \n }\n
    \n
    \n
    \n );\n }\n}\n\nexport default StatisticUsers;\n","import React, { Fragment } from 'react';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport moment from 'moment';\nimport StatisticNav from './statistic-nav';\nimport { Button, Input } from 'reactstrap';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nclass StatisticReports extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n month: moment().format('YYYYMM'),\n errorMessage: ''\n };\n }\n\n handleChange = (e) => {\n let month = e.target.value;\n this.setState({\n month: month\n });\n };\n\n onGenerateReports = (type) => {\n let url = siteRoot + 'api/v2.1/admin/statistics/';\n let { month } = this.state;\n if (!month) {\n let errorMessage = gettext('It is required.');\n this.setState({\n errorMessage: errorMessage\n });\n return;\n }\n if (type === 'month') {\n let pattern = /^([012]\\d{3})(0[1-9]|1[012])$/;\n if (!pattern.test(month)) {\n let errorMessage = gettext('Invalid month, should be yyyymm.');\n this.setState({\n errorMessage: errorMessage\n });\n return;\n }\n }\n switch(type) {\n case 'month':\n url += 'system-user-traffic/excel/?month=' + month;\n break;\n case 'storage':\n url += 'system-user-storage/excel/?';\n break;\n }\n this.setState({\n errorMessage: ''\n });\n window.location.href = url;\n };\n\n render() {\n\n let { errorMessage } = this.state;\n return(\n \n \n
    \n \n
    \n
    \n
    {gettext('Monthly User Traffic')}
    \n
    \n {gettext('Month:')}\n \n \n
    \n {errorMessage &&
    {errorMessage}
    }\n
    \n
    \n
    {gettext('User Storage')}
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default StatisticReports;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext, isPro } from '../../../utils/constants';\n\nconst propTypes = {\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'desktop', urlPart:'desktop-devices', text: gettext('Desktop')},\n {name: 'mobile', urlPart:'mobile-devices', text: gettext('Mobile')}\n ];\n if (isPro) {\n this.navItems.push({name: 'errors', urlPart:'device-errors', text: gettext('Errors')});\n }\n }\n\n render() {\n const { currentItem } = this.props;\n return (\n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport { Utils } from '../../../utils/utils';\nimport EmptyTip from '../../../components/empty-tip';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport SysAdminUnlinkDevice from '../../../components/dialog/sysadmin-dialog/sysadmin-unlink-device-dialog';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n getPreviousPageDevicesList = () => {\n this.props.getDevicesListByPage(this.props.pageInfo.current_page - 1);\n };\n\n getNextPageDevicesList = () => {\n this.props.getDevicesListByPage(this.props.pageInfo.current_page + 1);\n };\n\n render() {\n const { loading, errorMsg, items, pageInfo, curPerPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No connected devices')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('User')}{gettext('Platform')}{' / '}{gettext('Version')}{gettext('Device Name')}{gettext('IP')}{gettext('Last Access')}{/*Operations*/}
    \n \n
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n getDevicesListByPage: PropTypes.func.isRequired,\n curPerPage: PropTypes.number,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n unlinked: false,\n isOpIconShown: false,\n isUnlinkDeviceDialogOpen: false\n };\n }\n\n handleMouseOver = () => {\n this.setState({isOpIconShown: true});\n };\n\n handleMouseOut = () => {\n this.setState({isOpIconShown: false});\n };\n\n handleUnlink = (e) => {\n e.preventDefault();\n if (this.props.item.is_desktop_client) {\n this.toggleUnlinkDeviceDialog();\n } else {\n this.unlinkDevice(true);\n }\n };\n\n toggleUnlinkDeviceDialog = () => {\n this.setState({isUnlinkDeviceDialogOpen: !this.state.isUnlinkDeviceDialogOpen});\n };\n\n unlinkDevice = (deleteFiles) => {\n const { platform, device_id, user } = this.props.item;\n seafileAPI.sysAdminUnlinkDevice(platform, device_id, user, deleteFiles).then((res) => {\n this.setState({unlinked: true});\n let message = gettext('Successfully unlinked the device.');\n toaster.success(message);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const item = this.props.item;\n const { unlinked, isUnlinkDeviceDialogOpen, isOpIconShown } = this.state;\n\n if (unlinked) {\n return null;\n }\n\n return (\n \n \n {item.user_name}\n {item.platform}{' / '}{item.client_version}\n {item.device_name}\n {item.last_login_ip}\n \n {moment(item.last_accessed).fromNow()}\n \n \n \n \n \n {isUnlinkDeviceDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nclass DevicesByPlatform extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n devicesData: [],\n pageInfo: {},\n perPage: 25\n };\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage = 1, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getDevicesListByPage(this.state.currentPage);\n });\n }\n\n getDevicesListByPage = (page) => {\n let platform = this.props.devicesPlatform;\n let per_page = this.state.perPage;\n seafileAPI.sysAdminListDevices(platform, page, per_page).then((res) => {\n this.setState({\n devicesData: res.data.devices,\n pageInfo: res.data.page_info,\n loading: false\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getDevicesListByPage(1);\n });\n };\n\n render() {\n return (\n
    \n \n
    \n );\n }\n}\n\nDevicesByPlatform.propTypes = {\n devicesPlatform: PropTypes.string.isRequired,\n};\n\nexport default DevicesByPlatform;\n","import React, { Component, Fragment } from 'react';\nimport DevicesNav from './devices-nav';\nimport DevicesByPlatform from './devices-by-platform';\nimport MainPanelTopbar from '../main-panel-topbar';\n\nclass DesktopDevices extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n \n \n
    \n
    \n \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default DesktopDevices;\n","import React, { Component, Fragment } from 'react';\nimport DevicesNav from './devices-nav';\nimport DevicesByPlatform from './devices-by-platform';\nimport MainPanelTopbar from '../main-panel-topbar';\n\nclass MobileDevices extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n \n \n
    \n
    \n \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default MobileDevices;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot } from '../../utils/constants';\n\nconst propTypes = {\n email: PropTypes.string,\n name: PropTypes.string.isRequired\n};\n\nclass UserLink extends Component {\n\n render() {\n return {this.props.name};\n }\n}\n\nUserLink.propTypes = propTypes;\n\nexport default UserLink;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport { Utils } from '../../../utils/utils';\nimport EmptyTip from '../../../components/empty-tip';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport { Link } from '@gatsbyjs/reach-router';\nimport DevicesNav from './devices-nav';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport Paginator from '../../../components/paginator';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n getPreviousPageDeviceErrorsList = () => {\n this.props.getDeviceErrorsListByPage(this.props.pageInfo.current_page - 1);\n };\n\n getNextPageDeviceErrorsList = () => {\n this.props.getDeviceErrorsListByPage(this.props.pageInfo.current_page + 1);\n };\n\n render() {\n const { loading, errorMsg, items, pageInfo, curPerPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No sync errors')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('User')}{gettext('Device')}{' / '}{gettext('Version')}{gettext('IP')}{gettext('Library')}{gettext('Error')}{gettext('Time')}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n getDeviceErrorsListByPage: PropTypes.func,\n curPerPage: PropTypes.number,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n };\n }\n\n handleMouseOver = () => {\n this.setState({isOpIconShown: true});\n };\n\n handleMouseOut = () => {\n this.setState({isOpIconShown: false});\n };\n\n render() {\n let item = this.props.item;\n return (\n \n \n {item.device_name}{' / '}{item.client_version}\n {item.device_ip}\n {item.repo_name}\n {item.error_msg}\n \n {moment(item.error_time).fromNow()}\n \n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nclass DeviceErrors extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n devicesErrors: [],\n isCleanBtnShown: false,\n pageInfo: {},\n perPage: 25\n };\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage = 1, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getDeviceErrorsListByPage(this.state.currentPage);\n });\n }\n\n getDeviceErrorsListByPage = (page) => {\n let per_page = this.state.perPage;\n seafileAPI.sysAdminListDeviceErrors(page, per_page).then((res) => {\n this.setState({\n loading: false,\n devicesErrors: res.data.device_errors,\n pageInfo: res.data.page_info,\n isCleanBtnShown: res.data.length > 0\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n clean = () => {\n seafileAPI.sysAdminClearDeviceErrors().then((res) => {\n this.setState({\n devicesErrors: [],\n isCleanBtnShown: false\n });\n let message = gettext('Successfully cleaned all errors.');\n toaster.success(message);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getDeviceErrorsListByPage(1);\n });\n };\n render() {\n return (\n \n {this.state.isCleanBtnShown ? (\n \n \n \n ) : (\n \n )}\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default DeviceErrors;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button, Form, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n updateQuota: PropTypes.func.isRequired\n};\n\nclass SetQuotaDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n quota: '',\n isSubmitBtnActive: false\n };\n }\n\n toggle = () => {\n this.props.toggle();\n };\n\n handleQuotaChange = (e) => {\n const value = e.target.value;\n this.setState({\n quota: value,\n isSubmitBtnActive: value.trim() != ''\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key == 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n handleSubmit = () => {\n this.props.updateQuota(this.state.quota.trim());\n this.toggle();\n };\n\n render() {\n const { quota, isSubmitBtnActive } = this.state;\n return (\n \n {gettext('Set Quota')}\n \n
    \n \n \n \n \n MB\n \n \n

    \n {gettext('An integer that is greater than or equal to 0.')}\n
    \n {gettext('Tip: 0 means default limit')}\n

    \n
    \n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nSetQuotaDialog.propTypes = propTypes;\n\nexport default SetQuotaDialog;\n","\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Alert, Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport { gettext, siteRoot } from '../../../utils/constants';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n importUserInBatch: PropTypes.func.isRequired,\n};\n\nclass SysAdminImportUserDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n errorMsg: ''\n };\n this.fileInputRef = React.createRef();\n }\n\n toggle = () => {\n this.props.toggle();\n };\n\n openFileInput = () => {\n this.fileInputRef.current.click();\n };\n\n uploadFile = (e) => {\n // no file selected\n if (!this.fileInputRef.current.files.length) {\n return;\n }\n // check file extension\n let fileName = this.fileInputRef.current.files[0].name;\n if(fileName.substr(fileName.lastIndexOf('.') + 1) != 'xlsx') {\n this.setState({\n errorMsg: gettext('Please choose a .xlsx file.')\n });\n return;\n }\n const file = this.fileInputRef.current.files[0];\n this.props.importUserInBatch(file);\n this.toggle();\n };\n\n render() {\n let { errorMsg } = this.state;\n return (\n \n {gettext('Import users from a .xlsx file')}\n \n

    {gettext('Download an example file')}

    \n \n \n {errorMsg && {errorMsg}}\n
    \n \n \n \n
    \n );\n }\n}\n\nSysAdminImportUserDialog.propTypes = propTypes;\n\nexport default SysAdminImportUserDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../utils/constants';\nimport SelectEditor from './select-editor';\n\nconst propTypes = {\n isTextMode: PropTypes.bool.isRequired,\n isEditIconShow: PropTypes.bool.isRequired,\n roleOptions: PropTypes.array.isRequired,\n currentRole: PropTypes.string.isRequired,\n onRoleChanged: PropTypes.func.isRequired\n};\n\nclass SysAdminUserRoleEditor extends React.Component {\n\n translateRoles = (role) => {\n switch (role) {\n case 'default':\n return gettext('Default');\n case 'guest':\n return gettext('Guest');\n default:\n return role;\n }\n };\n\n render() {\n return (\n \n );\n }\n}\n\nSysAdminUserRoleEditor.propTypes = propTypes;\n\nexport default SysAdminUserRoleEditor;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Alert, Modal, ModalHeader, ModalBody, ModalFooter, Button, Form, FormGroup, Label, Input, InputGroup, InputGroupAddon } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport SysAdminUserRoleEditor from '../../../components/select-editor/sysadmin-user-role-editor';\n\nconst propTypes = {\n availableRoles: PropTypes.array.isRequired,\n dialogTitle: PropTypes.string.isRequired,\n showRole: PropTypes.bool.isRequired,\n toggleDialog: PropTypes.func.isRequired,\n addUser: PropTypes.func.isRequired\n};\n\nclass SysAdminAddUserDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n errorMsg: '',\n isPasswordVisible: false,\n password: '',\n passwordAgain: '',\n email: '',\n name: '',\n role: 'default',\n isSubmitBtnActive: false\n };\n }\n\n checkSubmitBtnActive = () => {\n const { email, password, passwordAgain } = this.state;\n let btnActive = true;\n if (email.trim() &&\n password.trim() &&\n passwordAgain.trim()) {\n btnActive = true;\n } else {\n btnActive = false;\n }\n this.setState({\n isSubmitBtnActive: btnActive\n });\n };\n\n toggle = () => {\n this.props.toggleDialog();\n };\n\n togglePasswordVisible = () => {\n this.setState({isPasswordVisible: !this.state.isPasswordVisible});\n };\n\n inputPassword = (e) => {\n let passwd = e.target.value;\n this.setState({\n password: passwd,\n errorMsg: ''\n }, this.checkSubmitBtnActive);\n };\n\n inputPasswordAgain = (e) => {\n let passwd = e.target.value;\n this.setState({\n passwordAgain: passwd,\n errorMsg: ''\n }, this.checkSubmitBtnActive);\n };\n\n generatePassword = () => {\n let val = Utils.generatePassword(8);\n this.setState({\n password: val,\n passwordAgain: val\n }, this.checkSubmitBtnActive);\n };\n\n inputEmail = (e) => {\n let email = e.target.value;\n this.setState({\n email: email\n }, this.checkSubmitBtnActive);\n };\n\n inputName = (e) => {\n let name = e.target.value;\n this.setState({\n name: name\n });\n };\n\n updateRole = (role) => {\n this.setState({\n role: role\n });\n };\n\n handleSubmit = () => {\n const { email, password, passwordAgain, name, role } = this.state;\n if (password != passwordAgain) {\n this.setState({errorMsg: gettext('Passwords do not match.')});\n return;\n }\n let data = {\n email: email.trim(),\n name: name.trim(),\n password: password.trim()\n };\n if (this.props.showRole) {\n data.role = role;\n }\n this.props.addUser(data);\n this.toggle();\n };\n\n render() {\n const { dialogTitle, showRole } = this.props;\n const {\n errorMsg, isPasswordVisible,\n email, name, role, password, passwordAgain,\n isSubmitBtnActive\n } = this.state;\n return (\n \n {dialogTitle || gettext('Add Member')}\n \n
    \n \n \n \n \n \n \n \n \n {showRole &&\n \n \n \n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {errorMsg && {errorMsg}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminAddUserDialog.propTypes = propTypes;\n\nexport default SysAdminAddUserDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport UserSelect from '../../user-select';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n addAdminInBatch: PropTypes.func.isRequired,\n};\n\nclass SysAdminBatchAddAdminDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n options: null,\n isSubmitBtnActive: false\n };\n }\n\n toggle = () => {\n this.props.toggle();\n };\n\n handleSelectChange = (options) => {\n this.setState({\n options: options,\n isSubmitBtnActive: options.length > 0\n });\n };\n\n handleSubmit = () => {\n this.props.addAdminInBatch(this.state.options.map(item => item.email));\n this.toggle();\n };\n\n render() {\n return (\n \n {gettext('Add Admin')}\n \n \n \n \n \n \n \n \n );\n }\n}\n\nSysAdminBatchAddAdminDialog.propTypes = propTypes;\n\nexport default SysAdminBatchAddAdminDialog;\n","class SysAdminUser {\n constructor(object) {\n this.email = object.email;\n this.name = object.name;\n this.contact_email = object.contact_email;\n this.login_id = object.login_id;\n this.last_login = object.last_login;\n this.last_access_time = object.last_access_time;\n this.create_time = object.create_time;\n this.is_active = object.is_active;\n this.is_staff = object.is_staff;\n this.reference_id = object.reference_id;\n this.department = object.department;\n this.quota_total = object.quota_total;\n this.quota_usage = object.quota_usage;\n this.role = object.role;\n this.institution = object.institution;\n if (object.org_id) {\n this.org_id = object.org_id;\n }\n if (object.org_name) {\n this.org_name = object.org_name;\n }\n this.isSelected = false;\n }\n}\n\nexport default SysAdminUser;\n","\nclass SysAdminAdminUser {\n constructor(object) {\n this.email = object.email;\n this.name = object.name;\n this.contact_email = object.contact_email;\n this.login_id = object.login_id;\n this.last_login = object.last_login;\n this.last_access_time = object.last_access_time;\n this.create_time = object.create_time;\n this.is_active = object.is_active;\n this.is_staff = object.is_staff;\n this.quota_total = object.quota_total;\n this.quota_usage = object.quota_usage;\n this.admin_role = object.admin_role;\n this.isSelected = false;\n }\n}\n\nexport default SysAdminAdminUser;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n placeholder: PropTypes.string.isRequired,\n submit: PropTypes.func.isRequired\n};\n\nclass Search extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n value: ''\n };\n }\n\n handleInputChange = (e) => {\n this.setState({\n value: e.target.value\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key == 'Enter') {\n e.preventDefault();\n this.handleSubmit();\n }\n };\n\n handleSubmit = () => {\n const value = this.state.value.trim();\n if (!value) {\n return false;\n }\n this.props.submit(value);\n };\n\n render() {\n return (\n
    \n \n \n
    \n );\n }\n}\n\nSearch.propTypes = propTypes;\n\nexport default Search;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext, haveLDAP, isDefaultAdmin } from '../../../utils/constants';\n\nconst propTypes = {\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'database', urlPart: 'users', text: gettext('Database')}\n ];\n if (haveLDAP) {\n this.navItems.push(\n {name: 'ldap', urlPart: 'users/ldap', text: gettext('LDAP')},\n {name: 'ldap-imported', urlPart: 'users/ldap-imported', text: gettext('LDAP(imported)')}\n );\n }\n if (isDefaultAdmin) {\n this.navItems.push(\n {name: 'admin', urlPart: 'users/admins', text: gettext('Admin')}\n );\n }\n }\n\n render() {\n const { currentItem } = this.props;\n return (\n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { isPro, username, gettext, multiInstitution, siteRoot } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport Selector from '../../../components/single-selector';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport SysAdminUserSetQuotaDialog from '../../../components/dialog/sysadmin-dialog/set-quota';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport UserLink from '../user-link';\n\nconst { availableRoles, availableAdminRoles, institutions } = window.sysadmin.pageOptions;\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n toggleItemFreezed = (isFreezed) => {\n this.setState({ isItemFreezed: isFreezed });\n };\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n getPreviousPage = () => {\n this.props.getListByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getListByPage(this.props.currentPage + 1);\n };\n\n sortByQuotaUsage = (e) => {\n e.preventDefault();\n this.props.sortByQuotaUsage();\n };\n\n render() {\n const {\n isAdmin, loading, errorMsg, items, isAllUsersSelected,\n curPerPage, hasNextPage, currentPage,\n sortBy, sortOrder\n } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No users')}

    \n
    \n );\n\n\n let columns = [];\n\n let sortIcon;\n if (sortBy == '') {\n // initial sort icon\n sortIcon = ;\n } else {\n sortIcon = ;\n }\n const spaceText = gettext('Space Used');\n const spaceEl =\n sortBy != undefined ? // only offer 'sort' for 'DB' & 'LDAPImported' users\n {spaceText} {sortIcon} :\n spaceText;\n const colSpaceText = {spaceEl}{` / ${gettext('Quota')}`};\n\n const colNameText = `${gettext('Name')} / ${gettext('Contact Email')}`;\n const colCreatedText = `${gettext('Created At')} / ${gettext('Last Login')} / ${gettext('Last Access')}`;\n if (isPro) {\n columns.push(\n {width: '20%', text: colNameText},\n {width: '15%', text: gettext('Status')},\n {width: '15%', text: gettext('Role')}\n );\n } else {\n columns.push(\n {width: '30%', text: colNameText},\n {width: '20%', text: gettext('Status')}\n );\n }\n if (multiInstitution && !isAdmin) {\n columns.push(\n {width: '14%', text: colSpaceText},\n {width: '14%', text: gettext('Institution')},\n {width: '14%', text: colCreatedText},\n {width: '5%', text: ''}\n );\n } else {\n columns.push(\n {width: '20%', text: colSpaceText},\n {width: '22%', text: colCreatedText},\n {width: '5%', text: ''}\n );\n }\n\n const table = (\n \n \n \n \n \n {columns.map((item, index) => {\n return ;\n })}\n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    \n \n {item.text}
    \n {(!this.props.isAdmin && !this.props.isSearchResult) &&\n \n }\n
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool,\n errorMsg: PropTypes.string,\n items: PropTypes.array,\n deleteItem: PropTypes.func,\n isAdmin: PropTypes.bool,\n isLDAPImported: PropTypes.bool,\n isSearchResult: PropTypes.bool,\n sortBy: PropTypes.string,\n sortByQuotaUsage: PropTypes.func,\n getListByPage: PropTypes.func,\n currentPage: PropTypes.number,\n toggleSelectAllUsers: PropTypes.func,\n isAllUsersSelected: PropTypes.bool,\n resetPerPage: PropTypes.func,\n updateUser: PropTypes.func,\n deleteUser: PropTypes.func,\n updateAdminRole: PropTypes.func,\n revokeAdmin: PropTypes.func,\n onUserSelected: PropTypes.func,\n curPerPage: PropTypes.number,\n hasNextPage: PropTypes.bool,\n sortOrder: PropTypes.string,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isSetQuotaDialogOpen: false,\n isDeleteUserDialogOpen: false,\n isResetUserPasswordDialogOpen: false,\n isRevokeAdminDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n toggleSetQuotaDialog = () => {\n this.setState({isSetQuotaDialogOpen: !this.state.isSetQuotaDialogOpen});\n };\n\n toggleDeleteUserDialog = () => {\n this.setState({isDeleteUserDialogOpen: !this.state.isDeleteUserDialogOpen});\n };\n\n toggleResetUserPasswordDialog = () => {\n this.setState({isResetUserPasswordDialogOpen: !this.state.isResetUserPasswordDialogOpen});\n };\n\n toggleRevokeAdminDialog = () => {\n this.setState({isRevokeAdminDialogOpen: !this.state.isRevokeAdminDialogOpen});\n };\n\n onUserSelected = () => {\n this.props.onUserSelected(this.props.item);\n };\n\n updateStatus= (roleOption) => {\n const isActive = roleOption.value == 'active';\n if (isActive) {\n toaster.notify(gettext('It may take some time, please wait.'));\n }\n this.props.updateUser(this.props.item.email, 'is_active', isActive);\n };\n\n updateRole = (roleOption) => {\n this.props.updateUser(this.props.item.email, 'role', roleOption.value);\n };\n\n updateAdminRole = (roleOption) => {\n this.props.updateAdminRole(this.props.item.email, roleOption.value);\n };\n\n translateRole = (role) => {\n switch (role) {\n case 'default':\n return gettext('Default');\n case 'guest':\n return gettext('Guest');\n default:\n return role;\n }\n };\n\n translateAdminRole = (role) => {\n switch (role) {\n case 'default_admin':\n return gettext('Default Admin');\n case 'system_admin':\n return gettext('System Admin');\n case 'daily_admin':\n return gettext('Daily Admin');\n case 'audit_admin':\n return gettext('Audit Admin');\n default:\n return role;\n }\n };\n\n translateStatus = (status) => {\n switch (status) {\n case 'active':\n return gettext('Active');\n case 'inactive':\n return gettext('Inactive');\n }\n };\n\n updateInstitution = (instOption) => {\n this.props.updateUser(this.props.item.email, 'institution', instOption.value);\n };\n\n updateQuota = (value) => {\n this.props.updateUser(this.props.item.email, 'quota_total', value);\n };\n\n deleteUser = () => {\n toaster.notify(gettext('It may take some time, please wait.'));\n this.props.deleteUser(this.props.item.email, this.props.item.name);\n };\n\n resetPassword = () => {\n toaster.notify(gettext('It may take some time, please wait.'));\n seafileAPI.sysAdminResetUserPassword(this.props.item.email).then(res => {\n toaster.success(res.data.reset_tip);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n revokeAdmin = () => {\n const { item } = this.props;\n this.props.revokeAdmin(item.email, item.name);\n };\n\n getMenuOperations = () => {\n const {\n isAdmin, isLDAPImported,\n isSearchResult, item\n } = this.props;\n let list = ['Delete'];\n if (!isLDAPImported ||\n (isSearchResult && item.source == 'db')) {\n list.push('Reset Password');\n }\n if (isAdmin) {\n list = ['Revoke Admin'];\n }\n return list;\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch (item) {\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n case 'Reset Password':\n translateResult = gettext('Reset Password');\n break;\n case 'Revoke Admin':\n translateResult = gettext('Revoke Admin');\n break;\n }\n\n return translateResult;\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Delete':\n this.toggleDeleteUserDialog();\n break;\n case 'Reset Password':\n this.toggleResetUserPasswordDialog();\n break;\n case 'Revoke Admin':\n this.toggleRevokeAdminDialog();\n break;\n default:\n break;\n }\n };\n\n render() {\n const { item, isAdmin } = this.props;\n const {\n highlight,\n isOpIconShown,\n isSetQuotaDialogOpen,\n isDeleteUserDialogOpen,\n isResetUserPasswordDialogOpen,\n isRevokeAdminDialogOpen\n } = this.state;\n\n const itemName = '' + Utils.HTMLescape(item.name) + '';\n const deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?').replace('{placeholder}', itemName);\n const resetPasswordDialogMsg = gettext('Are you sure you want to reset the password of {placeholder} ?').replace('{placeholder}', itemName);\n const revokeAdminDialogMsg = gettext('Are you sure you want to revoke the admin permission of {placeholder} ?').replace('{placeholder}', itemName);\n\n // for 'user status'\n const curStatus = item.is_active ? 'active' : 'inactive';\n this.statusOptions = ['active', 'inactive'].map(item => {\n return {\n value: item,\n text: this.translateStatus(item),\n isSelected: item == curStatus\n };\n });\n const currentSelectedStatusOption = this.statusOptions.filter(item => item.isSelected)[0];\n\n let currentSelectedAdminRoleOption;\n let currentSelectedRoleOption;\n if (isAdmin) {\n const { admin_role: curAdminRole } = item;\n this.adminRoleOptions = availableAdminRoles.map(item => {\n return {\n value: item,\n text: this.translateAdminRole(item),\n isSelected: item == curAdminRole\n };\n });\n currentSelectedAdminRoleOption = this.adminRoleOptions.filter(item => item.isSelected)[0];\n } else {\n const { role: curRole } = item;\n this.roleOptions = availableRoles.map(item => {\n return {\n value: item,\n text: this.translateRole(item),\n isSelected: item == curRole\n };\n });\n currentSelectedRoleOption = this.roleOptions.filter(item => item.isSelected)[0] || { // `|| {...}`: to be compatible with old data(roles not in the present `availableRoles`\n value: curRole,\n text: this.translateRole(curRole),\n isSelected: true\n };\n }\n\n let currentSelectedInstOption;\n if (multiInstitution && !isAdmin) {\n const { institution: curInstitution } = item;\n this.instOptions = institutions.map(item => {\n return {\n value: item,\n text: item,\n isSelected: item == curInstitution\n };\n });\n currentSelectedInstOption = this.instOptions.filter(item => item.isSelected)[0];\n }\n\n return (\n \n \n \n \n \n \n \n {item.contact_email &&\n \n
    \n {item.contact_email}\n
    }\n {item.org_id &&\n \n
    \n ({item.org_name})\n
    \n }\n \n \n \n \n {isPro &&\n \n {isAdmin ?\n \n :\n \n }\n \n }\n \n {`${Utils.bytesToSize(item.quota_usage)} / ${item.quota_total > 0 ? Utils.bytesToSize(item.quota_total) : '--'}`}\n \n \n \n {(multiInstitution && !isAdmin) &&\n \n 0}\n currentSelectedOption={currentSelectedInstOption}\n options={this.instOptions}\n selectOption={this.updateInstitution}\n toggleItemFreezed={this.props.toggleItemFreezed}\n />\n \n }\n \n {`${item.create_time ? moment(item.create_time).format('YYYY-MM-DD HH:mm') : '--'} /`}\n
    \n {`${item.last_login ? moment(item.last_login).fromNow() : '--'}`}\n
    \n {`${item.last_access_time ? moment(item.last_access_time).fromNow() : '--'}`}\n \n \n {(item.email != username && isOpIconShown) &&\n \n }\n \n \n {isSetQuotaDialogOpen &&\n \n }\n {isDeleteUserDialogOpen &&\n \n }\n {isResetUserPasswordDialogOpen &&\n \n }\n {isRevokeAdminDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object,\n isItemFreezed: PropTypes.bool,\n isAdmin: PropTypes.bool,\n isLDAPImported: PropTypes.bool,\n onFreezedItem: PropTypes.func,\n onUnfreezedItem: PropTypes.func,\n toggleItemFreezed: PropTypes.func.isRequired,\n updateUser: PropTypes.func,\n deleteUser: PropTypes.func,\n updateAdminRole: PropTypes.func,\n revokeAdmin: PropTypes.func,\n onUserSelected: PropTypes.func,\n isSearchResult: PropTypes.bool,\n};\n\nexport default Content;\n","import React, { Component, Fragment } from 'react';\nimport { navigate } from '@gatsbyjs/reach-router';\nimport { Button } from 'reactstrap';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { isPro, gettext, siteRoot } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport SysAdminUserSetQuotaDialog from '../../../components/dialog/sysadmin-dialog/set-quota';\nimport SysAdminImportUserDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-import-user-dialog';\nimport SysAdminAddUserDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-user-dialog';\nimport SysAdminBatchAddAdminDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-batch-add-admin-dialog';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport SysAdminUser from '../../../models/sysadmin-user';\nimport SysAdminAdminUser from '../../../models/sysadmin-admin-user';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Search from '../search';\nimport UsersNav from './users-nav';\nimport Content from './users-content';\n\nconst { availableRoles } = window.sysadmin.pageOptions;\n\nconst propTypes = {\n isAdmin: PropTypes.bool,\n isLDAPImported: PropTypes.bool\n};\n\nclass Users extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n userList: [],\n hasNextPage: false,\n currentPage: 1,\n perPage: 25,\n hasUserSelected: false,\n selectedUserList: [],\n isAllUsersSelected: false,\n isImportUserDialogOpen: false,\n isAddUserDialogOpen: false,\n isBatchSetQuotaDialogOpen: false,\n isBatchDeleteUserDialogOpen: false,\n isBatchAddAdminDialogOpen: false\n };\n }\n\n componentDidMount () {\n if (this.props.isAdmin) { // 'Admin' page\n this.getUserList(); // no pagination\n } else {\n let urlParams = (new URL(window.location)).searchParams;\n const {\n currentPage, perPage,\n sortBy = '',\n sortOrder = 'asc'\n } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage),\n sortBy: urlParams.get('order_by') || sortBy,\n sortOrder: urlParams.get('direction') || sortOrder\n }, () => {\n this.getUsersListByPage(this.state.currentPage);\n });\n }\n }\n\n toggleImportUserDialog = () => {\n this.setState({isImportUserDialogOpen: !this.state.isImportUserDialogOpen});\n };\n\n toggleAddUserDialog = () => {\n this.setState({isAddUserDialogOpen: !this.state.isAddUserDialogOpen});\n };\n\n toggleBatchSetQuotaDialog = () => {\n this.setState({isBatchSetQuotaDialogOpen: !this.state.isBatchSetQuotaDialogOpen});\n };\n\n toggleBatchDeleteUserDialog = () => {\n this.setState({isBatchDeleteUserDialogOpen: !this.state.isBatchDeleteUserDialogOpen});\n };\n\n onUserSelected = (item) => {\n let hasUserSelected = false;\n let selectedUserList = [];\n // traverse all users, toggle its selected status\n let users = this.state.userList.map(user => {\n // toggle status\n if (user.email === item.email) {\n user.isSelected = !user.isSelected;\n }\n // update selectedUserList\n // if current user is now selected, push it to selectedUserList\n // if current user is now not selected, drop it from selectedUserList\n if (user.isSelected == true) {\n hasUserSelected = true;\n selectedUserList.push(user);\n } else {\n selectedUserList = selectedUserList.filter(thisuser => {\n return thisuser.email != user.email;\n });\n }\n return user;\n });\n // finally update state\n this.setState({\n userList: users,\n hasUserSelected: hasUserSelected,\n selectedUserList: selectedUserList,\n });\n };\n\n toggleSelectAllUsers = () => {\n if (this.state.isAllUsersSelected) {\n // if previous state is allSelected, toggle to not select\n let users = this.state.userList.map(user => {\n user.isSelected = false;\n return user;\n });\n this.setState({\n userList: users,\n hasUserSelected: false,\n isAllUsersSelected: false,\n selectedUserList: [],\n });\n } else {\n // if previous state is not allSelected, toggle to selectAll\n let users = this.state.userList.map(user => {\n user.isSelected = true;\n return user;\n });\n this.setState({\n userList: users,\n hasUserSelected: true,\n isAllUsersSelected: true,\n selectedUserList: users\n });\n }\n };\n\n getUserList = () => {\n // get admins\n seafileAPI.sysAdminListAdmins().then(res => {\n let users = res.data.admin_user_list.map(user => {\n return new SysAdminAdminUser(user);\n });\n this.setState({\n userList: users,\n loading: false\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n getUsersListByPage = (page) => {\n const { perPage, sortBy, sortOrder } = this.state;\n const { isLDAPImported } = this.props;\n seafileAPI.sysAdminListUsers(page, perPage, isLDAPImported, sortBy, sortOrder).then(res => {\n let users = res.data.data.map(user => {return new SysAdminUser(user);});\n this.setState({\n userList: users,\n loading: false,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.total_count),\n currentPage: page\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n sortByQuotaUsage = () => {\n this.setState({\n sortBy: 'quota_usage',\n sortOrder: this.state.sortOrder == 'asc' ? 'desc' : 'asc',\n currentPage: 1\n }, () => {\n let url = new URL(location.href);\n let searchParams = new URLSearchParams(url.search);\n const { currentPage, sortBy, sortOrder } = this.state;\n searchParams.set('page', currentPage);\n searchParams.set('order_by', sortBy);\n searchParams.set('direction', sortOrder);\n url.search = searchParams.toString();\n navigate(url.toString());\n this.getUsersListByPage(currentPage);\n });\n };\n\n deleteUser = (email, username) => {\n seafileAPI.sysAdminDeleteUser(email).then(res => {\n let newUserList = this.state.userList.filter(item => {\n return item.email != email;\n });\n this.setState({userList: newUserList});\n let msg = gettext('Deleted user %s');\n msg = msg.replace('%s', username);\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n setUserQuotaInBatch = (quotaTotal) => {\n let emails = this.state.selectedUserList.map(user => {\n return user.email;\n });\n seafileAPI.sysAdminSetUserQuotaInBatch(emails, quotaTotal).then(res => {\n let userList = this.state.userList.map(item => {\n res.data.success.forEach(resultUser => {\n if (item.email == resultUser.email) {\n item.quota_total = resultUser.quota_total;\n }\n });\n return item;\n });\n this.setState({userList: userList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteUserInBatch = () => {\n let emails = this.state.selectedUserList.map(user => {\n return user.email;\n });\n seafileAPI.sysAdminDeleteUserInBatch(emails).then(res => {\n if (res.data.success.length) {\n let oldUserList = this.state.userList;\n let newUserList = oldUserList.filter(oldUser => {\n return !res.data.success.some(deletedUser =>{\n return deletedUser.email == oldUser.email;\n });\n });\n this.setState({\n userList: newUserList,\n hasUserSelected: emails.length != res.data.success.length\n });\n const length = res.data.success.length;\n const msg = length == 1 ?\n gettext('Successfully deleted 1 user.') :\n gettext('Successfully deleted {user_number_placeholder} users.')\n .replace('{user_number_placeholder}', length);\n toaster.success(msg);\n }\n res.data.failed.forEach(item => {\n const msg = `${item.email}: ${item.error_msg}`;\n toaster.danger(msg);\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n importUserInBatch = (file) => {\n toaster.notify(gettext('It may take some time, please wait.'));\n seafileAPI.sysAdminImportUserViaFile(file).then((res) => {\n if (res.data.success.length) {\n const users = res.data.success.map(item => {\n if (item.institution == undefined) {\n item.institution = '';\n }\n return new SysAdminUser(item);\n });\n this.setState({\n userList: users.concat(this.state.userList)\n });\n }\n res.data.failed.forEach(item => {\n const msg = `${item.email}: ${item.error_msg}`;\n toaster.danger(msg);\n });\n }).catch((error) => {\n let errMsg = Utils.getErrorMsg(error);\n toaster.danger(errMsg);\n });\n };\n\n addUser = (data) => {\n toaster.notify(gettext('It may take some time, please wait.'));\n const { email, name, role, password } = data;\n seafileAPI.sysAdminAddUser(email, name, role, password).then((res) => {\n let userList = this.state.userList;\n userList.unshift(res.data);\n this.setState({\n userList: userList\n });\n toaster.success(res.data.add_user_tip);\n }).catch((error) => {\n let errMsg = Utils.getErrorMsg(error);\n toaster.danger(errMsg);\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getUsersListByPage(1);\n });\n };\n\n updateUser = (email, key, value) => {\n seafileAPI.sysAdminUpdateUser(email, key, value).then(res => {\n let newUserList = this.state.userList.map(item => {\n if (item.email == email) {\n item[key]= res.data[key];\n }\n return item;\n });\n this.setState({userList: newUserList});\n const msg = (key == 'is_active' && value) ?\n res.data.update_status_tip : gettext('Edit succeeded');\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateAdminRole = (email, role) => {\n seafileAPI.sysAdminUpdateAdminRole(email, role).then(res => {\n let newUserList = this.state.userList.map(item => {\n if (item.email == email) {\n item.admin_role = res.data.role;\n }\n return item;\n });\n this.setState({userList: newUserList});\n toaster.success(gettext('Edit succeeded'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n revokeAdmin = (email, name) => {\n seafileAPI.sysAdminUpdateUser(email, 'is_staff', false).then(res => {\n let userList = this.state.userList.filter(item => {\n return item.email != email;\n });\n this.setState({\n userList: userList\n });\n toaster.success(gettext('Successfully revoked the admin permission of {placeholder}.').replace('{placeholder}', name));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n getOperationsForAll = () => {\n const { isAdmin, isLDAPImported } = this.props;\n\n if (isAdmin) {\n return ;\n }\n\n if (isLDAPImported) {\n return {gettext('Export Excel')};\n }\n\n // 'database'\n return (\n \n \n \n {gettext('Export Excel')}\n \n );\n };\n\n getCurrentNavItem = () => {\n const { isAdmin, isLDAPImported } = this.props;\n let item = 'database';\n if (isAdmin) {\n item = 'admin';\n } else if (isLDAPImported) {\n item = 'ldap-imported';\n }\n return item;\n };\n\n toggleBatchAddAdminDialog = () => {\n this.setState({isBatchAddAdminDialogOpen: !this.state.isBatchAddAdminDialogOpen});\n };\n\n addAdminInBatch = (emails) => {\n seafileAPI.sysAdminAddAdminInBatch(emails).then(res => {\n let users = res.data.success.map(user => {\n return new SysAdminAdminUser(user);\n });\n this.setState({\n userList: users.concat(this.state.userList)\n });\n res.data.failed.forEach(item => {\n const msg = `${item.email}: ${item.error_msg}`;\n toaster.danger(msg);\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n getSearch = () => {\n if (this.props.isAdmin) {\n return null;\n }\n // offer 'Search' for 'DB' & 'LDAPImported' users\n return ;\n };\n\n searchItems = (keyword) => {\n navigate(`${siteRoot}sys/search-users/?query=${encodeURIComponent(keyword)}`);\n };\n\n render() {\n const { isAdmin, isLDAPImported } = this.props;\n const {\n hasUserSelected,\n isImportUserDialogOpen,\n isAddUserDialogOpen,\n isBatchDeleteUserDialogOpen,\n isBatchSetQuotaDialogOpen,\n isBatchAddAdminDialogOpen\n } = this.state;\n return (\n \n \n {hasUserSelected ?\n \n \n \n \n : this.getOperationsForAll()\n }\n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isImportUserDialogOpen &&\n \n }\n {isAddUserDialogOpen &&\n \n }\n {isBatchSetQuotaDialogOpen &&\n \n }\n {isBatchDeleteUserDialogOpen &&\n \n }\n {isBatchAddAdminDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nUsers.propTypes = propTypes;\n\nexport default Users;\n","import React, { Component } from 'react';\nimport Users from './users';\n\nclass AdminUsers extends Component {\n\n render() {\n return ;\n }\n}\n\nexport default AdminUsers;\n","import React, { Component } from 'react';\nimport Users from './users';\n\nclass LDAPImportedUsers extends Component {\n\n render() {\n return ;\n }\n}\n\nexport default LDAPImportedUsers;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport UsersNav from './users-nav';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n getPreviousPage = () => {\n this.props.getListByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getListByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, curPerPage, hasNextPage, currentPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No users')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Email')}{gettext('Space Used')}{' / '}{gettext('Quota')}{gettext('Last Login')}
    \n \n
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n resetPerPage: PropTypes.func,\n getListByPage: PropTypes.func.isRequired,\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n currentPage: PropTypes.number,\n curPerPage: PropTypes.number,\n hasNextPage: PropTypes.bool,\n};\n\nclass Item extends Component {\n render() {\n const { item } = this.props;\n return (\n \n \n \n \n {`${Utils.bytesToSize(item.quota_usage)} / ${item.quota_total > 0 ? Utils.bytesToSize(item.quota_total) : '--'}`}\n \n \n {item.last_login ? moment(item.last_login).fromNow() : '--'}\n \n \n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nclass Users extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n userList: {},\n hasNextPage: false,\n currentPage: 1,\n perPage: 25\n };\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getUsersListByPage(this.state.currentPage);\n });\n }\n\n getUsersListByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListLDAPUsers(page, perPage).then(res => {\n this.setState({\n loading: false,\n userList: res.data.ldap_user_list,\n hasNextPage: res.data.has_next_page,\n currentPage: page\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getUsersListByPage(1);\n });\n };\n\n render() {\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nUsers.propTypes = {\n email: PropTypes.string,\n};\n\nexport default Users;\n","import React, { Component, Fragment } from 'react';\nimport { Button, Form, FormGroup, Input, Col } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport Paginator from '../../../components/paginator';\nimport toaster from '../../../components/toast';\nimport SysAdminUserSetQuotaDialog from '../../../components/dialog/sysadmin-dialog/set-quota';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Content from './users-content';\n\n\nclass SearchUsers extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n query: '',\n isSubmitBtnActive: false,\n loading: true,\n errorMsg: '',\n userList: [],\n pageInfo: {\n has_next_page: false,\n current_page: 1,\n },\n currentPage: 1,\n perPage: 25,\n hasUserSelected: false,\n selectedUserList: [],\n isAllUsersSelected: false,\n isBatchSetQuotaDialogOpen: false,\n isBatchDeleteUserDialogOpen: false\n };\n }\n\n componentDidMount () {\n let params = (new URL(document.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n query: params.get('query') || '',\n currentPage: parseInt(params.get('page') || currentPage),\n perPage: parseInt(params.get('per_page') || perPage)\n }, () => {this.getItems(this.state.currentPage);});\n }\n\n toggleBatchSetQuotaDialog = () => {\n this.setState({isBatchSetQuotaDialogOpen: !this.state.isBatchSetQuotaDialogOpen});\n };\n\n toggleBatchDeleteUserDialog = () => {\n this.setState({isBatchDeleteUserDialogOpen: !this.state.isBatchDeleteUserDialogOpen});\n };\n\n onUserSelected = (item) => {\n let hasUserSelected = false;\n let selectedUserList = [];\n // traverse all users, toggle its selected status\n let users = this.state.userList.map(user => {\n // toggle status\n if (user.email === item.email) {\n user.isSelected = !user.isSelected;\n }\n // update selectedUserList\n // if current user is now selected, push it to selectedUserList\n // if current user is now not selected, drop it from selectedUserList\n if (user.isSelected == true) {\n hasUserSelected = true;\n selectedUserList.push(user);\n } else {\n selectedUserList = selectedUserList.filter(thisuser => {\n return thisuser.email != user.email;\n });\n }\n return user;\n });\n // finally update state\n this.setState({\n userList: users,\n hasUserSelected: hasUserSelected,\n selectedUserList: selectedUserList,\n });\n };\n\n toggleSelectAllUsers = () => {\n if (this.state.isAllUsersSelected) {\n // if previous state is allSelected, toggle to not select\n let users = this.state.userList.map(user => {\n user.isSelected = false;\n return user;\n });\n this.setState({\n userList: users,\n hasUserSelected: false,\n isAllUsersSelected: false,\n selectedUserList: [],\n });\n } else {\n // if previous state is not allSelected, toggle to selectAll\n let users = this.state.userList.map(user => {\n user.isSelected = true;\n return user;\n });\n this.setState({\n userList: users,\n hasUserSelected: true,\n isAllUsersSelected: true,\n selectedUserList: users\n });\n }\n };\n\n getItems = (page) => {\n seafileAPI.sysAdminSearchUsers(this.state.query.trim(), page, this.state.perPage).then(res => {\n this.setState({\n userList: res.data.user_list,\n loading: false,\n pageInfo: res.data.page_info\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getItems(1);\n });\n };\n\n deleteUser = (email, username) => {\n seafileAPI.sysAdminDeleteUser(email).then(res => {\n let newUserList = this.state.userList.filter(item => {\n return item.email != email;\n });\n this.setState({userList: newUserList});\n let msg = gettext('Deleted user %s');\n msg = msg.replace('%s', username);\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n setUserQuotaInBatch = (quotaTotal) => {\n let emails = this.state.selectedUserList.map(user => {\n return user.email;\n });\n seafileAPI.sysAdminSetUserQuotaInBatch(emails, quotaTotal).then(res => {\n let userList = this.state.userList.map(item => {\n res.data.success.forEach(resultUser => {\n if (item.email == resultUser.email) {\n item.quota_total = resultUser.quota_total;\n }\n });\n return item;\n });\n this.setState({userList: userList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteUserInBatch = () => {\n let emails = this.state.selectedUserList.map(user => {\n return user.email;\n });\n seafileAPI.sysAdminDeleteUserInBatch(emails).then(res => {\n if (res.data.success.length) {\n let oldUserList = this.state.userList;\n let newUserList = oldUserList.filter(oldUser => {\n return !res.data.success.some(deletedUser =>{\n return deletedUser.email == oldUser.email;\n });\n });\n this.setState({\n userList: newUserList,\n hasUserSelected: emails.length != res.data.success.length\n });\n const length = res.data.success.length;\n const msg = length == 1 ?\n gettext('Successfully deleted 1 user.') :\n gettext('Successfully deleted {user_number_placeholder} users.')\n .replace('{user_number_placeholder}', length);\n toaster.success(msg);\n }\n res.data.failed.forEach(item => {\n const msg = `${item.email}: ${item.error_msg}`;\n toaster.danger(msg);\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateUser = (email, key, value) => {\n seafileAPI.sysAdminUpdateUser(email, key, value).then(res => {\n let newUserList = this.state.userList.map(item => {\n if (item.email == email) {\n item[key]= res.data[key];\n }\n return item;\n });\n this.setState({userList: newUserList});\n const msg = (key == 'is_active' && value) ?\n res.data.update_status_tip : gettext('Edit succeeded');\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateAdminRole = (email, role) => {\n seafileAPI.sysAdminUpdateAdminRole(email, role).then(res => {\n let newUserList = this.state.userList.map(item => {\n if (item.email == email) {\n item.admin_role = res.data.role;\n }\n return item;\n });\n this.setState({userList: newUserList});\n toaster.success(gettext('Edit succeeded'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n revokeAdmin = (email, name) => {\n seafileAPI.sysAdminUpdateUser(email, 'is_staff', false).then(res => {\n let userList = this.state.userList.filter(item => {\n return item.email != email;\n });\n this.setState({\n userList: userList\n });\n toaster.success(gettext('Successfully revoked the admin permission of {placeholder}.').replace('{placeholder}', name));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n handleInputChange = (e) => {\n this.setState({\n query: e.target.value\n }, this.checkSubmitBtnActive);\n };\n\n checkSubmitBtnActive = () => {\n const { query } = this.state;\n this.setState({\n isSubmitBtnActive: query.trim()\n });\n };\n\n getPreviousPageList = () => {\n this.getItems(this.state.pageInfo.current_page - 1);\n };\n\n getNextPageList = () => {\n this.getItems(this.state.pageInfo.current_page + 1);\n };\n\n handleKeyDown = (e) => {\n if (e.keyCode === 13) {\n const { isSubmitBtnActive } = this.state;\n if (isSubmitBtnActive) {\n this.getItems();\n }\n }\n };\n\n render() {\n const { query, isSubmitBtnActive } = this.state;\n const {\n hasUserSelected,\n isBatchDeleteUserDialogOpen,\n isBatchSetQuotaDialogOpen\n } = this.state;\n return (\n \n {hasUserSelected ?\n \n \n \n \n \n :\n \n }\n
    \n
    \n
    \n

    {gettext('Users')}

    \n
    \n
    \n
    \n

    {gettext('Search Users')}

    \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n

    {gettext('Result')}

    \n \n
    \n
    \n
    \n
    \n {isBatchSetQuotaDialogOpen &&\n \n }\n {isBatchDeleteUserDialogOpen &&\n \n }\n {this.state.pageInfo &&\n \n }\n
    \n );\n }\n}\n\nexport default SearchUsers;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button, Form, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n uploadOrDownload: PropTypes.string.isRequired,\n toggle: PropTypes.func.isRequired,\n updateUploadDownloadRateLimit: PropTypes.func.isRequired\n};\n\nclass SysAdminSetUploadDownloadRateLimitDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n rateLimit: '',\n isSubmitBtnActive: false\n };\n }\n\n toggle = () => {\n this.props.toggle();\n };\n\n handleRateLimitChange = (e) => {\n const value = e.target.value;\n this.setState({\n rateLimit: value,\n isSubmitBtnActive: value.trim() != ''\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key == 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n handleSubmit = () => {\n this.props.updateUploadDownloadRateLimit(this.props.uploadOrDownload, this.state.rateLimit.trim());\n this.toggle();\n };\n\n render() {\n const { rateLimit, isSubmitBtnActive } = this.state;\n return (\n \n {this.props.uploadOrDownload == 'upload' ? gettext('Set Upload Rate Limit') : gettext('Set Download Rate Limit')}\n \n
    \n \n \n \n \n kB/s\n \n \n

    \n {gettext('An integer that is greater than or equal to 0.')}\n
    \n {gettext('Tip: 0 means default limit')}\n

    \n
    \n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminSetUploadDownloadRateLimitDialog.propTypes = propTypes;\n\nexport default SysAdminSetUploadDownloadRateLimitDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button, Form, FormGroup, Input } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n value: PropTypes.string.isRequired,\n dialogTitle: PropTypes.string.isRequired,\n updateValue: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass UpdateUser extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n value: this.props.value,\n isSubmitBtnActive: false\n };\n }\n\n handleInputChange = (e) => {\n const value = e.target.value;\n this.setState({\n value: value\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key == 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n handleSubmit = () => {\n this.props.updateValue(this.state.value.trim());\n this.props.toggleDialog();\n };\n\n render() {\n const { toggleDialog } = this.props;\n return (\n \n {this.props.dialogTitle}\n \n
    \n \n \n \n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nUpdateUser.propTypes = propTypes;\n\nexport default UpdateUser;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n email: PropTypes.string,\n userName: PropTypes.string.isRequired,\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'info', urlPart: '', text: gettext('Info')},\n {name: 'owned-repos', urlPart: 'owned-libraries', text: gettext('Owned Libraries')},\n {name: 'shared-repos', urlPart: 'shared-libraries', text: gettext('Shared Libraries')},\n {name: 'links', urlPart: 'shared-links', text: gettext('Shared Links')},\n {name: 'groups', urlPart: 'groups', text: gettext('Groups')}\n ];\n }\n\n render() {\n const { currentItem, email, userName } = this.props;\n return (\n
    \n
    \n

    {gettext('Users')} / {userName}

    \n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { FormGroup, Label, Input, Button } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, isPro } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport Loading from '../../../components/loading';\nimport SysAdminSetQuotaDialog from '../../../components/dialog/sysadmin-dialog/set-quota';\nimport SysAdminSetUploadDownloadRateLimitDialog from '../../../components/dialog/sysadmin-dialog/set-upload-download-rate-limit';\nimport SysAdminUpdateUserDialog from '../../../components/dialog/sysadmin-dialog/update-user';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Nav from './user-nav';\n\nconst { twoFactorAuthEnabled } = window.sysadmin.pageOptions;\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n currentKey: '',\n dialogTitle: '',\n isSetQuotaDialogOpen: false,\n isSetUserUploadRateLimitDialogOpen: false,\n isSetUserDownloadRateLimitDialogOpen: false,\n isUpdateUserDialogOpen: false\n };\n }\n\n toggleSetQuotaDialog = () => {\n this.setState({isSetQuotaDialogOpen: !this.state.isSetQuotaDialogOpen});\n };\n\n toggleSetUserUploadRateLimitDialog = () => {\n this.setState({isSetUserUploadRateLimitDialogOpen: !this.state.isSetUserUploadRateLimitDialogOpen});\n };\n\n toggleSetUserDownloadRateLimitDialog = () => {\n this.setState({isSetUserDownloadRateLimitDialogOpen: !this.state.isSetUserDownloadRateLimitDialogOpen});\n };\n\n updateQuota = (value) => {\n this.props.updateUser('quota_total', value);\n };\n\n updateUploadDownloadRateLimit = (uploadOrDownload, value) => {\n if (uploadOrDownload == 'upload'){\n this.props.updateUser('upload_rate_limit', value);\n }\n if (uploadOrDownload == 'download'){\n this.props.updateUser('download_rate_limit', value);\n }\n };\n\n toggleDialog = (key, dialogTitle) => {\n this.setState({\n currentKey: key,\n dialogTitle: dialogTitle,\n isUpdateUserDialogOpen: !this.state.isUpdateUserDialogOpen\n });\n };\n\n toggleSetNameDialog = () => {\n this.toggleDialog('name', gettext('Set Name'));\n };\n\n toggleSetUserLoginIDDialog = () => {\n this.toggleDialog('login_id', gettext('Set Login ID'));\n };\n\n toggleSetUserComtactEmailDialog = () => {\n this.toggleDialog('contact_email', gettext('Set Contact Email'));\n };\n\n toggleSetUserReferenceIDDialog = () => {\n this.toggleDialog('reference_id', gettext('Set Reference ID'));\n };\n\n updateValue = (value) => {\n this.props.updateUser(this.state.currentKey, value);\n };\n\n toggleUpdateUserDialog = () => {\n this.toggleDialog('', '');\n };\n\n showEditIcon = (action) => {\n return (\n \n \n );\n };\n\n render() {\n const { loading, errorMsg } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const user = this.props.userInfo;\n const {\n currentKey, dialogTitle,\n isSetQuotaDialogOpen, isUpdateUserDialogOpen,\n isSetUserUploadRateLimitDialogOpen, isSetUserDownloadRateLimitDialogOpen\n } = this.state;\n return (\n \n
    \n
    {gettext('Avatar')}
    \n
    \n {user.name}\n
    \n\n
    {gettext('Email')}
    \n
    {user.email}
    \n\n {user.org_name &&\n \n
    {gettext('Organization')}
    \n
    {user.org_name}
    \n
    \n }\n\n
    {gettext('Name')}
    \n
    \n {user.name || '--'}\n {this.showEditIcon(this.toggleSetNameDialog)}\n
    \n\n
    {gettext('Login ID')}
    \n
    \n {user.login_id || '--'}\n {this.showEditIcon(this.toggleSetUserLoginIDDialog)}\n
    \n\n
    {gettext('Contact Email')}
    \n
    \n {user.contact_email || '--'}\n {this.showEditIcon(this.toggleSetUserComtactEmailDialog)}\n
    \n\n
    {gettext('Reference ID')}
    \n
    \n {user.reference_id|| '--'}\n {this.showEditIcon(this.toggleSetUserReferenceIDDialog)}\n
    \n\n
    {gettext('Space Used / Quota')}
    \n
    \n {`${Utils.bytesToSize(user.quota_usage)} / ${user.quota_total > 0 ? Utils.bytesToSize(user.quota_total) : '--'}`}\n {this.showEditIcon(this.toggleSetQuotaDialog)}\n
    \n {isPro &&\n \n
    {gettext('Upload Rate Limit')}
    \n
    \n {user.upload_rate_limit > 0 ? user.upload_rate_limit + ' kB/s' : '--'}\n {this.showEditIcon(this.toggleSetUserUploadRateLimitDialog)}\n
    \n
    {gettext('Download Rate Limit')}
    \n
    \n {user.download_rate_limit > 0 ? user.download_rate_limit + ' kB/s' : '--'}\n {this.showEditIcon(this.toggleSetUserDownloadRateLimitDialog)}\n
    \n
    \n }\n {twoFactorAuthEnabled &&\n \n
    {gettext('Two-Factor Authentication')}
    \n
    \n {user.has_default_device ?\n \n

    {gettext('Status: enabled')}

    \n \n
    :\n \n \n \n }\n \n \n \n
    \n
    \n }\n
    \n {isSetQuotaDialogOpen &&\n \n }\n {(isPro && isSetUserUploadRateLimitDialogOpen) &&\n \n }\n {(isPro && isSetUserDownloadRateLimitDialogOpen) &&\n \n }\n {isUpdateUserDialogOpen &&\n \n }\n
    \n );\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n deleteItem: PropTypes.func,\n updateUser: PropTypes.func.isRequired,\n userInfo: PropTypes.object.isRequired,\n disable2FA: PropTypes.func.isRequired,\n toggleForce2fa: PropTypes.func.isRequired,\n email: PropTypes.string,\n};\n\nclass User extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n userInfo: {}\n };\n }\n\n componentDidMount () {\n // avatar size: 160\n const email = decodeURIComponent(this.props.email);\n seafileAPI.sysAdminGetUser(email, 160).then((res) => {\n this.setState({\n loading: false,\n userInfo: res.data\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n updateUser = (key, value) => {\n const email = this.state.userInfo.email;\n seafileAPI.sysAdminUpdateUser(email, key, value).then(res => {\n let userInfo = this.state.userInfo;\n userInfo[key]= res.data[key];\n this.setState({\n userInfo: userInfo\n });\n toaster.success(gettext('Edit succeeded'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n disable2FA = () => {\n const email = this.state.userInfo.email;\n seafileAPI.sysAdminDeleteTwoFactorAuth(email).then(res => {\n let userInfo = this.state.userInfo;\n userInfo.has_default_device = false;\n this.setState({\n userInfo: userInfo\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n toggleForce2fa = (e) => {\n const email = this.state.userInfo.email;\n const checked = e.target.checked;\n seafileAPI.sysAdminSetForceTwoFactorAuth(email, checked).then(res => {\n let userInfo = this.state.userInfo;\n userInfo.is_force_2fa = checked;\n this.setState({\n userInfo: userInfo\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { userInfo } = this.state;\n return (\n \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nUser.propTypes = {\n email: PropTypes.string,\n};\n\nexport default User;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { isPro, siteRoot, gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport TransferDialog from '../../../components/dialog/transfer-dialog';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Nav from './user-nav';\n\nconst { enableSysAdminViewRepo } = window.sysadmin.pageOptions;\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No libraries')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Size')}{gettext('Last Update')}{/* Operations */}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n items: PropTypes.array.isRequired,\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n deleteRepo: PropTypes.func.isRequired,\n transferRepo: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isDeleteDialogOpen: false,\n isTransferDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n toggleDeleteDialog = () => {\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n deleteRepo = () => {\n this.props.deleteRepo(this.props.item.id);\n };\n\n toggleTransferDialog = () => {\n this.setState({isTransferDialogOpen: !this.state.isTransferDialogOpen});\n };\n\n transferRepo = (owner) => {\n this.props.transferRepo(this.props.item.id, owner.email);\n this.toggleTransferDialog();\n };\n\n renderRepoName = () => {\n const { item } = this.props;\n const repo = item;\n if (repo.name) {\n if (isPro && enableSysAdminViewRepo && !repo.encrypted) {\n return {repo.name};\n } else {\n return repo.name;\n }\n } else {\n return gettext('Broken ({repo_id_placeholder})')\n .replace('{repo_id_placeholder}', repo.id);\n }\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch (item) {\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n case 'Transfer':\n translateResult = gettext('Transfer');\n break;\n }\n\n return translateResult;\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Delete':\n this.toggleDeleteDialog();\n break;\n case 'Transfer':\n this.toggleTransferDialog();\n break;\n }\n };\n\n render() {\n const { item } = this.props;\n const { isOpIconShown, isDeleteDialogOpen, isTransferDialogOpen } = this.state;\n\n const iconUrl = Utils.getLibIconUrl(item);\n const iconTitle = Utils.getLibIconTitle(item);\n\n const itemName = '' + Utils.HTMLescape(item.name) + '';\n const deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?').replace('{placeholder}', itemName);\n\n return (\n \n \n {iconTitle}\n {this.renderRepoName()}\n {Utils.bytesToSize(item.size)}\n {moment(item.last_modified).fromNow()}\n \n {isOpIconShown &&\n \n }\n \n \n {isDeleteDialogOpen &&\n \n }\n {isTransferDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n deleteRepo: PropTypes.func.isRequired,\n transferRepo: PropTypes.func.isRequired,\n};\n\nclass Repos extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n userInfo: {},\n repoList: []\n };\n }\n\n componentDidMount () {\n const email = decodeURIComponent(this.props.email);\n seafileAPI.sysAdminGetUser(email).then((res) => {\n this.setState({\n userInfo: res.data\n });\n });\n seafileAPI.sysAdminListReposByOwner(email).then(res => {\n this.setState({\n loading: false,\n repoList: res.data.repos\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n deleteRepo = (repoID) => {\n seafileAPI.sysAdminDeleteRepo(repoID).then(res => {\n let newRepoList = this.state.repoList.filter(item => {\n return item.id != repoID;\n });\n this.setState({repoList: newRepoList});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n transferRepo = (repoID, email) => {\n seafileAPI.sysAdminTransferRepo(repoID, email).then((res) => {\n let newRepoList = this.state.repoList.filter(item => {\n return item.id != repoID;\n });\n this.setState({repoList: newRepoList});\n let message = gettext('Successfully transferred the library.');\n toaster.success(message);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nRepos.propTypes = {\n email: PropTypes.string,\n};\n\nexport default Repos;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { isPro, siteRoot, gettext } from '../../../utils/constants';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport Nav from './user-nav';\n\nconst { enableSysAdminViewRepo } = window.sysadmin.pageOptions;\n\nclass Content extends Component {\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No libraries')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Share From')}{gettext('Size')}{gettext('Last Update')}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n};\n\nclass Item extends Component {\n\n renderRepoName = () => {\n const { item } = this.props;\n const repo = item;\n if (repo.name) {\n if (isPro && enableSysAdminViewRepo && !repo.encrypted) {\n return {repo.name};\n } else {\n return repo.name;\n }\n } else {\n return gettext('Broken ({repo_id_placeholder})')\n .replace('{repo_id_placeholder}', repo.id);\n }\n };\n\n getOwnerLink = () => {\n let link;\n const { item } = this.props;\n const index = item.owner_email.indexOf('@seafile_group');\n if (index == -1) {\n link = ;\n } else {\n const groupID = item.owner_email.substring(0, index);\n link = {item.owner_name};\n }\n return link;\n };\n\n render() {\n const { item } = this.props;\n const iconUrl = Utils.getLibIconUrl(item);\n const iconTitle = Utils.getLibIconTitle(item);\n return (\n \n \n {iconTitle}\n {this.renderRepoName()}\n {this.getOwnerLink()}\n {Utils.bytesToSize(item.size)}\n {moment(item.last_modify).fromNow()}\n \n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nclass Repos extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n userInfo: {},\n repoList: []\n };\n }\n\n componentDidMount () {\n const email = decodeURIComponent(this.props.email);\n seafileAPI.sysAdminGetUser(email).then((res) => {\n this.setState({\n userInfo: res.data\n });\n });\n seafileAPI.sysAdminListShareInRepos(email).then(res => {\n this.setState({\n loading: false,\n repoList: res.data.repo_list\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n render() {\n return (\n \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nRepos.propTypes = {\n email: PropTypes.string,\n};\n\nexport default Repos;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport LinkDialog from '../../../components/dialog/share-admin-link';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Nav from './user-nav';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No shared links')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {/* icon */}{gettext('Name')}{gettext('Size')}{gettext('Type')}{gettext('Visits')}{/* Operations */}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n deleteItem: PropTypes.func,\n email: PropTypes.string,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isLinkDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n toggleLinkDialog = () => {\n this.setState({isLinkDialogOpen: !this.state.isLinkDialogOpen});\n };\n\n deleteItem = () => {\n this.props.deleteItem(this.props.item);\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch (item) {\n case 'View':\n translateResult = gettext('View');\n break;\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n }\n\n return translateResult;\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'View':\n this.toggleLinkDialog();\n break;\n case 'Delete':\n this.deleteItem();\n break;\n }\n };\n\n getRoleText = () => {\n let roleText;\n const { item } = this.props;\n switch(item.role) {\n case 'Owner':\n roleText = gettext('Owner');\n break;\n case 'Admin':\n roleText = gettext('Admin');\n break;\n case 'Member':\n roleText = gettext('Member');\n break;\n }\n return roleText;\n };\n\n getIconUrl = () => {\n const { item } = this.props;\n let url;\n if (item.type == 'upload') {\n url = Utils.getFolderIconUrl();\n } else { // share link\n if (item.is_dir) {\n url = Utils.getFolderIconUrl();\n } else {\n url = Utils.getFileIconUrl(item.obj_name);\n }\n }\n return url;\n };\n\n render() {\n const { item } = this.props;\n const { isOpIconShown, isLinkDialogOpen } = this.state;\n\n return (\n \n \n \"\"\n {item.obj_name == '/' ? item.repo_name : item.obj_name}\n {item.type == 'upload' ?\n \n \n {gettext('Upload')}\n :\n \n {item.is_dir ? null : Utils.bytesToSize(item.size)}\n {gettext('Download')}\n \n }\n {item.view_cnt}\n \n {isOpIconShown &&\n \n }\n \n \n {isLinkDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n deleteItem: PropTypes.func,\n email: PropTypes.string,\n};\n\nclass Links extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n userInfo: {},\n uploadLinkItems: [],\n shareLinkItems: []\n };\n }\n\n componentDidMount () {\n const email = decodeURIComponent(this.props.email);\n seafileAPI.sysAdminGetUser(email).then((res) => {\n this.setState({\n userInfo: res.data\n });\n });\n\n seafileAPI.sysAdminListShareLinksByUser(email).then(res => {\n const items = res.data.share_link_list.map(item => {\n item.type = 'download';\n return item;\n });\n items.sort((a, b) => {\n return a.is_dir ? -1 : 1;\n });\n this.setState({\n loading: false,\n shareLinkItems: items\n });\n });\n seafileAPI.sysAdminListUploadLinksByUser(email).then(res => {\n const items = res.data.upload_link_list.map(item => {\n item.type = 'upload';\n return item;\n });\n this.setState({\n loading: false,\n uploadLinkItems: items\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n deleteItem = (item) => {\n const type = item.type;\n const token = item.token;\n if (type == 'download') {\n seafileAPI.sysAdminDeleteShareLink(token).then(res => {\n let items = this.state.shareLinkItems.filter(item=> {\n return item.token != token;\n });\n this.setState({\n shareLinkItems: items\n });\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n seafileAPI.sysAdminDeleteUploadLink(token).then(res => {\n let items = this.state.uploadLinkItems.filter(item=> {\n return item.token != token;\n });\n this.setState({\n uploadLinkItems: items\n });\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n };\n\n render() {\n const { shareLinkItems, uploadLinkItems } = this.state;\n return (\n \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nLinks.propTypes = {\n email: PropTypes.string,\n};\n\nexport default Links;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Nav from './user-nav';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No groups')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Role')}{gettext('Created At')}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n deleteItem: PropTypes.func,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n getRoleText = () => {\n let roleText;\n const { item } = this.props;\n switch(item.role) {\n case 'Owner':\n roleText = gettext('Owner');\n break;\n case 'Admin':\n roleText = gettext('Admin');\n break;\n case 'Member':\n roleText = gettext('Member');\n break;\n }\n return roleText;\n };\n\n render() {\n const { item } = this.props;\n const url = item.parent_group_id == 0 ?\n `${siteRoot}sys/groups/${item.id}/libraries/` :\n `${siteRoot}sys/departments/${item.id}/`;\n return (\n \n \n {item.name}\n {this.getRoleText()}\n {moment(item.created_at).format('YYYY-MM-DD HH:mm')}\n \n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n deleteItem: PropTypes.func,\n};\n\nclass Groups extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n userInfo: {},\n items: []\n };\n }\n\n componentDidMount () {\n const email = decodeURIComponent(this.props.email);\n seafileAPI.sysAdminGetUser(email).then((res) => {\n this.setState({\n userInfo: res.data\n });\n });\n seafileAPI.sysAdminListGroupsJoinedByUser(email).then(res => {\n this.setState({\n loading: false,\n items: res.data.group_list\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n render() {\n return (\n \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nGroups.propTypes = {\n email: PropTypes.string,\n};\n\nexport default Groups;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter, Form, FormGroup, Label, Alert } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport UserSelect from '../../user-select';\n\n\nconst propTypes = {\n createRepo: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired,\n};\n\nclass SysAdminCreateRepoDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n repoName: '',\n ownerEmail: '',\n errMessage: '',\n isSubmitBtnActive: false\n };\n }\n\n handleRepoNameChange = (e) => {\n const value = e.target.value;\n this.setState({\n repoName: value,\n isSubmitBtnActive: value.trim()\n });\n };\n\n handleSubmit = () => {\n const { repoName, ownerEmail } = this.state;\n this.props.createRepo(repoName.trim(), ownerEmail);\n this.toggle();\n };\n\n handleSelectChange = (option) => {\n // option can be null\n this.setState({\n ownerEmail: option ? option.email : ''\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n toggle = () => {\n this.props.toggleDialog();\n };\n\n render() {\n return (\n \n {gettext('New Library')}\n \n
    \n \n \n \n \n \n \n \n \n
    \n {this.state.errMessage && {this.state.errMessage}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminCreateRepoDialog.propTypes = propTypes;\n\nexport default SysAdminCreateRepoDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'all', urlPart: 'all-libraries', text: gettext('All')},\n {name: 'system', urlPart: 'system-library', text: gettext('System')},\n {name: 'trash', urlPart: 'trash-libraries', text: gettext('Trash')}\n ];\n }\n\n render() {\n const { currentItem } = this.props;\n return (\n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { isPro, gettext } from '../../../utils/constants';\nimport { Button } from 'reactstrap';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../toast';\nimport UserSelect from '../../user-select';\nimport SharePermissionEditor from '../../select-editor/share-permission-editor';\n\nclass UserItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOperationShow: false\n };\n }\n\n onMouseEnter = () => {\n this.setState({isOperationShow: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOperationShow: false});\n };\n\n deleteShareItem = () => {\n let item = this.props.item;\n this.props.deleteShareItem(item.user_email);\n };\n\n onChangeUserPermission = (permission) => {\n let item = this.props.item;\n this.props.onChangeUserPermission(item, permission);\n };\n\n render() {\n let item = this.props.item;\n let currentPermission = Utils.getSharedPermission(item);\n return (\n \n {item.user_name}\n \n \n \n \n \n \n \n \n );\n }\n}\n\nUserItem.propTypes = {\n item: PropTypes.object.isRequired,\n permissions: PropTypes.array.isRequired,\n deleteShareItem: PropTypes.func.isRequired,\n onChangeUserPermission: PropTypes.func.isRequired,\n};\n\nclass UserList extends React.Component {\n\n render() {\n let items = this.props.items;\n return (\n \n {items.map((item, index) => {\n return (\n \n );\n })}\n \n );\n }\n}\n\nUserList.propTypes = {\n items: PropTypes.array.isRequired,\n permissions: PropTypes.array.isRequired,\n deleteShareItem: PropTypes.func.isRequired,\n onChangeUserPermission: PropTypes.func.isRequired,\n};\n\nconst propTypes = {\n isGroupOwnedRepo: PropTypes.bool,\n itemPath: PropTypes.string.isRequired,\n itemType: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired\n};\n\nclass SysAdminShareToUser extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n selectedOption: null,\n errorMsg: [],\n permission: 'rw',\n sharedItems: []\n };\n this.options = [];\n this.permissions = ['rw', 'r'];\n if (isPro) {\n this.permissions.push('admin', 'cloud-edit', 'preview');\n }\n }\n\n handleSelectChange = (option) => {\n this.setState({selectedOption: option});\n this.options = [];\n };\n\n componentDidMount() {\n let repoID = this.props.repoID;\n seafileAPI.sysAdminListRepoSharedItems(repoID, 'user').then((res) => {\n if(res.data.length !== 0) {\n this.setState({sharedItems: res.data});\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n\n setPermission = (permission) => {\n this.setState({permission: permission});\n };\n\n shareToUser = () => {\n let users = [];\n let repoID = this.props.repoID;\n if (this.state.selectedOption && this.state.selectedOption.length > 0 ) {\n for (let i = 0; i < this.state.selectedOption.length; i ++) {\n users[i] = this.state.selectedOption[i].email;\n }\n }\n seafileAPI.sysAdminAddRepoSharedItem(repoID, 'user' , users, this.state.permission).then(res => {\n let errorMsg = [];\n if (res.data.failed.length > 0) {\n for (let i = 0 ; i < res.data.failed.length ; i++) {\n errorMsg[i] = res.data.failed[i];\n }\n }\n let newItems = res.data.success;\n this.setState({\n errorMsg: errorMsg,\n sharedItems: this.state.sharedItems.concat(newItems),\n selectedOption: null,\n permission: 'rw',\n });\n this.refs.userSelect.clearSelect();\n }).catch(error => {\n if (error.response) {\n let message = gettext('Library can not be shared to owner.');\n let errMessage = [];\n errMessage.push(message);\n this.setState({\n errorMsg: errMessage,\n selectedOption: null,\n });\n }\n });\n };\n\n deleteShareItem = (useremail) => {\n let repoID = this.props.repoID;\n seafileAPI.sysAdminDeleteRepoSharedItem(repoID, 'user', useremail).then(res => {\n this.setState({\n sharedItems: this.state.sharedItems.filter( item => { return item.user_email !== useremail; })\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onChangeUserPermission = (item, permission) => {\n let repoID = this.props.repoID;\n let userEmail = item.user_email;\n seafileAPI.sysAdminUpdateRepoSharedItemPermission(repoID, 'user', userEmail, permission).then(() => {\n this.updateSharedItems(item, permission);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateSharedItems = (item, permission) => {\n let username = item.user_name;\n let sharedItems = this.state.sharedItems.map(sharedItem => {\n let sharedItemUsername = sharedItem.user_name;\n if (username === sharedItemUsername) {\n sharedItem.permission = permission;\n sharedItem.is_admin = permission === 'admin' ? true : false;\n }\n return sharedItem;\n });\n this.setState({sharedItems: sharedItems});\n };\n\n render() {\n let { sharedItems } = this.state;\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.state.errorMsg.length > 0 &&\n this.state.errorMsg.map((item, index) => {\n let errMessage = '';\n if (item.email) {\n errMessage = item.email + ': ' + item.error_msg;\n } else {\n errMessage = item;\n }\n return (\n \n \n \n );\n })\n }\n \n
    {gettext('User')}{gettext('Permission')}
    \n \n \n \n \n \n

    {errMessage}

    \n
    \n \n \n \n \n \n \n \n \n \n
    {gettext('User')}{gettext('Permission')}
    \n
    \n
    \n );\n }\n}\n\nSysAdminShareToUser.propTypes = propTypes;\n\nexport default SysAdminShareToUser;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport { isPro, gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../toast';\nimport SharePermissionEditor from '../../select-editor/share-permission-editor';\nimport { SeahubSelect, NoGroupMessage } from '../../common/select';\n\nclass GroupItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOperationShow: false\n };\n }\n\n onMouseEnter = () => {\n this.setState({isOperationShow: true});\n };\n\n onMouseLeave = () => {\n this.setState({isOperationShow: false});\n };\n\n deleteShareItem = () => {\n let item = this.props.item;\n this.props.deleteShareItem(item.group_id);\n };\n\n onChangeUserPermission = (permission) => {\n let item = this.props.item;\n this.props.onChangeUserPermission(item, permission);\n };\n\n render() {\n let item = this.props.item;\n let currentPermission = Utils.getSharedPermission(item);\n return (\n \n {item.group_name}\n \n \n \n \n \n \n \n \n );\n }\n}\n\nGroupItem.propTypes = {\n item: PropTypes.object.isRequired,\n permissions: PropTypes.array.isRequired,\n deleteShareItem: PropTypes.func.isRequired,\n onChangeUserPermission: PropTypes.func.isRequired,\n};\n\nclass GroupList extends React.Component {\n\n render() {\n let items = this.props.items;\n return (\n \n {items.map((item, index) => {\n return (\n \n );\n })}\n \n );\n }\n}\n\nGroupList.propTypes = {\n items: PropTypes.array.isRequired,\n permissions: PropTypes.array.isRequired,\n deleteShareItem: PropTypes.func.isRequired,\n onChangeUserPermission: PropTypes.func.isRequired,\n};\n\nconst propTypes = {\n isGroupOwnedRepo: PropTypes.bool,\n itemPath: PropTypes.string.isRequired,\n itemType: PropTypes.string.isRequired,\n repoID: PropTypes.string.isRequired,\n isRepoOwner: PropTypes.bool.isRequired,\n};\n\nclass SysAdminShareToGroup extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n selectedOption: null,\n errorMsg: [],\n permission: 'rw',\n sharedItems: []\n };\n this.options = [];\n this.permissions = ['rw', 'r'];\n if (isPro) {\n this.permissions.push('admin', 'cloud-edit', 'preview');\n }\n }\n\n handleSelectChange = (option) => {\n this.setState({selectedOption: option});\n };\n\n componentDidMount() {\n this.loadOptions();\n this.listSharedGroups();\n }\n\n loadOptions = () => {\n seafileAPI.shareableGroups().then((res) => {\n this.options = [];\n for (let i = 0 ; i < res.data.length; i++) {\n let obj = {};\n obj.value = res.data[i].name;\n obj.id = res.data[i].id;\n obj.label = res.data[i].name;\n this.options.push(obj);\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n listSharedGroups = () => {\n let repoID = this.props.repoID;\n seafileAPI.sysAdminListRepoSharedItems(repoID, 'group').then((res) => {\n if(res.data.length !== 0) {\n this.setState({\n sharedItems: res.data\n });\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n setPermission = (permission) => {\n this.setState({permission: permission});\n };\n\n shareToGroup = () => {\n let groups = [];\n let repoID = this.props.repoID;\n if (this.state.selectedOption && this.state.selectedOption.length > 0 ) {\n for (let i = 0; i < this.state.selectedOption.length; i ++) {\n groups[i] = this.state.selectedOption[i].id;\n }\n }\n seafileAPI.sysAdminAddRepoSharedItem(repoID, 'group', groups, this.state.permission).then(res => {\n let errorMsg = [];\n if (res.data.failed.length > 0) {\n for (let i = 0 ; i < res.data.failed.length ; i++) {\n errorMsg[i] = res.data.failed[i];\n }\n }\n let items = res.data.success;\n this.setState({\n errorMsg: errorMsg,\n sharedItems: this.state.sharedItems.concat(items),\n selectedOption: null,\n permission: 'rw',\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteShareItem = (groupID) => {\n let repoID = this.props.repoID;\n seafileAPI.sysAdminDeleteRepoSharedItem(repoID, 'group', groupID).then(() => {\n this.setState({\n sharedItems: this.state.sharedItems.filter(item => { return item.group_id !== groupID; })\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onChangeUserPermission = (item, permission) => {\n let repoID = this.props.repoID;\n let groupID = item.group_id;\n seafileAPI.sysAdminUpdateRepoSharedItemPermission(repoID, 'group', groupID, permission).then(() => {\n this.updateSharedItems(item, permission);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateSharedItems = (item, permission) => {\n let groupID = item.group_id;\n let sharedItems = this.state.sharedItems.map(sharedItem => {\n let sharedItemGroupID = sharedItem.group_id;\n if (groupID === sharedItemGroupID) {\n sharedItem.permission = permission;\n sharedItem.is_admin = permission === 'admin' ? true : false;\n }\n return sharedItem;\n });\n this.setState({sharedItems: sharedItems});\n };\n\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.state.errorMsg.length > 0 &&\n this.state.errorMsg.map((item, index) => {\n let errMessage = item.group_name + ': ' + item.error_msg;\n return (\n \n \n \n );\n })\n }\n \n
    {gettext('Group')}{gettext('Permission')}
    \n \n \n \n \n \n

    {errMessage}

    \n
    \n \n \n \n \n \n \n \n \n \n
    {gettext('Group')}{gettext('Permission')}
    \n
    \n
    \n );\n }\n}\n\nSysAdminShareToGroup.propTypes = propTypes;\n\nexport default SysAdminShareToGroup;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, TabContent, TabPane, Nav, NavItem, NavLink } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport SysAdminShareToUser from './sysadmin-share-to-user';\nimport SysAdminShareToGroup from './sysadmin-share-to-group';\nimport '../../../css/share-link-dialog.css';\n\nconst propTypes = {\n itemName: PropTypes.string.isRequired,\n itemPath: PropTypes.string.isRequired,\n toggleDialog: PropTypes.func.isRequired,\n repoID: PropTypes.string.isRequired,\n isGroupOwnedRepo: PropTypes.bool.isRequired,\n repoEncrypted: PropTypes.bool,\n userPerm: PropTypes.string,\n enableDirPrivateShare: PropTypes.bool\n};\n\nclass SysAdminShareDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n activeTab: this.getInitialActiveTab(),\n isRepoOwner: false\n };\n }\n\n getInitialActiveTab = () => {\n return 'shareToUser';\n };\n\n toggle = (tab) => {\n if (this.state.activeTab !== tab) {\n this.setState({activeTab: tab});\n }\n };\n\n renderDirContent = () => {\n let activeTab = this.state.activeTab;\n const { enableDirPrivateShare, isGroupOwnedRepo } = this.props;\n return (\n \n
    \n \n
    \n
    \n \n {enableDirPrivateShare &&\n \n \n \n \n \n \n \n \n }\n \n
    \n
    \n );\n };\n\n render() {\n return (\n
    \n \n {gettext('Share')} {this.props.itemName}\n \n {this.renderDirContent()}\n \n \n
    \n );\n }\n}\n\nSysAdminShareDialog.propTypes = propTypes;\n\nexport default SysAdminShareDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Form, FormGroup, Label, Input, Alert } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../toast';\n\nconst propTypes = {\n itemName: PropTypes.string.isRequired,\n toggleDialog: PropTypes.func.isRequired,\n repoID: PropTypes.string.isRequired,\n};\n\nclass SysAdminLibHistorySettingDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n keepDays: -1,\n expireDays: 30,\n disabled: true,\n allHistory: true,\n noHistory: false,\n autoHistory: false,\n errorInfo: ''\n };\n }\n\n componentDidMount() {\n seafileAPI.sysAdminGetRepoHistorySetting(this.props.repoID).then(res => {\n this.setState({\n keepDays: res.data.keep_days,\n allHistory: res.data.keep_days < 0 ? true : false,\n noHistory: res.data.keep_days === 0 ? true : false,\n autoHistory: res.data.keep_days > 0 ? true : false,\n disabled: res.data.keep_days > 0 ? false : true,\n expireDays: res.data.keep_days > 0 ? res.data.keep_days : 30,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n }\n\n submit = () => {\n let days = this.state.keepDays;\n if (this.state.autoHistory) {\n days = this.state.expireDays;\n }\n let repoID = this.props.repoID;\n let reg = /^-?\\d+$/;\n let flag = reg.test(days);\n if (flag) {\n let message = gettext('Successfully set library history.');\n seafileAPI.sysAdminUpdateRepoHistorySetting(repoID, days).then(res => {\n toaster.success(message);\n this.setState({keepDays: res.data.keep_days});\n this.props.toggleDialog();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n this.setState({\n errorInfo: gettext('Please enter a non-negative integer'),\n });\n }\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.submit();\n e.preventDefault();\n }\n };\n\n onChange = (e) => {\n let num = e.target.value;\n this.setState({\n keepDays: num,\n expireDays: num,\n });\n };\n\n setLimitDays = (type) => {\n if (type === 'allHistory') {\n this.setState({\n keepDays: -1,\n });\n } else if (type === 'noHistory') {\n this.setState({\n keepDays: 0,\n });\n } else {\n this.setState({\n disabled: false\n });\n }\n\n this.setState({\n allHistory: type === 'allHistory' ? true : false,\n noHistory: type === 'noHistory' ? true : false,\n autoHistory: type === 'autoHistory' ? true : false,\n });\n };\n\n render() {\n const itemName = this.props.itemName;\n return (\n \n \n {itemName}{' '}\n {gettext('History Setting')}\n \n \n
    \n \n {this.setLimitDays('allHistory');}}/>{' '}\n \n \n \n {this.setLimitDays('noHistory');}}/>{' '}\n \n \n \n {this.setLimitDays('autoHistory');}}/>{' '}\n \n {' '}\n \n \n {this.state.errorInfo && {this.state.errorInfo}}\n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminLibHistorySettingDialog.propTypes = propTypes;\n\nexport default SysAdminLibHistorySettingDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, siteRoot, isPro } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport ModalPortal from '../../../components/modal-portal';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport TransferDialog from '../../../components/dialog/transfer-dialog';\nimport DeleteRepoDialog from '../../../components/dialog/delete-repo-dialog';\nimport SysAdminShareDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-share-dialog';\nimport SysAdminLibHistorySettingDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-lib-history-setting-dialog';\nimport UserLink from '../user-link';\n\nconst { enableSysAdminViewRepo } = window.sysadmin.pageOptions;\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n getPreviousPageList = () => {\n this.props.getListByPage(this.props.pageInfo.current_page - 1);\n };\n\n getNextPageList = () => {\n this.props.getListByPage(this.props.pageInfo.current_page + 1);\n };\n\n sortByFileCount = (e) => {\n e.preventDefault();\n this.props.sortItems('file_count');\n };\n\n sortBySize = (e) => {\n e.preventDefault();\n this.props.sortItems('size');\n };\n\n render() {\n // offer 'sort' only for 'all repos'\n const { loading, errorMsg, items, pageInfo, curPerPage, sortBy } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No libraries')}

    \n
    \n );\n const initialSortIcon = ;\n const sortIcon = ;\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {/*icon*/}{gettext('Name')}\n {sortBy != undefined ?\n \n {gettext('Files')} {sortBy == 'file_count' ? sortIcon : initialSortIcon}{' / '}\n {gettext('Size')} {sortBy == 'size' ? sortIcon : initialSortIcon}\n :\n gettext('Files') / gettext('Size')\n }\n ID{gettext('Owner')}{/*Operations*/}
    \n {pageInfo &&\n \n }\n
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n deleteItem: PropTypes.func,\n onDeleteRepo: PropTypes.func.isRequired,\n onRestoreRepo: PropTypes.func,\n getListByPage: PropTypes.func.isRequired,\n resetPerPage: PropTypes.func,\n pageInfo: PropTypes.object,\n curPerPage: PropTypes.number,\n sortItems: PropTypes.func,\n sortBy: PropTypes.string,\n onTransferRepo: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isShareDialogOpen: false,\n isDeleteDialogOpen: false,\n isTransferDialogOpen: false,\n isHistorySettingDialogOpen: false,\n isRepoDeleted: false,\n };\n }\n\n onDeleteRepo = (repo) => {\n seafileAPI.sysAdminDeleteRepo(repo.id).then((res) => {\n this.props.onDeleteRepo(repo);\n this.setState({\n isDeleteDialogOpen: false,\n isRepoDeleted: true,\n });\n const msg = gettext('Successfully deleted {name}.').replace('{name}', repo.name);\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n\n this.setState({isRepoDeleted: false});\n });\n };\n\n onTransferRepo = (owner) => {\n seafileAPI.sysAdminTransferRepo(this.props.repo.id, owner.email).then((res) => {\n this.props.onTransferRepo(res.data);\n let message = gettext('Successfully transferred the library.');\n toaster.success(message);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n this.toggleTransferDialog();\n };\n\n handleMouseOver = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseOut = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Share':\n this.toggleShareDialog();\n break;\n case 'Delete':\n this.toggleDeleteDialog();\n break;\n case 'Transfer':\n this.toggleTransferDialog();\n break;\n case 'History Setting':\n this.toggleHistorySettingDialog();\n break;\n default:\n break;\n }\n };\n\n toggleShareDialog = () => {\n this.setState({isShareDialogOpen: !this.state.isShareDialogOpen});\n };\n\n toggleDeleteDialog = () => {\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n toggleTransferDialog = () => {\n this.setState({isTransferDialogOpen: !this.state.isTransferDialogOpen});\n };\n\n toggleHistorySettingDialog = () => {\n this.setState({isHistorySettingDialogOpen: !this.state.isHistorySettingDialogOpen});\n };\n\n renderRepoName = () => {\n const { repo } = this.props;\n if (repo.name) {\n if (isPro && enableSysAdminViewRepo && !repo.encrypted) {\n return {repo.name};\n } else {\n return repo.name;\n }\n } else {\n return '--';\n }\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'Share':\n translateResult = gettext('Share');\n break;\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n case 'Transfer':\n translateResult = gettext('Transfer');\n break;\n case 'History Setting':\n translateResult = gettext('History Setting');\n break;\n default:\n break;\n }\n\n return translateResult;\n };\n\n getOperations = () => {\n const { repo } = this.props;\n let operations = ['Delete', 'Transfer'];\n if (!repo.encrypted) {\n operations.push('Share');\n }\n operations.push('History Setting');\n return operations;\n };\n\n render () {\n const { repo } = this.props;\n const {\n isOpIconShown,\n isShareDialogOpen,\n isDeleteDialogOpen,\n isTransferDialogOpen,\n isHistorySettingDialogOpen\n } = this.state;\n let iconUrl = Utils.getLibIconUrl(repo);\n let iconTitle = Utils.getLibIconTitle(repo);\n const index = repo.owner_email.indexOf('@seafile_group');\n let isGroupOwnedRepo = index != -1;\n let departmentID;\n if (isGroupOwnedRepo) {\n departmentID = repo.owner_email.substring(0, index);\n }\n\n return (\n \n \n {iconTitle}\n {this.renderRepoName()}\n {`${repo.file_count} / ${Utils.bytesToSize(repo.size)}`}\n {repo.id}\n \n {isGroupOwnedRepo ?\n {repo.owner_name} :\n \n }\n \n \n {(!isGroupOwnedRepo && isOpIconShown) &&\n \n }\n \n \n {isShareDialogOpen &&\n \n \n \n }\n {isDeleteDialogOpen &&\n \n \n \n }\n {isTransferDialogOpen &&\n \n \n \n }\n {isHistorySettingDialogOpen &&\n \n \n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n repo: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n onDeleteRepo: PropTypes.func.isRequired,\n onTransferRepo: PropTypes.func.isRequired,\n};\n\nexport default Content;\n","import React, { Component, Fragment } from 'react';\nimport { navigate } from '@gatsbyjs/reach-router';\nimport { Button } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, siteRoot } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport SysAdminCreateRepoDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-create-repo-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Search from '../search';\nimport ReposNav from './repos-nav';\nimport Content from './repos';\n\nclass AllRepos extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n repos: [],\n pageInfo: {},\n perPage: 25,\n sortBy: '',\n isCreateRepoDialogOpen: false\n };\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage = 1, perPage, sortBy } = this.state;\n this.setState({\n sortBy: urlParams.get('order_by') || sortBy,\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getReposByPage(this.state.currentPage);\n });\n }\n\n toggleCreateRepoDialog = () => {\n this.setState({isCreateRepoDialogOpen: !this.state.isCreateRepoDialogOpen});\n };\n\n getReposByPage = (page) => {\n const { perPage, sortBy } = this.state;\n seafileAPI.sysAdminListAllRepos(page, perPage, sortBy).then((res) => {\n this.setState({\n loading: false,\n repos: res.data.repos,\n pageInfo: res.data.page_info\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n sortItems = (sortBy) => {\n this.setState({\n currentPage: 1,\n sortBy: sortBy\n }, () => {\n let url = new URL(location.href);\n let searchParams = new URLSearchParams(url.search);\n const { currentPage, sortBy } = this.state;\n searchParams.set('page', currentPage);\n searchParams.set('order_by', sortBy);\n url.search = searchParams.toString();\n navigate(url.toString());\n this.getReposByPage(currentPage);\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getReposByPage(1);\n });\n };\n\n createRepo = (repoName, Owner) => {\n seafileAPI.sysAdminCreateRepo(repoName, Owner).then(res => {\n this.state.repos.unshift(res.data);\n this.setState({\n repos: this.state.repos\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onDeleteRepo = (targetRepo) => {\n let repos = this.state.repos.filter(repo => {\n return repo.id != targetRepo.id;\n });\n this.setState({\n repos: repos\n });\n };\n\n onTransferRepo = (targetRepo) => {\n let repos = this.state.repos.map((item) => {\n return item.id == targetRepo.id ? targetRepo : item;\n });\n this.setState({\n repos: repos\n });\n };\n\n getSearch = () => {\n return ;\n };\n\n searchRepos = (repoNameOrID) => {\n if (this.getValueLength(repoNameOrID) < 3) {\n toaster.notify(gettext('Required at least three letters.'));\n return;\n }\n navigate(`${siteRoot}sys/search-libraries/?name_or_id=${encodeURIComponent(repoNameOrID)}`);\n };\n\n getValueLength(str) {\n let code, len = 0;\n for (let i = 0, length = str.length; i < length; i++) {\n code = str.charCodeAt(i);\n if (code === 10) { //solve enter problem\n len += 2;\n } else if (code < 0x007f) {\n len += 1;\n } else if (code >= 0x0080 && code <= 0x07ff) {\n len += 2;\n } else if (code >= 0x0800 && code <= 0xffff) {\n len += 3;\n }\n }\n return len;\n }\n\n render() {\n let { isCreateRepoDialogOpen } = this.state;\n return (\n \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isCreateRepoDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nexport default AllRepos;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, siteRoot } from '../../../utils/constants';\nimport Loading from '../../../components/loading';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport ReposNav from './repos-nav';\n\nclass Content extends Component {\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const table = (\n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}ID{gettext('Description')}
    \n
    \n );\n return table;\n }\n }\n}\n\n\nContent.propTypes = {\n resetPerPage: PropTypes.func,\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n currentPage: PropTypes.number,\n curPerPage: PropTypes.number,\n hasNextPage: PropTypes.bool,\n};\n\nclass Item extends Component {\n render() {\n const item = this.props.item;\n return (\n \n {item.name}\n {item.id}\n {item.description}\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nclass SystemRepo extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: []\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetSystemRepoInfo().then((res) => {\n let items = [];\n items.push(res.data);\n this.setState({\n items: items,\n loading: false\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n render() {\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default SystemRepo;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport ModalPortal from '../../../components/modal-portal';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Search from '../search';\nimport UserLink from '../user-link';\nimport ReposNav from './repos-nav';\n\nconst { trashReposExpireDays } = window.sysadmin.pageOptions;\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n getPreviousPageList = () => {\n this.props.getListByPage(this.props.pageInfo.current_page - 1);\n };\n\n getNextPageList = () => {\n this.props.getListByPage(this.props.pageInfo.current_page + 1);\n };\n\n render() {\n const { loading, errorMsg, items, pageInfo, curPerPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No deleted libraries')}

    \n
    \n );\n const table = (\n \n

    {gettext('Tip: libraries deleted {trashReposExpireDays} days ago will be cleaned automatically.').replace('{trashReposExpireDays}', trashReposExpireDays)}

    \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {/*icon*/}{gettext('Name')}{gettext('Owner')}{gettext('Deleted Time')}{/*Operations*/}
    \n {pageInfo &&\n \n }\n
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n deleteItem: PropTypes.func,\n onDeleteRepo: PropTypes.func.isRequired,\n onRestoreRepo: PropTypes.func,\n getListByPage: PropTypes.func.isRequired,\n resetPerPage: PropTypes.func,\n pageInfo: PropTypes.object,\n curPerPage: PropTypes.number,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n highlight: false,\n isOpIconShown: false,\n isDeleteRepoDialogOpen: false,\n isRestoreRepoDialogOpen: false\n };\n }\n\n handleMouseOver = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseOut = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n onDeleteRepo = () => {\n const repo = this.props.repo;\n seafileAPI.sysAdminDeleteTrashRepo(repo.id).then((res) => {\n this.props.onDeleteRepo(repo);\n const msg = gettext('Successfully deleted {name}.').replace('{name}', repo.name);\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onRestoreRepo = () => {\n const repo = this.props.repo;\n seafileAPI.sysAdminRestoreTrashRepo(repo.id).then((res) => {\n this.props.onRestoreRepo(repo);\n let message = gettext('Successfully restored the library.');\n toaster.success(message);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n toggleDeleteRepoDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isDeleteRepoDialogOpen: !this.state.isDeleteRepoDialogOpen});\n };\n\n toggleRestoreRepoDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isRestoreRepoDialogOpen: !this.state.isRestoreRepoDialogOpen});\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'Restore':\n translateResult = gettext('Restore');\n break;\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n default:\n break;\n }\n\n return translateResult;\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Restore':\n this.toggleRestoreRepoDialog();\n break;\n case 'Delete':\n this.toggleDeleteRepoDialog();\n break;\n default:\n break;\n }\n };\n\n render () {\n const { repo } = this.props;\n const { isOpIconShown, isDeleteRepoDialogOpen, isRestoreRepoDialogOpen } = this.state;\n const iconUrl = Utils.getLibIconUrl(repo);\n const iconTitle = Utils.getLibIconTitle(repo);\n const repoName = '' + Utils.HTMLescape(repo.name) + '';\n\n return (\n \n \n {iconTitle}\n {repo.name}\n \n {repo.owner.indexOf('@seafile_group') == -1 ?\n :\n repo.group_name}\n \n {moment(repo.delete_time).fromNow()}\n \n {isOpIconShown && (\n \n )}\n \n \n {isDeleteRepoDialogOpen &&\n \n \n \n }\n {isRestoreRepoDialogOpen &&\n \n \n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n repo: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n onDeleteRepo: PropTypes.func.isRequired,\n onRestoreRepo: PropTypes.func,\n};\n\nclass TrashRepos extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n repos: [],\n pageInfo: {},\n perPage: 25,\n isCleanTrashDialogOpen: false\n };\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage = 1, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getReposByPage(this.state.currentPage);\n });\n }\n\n toggleCleanTrashDialog = () => {\n this.setState({isCleanTrashDialogOpen: !this.state.isCleanTrashDialogOpen});\n };\n\n getReposByPage = (page) => {\n let perPage = this.state.perPage;\n seafileAPI.sysAdminListTrashRepos(page, perPage).then((res) => {\n this.setState({\n repos: res.data.repos,\n pageInfo: res.data.page_info,\n loading: false\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getReposByPage(1);\n });\n };\n\n onDeleteRepo = (targetRepo) => {\n let repos = this.state.repos.filter(repo => {\n return repo.id != targetRepo.id;\n });\n this.setState({\n repos: repos\n });\n };\n\n onRestoreRepo = (targetRepo) => {\n let repos = this.state.repos.filter(repo => {\n return repo.id != targetRepo.id;\n });\n this.setState({\n repos: repos\n });\n };\n\n cleanTrash = () => {\n seafileAPI.sysAdminCleanTrashRepos().then(res => {\n this.setState({repos: []});\n toaster.success(gettext('Successfully cleared trash.'));\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n getSearch = () => {\n return ;\n };\n\n searchRepos = (owner) => {\n seafileAPI.sysAdminSearchTrashRepos(owner).then((res) => {\n this.setState({\n repos: res.data.repos,\n pageInfo: null,\n errorMsg: '', // necessary!\n loading: false\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n render() {\n const { isCleanTrashDialogOpen } = this.state;\n\n // enable 'search': \n return (\n \n {this.state.repos.length ? (\n \n \n \n ) : \n }\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isCleanTrashDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nexport default TrashRepos;\n","import React, { Component, Fragment } from 'react';\nimport { Form, FormGroup, Input, Label, Col } from 'reactstrap';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport { Utils } from '../../../utils/utils';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Content from './repos';\n\n\nclass SearchRepos extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n name: '',\n currentPage: 1,\n perPage: 25,\n isSubmitBtnActive: false,\n loading: true,\n errorMsg: '',\n repos: [],\n pageInfo: {},\n };\n }\n\n componentDidMount() {\n let params = (new URL(document.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n name: params.get('name_or_id') || '',\n perPage: parseInt(params.get('per_page') || perPage),\n currentPage: parseInt(params.get('page') || currentPage),\n }, () => {\n this.getRepos(this.state.currentPage);\n });\n }\n\n getRepos = (page) => {\n const { name, perPage } = this.state;\n if (this.getValueLength(name) < 3) {\n toaster.notify(gettext('Required at least three letters.'));\n return;\n }\n seafileAPI.sysAdminSearchRepos(name, page, perPage).then((res) => {\n this.setState({\n loading: false,\n errorMsg: '',\n repos: res.data.repo_list,\n pageInfo: res.data.page_info,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n searchRepos = () => {\n const { currentPage } = this.state;\n this.getRepos(currentPage);\n };\n\n onDeleteRepo = (targetRepo) => {\n let repos = this.state.repos.filter(repo => {\n return repo.id != targetRepo.id;\n });\n this.setState({\n repos: repos\n });\n };\n\n onTransferRepo = (targetRepo) => {\n let repos = this.state.repos.map((item) => {\n return item.id == targetRepo.id ? targetRepo : item;\n });\n this.setState({\n repos: repos\n });\n };\n\n handleNameInputChange = (e) => {\n this.setState({\n name: e.target.value,\n currentPage: 1,\n }, this.checkSubmitBtnActive);\n };\n\n checkSubmitBtnActive = () => {\n const { name } = this.state;\n this.setState({\n isSubmitBtnActive: name.trim()\n });\n };\n\n handleKeyDown = (e) => {\n if (e.keyCode === 13) {\n const { isSubmitBtnActive } = this.state;\n if (isSubmitBtnActive) {\n this.searchRepos();\n }\n }\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage,\n currentPage: 1,\n }, () => {\n this.searchRepos();\n });\n };\n\n getValueLength(str) {\n let code, len = 0;\n for (let i = 0, length = str.length; i < length; i++) {\n code = str.charCodeAt(i);\n if (code === 10) { //solve enter problem\n len += 2;\n } else if (code < 0x007f) {\n len += 1;\n } else if (code >= 0x0080 && code <= 0x07ff) {\n len += 2;\n } else if (code >= 0x0800 && code <= 0xffff) {\n len += 3;\n }\n }\n return len;\n }\n\n render() {\n const { name, isSubmitBtnActive } = this.state;\n return (\n \n \n
    \n
    \n
    \n

    {gettext('Libraries')}

    \n
    \n
    \n
    \n

    {gettext('Search Libraries')}

    \n

    {gettext('Tip: you can search by keyword in name or ID.')}

    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n

    {gettext('Result')}

    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default SearchRepos;\n","class Dirent {\n constructor(obj) {\n this.name = obj.obj_name;\n this.mtime = obj.last_update;\n this.size = obj.file_size;\n this.is_file = obj.is_file;\n }\n\n isDir() {\n return !this.is_file;\n }\n}\n\nexport default Dirent;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\n\nconst propTypes = {\n repoName: PropTypes.string.isRequired,\n currentPath: PropTypes.string.isRequired,\n onPathClick: PropTypes.func.isRequired,\n isSystemRepo: PropTypes.bool.isRequired,\n repoID: PropTypes.string.isRequired,\n};\n\nclass DirPath extends React.Component {\n\n onPathClick = (e) => {\n let path = Utils.getEventData(e, 'path');\n this.props.onPathClick(path);\n };\n\n turnPathToLink = (path) => {\n path = path[path.length - 1] === '/' ? path.slice(0, path.length - 1) : path;\n let pathList = path.split('/');\n let nodePath = '';\n let pathElem = pathList.map((item, index) => {\n if (item === '') {\n return null;\n }\n if (index === (pathList.length - 1)) {\n return (\n \n /\n {item}\n \n );\n } else {\n nodePath += '/' + item;\n return (\n \n /\n {item}\n \n );\n }\n });\n return pathElem;\n };\n\n render() {\n let { isSystemRepo, currentPath, repoName } = this.props;\n let pathElem = this.turnPathToLink(currentPath);\n\n return (\n
    \n {isSystemRepo ?\n {gettext('System')} :\n {gettext('All')}\n }\n /\n {(currentPath === '/' || currentPath === '') ?\n {repoName}:\n {repoName}\n }\n {pathElem}\n
    \n );\n }\n}\n\nDirPath.propTypes = propTypes;\n\nexport default DirPath;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport Loading from '../../../components/loading';\n\nclass DirentItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false\n };\n }\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n openFolder = () => {\n this.props.openFolder(this.props.dirent);\n };\n\n deleteDirent = (e) => {\n e.preventDefault();\n this.props.deleteDirent(this.props.dirent);\n };\n\n downloadDirent = (e) => {\n e.preventDefault();\n this.props.downloadDirent(this.props.dirent);\n };\n\n render () {\n let { isOpIconShown } = this.state;\n let { dirent, fromSystemRepo } = this.props;\n let iconUrl = Utils.getDirentIcon(dirent);\n\n return (\n \n \n \n \n {dirent.is_file ?\n dirent.name :\n {dirent.name}\n }\n \n \n {isOpIconShown && fromSystemRepo &&\n \n }\n {isOpIconShown && dirent.is_file &&\n \n }\n \n {dirent.size}\n {moment(dirent.mtime).fromNow()}\n \n \n );\n }\n}\n\nDirentItem.propTypes = {\n dirent: PropTypes.object.isRequired,\n fromSystemRepo: PropTypes.bool.isRequired,\n deleteDirent: PropTypes.func.isRequired,\n openFolder: PropTypes.func.isRequired,\n downloadDirent: PropTypes.func.isRequired,\n};\n\nclass DirContent extends React.Component {\n\n render() {\n let { loading, errorMsg, direntList } = this.props;\n\n if (loading) {\n return ;\n }\n\n if (errorMsg) {\n return

    {errorMsg}

    ;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {direntList.map((dirent, index) => {\n return ;\n })}\n \n
    {/*icon*/}{gettext('Name')}{/*operation*/}{gettext('Size')}{gettext('Last Update')}
    \n
    \n );\n }\n}\n\nDirContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n openFolder: PropTypes.func.isRequired,\n direntList: PropTypes.array.isRequired,\n fromSystemRepo: PropTypes.bool.isRequired,\n deleteDirent: PropTypes.func.isRequired,\n downloadDirent: PropTypes.func.isRequired,\n};\n\nexport default DirContent;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport axios from 'axios';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport CreateFolderDialog from '../../../components/dialog/create-folder-dialog';\nimport Dirent from '../../../models/system-admin/dirent';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport DirPathBar from './dir-path-bar';\nimport DirContent from './dir-content';\n\nclass DirView extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n isSystemRepo: false,\n repoName: '',\n path: '',\n direntList: [],\n isNewFolderDialogOpen: false\n };\n this.fileInput = React.createRef();\n }\n\n componentDidMount () {\n this.loadDirentList('/');\n }\n\n onPathClick = (path) => {\n this.loadDirentList(path);\n };\n\n toggleNewFolderDialog = () => {\n this.setState({isNewFolderDialogOpen: !this.state.isNewFolderDialogOpen});\n };\n\n createNewFolder = (path) => {\n let folderName = Utils.getFileName(path);\n seafileAPI.sysAdminCreateSysRepoFolder(this.props.repoID, this.state.path, folderName).then(res => {\n let new_dirent = new Dirent(res.data);\n let direntList = this.state.direntList;\n direntList.unshift(new_dirent);\n this.setState({\n direntList: direntList\n });\n this.toggleNewFolderDialog();\n }).catch((err) => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n openFolder = (dirent) => {\n let direntPath = Utils.joinPath(this.state.path, dirent.name);\n if (!dirent.is_file) {\n this.loadDirentList(direntPath);\n }\n };\n\n loadDirentList = (path) => {\n const repoID = this.props.repoID;\n seafileAPI.sysAdminListRepoDirents(repoID, path).then(res => {\n const { is_system_library: isSystemRepo, repo_name: repoName, dirent_list } = res.data;\n let direntList = [];\n dirent_list.forEach(item => {\n let dirent = new Dirent(item);\n direntList.push(dirent);\n });\n this.setState({\n loading: false,\n repoName: repoName,\n isSystemRepo: isSystemRepo,\n direntList: direntList,\n path: path,\n }, () => {\n let url = siteRoot + 'sys/libraries/' + repoID + '/' + encodeURIComponent(this.state.repoName) + Utils.encodePath(path);\n window.history.replaceState({url: url, path: path}, path, url);\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n deleteDirent = (dirent) => {\n let path = Utils.joinPath(this.state.path, dirent.name);\n seafileAPI.sysAdminDeleteRepoDirent(this.props.repoID, path).then(res => {\n toaster.success(gettext('Successfully deleted 1 item.'));\n let direntList = this.state.direntList.filter(item => {\n return item.name != dirent.name;\n });\n this.setState({\n direntList: direntList\n });\n }).catch((err) => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n downloadDirent = (dirent) => {\n let path = Utils.joinPath(this.state.path, dirent.name);\n seafileAPI.sysAdminGetRepoFileDownloadURL(this.props.repoID, path).then(res => {\n location.href = res.data.download_url;\n }).catch((err) => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n openFileInput = () => {\n this.fileInput.current.click();\n };\n\n onFileInputChange = () => {\n if (!this.fileInput.current.files.length) {\n return;\n }\n const file = this.fileInput.current.files[0];\n\n let { path } = this.state;\n seafileAPI.sydAdminGetSysRepoItemUploadURL(path).then(res => {\n let formData = new FormData();\n formData.append('parent_dir', path);\n formData.append('file', file);\n axios.post(res.data.upload_link, formData).then(res => {\n const fileObj = res.data[0];\n let newDirent = new Dirent({\n 'is_file': true,\n 'obj_name': fileObj.name,\n 'file_size': Utils.bytesToSize(fileObj.size),\n 'last_update': (new Date()).getTime()\n });\n let direntList = this.state.direntList;\n const dirs = direntList.filter(item => { return !item.is_file; });\n direntList.splice(dirs.length, 0, newDirent);\n this.setState({\n direntList: direntList\n });\n });\n }).catch((err) => {\n let errMessage = Utils.getErrorMsg(err);\n toaster.danger(errMessage);\n });\n };\n\n checkDuplicatedName = (newName) => {\n let direntList = this.state.direntList;\n let isDuplicated = direntList.some(object => {\n return object.name === newName;\n });\n return isDuplicated;\n };\n\n render() {\n const { loading, errorMsg,\n repoName, direntList, isSystemRepo, path,\n isNewFolderDialogOpen } = this.state;\n const { repoID } = this.props;\n\n return (\n \n {isSystemRepo ?\n \n \n \n \n \n \n : \n }\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n {isNewFolderDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nDirView.propTypes = {\n repoID: PropTypes.string,\n};\n\nexport default DirView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter, Form, FormGroup, Label, Alert } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport UserSelect from '../../user-select';\n\n\nconst propTypes = {\n createGroup: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass SysAdminCreateGroupDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n groupName: '',\n ownerEmail: '',\n errMessage: '',\n isSubmitBtnActive: false\n };\n }\n\n handleRepoNameChange = (e) => {\n if (!e.target.value.trim()) {\n this.setState({isSubmitBtnActive: false});\n } else {\n this.setState({isSubmitBtnActive: true});\n }\n\n this.setState({groupName: e.target.value});\n };\n\n handleSubmit = () => {\n let groupName = this.state.groupName.trim();\n this.props.createGroup(groupName, this.state.ownerEmail);\n };\n\n handleSelectChange = (option) => {\n // option can be null\n this.setState({\n ownerEmail: option ? option.email : ''\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n toggle = () => {\n this.props.toggleDialog();\n };\n\n render() {\n return (\n \n {gettext('New Group')}\n \n
    \n \n \n \n \n \n \n
    \n {this.state.errMessage && {this.state.errMessage}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminCreateGroupDialog.propTypes = propTypes;\n\nexport default SysAdminCreateGroupDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { gettext } from '../../../utils/constants';\nimport UserSelect from '../../user-select';\n\nconst propTypes = {\n groupName: PropTypes.string.isRequired,\n transferGroup: PropTypes.func.isRequired,\n toggleDialog: PropTypes.func.isRequired\n};\n\nclass SysAdminTransferGroupDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n selectedOption: null,\n submitBtnDisabled: true\n };\n }\n\n handleSelectChange = (option) => {\n this.setState({\n selectedOption: option,\n submitBtnDisabled: option == null\n });\n };\n\n submit = () => {\n const receiver = this.state.selectedOption.email;\n this.props.transferGroup(receiver);\n this.props.toggleDialog();\n };\n\n render() {\n const { submitBtnDisabled } = this.state;\n const groupName = '' + Utils.HTMLescape(this.props.groupName) +'';\n const msg = gettext('Transfer Group {placeholder} to').replace('{placeholder}', groupName);\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nSysAdminTransferGroupDialog.propTypes = propTypes;\n\nexport default SysAdminTransferGroupDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport Loading from '../../../components/loading';\nimport EmptyTip from '../../../components/empty-tip';\nimport Paginator from '../../../components/paginator';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport SysAdminTransferGroupDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-group-transfer-dialog';\nimport UserLink from '../user-link';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n getPreviousPage = () => {\n this.props.getListByPage(this.props.pageInfo.current_page - 1);\n };\n\n getNextPage = () => {\n this.props.getListByPage(this.props.pageInfo.current_page + 1);\n };\n\n render() {\n const { loading, errorMsg, items, pageInfo, curPerPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No groups')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Owner')}{gettext('Created At')}{/* operation */}
    \n {pageInfo &&\n \n }\n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getDeviceErrorsListByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n curPerPage: PropTypes.number,\n pageInfo: PropTypes.object,\n getListByPage: PropTypes.func.isRequired,\n deleteGroup: PropTypes.func.isRequired,\n transferGroup: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isDeleteDialogOpen: false,\n isTransferDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Delete':\n this.toggleDeleteDialog();\n break;\n case 'Transfer':\n this.toggleTransferDialog();\n break;\n default:\n break;\n }\n };\n\n toggleDeleteDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n toggleTransferDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isTransferDialogOpen: !this.state.isTransferDialogOpen});\n };\n\n deleteGroup = () => {\n this.props.deleteGroup(this.props.item.id);\n };\n\n transferGroup = (receiver) => {\n this.props.transferGroup(this.props.item.id, receiver);\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n case 'Transfer':\n translateResult = gettext('Transfer');\n break;\n }\n\n return translateResult;\n };\n\n render() {\n const { item } = this.props;\n const { isOpIconShown, isDeleteDialogOpen, isTransferDialogOpen } = this.state;\n\n let groupName = '' + Utils.HTMLescape(item.name) + '';\n let deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?').replace('{placeholder}', groupName);\n\n const groupUrl = item.parent_group_id == 0 ?\n `${siteRoot}sys/groups/${item.id}/libraries/` :\n `${siteRoot}sys/departments/${item.id}/`;\n\n return (\n \n \n {item.name}\n \n {item.owner == 'system admin' ?\n '--' :\n \n }\n \n \n {moment(item.created_at).fromNow()}\n \n \n {(isOpIconShown && item.owner != 'system admin') &&\n \n }\n \n \n {isDeleteDialogOpen &&\n \n }\n {isTransferDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n deleteGroup: PropTypes.func.isRequired,\n transferGroup: PropTypes.func.isRequired,\n};\n\nexport default Content;\n","import React, { Component, Fragment } from 'react';\nimport { navigate } from '@gatsbyjs/reach-router';\nimport { Button } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport SysAdminCreateGroupDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-create-group-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Search from '../search';\nimport Content from './groups-content';\n\nclass Groups extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n groupList: [],\n pageInfo: {},\n perPage: 25,\n isCreateGroupDialogOpen: false\n };\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage = 1, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getGroupListByPage(this.state.currentPage);\n });\n }\n\n toggleCreateGroupDialog = () => {\n this.setState({isCreateGroupDialogOpen: !this.state.isCreateGroupDialogOpen});\n };\n\n getGroupListByPage = (page) => {\n seafileAPI.sysAdminListAllGroups(page, this.state.perPage).then((res) => {\n this.setState({\n loading: false,\n groupList: res.data.groups,\n pageInfo: res.data.page_info\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getGroupListByPage(1);\n });\n };\n\n createGroup = (groupName, OnwerEmail) => {\n seafileAPI.sysAdminCreateNewGroup(groupName, OnwerEmail).then(res => {\n let newGroupList = this.state.groupList;\n newGroupList.unshift(res.data);\n this.setState({\n groupList: newGroupList\n });\n this.toggleCreateGroupDialog();\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteGroup = (groupID) => {\n seafileAPI.sysAdminDismissGroupByID(groupID).then(res => {\n let newGroupList = this.state.groupList.filter(item => {\n return item.id != groupID;\n });\n this.setState({\n groupList: newGroupList\n });\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n transferGroup = (groupID, receiverEmail) => {\n seafileAPI.sysAdminTransferGroup(receiverEmail, groupID).then(res => {\n let newGroupList = this.state.groupList.map(item => {\n if (item.id == groupID) {\n item = res.data;\n }\n return item;\n });\n this.setState({\n groupList: newGroupList\n });\n toaster.success(gettext('Successfully transferred the group.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n getSearch = () => {\n return ;\n };\n\n searchGroups = (name) => {\n navigate(`${siteRoot}sys/search-groups/?name=${encodeURIComponent(name)}`);\n };\n\n render() {\n let { isCreateGroupDialogOpen } = this.state;\n\n return (\n \n \n \n \n {gettext('Export Excel')}\n \n \n
    \n
    \n
    \n

    {gettext('Groups')}

    \n
    \n
    \n \n
    \n
    \n
    \n {isCreateGroupDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nexport default Groups;\n","import React, { Component, Fragment } from 'react';\nimport { Form, FormGroup, Input, Label, Col } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Content from './groups-content';\n\nclass SearchGroups extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n name: '',\n isSubmitBtnActive: false,\n loading: true,\n errorMsg: '',\n groupList: [],\n pageInfo: null\n };\n }\n\n componentDidMount () {\n let params = (new URL(document.location)).searchParams;\n this.setState({\n name: params.get('name') || ''\n }, this.getGroups);\n }\n\n getGroups = () => {\n const { name } = this.state;\n seafileAPI.sysAdminSearchGroups(name).then((res) => {\n this.setState({\n loading: false,\n groupList: res.data.group_list\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n deleteGroup = (groupID) => {\n seafileAPI.sysAdminDismissGroupByID(groupID).then(res => {\n let newGroupList = this.state.groupList.filter(item => {\n return item.id != groupID;\n });\n this.setState({\n groupList: newGroupList\n });\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n transferGroup = (groupID, receiverEmail) => {\n seafileAPI.sysAdminTransferGroup(receiverEmail, groupID).then(res => {\n let newGroupList = this.state.groupList.map(item => {\n if (item.id == groupID) {\n item = res.data;\n }\n return item;\n });\n this.setState({\n groupList: newGroupList\n });\n toaster.success(gettext('Successfully transferred the group.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n handleNameInputChange = (e) => {\n this.setState({\n name: e.target.value\n }, this.checkSubmitBtnActive);\n };\n\n checkSubmitBtnActive = () => {\n const { name } = this.state;\n this.setState({\n isSubmitBtnActive: name.trim()\n });\n };\n\n handleKeyDown = (e) => {\n if (e.keyCode === 13) {\n const { isSubmitBtnActive } = this.state;\n if (isSubmitBtnActive) {\n this.getGroups();\n }\n }\n };\n\n render() {\n const { name, isSubmitBtnActive } = this.state;\n\n return (\n \n \n
    \n
    \n
    \n

    {gettext('Groups')}

    \n
    \n
    \n
    \n

    {gettext('Search Groups')}

    \n

    {gettext('Tip: you can search by keyword in name.')}

    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n

    {gettext('Result')}

    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default SearchGroups;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n currentItem: PropTypes.string.isRequired,\n groupName: PropTypes.string.isRequired,\n groupID: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'repos', urlPart: 'groups/' + this.props.groupID + '/libraries', text: gettext('Libraries')},\n {name: 'members', urlPart: 'groups/' + this.props.groupID + '/members', text: gettext('Members')}\n ];\n }\n\n render() {\n const { groupName, currentItem } = this.props;\n return (\n
    \n
    \n

    {gettext('Groups')} / {groupName}

    \n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { siteRoot, gettext, isPro } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport GroupNav from './group-nav';\n\nconst { enableSysAdminViewRepo } = window.sysadmin.pageOptions;\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No libraries')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {/* icon */}{gettext('Name')}{gettext('Size')}{gettext('Shared By')}{/*Operations*/}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getDeviceErrorsListByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n curPerPage: PropTypes.number,\n pageInfo: PropTypes.object,\n unshareRepo: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n isUnshareRepoDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n this.setState({isOpIconShown: true});\n };\n\n handleMouseLeave = () => {\n this.setState({isOpIconShown: false});\n };\n\n toggleUnshareRepoDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isUnshareRepoDialogOpen: !this.state.isUnshareRepoDialogOpen});\n };\n\n unshareRepo = () => {\n const { item } = this.props;\n this.props.unshareRepo(item.repo_id, item.name);\n this.toggleUnshareRepoDialog();\n };\n\n renderRepoName = () => {\n const { item } = this.props;\n const repo = item;\n repo.id = item.repo_id;\n if (repo.name) {\n if (isPro && enableSysAdminViewRepo && !repo.encrypted) {\n return {repo.name};\n } else {\n return repo.name;\n }\n } else {\n return '--';\n }\n };\n\n render() {\n let { isOpIconShown, isUnshareRepoDialogOpen } = this.state;\n let { item } = this.props;\n\n let iconUrl = Utils.getLibIconUrl(item);\n let iconTitle = Utils.getLibIconTitle(item);\n\n let repoName = '' + Utils.HTMLescape(item.name) + '';\n let dialogMsg = gettext('Are you sure you want to unshare {placeholder} ?').replace('{placeholder}', repoName);\n\n return (\n \n \n {iconTitle}\n {this.renderRepoName()}\n {Utils.bytesToSize(item.size)}\n \n \n \n \n \n \n \n {isUnshareRepoDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n unshareRepo: PropTypes.func.isRequired,\n};\n\nclass GroupRepos extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n groupName: '',\n repoList: []\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminListGroupRepos(this.props.groupID).then((res) => {\n this.setState({\n loading: false,\n repoList: res.data.libraries,\n groupName: res.data.group_name\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n unshareRepo = (repoID, repoName) => {\n seafileAPI.sysAdminUnshareRepoFromGroup(this.props.groupID, repoID).then(res => {\n let newRepoList = this.state.repoList.filter(item => {\n return item.repo_id != repoID;\n });\n this.setState({\n repoList: newRepoList\n });\n const msg = gettext('Successfully unshared library {placeholder}')\n .replace('{placeholder}', repoName);\n toaster.success(msg);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nGroupRepos.propTypes = {\n groupID: PropTypes.string,\n};\n\nexport default GroupRepos;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport UserSelect from '../../user-select';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n addMembers: PropTypes.func.isRequired\n};\n\nclass SysAdminGroupAddMemberDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n selectedOptions: null,\n isSubmitBtnDisabled: true\n };\n }\n\n handleSelectChange = (options) => {\n this.setState({\n selectedOptions: options,\n isSubmitBtnDisabled: !options.length\n });\n };\n\n addMembers = () => {\n let emails = this.state.selectedOptions.map(item => item.email);\n this.props.addMembers(emails);\n this.props.toggle();\n };\n\n render() {\n const { isSubmitBtnDisabled } = this.state;\n return (\n \n {gettext('Add Member')}\n \n \n \n \n \n \n \n \n );\n }\n}\n\nSysAdminGroupAddMemberDialog.propTypes = propTypes;\n\nexport default SysAdminGroupAddMemberDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport SysAdminGroupAddMemberDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-group-add-member-dialog';\nimport RoleSelector from '../../../components/single-selector';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport GroupNav from './group-nav';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n toggleItemFreezed = (isFreezed) => {\n this.setState({ isItemFreezed: isFreezed });\n };\n\n getPreviousPageList = () => {\n this.props.getListByPage(this.props.pageInfo.current_page - 1);\n };\n\n getNextPageList = () => {\n this.props.getListByPage(this.props.pageInfo.current_page + 1);\n };\n\n render() {\n const { loading, errorMsg, items, pageInfo, curPerPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No members')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {/* icon */}{gettext('Name')}{gettext('Role')}{/*Operations*/}
    \n {pageInfo &&\n \n }\n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n removeMember: PropTypes.func.isRequired,\n resetPerPage: PropTypes.func,\n updateMemberRole: PropTypes.func.isRequired,\n curPerPage: PropTypes.number,\n pageInfo: PropTypes.object,\n getListByPage: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.roleOptions = [\n { value: 'Admin', text: gettext('Admin'), isSelected: false },\n { value: 'Member', text: gettext('Member'), isSelected: false }\n ];\n this.state = {\n highlighted: false,\n isDeleteDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n if (this.props.isItemFreezed) return;\n this.setState({highlighted: true});\n };\n\n handleMouseLeave = () => {\n if (this.props.isItemFreezed) return;\n this.setState({highlighted: false});\n };\n\n toggleDeleteDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n removeMember = () => {\n const { item } = this.props;\n this.props.removeMember(item.email, item.name);\n this.toggleDeleteDialog();\n };\n\n updateMemberRole = (roleOption) => {\n this.props.updateMemberRole(this.props.item.email, roleOption.value);\n };\n\n render() {\n let { highlighted, isDeleteDialogOpen } = this.state;\n let { item } = this.props;\n\n let itemName = '' + Utils.HTMLescape(item.name) + '';\n let dialogMsg = gettext('Are you sure you want to remove {placeholder} ?').replace('{placeholder}', itemName);\n\n const { role: curRole } = item;\n this.roleOptions = this.roleOptions.map(item => {\n item.isSelected = item.value == curRole;\n return item;\n });\n const currentSelectedOption = this.roleOptions.filter(item => item.isSelected)[0];\n\n return (\n \n \n \"\"\n \n \n {item.role == 'Owner' ?\n gettext('Owner') :\n \n }\n \n \n {item.role != 'Owner' &&\n \n }\n \n \n {isDeleteDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n removeMember: PropTypes.func.isRequired,\n updateMemberRole: PropTypes.func.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n toggleItemFreezed: PropTypes.func.isRequired\n};\n\nclass GroupMembers extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n groupName: '',\n memberList: [],\n pageInfo: {},\n currentPage: 1,\n perPage: 25,\n isAddMemberDialogOpen: false\n };\n }\n\n componentDidMount () {\n\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n currentPage: parseInt(urlParams.get('page') || currentPage),\n perPage: parseInt(urlParams.get('per_page') || perPage)\n }, () => {\n this.getListByPage(this.state.currentPage);\n });\n }\n\n getListByPage = (page) => {\n const { perPage } = this.state;\n seafileAPI.sysAdminListGroupMembers(this.props.groupID, page, perPage).then((res) => {\n this.setState({\n loading: false,\n memberList: res.data.members,\n groupName: res.data.group_name,\n pageInfo: res.data.page_info\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getListByPage(1);\n });\n };\n\n toggleAddMemgerDialog = () => {\n this.setState({isAddMemberDialogOpen: !this.state.isAddMemberDialogOpen});\n };\n\n addMembers = (emails) => {\n seafileAPI.sysAdminAddGroupMember(this.props.groupID, emails).then(res => {\n let newMemberList = res.data.success;\n if (newMemberList.length) {\n this.setState({\n memberList: newMemberList.concat(this.state.memberList)\n });\n newMemberList.forEach(item => {\n const msg = gettext('Successfully added {email_placeholder}')\n .replace('{email_placeholder}', item.email);\n toaster.success(msg);\n });\n }\n res.data.failed.forEach(item => {\n const msg = gettext('Failed to add {email_placeholder}: {error_msg_placeholder}')\n .replace('{email_placeholder}', item.email)\n .replace('{error_msg_placeholder}', item.error_msg);\n toaster.danger(msg, {duration: 3});\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n removeMember = (email, name) => {\n seafileAPI.sysAdminDeleteGroupMember(this.props.groupID, email).then(res => {\n let newRepoList = this.state.memberList.filter(item => {\n return item.email != email;\n });\n this.setState({\n memberList: newRepoList\n });\n toaster.success(gettext('Successfully removed {placeholder}.').replace('{placeholder}', name));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateMemberRole = (email, role) => {\n let isAdmin = role == 'Admin';\n seafileAPI.sysAdminUpdateGroupMemberRole(this.props.groupID, email, isAdmin).then(res => {\n let newRepoList = this.state.memberList.map(item => {\n if (item.email == email) {\n item.role = role;\n }\n return item;\n });\n this.setState({\n memberList: newRepoList\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n let { isAddMemberDialogOpen } = this.state;\n return (\n \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isAddMemberDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nGroupMembers.propTypes = {\n groupID: PropTypes.string,\n};\n\nexport default GroupMembers;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport '../../../css/org-department-item.css';\n\nclass Departments extends React.Component {\n render() {\n return (\n
    \n {this.props.children}\n
    \n );\n }\n}\n\nDepartments.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nexport default Departments;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input, Form, FormGroup, Label } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\n\nconst propTypes = {\n groupID: PropTypes.string,\n parentGroupID: PropTypes.string,\n toggle: PropTypes.func.isRequired,\n onAddNewDepartment: PropTypes.func.isRequired\n};\n\nclass AddDepartDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n departName: '',\n errMessage: '',\n };\n }\n\n handleSubmit = () => {\n let isValid = this.validateName();\n if (isValid) {\n let parentGroup = -1;\n if (this.props.parentGroupID) {\n parentGroup = this.props.parentGroupID;\n }\n seafileAPI.sysAdminAddNewDepartment(parentGroup, this.state.departName.trim()).then((res) => {\n this.props.toggle();\n this.props.onAddNewDepartment(res.data);\n }).catch(error => {\n let errorMsg = gettext(error.response.data.error_msg);\n this.setState({ errMessage: errorMsg });\n });\n }\n };\n\n validateName = () => {\n let errMessage = '';\n const name = this.state.departName.trim();\n if (!name.length) {\n errMessage = gettext('Name is required');\n this.setState({ errMessage: errMessage });\n return false;\n }\n return true;\n };\n\n handleChange = (e) => {\n this.setState({\n departName: e.target.value,\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n render() {\n let header = this.props.parentGroupID ? gettext('New Sub-department') : gettext('New Department');\n return (\n \n {header}\n \n
    \n \n \n \n \n
    \n {this.state.errMessage &&

    {this.state.errMessage}

    }\n
    \n \n \n \n \n
    \n );\n }\n}\n\nAddDepartDialog.propTypes = propTypes;\n\nexport default AddDepartDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input, Form, FormGroup, Label } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\n\nconst propTypes = {\n groupID: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]).isRequired,\n name: PropTypes.string.isRequired,\n toggle: PropTypes.func.isRequired,\n onDepartmentNameChanged: PropTypes.func.isRequired\n};\n\nclass RenameDepartmentDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n departmentName: this.props.name,\n errMessage: ''\n };\n this.newInput = React.createRef();\n }\n\n handleSubmit = () => {\n let isValid = this.validateName();\n if (isValid) {\n seafileAPI.sysAdminRenameDepartment(this.props.groupID, this.state.departmentName.trim()).then((res) => {\n this.props.toggle();\n this.props.onDepartmentNameChanged(res.data);\n toaster.success(gettext('Success'));\n }).catch(error => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({ errMessage: errorMsg });\n });\n }\n };\n\n validateName = () => {\n let errMessage = '';\n const name = this.state.departmentName.trim();\n if (!name.length) {\n errMessage = gettext('Name is required');\n this.setState({ errMessage: errMessage });\n return false;\n }\n return true;\n };\n\n handleChange = (e) => {\n this.setState({\n departmentName: e.target.value\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n onAfterModelOpened = () => {\n if (!this.newInput.current) return;\n this.newInput.current.focus();\n this.newInput.current.select();\n };\n\n render() {\n let header = gettext('Rename Department');\n return (\n \n {header}\n \n
    \n \n \n \n \n
    \n {this.state.errMessage &&

    {this.state.errMessage}

    }\n
    \n \n \n \n \n
    \n );\n }\n}\n\nRenameDepartmentDialog.propTypes = propTypes;\n\nexport default RenameDepartmentDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\n\nconst propTypes = {\n group: PropTypes.object.isRequired,\n toggle: PropTypes.func.isRequired,\n onDeleteDepartment: PropTypes.func.isRequired\n};\n\nclass DeleteDepartmentDialog extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n deleteDepart = () => {\n this.props.toggle();\n const { group } = this.props;\n seafileAPI.sysAdminDeleteDepartment(group.id).then((res) => {\n this.props.onDeleteDepartment(group.id);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { group } = this.props;\n\n let tipMessage = gettext('Are you sure you want to delete {placeholder} ?');\n tipMessage = tipMessage.replace('{placeholder}', '' + Utils.HTMLescape(group.name) + '');\n return (\n \n {gettext('Delete Department')}\n \n

    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nDeleteDepartmentDialog.propTypes = propTypes;\n\nexport default DeleteDepartmentDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input, InputGroupAddon, InputGroup } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../toast';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n groupID: PropTypes.number.isRequired,\n onSetQuota: PropTypes.func.isRequired,\n};\n\nclass SetGroupQuotaDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n quota: '',\n errMessage: '',\n };\n }\n\n setGroupQuota = () => {\n const numberReg = /^[1-9]\\d*$/im;\n let quota = this.state.quota;\n if ((quota.length && numberReg.test(quota)) || quota == -2) {\n this.setState({ errMessage: '' });\n let newQuota = this.state.quota == -2 ? this.state.quota : this.state.quota * 1000000;\n seafileAPI.sysAdminUpdateDepartmentQuota(this.props.groupID, newQuota).then((res) => {\n this.props.toggle();\n this.props.onSetQuota(res.data);\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n } else {\n const err = gettext('Quota is invalid.');\n this.setState({ errMessage: err });\n }\n };\n\n handleChange = (e) => {\n const quota = e.target.value.trim();\n this.setState({ quota: quota });\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.setGroupQuota();\n e.preventDefault();\n }\n };\n\n render() {\n return (\n \n {gettext('Set Quota')}\n \n \n \n {'MB'}\n \n

    \n
    {gettext('An integer that is greater than 0 or equal to -2.')}
    \n {gettext('Tip: -2 means no limit.')}\n

    \n {this.state.errMessage &&

    {this.state.errMessage}

    }\n
    \n \n \n \n \n
    \n );\n }\n}\n\nSetGroupQuotaDialog.propTypes = propTypes;\n\nexport default SetGroupQuotaDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Utils } from '../../../utils/utils';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport ModalPortal from '../../../components/modal-portal';\nimport RenameDepartmentDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-rename-department-dialog';\nimport DeleteDepartmentDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-delete-department-dialog';\nimport SetGroupQuotaDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-set-group-quota-dialog';\n\nconst GroupItemPropTypes = {\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n group: PropTypes.object.isRequired,\n onDepartmentNameChanged: PropTypes.func.isRequired,\n onDeleteDepartment: PropTypes.func.isRequired,\n onSetDepartmentQuota: PropTypes.func.isRequired\n};\n\nclass GroupItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isSetQuotaDialogOpen: false,\n isDeleteDialogOpen: false,\n isRenameDialogOpen: false\n };\n }\n\n handleMouseOver = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseOut = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'Rename':\n translateResult = gettext('Rename');\n break;\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n default:\n break;\n }\n\n return translateResult;\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Rename':\n this.toggleRenameDialog();\n break;\n case 'Delete':\n this.toggleDeleteDialog();\n break;\n default:\n break;\n }\n };\n\n toggleRenameDialog = () => {\n this.setState({\n isRenameDialogOpen: !this.state.isRenameDialogOpen\n });\n };\n\n toggleDeleteDialog = () => {\n this.setState({\n isDeleteDialogOpen: !this.state.isDeleteDialogOpen\n });\n };\n\n toggleSetQuotaDialog = () => {\n this.setState({\n isSetQuotaDialogOpen: !this.state.isSetQuotaDialogOpen\n });\n };\n\n render() {\n const { group } = this.props;\n const { highlight, isOpIconShown, isRenameDialogOpen, isDeleteDialogOpen, isSetQuotaDialogOpen } = this.state;\n const newHref = siteRoot+ 'sys/departments/' + group.id + '/';\n return (\n \n \n {group.name}\n {moment(group.created_at).fromNow()}\n \n {Utils.bytesToSize(group.quota)}{' '}\n \n \n \n {isOpIconShown &&\n \n }\n \n \n {isDeleteDialogOpen && (\n \n \n \n )}\n {isSetQuotaDialogOpen && (\n \n \n \n )}\n {isRenameDialogOpen && (\n \n )}\n \n );\n }\n}\n\nGroupItem.propTypes = GroupItemPropTypes;\n\nexport default GroupItem;\n","import React, { Fragment } from 'react';\nimport moment from 'moment';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport ModalPortal from '../../../components/modal-portal';\nimport AddDepartDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-department-dialog';\nimport { gettext, lang } from '../../../utils/constants';\nimport GroupItem from './group-item';\nimport '../../../css/org-department-item.css';\n\nmoment.locale(lang);\n\nclass DepartmentList extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n groups: null,\n groupID: '',\n isShowAddDepartDialog: false,\n isItemFreezed: false\n };\n }\n\n componentDidMount() {\n this.listDepartments();\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n listDepartments = () => {\n seafileAPI.sysAdminListAllDepartments().then(res => {\n this.setState({ groups: res.data.data });\n });\n };\n\n toggleAddDepartDialog = () => {\n this.setState({ isShowAddDepartDialog: !this.state.isShowAddDepartDialog });\n };\n\n onDepartmentNameChanged = (dept) => {\n this.setState({\n groups: this.state.groups.map(item => {\n if (item.id == dept.id) {\n item.name = dept.name;\n }\n return item;\n })\n });\n };\n\n onAddNewDepartment = (newDepartment) => {\n const { groups } = this.state;\n groups.unshift(newDepartment);\n this.setState({\n groups: groups\n });\n };\n\n onDeleteDepartment = (id) => {\n const { groups } = this.state;\n this.setState({\n groups: groups.filter((item) => item.id != id)\n });\n };\n\n onSetDepartmentQuota = (target) => {\n const { groups } = this.state;\n this.setState({\n groups: groups.map((item) => {\n if (item.id == target.id) {\n item.quota = target.quota;\n }\n return item;\n })\n });\n };\n\n render() {\n const groups = this.state.groups;\n const topbarChildren = (\n \n \n {this.state.isShowAddDepartDialog && (\n \n \n \n )}\n \n );\n return (\n \n \n {topbarChildren}\n \n
    \n
    \n
    \n
    \n

    {gettext('Departments')}

    \n
    \n
    \n
    \n {groups && groups.length > 0 ?\n \n \n \n \n \n \n \n \n \n \n {groups.map((group, index) => {\n return(\n \n \n \n );\n })}\n \n
    {gettext('Name')}{gettext('Created At')}{gettext('Quota')}
    \n :\n

    {gettext('No departments')}

    \n }\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default DepartmentList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../toast';\nimport UserSelect from '../../user-select';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n groupID: PropTypes.string.isRequired,\n onAddNewMembers: PropTypes.func.isRequired\n};\n\nclass AddMemberDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n selectedOption: null,\n errMessage: '',\n };\n }\n\n handleSelectChange = (option) => {\n this.setState({ selectedOption: option });\n };\n\n handleSubmit = () => {\n if (!this.state.selectedOption) return;\n const emails = this.state.selectedOption.map(item => item.email);\n this.refs.orgSelect.clearSelect();\n this.setState({ errMessage: [] });\n seafileAPI.sysAdminAddGroupMember(this.props.groupID, emails).then((res) => {\n this.setState({ selectedOption: null });\n if (res.data.failed.length > 0) {\n this.setState({ errMessage: res.data.failed[0].error_msg });\n }\n if (res.data.success.length > 0) {\n this.props.onAddNewMembers(res.data.success);\n this.props.toggle();\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n {gettext('Add Member')}\n \n \n { this.state.errMessage &&

    {this.state.errMessage}

    }\n
    \n \n \n \n \n
    \n );\n }\n}\n\nAddMemberDialog.propTypes = propTypes;\n\nexport default AddMemberDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input, Form, FormGroup, Label } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n groupID: PropTypes.string,\n onAddNewRepo: PropTypes.func.isRequired\n};\n\nclass AddRepoDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n repoName: '',\n errMessage: '',\n };\n }\n\n handleSubmit = () => {\n let isValid = this.validateName();\n if (isValid) {\n seafileAPI.sysAdminAddRepoInDepartment(this.props.groupID, this.state.repoName.trim()).then((res) => {\n this.props.toggle();\n this.props.onAddNewRepo(res.data);\n }).catch(error => {\n let errorMsg = Utils.getErrorMsg(error);\n this.setState({ errMessage: errorMsg });\n });\n }\n };\n\n validateName = () => {\n let errMessage = '';\n const name = this.state.repoName.trim();\n if (!name.length) {\n errMessage = gettext('Name is required');\n this.setState({ errMessage: errMessage });\n return false;\n }\n return true;\n };\n\n handleChange = (e) => {\n this.setState({\n repoName: e.target.value,\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n render() {\n return (\n \n {gettext('New Library')}\n \n
    \n \n \n \n \n
    \n {this.state.errMessage &&

    {this.state.errMessage}

    }\n
    \n \n \n \n \n
    \n );\n }\n}\n\nAddRepoDialog.propTypes = propTypes;\n\nexport default AddRepoDialog;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport ModalPortal from '../../../components/modal-portal';\nimport AddDepartmentDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-department-dialog';\nimport RenameDepartmentDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-rename-department-dialog';\nimport AddMemberDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-member-dialog';\nimport AddRepoDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-repo-dialog';\nimport { siteRoot, gettext, lang } from '../../../utils/constants';\n\nimport '../../../css/org-department-item.css';\n\nmoment.locale(lang);\n\nconst DepartmentDetailPropTypes = {\n groupID: PropTypes.string,\n currentItem: PropTypes.string.isRequired,\n onAddNewDepartment: PropTypes.func,\n onAddNewMembers: PropTypes.func,\n onAddNewRepo: PropTypes.func,\n children: PropTypes.object\n};\n\nclass Department extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n groupName: '',\n ancestorGroups: [],\n isShowAddDepartmentDialog: false,\n isShowAddMemberDialog: false,\n isShowRenameDepartmentDialog: false,\n isShowAddRepoDialog: false\n };\n\n this.navItems = [\n {name: 'subDepartments', urlPart: '/', text: gettext('Sub-departments')},\n {name: 'members', urlPart: '/members/', text: gettext('Members')},\n {name: 'repos', urlPart: '/libraries/', text: gettext('Libraries')}\n ];\n }\n\n componentDidMount() {\n const groupID = this.props.groupID;\n this.getDepartmentInfo(groupID);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.props.groupID !== nextProps.groupID) {\n this.getDepartmentInfo(nextProps.groupID);\n }\n }\n\n getDepartmentInfo = (groupID) => {\n seafileAPI.sysAdminGetDepartmentInfo(groupID, true).then(res => {\n this.setState({\n ancestorGroups: res.data.ancestor_groups,\n groupName: res.data.name,\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onDepartmentNameChanged = (dept) => {\n this.setState({\n groupName: dept.name\n });\n };\n\n toggleRenameDepartmentDialog = () => {\n this.setState({ isShowRenameDepartmentDialog: !this.state.isShowRenameDepartmentDialog });\n };\n\n toggleAddRepoDialog = () => {\n this.setState({ isShowAddRepoDialog: !this.state.isShowAddRepoDialog });\n };\n\n toggleAddMemberDialog = () => {\n this.setState({ isShowAddMemberDialog: !this.state.isShowAddMemberDialog });\n };\n\n toggleAddDepartmentDialog = () => {\n this.setState({ isShowAddDepartmentDialog: !this.state.isShowAddDepartmentDialog});\n };\n\n render() {\n const { groupID, currentItem } = this.props;\n const { groupName } = this.state;\n\n const topBtn = 'btn btn-secondary operation-item';\n const topbarChildren = (\n \n {groupID &&\n \n \n {currentItem == 'subDepartments' && }\n {currentItem == 'members' && }\n {currentItem == 'repos' && }\n \n }\n {this.state.isShowRenameDepartmentDialog && (\n \n \n \n )}\n {this.state.isShowAddMemberDialog && (\n \n \n \n )}\n {this.state.isShowAddRepoDialog && (\n \n \n \n )}\n {this.state.isShowAddDepartmentDialog && (\n \n \n \n )}\n \n );\n\n return (\n \n \n {topbarChildren}\n \n
    \n
    \n
    \n
    \n

    \n {groupID ?\n {gettext('Departments')}\n : {gettext('Departments')}\n }\n {this.state.ancestorGroups.map(ancestor => {\n let newHref = siteRoot + 'sys/departments/' + ancestor.id + '/';\n return {' / '}{ancestor.name};\n })}\n {groupID && {' / '}{groupName}}\n

    \n
    \n
    \n\n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n {this.props.children}\n
    \n
    \n
    \n );\n }\n}\n\nDepartment.propTypes = DepartmentDetailPropTypes;\n\nexport default Department;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\nimport { gettext, lang } from '../../../utils/constants';\nimport GroupItem from './group-item';\nimport Department from './department';\n\nimport '../../../css/org-department-item.css';\n\nmoment.locale(lang);\n\nconst SubDepartmentsPropTypes = {\n groupID: PropTypes.string\n};\n\nclass SubDepartments extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false,\n groups: []\n };\n }\n\n componentDidMount() {\n this.listSubDepartments(this.props.groupID);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.props.groupID !== nextProps.groupID) {\n this.listSubDepartments(nextProps.groupID);\n }\n }\n\n listSubDepartments = (groupID) => {\n seafileAPI.sysAdminGetDepartmentInfo(groupID, true).then(res => {\n this.setState({groups: res.data.groups});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n onSubDepartmentNameChanged = (dept) => {\n this.setState({\n groups: this.state.groups.map(item => {\n if (item.id == dept.id) {\n item.name = dept.name;\n }\n return item;\n })\n });\n };\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n onAddNewDepartment = (newDepartment) => {\n const { groups } = this.state;\n groups.unshift(newDepartment);\n this.setState({\n groups: groups\n });\n };\n\n onDeleteDepartment = (id) => {\n const { groups } = this.state;\n this.setState({\n groups: groups.filter(item => item.id != id)\n });\n };\n\n onSetDepartmentQuota = (target) => {\n const { groups } = this.state;\n this.setState({\n groups: groups.map((item) => {\n if (item.id == target.id) {\n item.quota = target.quota;\n }\n return item;\n })\n });\n };\n\n render() {\n const { groups } = this.state;\n const { groupID } = this.props;\n\n return (\n \n
    \n {groups && groups.length > 0 ?\n \n \n \n \n \n \n \n \n \n \n {groups.map((group, index) => {\n return(\n \n );\n })}\n \n
    {gettext('Name')}{gettext('Created At')}{gettext('Quota')}
    \n :

    {gettext('No sub-departments')}

    \n }\n
    \n \n );\n }\n}\n\nSubDepartments.propTypes = SubDepartmentsPropTypes;\n\nexport default SubDepartments;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../toast';\n\nconst propTypes = {\n member: PropTypes.object.isRequired,\n groupID: PropTypes.string,\n toggle: PropTypes.func.isRequired,\n onMemberChanged: PropTypes.func.isRequired\n};\n\nclass DeleteMemberDialog extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n deleteMember = () => {\n const userEmail = this.props.member.email;\n seafileAPI.sysAdminDeleteGroupMember(this.props.groupID, userEmail).then((res) => {\n if (res.data.success) {\n this.props.onMemberChanged();\n this.props.toggle();\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n let tipMessage = gettext('Are you sure you want to delete {placeholder} ?');\n tipMessage = tipMessage.replace('{placeholder}', '' + Utils.HTMLescape(this.props.member.name) + '');\n return (\n \n {gettext('Delete Member')}\n \n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nDeleteMemberDialog.propTypes = propTypes;\n\nexport default DeleteMemberDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport RoleSelector from '../../../components/single-selector';\nimport UserLink from '../user-link';\n\nconst MemberItemPropTypes = {\n groupID: PropTypes.string,\n member: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onMemberChanged: PropTypes.func.isRequired,\n showDeleteMemberDialog: PropTypes.func.isRequired,\n toggleItemFreezed: PropTypes.func.isRequired,\n};\n\nclass MemberItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n highlight: false\n };\n this.roleOptions = [\n { value: 'Admin', text: gettext('Admin'), isSelected: false },\n { value: 'Member', text: gettext('Member'), isSelected: false }\n ];\n }\n\n onMouseEnter = () => {\n if (this.props.isItemFreezed) return;\n this.setState({ highlight: true });\n };\n\n onMouseLeave = () => {\n if (this.props.isItemFreezed) return;\n this.setState({ highlight: false });\n };\n\n onChangeUserRole = (roleOption) => {\n let isAdmin = roleOption.value === 'Admin' ? true : false;\n seafileAPI.sysAdminUpdateGroupMemberRole(this.props.groupID, this.props.member.email, isAdmin).then((res) => {\n this.props.onMemberChanged();\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n this.setState({\n highlight: false\n });\n };\n\n render() {\n const member = this.props.member;\n const highlight = this.state.highlight;\n if (member.role === 'Owner') return null;\n this.roleOptions = this.roleOptions.map(item => {\n item.isSelected = item.value == member.role;\n return item;\n });\n const currentSelectedOption = this.roleOptions.filter(item => item.isSelected)[0];\n return (\n \n \"member-header\"\n \n \n \n \n \n \n \n \n );\n }\n}\n\nMemberItem.propTypes = MemberItemPropTypes;\n\nexport default MemberItem;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport Paginator from '../../../components/paginator';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport ModalPortal from '../../../components/modal-portal';\nimport DeleteMemberDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-delete-member-dialog';\nimport { gettext, lang } from '../../../utils/constants';\nimport MemberItem from './member-item';\nimport Department from './department';\nimport '../../../css/org-department-item.css';\n\nmoment.locale(lang);\n\nconst DepartmentMembersPropTypes = {\n groupID: PropTypes.string,\n};\n\nclass DepartmentMembers extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false,\n members: [],\n membersErrorMsg: '',\n currentPageInfo: {\n },\n currentPage: 1,\n perPage: 25,\n deletedMember: {},\n showDeleteMemberDialog: false\n };\n }\n\n componentDidMount() {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n const { groupID } = this.props;\n this.listMembers(groupID, this.state.currentPage, this.state.perPage);\n });\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.props.groupID !== nextProps.groupID) {\n this.listMembers(nextProps.groupID, this.state.currentPage, this.state.perPage);\n }\n }\n\n listMembers = (groupID, page, perPage) => {\n seafileAPI.sysAdminListGroupMembers(groupID, page, perPage).then((res) => {\n this.setState({\n members: res.data.members,\n currentPageInfo: res.data.page_info\n });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n this.setState({membersErrorMsg: errMessage});\n });\n };\n\n getPreviousPageList = () => {\n this.listMembers(this.props.groupID, this.state.currentPageInfo.current_page - 1, this.state.perPage);\n };\n\n getNextPageList = () => {\n this.listMembers(this.props.groupID, this.state.currentPageInfo.current_page + 1, this.state.perPage);\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.listMembers(this.props.groupID, 1, perPage);\n });\n };\n\n toggleCancel = () => {\n this.setState({\n showDeleteMemberDialog: false,\n });\n };\n\n onMemberChanged = () => {\n this.listMembers(this.props.groupID, this.state.currentPageInfo.current_page, this.state.perPage);\n };\n\n toggleItemFreezed = (isFreezed) => {\n this.setState({ isItemFreezed: isFreezed });\n };\n\n showDeleteMemberDialog = (member) => {\n this.setState({ showDeleteMemberDialog: true, deletedMember: member });\n };\n\n onAddNewMembers = (newMembers) => {\n const { members } = this.state;\n members.unshift(...newMembers);\n this.setState({ members });\n };\n\n render() {\n const { members, membersErrorMsg } = this.state;\n const { groupID } = this.props;\n\n return (\n \n \n
    \n {membersErrorMsg ?

    {membersErrorMsg}

    :\n members.length == 0 ?\n

    {gettext('No members')}

    :\n \n \n \n \n \n \n \n \n \n \n \n {members.map((member, index) => {\n return (\n \n \n \n );\n })}\n \n
    {gettext('Name')}{gettext('Role')}
    \n {this.state.currentPageInfo &&\n \n }\n
    \n }\n
    \n \n {this.state.showDeleteMemberDialog && (\n \n \n \n )}\n
    \n );\n }\n}\n\nDepartmentMembers.propTypes = DepartmentMembersPropTypes;\n\nexport default DepartmentMembers;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../toast';\n\nclass DeleteRepoDialog extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n deleteRepo = () => {\n seafileAPI.sysAdminDeleteRepoInDepartment(this.props.groupID, this.props.repo.repo_id).then((res) => {\n if (res.data.success) {\n this.props.onRepoChanged();\n this.props.toggle();\n }\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { repo } = this.props;\n let tipMessage = gettext('Are you sure you want to delete {placeholder} ?');\n tipMessage = tipMessage.replace('{placeholder}', '' + Utils.HTMLescape(repo.name || repo.repo_name) + '');\n return (\n \n {gettext('Delete Library')}\n \n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nconst propTypes = {\n repo: PropTypes.object.isRequired,\n toggle: PropTypes.func.isRequired,\n groupID: PropTypes.string,\n onRepoChanged: PropTypes.func.isRequired\n};\n\nDeleteRepoDialog.propTypes = propTypes;\n\nexport default DeleteRepoDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../../utils/utils';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst { enableSysAdminViewRepo } = window.sysadmin.pageOptions;\n\nconst RepoItemPropTypes = {\n repo: PropTypes.object.isRequired,\n showDeleteRepoDialog: PropTypes.func.isRequired\n};\n\nclass RepoItem extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n highlight: false\n };\n }\n\n onMouseEnter = () => {\n this.setState({ highlight: true });\n };\n\n onMouseLeave = () => {\n this.setState({ highlight: false });\n };\n\n render() {\n const { repo } = this.props;\n const repoName = repo.name || repo.repo_name;\n const highlight = this.state.highlight;\n let iconUrl = Utils.getLibIconUrl(repo);\n return (\n \n {gettext('icon')}/\n { enableSysAdminViewRepo ?\n {repoName}\n :\n {repoName}\n }\n {Utils.bytesToSize(repo.size)}\n \n \n \n \n );\n }\n}\n\nRepoItem.propTypes = RepoItemPropTypes;\n\nexport default RepoItem;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\nimport ModalPortal from '../../../components/modal-portal';\nimport DeleteRepoDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-delete-repo-dialog';\nimport { gettext, lang } from '../../../utils/constants';\nimport RepoItem from './repo-item';\nimport Department from './department';\nimport '../../../css/org-department-item.css';\n\nmoment.locale(lang);\n\nconst DepartmentDetailPropTypes = {\n groupID: PropTypes.string,\n};\n\nclass DepartmentDetail extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n repos: [],\n deletedRepo: {},\n showDeleteRepoDialog: false\n };\n }\n\n componentDidMount() {\n const { groupID } = this.props;\n this.listGroupRepo(groupID);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.props.groupID !== nextProps.groupID) {\n this.listGroupRepo(nextProps.groupID);\n }\n }\n\n listGroupRepo = (groupID) => {\n seafileAPI.sysAdminListGroupRepos(groupID).then(res => {\n this.setState({ repos: res.data.libraries });\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n toggleCancel = () => {\n this.setState({\n showDeleteRepoDialog: false\n });\n };\n\n onRepoChanged = () => {\n this.listGroupRepo(this.props.groupID);\n };\n\n showDeleteRepoDialog = (repo) => {\n this.setState({ showDeleteRepoDialog: true, deletedRepo: repo });\n };\n\n onAddNewRepo = (newRepo) => {\n const { repos } = this.state;\n repos.unshift(newRepo);\n this.setState({ repos });\n };\n\n render() {\n const { repos } = this.state;\n const { groupID } = this.props;\n\n return (\n \n \n {repos.length > 0 ?\n
    \n \n \n \n \n \n \n \n \n \n \n {repos.map((repo, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Name')}{gettext('Size')}
    \n
    \n :

    {gettext('No libraries')}

    \n }\n
    \n {this.state.showDeleteRepoDialog && (\n \n \n \n )}\n
    \n );\n }\n}\n\nDepartmentDetail.propTypes = DepartmentDetailPropTypes;\n\nexport default DepartmentDetail;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'shareLinks', urlPart:'share-links', text: gettext('Share Links')},\n {name: 'uploadLinks', urlPart:'upload-links', text: gettext('Upload Links')},\n ];\n }\n\n render() {\n const { currentItem } = this.props;\n return (\n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { navigate } from '@gatsbyjs/reach-router';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport { Utils } from '../../../utils/utils';\nimport EmptyTip from '../../../components/empty-tip';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport LinksNav from './links-nav';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n getPreviousPage = () => {\n this.props.getShareLinksByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getShareLinksByPage(this.props.currentPage + 1);\n };\n\n sortByTime = (e) => {\n e.preventDefault();\n this.props.sortItems('ctime');\n };\n\n sortByCount = (e) => {\n e.preventDefault();\n this.props.sortItems('view_cnt');\n };\n\n render() {\n const {\n loading, errorMsg, items,\n perPage, currentPage, hasNextPage,\n sortBy, sortOrder\n } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No share links')}

    \n
    \n );\n\n const initialSortIcon = ;\n const sortIcon = ;\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {items &&\n \n {items.map((item, index) => {\n return ();\n })}\n \n }\n
    {gettext('Name')}{gettext('Token')}{gettext('Owner')}\n {gettext('Created At')} {sortBy == 'ctime' ? sortIcon : initialSortIcon}\n \n {gettext('Count')} {sortBy == 'view_cnt' ? sortIcon : initialSortIcon}\n {gettext('Expiration')}{/*Operations*/}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n getShareLinksByPage: PropTypes.func.isRequired,\n sortItems: PropTypes.func.isRequired,\n sortBy: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n deleteShareLink: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n };\n }\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n deleteShareLink = () => {\n this.props.deleteShareLink(this.props.item.token);\n };\n\n renderExpiration = () => {\n const item = this.props.item;\n if (!item.expire_date) {\n return '--';\n }\n const expire_date = moment(item.expire_date).format('YYYY-MM-DD');\n const expire_time = moment(item.expire_date).format('YYYY-MM-DD HH:mm:ss');\n return ({expire_date});\n };\n\n render() {\n let { isOpIconShown } = this.state;\n let { item } = this.props;\n let deleteIcon = `action-icon sf2-icon-delete ${isOpIconShown ? '' : 'invisible'}`;\n return (\n \n {item.obj_name}\n {item.token}\n \n {moment(item.ctime).fromNow()}\n {item.view_cnt}\n {this.renderExpiration()}\n \n \n \n \n );\n }\n}\n\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n deleteShareLink: PropTypes.func.isRequired,\n};\n\nclass ShareLinks extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n shareLinkList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n sortBy: '',\n sortOrder: 'asc'\n };\n this.initPage = 1;\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage, sortBy, sortOrder } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage),\n sortBy: urlParams.get('order_by') || sortBy,\n sortOrder: urlParams.get('direction') || sortOrder\n }, () => {\n this.getShareLinksByPage(this.state.currentPage);\n });\n }\n\n getShareLinksByPage = (page) => {\n const { perPage, sortBy, sortOrder } = this.state;\n seafileAPI.sysAdminListShareLinks(page, perPage, sortBy, sortOrder).then((res) => {\n this.setState({\n shareLinkList: res.data.share_link_list,\n loading: false,\n currentPage: page,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.count),\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n sortItems = (sortBy) => {\n this.setState({\n currentPage: 1,\n sortBy: sortBy,\n sortOrder: this.state.sortOrder == 'asc' ? 'desc' : 'asc'\n }, () => {\n let url = new URL(location.href);\n let searchParams = new URLSearchParams(url.search);\n const { currentPage, sortBy, sortOrder } = this.state;\n searchParams.set('page', currentPage);\n searchParams.set('order_by', sortBy);\n searchParams.set('direction', sortOrder);\n url.search = searchParams.toString();\n navigate(url.toString());\n this.getShareLinksByPage(currentPage);\n });\n };\n\n deleteShareLink = (linkToken) => {\n seafileAPI.sysAdminDeleteShareLink(linkToken).then(res => {\n let newShareLinkList = this.state.shareLinkList.filter(item =>\n item.token != linkToken\n );\n this.setState({shareLinkList: newShareLinkList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getShareLinksByPage(this.initPage));\n };\n\n render() {\n let { shareLinkList, currentPage, perPage, hasNextPage } = this.state;\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default ShareLinks;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport { Utils } from '../../../utils/utils';\nimport EmptyTip from '../../../components/empty-tip';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport LinksNav from './links-nav';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\n\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n getPreviousPage = () => {\n this.props.getUploadLinksByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getUploadLinksByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, perPage, currentPage, hasNextPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No upload links')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {items &&\n \n {items.map((item, index) => {\n return ();\n })}\n \n }\n
    {gettext('Name')}{gettext('Token')}{gettext('Owner')}{gettext('Created At')}{gettext('Count')}{gettext('Expiration')}{/*Operations*/}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n getUploadLinksByPage: PropTypes.func.isRequired,\n deleteUploadLink: PropTypes.func.isRequired,\n};\n\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n };\n }\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n deleteUploadLink = () => {\n this.props.deleteUploadLink(this.props.item.token);\n };\n\n renderExpiration = () => {\n let item = this.props.item;\n if (!item.expire_date) {\n return '--';\n }\n const expire_date = moment(item.expire_date).format('YYYY-MM-DD');\n const expire_time = moment(item.expire_date).format('YYYY-MM-DD HH:mm:ss');\n return ({expire_date});\n };\n\n render() {\n let { isOpIconShown } = this.state;\n let { item } = this.props;\n let deleteIcon = `action-icon sf2-icon-delete ${isOpIconShown ? '' : 'invisible'}`;\n return (\n \n \n {item.path}\n {item.token}\n \n {moment(item.ctime).fromNow()}\n {item.view_cnt}\n {this.renderExpiration()}\n \n \n \n \n \n );\n }\n}\n\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n deleteUploadLink: PropTypes.func.isRequired,\n};\n\n\nclass UploadLinks extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n uploadLinkList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n };\n this.initPage = 1;\n }\n\n componentDidMount() {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getUploadLinksByPage(this.state.currentPage);\n });\n }\n\n getUploadLinksByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListAllUploadLinks(page, perPage).then((res) => {\n this.setState({\n uploadLinkList: res.data.upload_link_list,\n loading: false,\n currentPage: page,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.count),\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n deleteUploadLink = (linkToken) => {\n seafileAPI.sysAdminDeleteUploadLink(linkToken).then(res => {\n let newUploadLinkList = this.state.uploadLinkList.filter(item =>\n item.token != linkToken\n );\n this.setState({uploadLinkList: newUploadLinkList});\n }).catch(error => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getUploadLinksByPage(this.initPage));\n };\n\n render() {\n let { uploadLinkList, currentPage, perPage, hasNextPage } = this.state;\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default UploadLinks;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Alert, Modal, ModalHeader, ModalBody, ModalFooter, Button, Form, FormGroup, Label, Input } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n toggleDialog: PropTypes.func.isRequired,\n addOrg: PropTypes.func.isRequired\n};\n\nclass SysAdminAddOrgDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n name: '',\n email: '',\n password: '',\n passwordAgain: '',\n errorMsg: '',\n isSubmitBtnActive: false\n };\n }\n\n checkSubmitBtnActive = () => {\n const { name, email, password, passwordAgain } = this.state;\n let btnActive = true;\n if (name.trim() !='' &&\n email.trim() != '' &&\n password.trim() != '' &&\n passwordAgain.trim() != '') {\n btnActive = true;\n } else {\n btnActive = false;\n }\n this.setState({\n isSubmitBtnActive: btnActive\n });\n };\n\n toggle = () => {\n this.props.toggleDialog();\n };\n\n inputPassword = (e) => {\n let passwd = e.target.value;\n this.setState({\n password: passwd\n }, this.checkSubmitBtnActive);\n };\n\n inputPasswordAgain = (e) => {\n let passwd = e.target.value;\n this.setState({\n passwordAgain: passwd\n }, this.checkSubmitBtnActive);\n };\n\n inputEmail = (e) => {\n let email = e.target.value;\n this.setState({\n email: email\n }, this.checkSubmitBtnActive);\n };\n\n inputName = (e) => {\n let name = e.target.value;\n this.setState({\n name: name\n }, this.checkSubmitBtnActive);\n };\n\n handleSubmit = () => {\n let { name, email, password, passwordAgain } = this.state;\n if (password != passwordAgain) {\n this.setState({errorMsg: gettext('Passwords do not match.')});\n return;\n }\n const data = {\n orgName: name.trim(),\n ownerEmail: email.trim(),\n password: password.trim()\n };\n this.props.addOrg(data);\n this.toggle();\n };\n\n render() {\n const { errorMsg, password, passwordAgain, email, name, isSubmitBtnActive } = this.state;\n return (\n \n {gettext('Add Organization')}\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {errorMsg && {errorMsg}}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminAddOrgDialog.propTypes = propTypes;\n\nexport default SysAdminAddOrgDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport RoleSelector from '../../../components/single-selector';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport UserLink from '../user-link';\nimport toaster from '../../../components/toast';\n\nconst { availableRoles } = window.sysadmin.pageOptions;\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n toggleItemFreezed = (isFreezed) => {\n this.setState({ isItemFreezed: isFreezed });\n };\n\n getPreviousPage = () => {\n this.props.getListByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getListByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No organizations')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Creator')}{gettext('Role')}{gettext('Space Used')}{gettext('Created At')}{/* Operations */}
    \n {this.props.currentPage &&\n \n }\n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n getListByPage: PropTypes.func.isRequired,\n currentPage: PropTypes.number,\n items: PropTypes.array.isRequired,\n updateRole: PropTypes.func.isRequired,\n deleteOrg: PropTypes.func.isRequired,\n hasNextPage: PropTypes.bool,\n resetPerPage: PropTypes.func,\n curPerPage: PropTypes.number,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n highlighted: false,\n isDeleteDialogOpen: false,\n deleteDialogMsg: '',\n };\n }\n\n handleMouseEnter = () => {\n if (this.props.isItemFreezed) return;\n this.setState({highlighted: true});\n };\n\n handleMouseLeave = () => {\n if (this.props.isItemFreezed) return;\n this.setState({highlighted: false});\n };\n\n toggleDeleteDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen}, () => {\n if (this.state.isDeleteDialogOpen) {\n seafileAPI.sysAdminGetOrg(this.props.item.org_id).then((res) => {\n let orgName = '' + Utils.HTMLescape(res.data.org_name) + '';\n let userCount = '' + Utils.HTMLescape(res.data.users_count) + '';\n let repoCount = '' + Utils.HTMLescape(res.data.repos_count) + '';\n let deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?')\n .replace('{placeholder}', orgName) + '
    ' +\n gettext('{userCount} user(s) and {repoCount} libraries of this organization will also be deleted.')\n .replace('{userCount}', userCount)\n .replace('{repoCount}', repoCount);\n this.setState({deleteDialogMsg: deleteDialogMsg});\n }).catch(error => {\n let errorMsg = Utils.getErrorMsg(error);\n toaster.danger(errorMsg);\n });\n }\n });\n };\n\n translateRole = (role) => {\n switch (role) {\n case 'default':\n return gettext('Default');\n case 'guest':\n return gettext('Guest');\n default:\n return role;\n }\n };\n\n updateRole = (roleOption) => {\n this.props.updateRole(this.props.item.org_id, roleOption.value);\n };\n\n deleteOrg = () => {\n toaster.notify(gettext('It may take some time, please wait.'));\n this.props.deleteOrg(this.props.item.org_id);\n };\n\n render() {\n const { item } = this.props;\n const { highlighted, isDeleteDialogOpen, deleteDialogMsg } = this.state;\n\n const { role: curRole } = item;\n this.roleOptions = availableRoles.map(item => {\n return {\n value: item,\n text: this.translateRole(item),\n isSelected: item == curRole\n };\n });\n const currentSelectedOption = this.roleOptions.filter(item => item.isSelected)[0];\n\n return (\n \n \n {item.org_name}\n \n \n \n \n \n \n {`${Utils.bytesToSize(item.quota_usage)} / ${item.quota > 0 ? Utils.bytesToSize(item.quota) : '--'}`}\n {moment(item.ctime).format('YYYY-MM-DD HH:mm:ss')}\n \n \n \n \n {isDeleteDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n updateRole: PropTypes.func.isRequired,\n deleteOrg: PropTypes.func.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n toggleItemFreezed: PropTypes.func.isRequired\n};\n\nexport default Content;\n","import React, { Component, Fragment } from 'react';\nimport { navigate } from '@gatsbyjs/reach-router';\nimport { Button } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport SysAdminAddOrgDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-org-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Search from '../search';\nimport Content from './orgs-content';\n\n\nclass Orgs extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n orgList: [],\n currentPage: 1,\n perPage: 25,\n hasNextPage: false,\n isAddOrgDialogOpen: false\n };\n }\n\n componentDidMount() {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getItemsByPage(this.state.currentPage);\n });\n }\n\n getItemsByPage = (page) => {\n const { perPage } = this.state;\n seafileAPI.sysAdminListOrgs(page, perPage).then((res) => {\n this.setState({\n loading: false,\n orgList: res.data.organizations,\n currentPage: page,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.total_count)\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getItemsByPage(1);\n });\n };\n\n toggleAddOrgDialog = () => {\n this.setState({isAddOrgDialogOpen: !this.state.isAddOrgDialogOpen});\n };\n\n updateRole = (orgID, role) => {\n let orgInfo = {};\n orgInfo.role = role;\n seafileAPI.sysAdminUpdateOrg(orgID, orgInfo).then(res => {\n let newOrgList = this.state.orgList.map(org => {\n if (org.org_id == orgID) {\n org.role = role;\n }\n return org;\n });\n this.setState({orgList: newOrgList});\n toaster.success(gettext('Edit succeeded'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n addOrg = (data) => {\n const { orgName, ownerEmail, password } = data;\n seafileAPI.sysAdminAddOrg(orgName, ownerEmail, password).then(res => {\n let orgList = this.state.orgList;\n orgList.unshift(res.data);\n this.setState({orgList: orgList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteOrg = (orgID) => {\n seafileAPI.sysAdminDeleteOrg(orgID).then(res => {\n let orgList = this.state.orgList.filter(org => {\n return org.org_id != orgID;\n });\n this.setState({orgList: orgList});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n getSearch = () => {\n return ;\n };\n\n searchItems = (keyword) => {\n navigate(`${siteRoot}sys/search-organizations/?query=${encodeURIComponent(keyword)}`);\n };\n\n render() {\n const { isAddOrgDialogOpen } = this.state;\n return (\n \n \n \n \n
    \n
    \n
    \n

    {gettext('Organizations')}

    \n
    \n
    \n \n
    \n
    \n
    \n {isAddOrgDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nexport default Orgs;\n","import React, { Component, Fragment } from 'react';\nimport { Form, FormGroup, Input, Label, Col } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Content from './orgs-content';\n\n\nclass SearchOrgs extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n query: '',\n isSubmitBtnActive: false,\n loading: true,\n errorMsg: '',\n orgList: []\n };\n }\n\n componentDidMount () {\n let params = (new URL(document.location)).searchParams;\n this.setState({\n query: params.get('query') || ''\n }, this.getItems);\n }\n\n getItems = () => {\n seafileAPI.sysAdminSearchOrgs(this.state.query.trim()).then(res => {\n this.setState({\n loading: false,\n orgList: res.data.organization_list\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n updateRole = (orgID, role) => {\n let orgInfo = {};\n orgInfo.role = role;\n seafileAPI.sysAdminUpdateOrg(orgID, orgInfo).then(res => {\n let newOrgList = this.state.orgList.map(org => {\n if (org.org_id == orgID) {\n org.role = role;\n }\n return org;\n });\n this.setState({orgList: newOrgList});\n toaster.success(gettext('Edit succeeded'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteOrg = (orgID) => {\n seafileAPI.sysAdminDeleteOrg(orgID).then(res => {\n let orgList = this.state.orgList.filter(org => {\n return org.org_id != orgID;\n });\n this.setState({orgList: orgList});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n handleInputChange = (e) => {\n this.setState({\n query: e.target.value\n }, this.checkSubmitBtnActive);\n };\n\n checkSubmitBtnActive = () => {\n const { query } = this.state;\n this.setState({\n isSubmitBtnActive: query.trim()\n });\n };\n\n handleKeyDown = (e) => {\n if (e.keyCode === 13) {\n const { isSubmitBtnActive } = this.state;\n if (isSubmitBtnActive) {\n this.getItems();\n }\n }\n };\n\n render() {\n const { query, isSubmitBtnActive } = this.state;\n return (\n \n \n
    \n
    \n
    \n

    {gettext('Organizations')}

    \n
    \n
    \n
    \n

    {gettext('Search Organizations')}

    \n

    {gettext('Tip: you can search by keyword in name.')}

    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n

    {gettext('Result')}

    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default SearchOrgs;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button, Form, FormGroup, Input } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n name: PropTypes.string.isRequired,\n toggle: PropTypes.func.isRequired,\n updateName: PropTypes.func.isRequired\n};\n\nclass SysAdminSetOrgNameDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n name: this.props.name,\n isSubmitBtnActive: false\n };\n }\n\n toggle = () => {\n this.props.toggle();\n };\n\n handleInputChange = (e) => {\n const value = e.target.value;\n this.setState({\n name: value,\n isSubmitBtnActive: value.trim() != ''\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key == 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n handleSubmit = () => {\n this.props.updateName(this.state.name.trim());\n this.toggle();\n };\n\n render() {\n const { name, isSubmitBtnActive } = this.state;\n return (\n \n {gettext('Set Name')}\n \n
    \n \n \n \n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminSetOrgNameDialog.propTypes = propTypes;\n\nexport default SysAdminSetOrgNameDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button, Form, FormGroup, Input } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n value: PropTypes.string.isRequired,\n toggle: PropTypes.func.isRequired,\n updateValue: PropTypes.func.isRequired\n};\n\nclass SysAdminSetOrgMaxUserNumberDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n value: this.props.value,\n isSubmitBtnActive: false\n };\n }\n\n toggle = () => {\n this.props.toggle();\n };\n\n handleInputChange = (e) => {\n const value = e.target.value;\n this.setState({\n value: value,\n isSubmitBtnActive: value.trim() != ''\n });\n };\n\n handleKeyDown = (e) => {\n if (e.key == 'Enter') {\n this.handleSubmit();\n e.preventDefault();\n }\n };\n\n handleSubmit = () => {\n this.props.updateValue(this.state.value.trim());\n this.toggle();\n };\n\n render() {\n const { value, isSubmitBtnActive } = this.state;\n return (\n \n {gettext('Set max number of members')}\n \n
    \n \n \n \n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminSetOrgMaxUserNumberDialog.propTypes = propTypes;\n\nexport default SysAdminSetOrgMaxUserNumberDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n orgID: PropTypes.string,\n orgName: PropTypes.string.isRequired,\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'info', urlPart: 'info', text: gettext('Info')},\n {name: 'users', urlPart: 'users', text: gettext('Members')},\n {name: 'groups', urlPart: 'groups', text: gettext('Groups')},\n {name: 'repos', urlPart: 'libraries', text: gettext('Libraries')},\n //{name: 'traffic', urlPart: 'traffic', text: gettext('traffic')},\n //{name: 'settings', urlPart: 'settings', text: gettext('Settings')}\n ];\n }\n\n render() {\n const { currentItem, orgID, orgName } = this.props;\n return (\n
    \n
    \n

    {gettext('Organizations')} / {orgName}

    \n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, serviceURL } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport Loading from '../../../components/loading';\nimport SysAdminSetOrgQuotaDialog from '../../../components/dialog/sysadmin-dialog/set-quota';\nimport SysAdminSetOrgNameDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-set-org-name-dialog';\nimport SysAdminSetOrgMaxUserNumberDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-set-org-max-user-number-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport OrgNav from './org-nav';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isSetQuotaDialogOpen: false,\n isSetNameDialogOpen: false,\n isSetMaxUserNumberDialogOpen: false\n };\n }\n\n toggleSetQuotaDialog = () => {\n this.setState({isSetQuotaDialogOpen: !this.state.isSetQuotaDialogOpen});\n };\n\n toggleSetNameDialog = () => {\n this.setState({isSetNameDialogOpen: !this.state.isSetNameDialogOpen});\n };\n\n toggleSetMaxUserNumberDialog = () => {\n this.setState({isSetMaxUserNumberDialogOpen: !this.state.isSetMaxUserNumberDialogOpen});\n };\n\n showEditIcon = (action) => {\n return (\n \n \n );\n };\n\n render() {\n const { loading, errorMsg } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const { org_name, users_count, max_user_number, groups_count, quota, quota_usage, enable_saml_login, url_prefix, metadata_url, domain } = this.props.orgInfo;\n const { isSetQuotaDialogOpen, isSetNameDialogOpen, isSetMaxUserNumberDialogOpen } = this.state;\n return (\n \n
    \n
    {gettext('Name')}
    \n
    \n {org_name}\n {this.showEditIcon(this.toggleSetNameDialog)}\n
    \n\n
    {gettext('Number of members')}
    \n
    {users_count}
    \n\n {max_user_number &&\n \n
    {gettext('Max number of members')}
    \n
    \n {max_user_number}\n {this.showEditIcon(this.toggleSetMaxUserNumberDialog)}\n
    \n
    \n }\n\n
    {gettext('Number of groups')}
    \n
    {groups_count}
    \n\n
    {gettext('Space Used')}
    \n
    \n {`${Utils.bytesToSize(quota_usage)} / ${quota > 0 ? Utils.bytesToSize(quota) : '--'}`}\n {this.showEditIcon(this.toggleSetQuotaDialog)}\n
    \n {enable_saml_login &&\n \n
    {gettext('SAML Config')}
    \n
    \n \n {gettext('Custom SAML Login URL')}\n {`${serviceURL}/org/custom/${url_prefix}`}\n \n
    \n
    \n \n {gettext('App Federation Metadata URL')}\n {metadata_url}\n \n
    \n
    \n \n {gettext('Email Domain')}\n {domain}\n \n
    \n
    \n }\n
    \n {isSetQuotaDialogOpen &&\n \n }\n {isSetNameDialogOpen &&\n \n }\n {isSetMaxUserNumberDialogOpen &&\n \n }\n
    \n );\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getDeviceErrorsListByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n curPerPage: PropTypes.number,\n orgInfo: PropTypes.object,\n updateQuota: PropTypes.func.isRequired,\n updateName: PropTypes.func.isRequired,\n updateMaxUserNumber: PropTypes.func.isRequired,\n};\n\nclass OrgInfo extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n orgInfo: {}\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetOrg(this.props.orgID).then((res) => {\n this.setState({\n loading: false,\n orgInfo: res.data\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n updateQuota = (quota) => {\n const data = {quota: quota};\n seafileAPI.sysAdminUpdateOrg(this.props.orgID, data).then(res => {\n const newOrgInfo = Object.assign(this.state.orgInfo, {\n quota: res.data.quota\n });\n this.setState({orgInfo: newOrgInfo});\n toaster.success(gettext('Successfully set quota.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateName = (orgName) => {\n const data = {orgName: orgName};\n seafileAPI.sysAdminUpdateOrg(this.props.orgID, data).then(res => {\n const newOrgInfo = Object.assign(this.state.orgInfo, {\n org_name: res.data.org_name\n });\n this.setState({orgInfo: newOrgInfo});\n toaster.success(gettext('Successfully set name.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateMaxUserNumber = (newValue) => {\n const data = {maxUserNumber: newValue};\n seafileAPI.sysAdminUpdateOrg(this.props.orgID, data).then(res => {\n const newOrgInfo = Object.assign(this.state.orgInfo, {\n max_user_number: res.data.max_user_number\n });\n this.setState({orgInfo: newOrgInfo});\n toaster.success(gettext('Successfully set max number of members.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { orgInfo } = this.state;\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nOrgInfo.propTypes = {\n orgID: PropTypes.string,\n orgInfo: PropTypes.object,\n};\n\nexport default OrgInfo;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, username } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Selector from '../../../components/single-selector';\nimport SysAdminAddUserDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-user-dialog';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport OrgNav from './org-nav';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n toggleItemFreezed = (isFreezed) => {\n this.setState({ isItemFreezed: isFreezed });\n };\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No members')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Status')}{gettext('Membership')}{gettext('Space Used')}{gettext('Created At')}{' / '}{gettext('Last Login')}{/* Operations */}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n updateStatus: PropTypes.func.isRequired,\n updateMembership: PropTypes.func.isRequired,\n deleteUser: PropTypes.func.isRequired,\n};\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isDeleteDialogOpen: false,\n isResetPasswordDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Delete':\n this.toggleDeleteDialog();\n break;\n case 'Reset Password':\n this.toggleResetPasswordDialog();\n break;\n default:\n break;\n }\n };\n\n toggleDeleteDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n toggleResetPasswordDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isResetPasswordDialogOpen: !this.state.isResetPasswordDialogOpen});\n };\n\n updateStatus= (statusOption) => {\n this.props.updateStatus(this.props.item.email, statusOption.value);\n };\n\n updateMembership= (membershipOption) => {\n this.props.updateMembership(this.props.item.email, membershipOption.value);\n };\n\n deleteUser = () => {\n const { item } = this.props;\n this.props.deleteUser(item.org_id, item.email);\n };\n\n resetPassword = () => {\n seafileAPI.sysAdminResetUserPassword(this.props.item.email).then(res => {\n toaster.success(res.data.reset_tip);\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n case 'Reset Password':\n translateResult = gettext('Reset Password');\n break;\n }\n\n return translateResult;\n };\n\n translateStatus = (status) => {\n switch (status) {\n case 'active':\n return gettext('Active');\n case 'inactive':\n return gettext('Inactive');\n }\n };\n\n translateMembership = (membership) => {\n switch (membership) {\n case 'Admin':\n return gettext('Admin');\n case 'Member':\n return gettext('Member');\n }\n };\n\n render() {\n const { item } = this.props;\n const { highlight, isOpIconShown, isDeleteDialogOpen, isResetPasswordDialogOpen } = this.state;\n\n const itemName = '' + Utils.HTMLescape(item.name) + '';\n let deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?').replace('{placeholder}', itemName);\n let resetPasswordDialogMsg = gettext('Are you sure you want to reset the password of {placeholder} ?').replace('{placeholder}', itemName);\n\n // for 'user status'\n const curStatus = item.active ? 'active' : 'inactive';\n this.statusOptions = ['active', 'inactive'].map(item => {\n return {\n value: item,\n text: this.translateStatus(item),\n isSelected: item == curStatus\n };\n });\n const currentSelectedStatusOption = this.statusOptions.filter(item => item.isSelected)[0];\n\n // for 'user membership'\n const curMembership = item.is_org_staff? 'Admin' : 'Member';\n this.membershipOptions = ['Admin', 'Member'].map(item => {\n return {\n value: item,\n text: this.translateMembership(item),\n isSelected: item == curMembership\n };\n });\n const currentSelectedMembershipOption = this.membershipOptions.filter(item => item.isSelected)[0];\n\n return (\n \n \n \n \n \n \n \n \n \n {`${Utils.bytesToSize(item.quota_usage)} / ${item.quota_total > 0 ? Utils.bytesToSize(item.quota_total) : '--'}`}\n \n {moment(item.create_time).format('YYYY-MM-DD HH:mm:ss')}{' / '}{item.last_login ? moment(item.last_login).fromNow() : '--'}\n \n \n {(isOpIconShown && item.email != username) &&\n \n }\n \n \n {isDeleteDialogOpen &&\n \n }\n {isResetPasswordDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n toggleItemFreezed: PropTypes.func.isRequired,\n updateStatus: PropTypes.func.isRequired,\n updateMembership: PropTypes.func.isRequired,\n deleteUser: PropTypes.func.isRequired,\n};\n\nclass OrgUsers extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n orgName: '',\n userList: [],\n isAddUserDialogOpen: false\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetOrg(this.props.orgID).then((res) => {\n this.setState({\n orgName: res.data.org_name\n });\n });\n seafileAPI.sysAdminListOrgUsers(this.props.orgID).then((res) => {\n this.setState({\n loading: false,\n userList: res.data.users\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n toggleAddUserDialog = () => {\n this.setState({isAddUserDialogOpen: !this.state.isAddUserDialogOpen});\n };\n\n addUser = (newUserInfo) => {\n const { email, name, password } = newUserInfo;\n seafileAPI.sysAdminAddOrgUser(this.props.orgID, email, name, password).then(res => {\n let userList = this.state.userList;\n userList.unshift(res.data);\n this.setState({userList: userList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteUser = (orgID, email) => {\n seafileAPI.sysAdminDeleteOrgUser(orgID, email).then(res => {\n let newUserList = this.state.userList.filter(item => {\n return item.email != email;\n });\n this.setState({userList: newUserList});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateStatus = (email, statusValue) => {\n const isActive = statusValue == 'active';\n seafileAPI.sysAdminUpdateOrgUser(this.props.orgID, email, 'active', isActive).then(res => {\n let newUserList = this.state.userList.map(item => {\n if (item.email == email) {\n item.active = res.data.active;\n }\n return item;\n });\n this.setState({userList: newUserList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateMembership = (email, membershipValue) => {\n const isOrgStaff = membershipValue == 'Admin';\n seafileAPI.sysAdminUpdateOrgUser(this.props.orgID, email, 'is_org_staff', isOrgStaff).then(res => {\n let newUserList = this.state.userList.map(item => {\n if (item.email == email) {\n item.is_org_staff = res.data.is_org_staff;\n }\n return item;\n });\n this.setState({userList: newUserList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { isAddUserDialogOpen, orgName } = this.state;\n return (\n \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isAddUserDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nOrgUsers.propTypes = {\n orgID: PropTypes.string,\n};\n\nexport default OrgUsers;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport OrgNav from './org-nav';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No groups')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Creator')}{gettext('Created At')}{/* Operations */}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getDeviceErrorsListByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n curPerPage: PropTypes.number,\n pageInfo: PropTypes.object,\n deleteGroup: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n isDeleteDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n this.setState({isOpIconShown: true});\n };\n\n handleMouseLeave = () => {\n this.setState({isOpIconShown: false});\n };\n\n toggleDeleteDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n deleteGroup = () => {\n this.toggleDeleteDialog();\n this.props.deleteGroup(this.props.item.group_id);\n };\n\n render() {\n const { item } = this.props;\n const { isOpIconShown, isDeleteDialogOpen } = this.state;\n\n const itemName = '' + Utils.HTMLescape(item.group_name) + '';\n const deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?').replace('{placeholder}', itemName);\n\n const groupUrl = item.parent_group_id == 0 ?\n `${siteRoot}sys/groups/${item.group_id}/libraries/` :\n `${siteRoot}sys/departments/${item.group_id}/`;\n\n return (\n \n \n {item.group_name}\n \n {moment(item.created_at).format('YYYY-MM-DD HH:mm:ss')}\n \n \n \n \n {isDeleteDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n deleteGroup: PropTypes.func.isRequired,\n transferGroup: PropTypes.func.isRequired,\n};\n\nclass OrgGroups extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n orgName: '',\n groupList: []\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetOrg(this.props.orgID).then((res) => {\n this.setState({\n orgName: res.data.org_name\n });\n });\n seafileAPI.sysAdminListOrgGroups(this.props.orgID).then((res) => {\n this.setState({\n loading: false,\n groupList: res.data.group_list\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n deleteGroup = (groupID) => {\n seafileAPI.sysAdminDismissGroupByID(groupID).then(res => {\n let newGroupList = this.state.groupList.filter(item => {\n return item.group_id != groupID;\n });\n this.setState({groupList: newGroupList});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nOrgGroups.propTypes = {\n orgID: PropTypes.string,\n};\n\n\n\nexport default OrgGroups;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport OrgNav from './org-nav';\n\nclass Content extends Component {\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No libraries')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('ID')}{gettext('Owner')}{/* Operations */}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n deleteRepo: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n isDeleteDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n this.setState({isOpIconShown: true});\n };\n\n handleMouseLeave = () => {\n this.setState({isOpIconShown: false});\n };\n\n toggleDeleteDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n deleteRepo = () => {\n this.props.deleteRepo(this.props.item.repo_id);\n };\n\n render() {\n const { item } = this.props;\n const { isOpIconShown, isDeleteDialogOpen } = this.state;\n\n const iconUrl = Utils.getLibIconUrl(item);\n const iconTitle = Utils.getLibIconTitle(item);\n\n const itemName = '' + Utils.HTMLescape(item.repo_name) + '';\n const deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?').replace('{placeholder}', itemName);\n\n return (\n \n \n {iconTitle}\n {item.repo_name}\n {item.repo_id}\n \n {!item.owner_email ?\n '--' :\n item.owner_email.indexOf('@seafile_group') == -1 ?\n :\n item.owner_name\n }\n \n \n \n \n \n {isDeleteDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n deleteRepo: PropTypes.func.isRequired,\n};\n\nclass OrgRepos extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n orgName: '',\n repoList: []\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetOrg(this.props.orgID).then((res) => {\n this.setState({\n orgName: res.data.org_name\n });\n });\n seafileAPI.sysAdminListOrgRepos(this.props.orgID).then((res) => {\n this.setState({\n loading: false,\n repoList: res.data.repo_list\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n deleteRepo = (repoID) => {\n seafileAPI.sysAdminDeleteRepo(repoID).then(res => {\n let newRepoList = this.state.repoList.filter(item => {\n return item.repo_id != repoID;\n });\n this.setState({repoList: newRepoList});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nOrgRepos.propTypes = {\n orgID: PropTypes.string,\n};\n\nexport default OrgRepos;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Form, FormGroup, Input } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n addInstitution: PropTypes.func.isRequired\n};\n\nclass SysAdminAddInstitutionDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n value: '',\n isSubmitBtnActive: false\n };\n }\n\n handleChange = (e) => {\n const value = e.target.value;\n this.setState({\n value: value,\n isSubmitBtnActive: value.trim() != ''\n });\n };\n\n handleSubmit = () => {\n this.toggle();\n this.props.addInstitution(this.state.value.trim());\n };\n\n toggle = () => {\n this.props.toggle();\n };\n\n render() {\n return (\n \n {gettext('Add institution')}\n \n
    \n

    {gettext('Name')}

    \n \n \n \n
    \n
    \n \n \n \n
    \n );\n }\n}\n\nSysAdminAddInstitutionDialog.propTypes = propTypes;\n\nexport default SysAdminAddInstitutionDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { Button } from 'reactstrap';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { siteRoot, gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport SysAdminAddInstitutionDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-institution-dialog';\nimport Paginator from '../../../components/paginator';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n getPreviousPage = () => {\n this.props.getInstitutionsByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getInstitutionsByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, perPage, currentPage, hasNextPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No institutions')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Created At')}{/* Operations */}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n getInstitutionsByPage: PropTypes.func.isRequired,\n deleteInstitution: PropTypes.func.isRequired,\n};\n\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n isDeleteDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n this.setState({isOpIconShown: true});\n };\n\n handleMouseLeave = () => {\n this.setState({isOpIconShown: false});\n };\n\n toggleDeleteDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n deleteInstitution = () => {\n this.props.deleteInstitution(this.props.item.id);\n };\n\n render() {\n const { item } = this.props;\n const { isOpIconShown, isDeleteDialogOpen } = this.state;\n\n const institutionName = '' + Utils.HTMLescape(item.name) + '';\n const deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?').replace('{placeholder}', institutionName);\n\n return (\n \n \n {item.name}\n {moment(item.ctime).fromNow()}\n \n \n \n \n {isDeleteDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n deleteInstitution: PropTypes.func.isRequired,\n};\n\nclass Institutions extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n institutionList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n isAddInstitutionDialogOpen: false,\n };\n this.initPage = 1;\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getInstitutionsByPage(this.state.currentPage);\n });\n }\n\n getInstitutionsByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListInstitutions(page, perPage).then((res) => {\n this.setState({\n loading: false,\n institutionList: res.data.institution_list,\n currentPage: page,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.total_count),\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getInstitutionsByPage(this.initPage));\n };\n\n toggleAddInstitutionDialog = () => {\n this.setState({isAddInstitutionDialogOpen: !this.state.isAddInstitutionDialogOpen});\n };\n\n addInstitution = (name) => {\n seafileAPI.sysAdminAddInstitution(name).then(res => {\n let institutionList = this.state.institutionList;\n institutionList.push(res.data);\n this.setState({institutionList: institutionList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteInstitution = (institutionID) => {\n seafileAPI.sysAdminDeleteInstitution(institutionID).then(res => {\n let institutionList = this.state.institutionList.filter(inst => {\n return inst.id != institutionID;\n });\n this.setState({institutionList: institutionList});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { isAddInstitutionDialogOpen, hasNextPage, currentPage, perPage } = this.state;\n return (\n \n \n \n \n
    \n
    \n
    \n

    {gettext('Institutions')}

    \n
    \n
    \n \n
    \n
    \n
    \n {isAddInstitutionDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nexport default Institutions;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n institutionID: PropTypes.string,\n institutionName: PropTypes.string.isRequired,\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'info', urlPart: 'info', text: gettext('Info')},\n {name: 'members', urlPart: 'members', text: gettext('Members')},\n {name: 'admins', urlPart: 'admins', text: gettext('Admins')},\n ];\n }\n\n render() {\n const { currentItem, institutionID, institutionName } = this.props;\n return (\n
    \n
    \n

    {gettext('Institutions')} / {institutionName}

    \n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport Loading from '../../../components/loading';\nimport SysAdminSetInstitutionQuotaDialog from '../../../components/dialog/sysadmin-dialog/set-quota';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport InstitutionNav from './institution-nav';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isSetQuotaDialogOpen: false,\n };\n }\n\n toggleSetQuotaDialog = () => {\n this.setState({isSetQuotaDialogOpen: !this.state.isSetQuotaDialogOpen});\n };\n\n showEditIcon = (action) => {\n return (\n \n \n );\n };\n\n render() {\n const { loading, errorMsg, institutionInfo } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const { name, user_count, quota_total, quota_used } = institutionInfo;\n const { isSetQuotaDialogOpen } = this.state;\n return (\n \n
    \n
    {gettext('Name')}
    \n
    \n {name}\n
    \n\n
    {gettext('Number of members')}
    \n
    {user_count}
    \n\n
    {gettext('Space Used')}
    \n
    \n {`${Utils.bytesToSize(quota_used)} / ${quota_total > 0 ? Utils.bytesToSize(quota_total) : '--'}`}\n {this.showEditIcon(this.toggleSetQuotaDialog)}\n
    \n
    \n {isSetQuotaDialogOpen &&\n \n }\n
    \n );\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n institutionInfo: PropTypes.object.isRequired,\n updateQuota: PropTypes.func.isRequired,\n};\n\n\nclass InstitutionInfo extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n institutionInfo: {}\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetInstitution(this.props.institutionID).then((res) => {\n this.setState({\n loading: false,\n institutionInfo: res.data\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n updateQuota = (quota) => {\n seafileAPI.sysAdminUpdateInstitution(this.props.institutionID, quota).then(res => {\n const newInstitutionInfo = Object.assign(this.state.institutionInfo, {\n quota_total: res.data.quota_total,\n });\n this.setState({institutionInfo: newInstitutionInfo});\n toaster.success(gettext('Successfully set quota.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n\n render() {\n const { institutionInfo } = this.state;\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nInstitutionInfo.propTypes = {\n institutionID: PropTypes.string,\n};\n\nexport default InstitutionInfo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport UserSelect from '../../user-select';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n addUser: PropTypes.func.isRequired\n};\n\nclass AddMemberDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n selectedOption: [],\n };\n }\n\n handleSelectChange = (option) => {\n this.setState({ selectedOption: option });\n };\n\n handleSubmit = () => {\n if (!this.state.selectedOption) return;\n const emails = this.state.selectedOption.map(item => item.email);\n this.props.addUser(emails);\n };\n\n render() {\n return (\n \n {gettext('Add Member')}\n \n \n \n \n \n \n \n \n );\n }\n}\n\nAddMemberDialog.propTypes = propTypes;\n\nexport default AddMemberDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport AddMemberDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-institution-member-dialog';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport UserLink from '../user-link';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport InstitutionNav from './institution-nav';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n getPreviousPage = () => {\n this.props.getInstitutionUsersByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getInstitutionUsersByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, perPage, currentPage, hasNextPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No members')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Status')}{gettext('Space Used')}{gettext('Created At')}{' / '}{gettext('Last Login')}{/* Operations */}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n getInstitutionUsersByPage: PropTypes.func.isRequired,\n setAdmin: PropTypes.func.isRequired,\n deleteUser: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isSetAdminDialogOpen: false,\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n toggleSetAdminDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isSetAdminDialogOpen: !this.state.isSetAdminDialogOpen});\n };\n\n setAdmin = () => {\n this.props.setAdmin(this.props.item.email);\n };\n\n onMenuItemClick = (operation) => {\n switch (operation) {\n case 'Delete':\n this.props.deleteUser(this.props.item.email);\n break;\n case 'Set Admin':\n this.toggleSetAdminDialog();\n break;\n }\n };\n\n getOperations = () => {\n let operations = [];\n if (!this.props.item.is_institution_admin) {\n operations.push('Set Admin');\n }\n operations.push('Delete');\n return operations;\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n case 'Set Admin':\n translateResult = gettext('Set Admin');\n break;\n }\n\n return translateResult;\n };\n\n render() {\n const { item } = this.props;\n const { isOpIconShown, isSetAdminDialogOpen } = this.state;\n\n const itemName = '' + Utils.HTMLescape(item.name) + '';\n const dialogMsg = gettext('Are you sure you want to set {placeholder} as Admin?').replace('{placeholder}', itemName);\n\n return (\n \n \n \n \n \n \n {item.is_active ? gettext('Active') : gettext('Inactive')}\n \n {`${Utils.bytesToSize(item.quota_usage)} / ${item.quota_total > 0 ? Utils.bytesToSize(item.quota_total) : '--'}`}\n \n {moment(item.create_time).format('YYYY-MM-DD HH:mm:ss')}{' / '}{item.last_login ? moment(item.last_login).fromNow() : '--'}\n \n \n {isOpIconShown &&\n \n }\n \n \n {isSetAdminDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.string.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n setAdmin: PropTypes.func.isRequired,\n deleteUser: PropTypes.func.isRequired,\n};\n\nclass InstitutionUsers extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n institutionName: '',\n userList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n isAddUserDialogOpen: false\n };\n this.initPage = 1;\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetInstitution(this.props.institutionID).then((res) => {\n this.setState({\n institutionName: res.data.name\n });\n });\n\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getInstitutionUsersByPage(this.state.currentPage);\n });\n }\n\n getInstitutionUsersByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListInstitutionUsers(this.props.institutionID, page, perPage).then((res) => {\n this.setState({\n loading: false,\n userList: res.data.user_list,\n currentPage: page,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.total_count),\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n setAdmin = (email) => {\n seafileAPI.sysAdminUpdateInstitutionUser(this.props.institutionID, email, true).then(res => {\n let userList = this.state.userList.map(user => {\n if (user.email == email) {\n user.is_institution_admin = true;\n }\n return user;\n });\n this.setState({userList: userList});\n toaster.success(gettext('Success'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n toggleAddUserDialog = () => {\n this.setState({isAddUserDialogOpen: !this.state.isAddUserDialogOpen});\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getInstitutionUsersByPage(this.initPage));\n };\n\n addUser = (emails) => {\n seafileAPI.sysAdminAddInstitutionUserBatch(this.props.institutionID, emails).then(res => {\n this.toggleAddUserDialog();\n let successArray = res.data.success;\n let failedArray = res.data.failed;\n if (successArray.length) {\n let newUserList = this.state.userList.concat(successArray);\n this.setState({userList: newUserList});\n }\n failedArray.forEach((item) => {\n toaster.danger(item.error_msg);\n });\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteUser = (email) => {\n seafileAPI.sysAdminDeleteInstitutionUser(this.props.institutionID, email).then(res => {\n let newUserList = this.state.userList.filter(user => {\n return user.email != email;\n });\n this.setState({userList: newUserList});\n toaster.success('success');\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { isAddUserDialogOpen, institutionName, hasNextPage, currentPage, perPage } = this.state;\n return (\n \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isAddUserDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nInstitutionUsers.propTypes = {\n institutionID: PropTypes.string,\n};\n\nexport default InstitutionUsers;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport UserLink from '../user-link';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport InstitutionNav from './institution-nav';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No admins')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Name')}{gettext('Status')}{gettext('Space Used')}{gettext('Created At')}{' / '}{gettext('Last Login')}{/* Operations */}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n revokeAdmin: PropTypes.func.isRequired,\n deleteUser: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isRevokeAdminDialogOpen: false,\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n toggleRevokeAdminDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isRevokeAdminDialogOpen: !this.state.isRevokeAdminDialogOpen});\n };\n\n revokeAdmin = () => {\n this.props.revokeAdmin(this.props.item);\n };\n\n onMenuItemClick = (operation) => {\n switch (operation) {\n case 'Revoke Admin':\n this.toggleRevokeAdminDialog();\n break;\n }\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'Revoke Admin':\n translateResult = gettext('Revoke Admin');\n break;\n }\n return translateResult;\n };\n\n render() {\n const { item } = this.props;\n const { isOpIconShown, isRevokeAdminDialogOpen } = this.state;\n\n const itemName = '' + Utils.HTMLescape(item.name) + '';\n const revokeAdminDialogMsg = gettext('Are you sure you want to revoke the admin permission of {placeholder} ?').replace('{placeholder}', itemName);\n\n return (\n \n \n \n \n \n \n {item.is_active ? gettext('Active') : gettext('Inactive')}\n \n {`${Utils.bytesToSize(item.quota_usage)} / ${item.quota_total > 0 ? Utils.bytesToSize(item.quota_total) : '--'}`}\n \n {moment(item.create_time).format('YYYY-MM-DD HH:mm:ss')}{' / '}{item.last_login ? moment(item.last_login).fromNow() : '--'}\n \n \n {isOpIconShown &&\n \n }\n \n \n {isRevokeAdminDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n revokeAdmin: PropTypes.func.isRequired,\n deleteUser: PropTypes.func.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n};\n\nclass InstitutionAdmins extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n institutionName: '',\n userList: [],\n isAddUserDialogOpen: false\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetInstitution(this.props.institutionID).then((res) => {\n this.setState({\n institutionName: res.data.name\n });\n });\n seafileAPI.sysAdminListInstitutionAdmins(this.props.institutionID).then((res) => {\n this.setState({\n loading: false,\n userList: res.data.user_list,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n revokeAdmin = (item) => {\n const email = item.email;\n const name = item.name;\n seafileAPI.sysAdminUpdateInstitutionUser(this.props.institutionID, email, false).then(res => {\n let userList = this.state.userList.filter(user => {\n return user.email != email;\n });\n this.setState({userList: userList});\n toaster.success(gettext('Successfully revoked the admin permission of {placeholder}.').replace('{placeholder}', name));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteUser = (email) => {\n seafileAPI.sysAdminDeleteInstitutionUser(this.props.institutionID, email).then(res => {\n let newUserList = this.state.userList.filter(user => {\n return user.email != email;\n });\n this.setState({userList: newUserList});\n toaster.success('success');\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { institutionName } = this.state;\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nInstitutionAdmins.propTypes = {\n institutionID: PropTypes.string,\n};\n\nexport default InstitutionAdmins;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'loginLogs', urlPart:'logs/login', text: gettext('Login')},\n {name: 'fileAccessLogs', urlPart:'logs/file-access', text: gettext('File Access')},\n {name: 'fileUpdateLogs', urlPart:'logs/file-update', text: gettext('File Update')},\n {name: 'sharePermissionLogs', urlPart:'logs/share-permission', text: gettext('Permission')},\n ];\n }\n\n render() {\n const { currentItem } = this.props;\n return (\n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, FormGroup, Label, Input, Alert } from 'reactstrap';\nimport { gettext, siteRoot } from '../../../utils/constants';\nimport moment from 'moment';\n\nclass LogsExportExcelDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n startDateStr: '',\n endDateStr: '',\n errMsg: '',\n };\n }\n\n downloadExcel = () => {\n if (!this.isValidDateStr()) {\n return;\n }\n let { startDateStr, endDateStr } = this.state;\n let url = siteRoot;\n\n switch (this.props.logType) {\n case 'login':\n url += 'sys/loginadmin/export-excel/';\n break;\n case 'fileAccess':\n url += 'sys/log/fileaudit/export-excel/';\n break;\n case 'fileUpdate':\n url += 'sys/log/fileupdate/export-excel/';\n break;\n case 'sharePermission':\n url += 'sys/log/permaudit/export-excel/';\n break;\n }\n location.href = url + '?start=' + startDateStr + '&end=' + endDateStr;\n this.props.toggle();\n };\n\n isValidDateStr = () => {\n let { startDateStr, endDateStr } = this.state;\n if (moment(startDateStr, 'YYYY-MM-DD', true).isValid() &&\n moment(endDateStr, 'YYYY-MM-DD', true).isValid() &&\n moment(startDateStr).isBefore(endDateStr)\n ) {\n return true;\n } else {\n this.setState({\n errMsg: gettext('Date Invalid.')\n });\n return false;\n }\n };\n\n handleStartChange = (e) => {\n const startDateStr = e.target.value.trim();\n this.setState({\n startDateStr: startDateStr,\n errMsg: ''\n });\n };\n\n handleEndChange = (e) => {\n const endDateStr = e.target.value.trim();\n this.setState({\n endDateStr: endDateStr,\n errMsg: '',\n });\n };\n\n render() {\n return (\n \n {gettext('Choose date')}\n \n \n \n \n \n \n \n \n \n {this.state.errMsg &&\n \n {gettext(this.state.errMsg)}\n \n }\n \n \n \n \n \n \n );\n }\n}\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n logType: PropTypes.string.isRequired,\n};\n\nLogsExportExcelDialog.propTypes = propTypes;\n\nexport default LogsExportExcelDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport { Button } from 'reactstrap';\nimport EmptyTip from '../../../components/empty-tip';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport LogsNav from './logs-nav';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport LogsExportExcelDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-logs-export-excel-dialog';\nimport ModalPortal from '../../../components/modal-portal';\n\n\nclass Content extends Component {\n\n getPreviousPage = () => {\n this.props.getLogsByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getLogsByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, perPage, currentPage, hasNextPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No login logs')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n {items &&\n \n {items.map((item, index) => {\n return ();\n })}\n \n }\n
    {gettext('Name')}{gettext('IP')}{gettext('Status')}{gettext('Time')}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n};\n\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n };\n }\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n render() {\n let { item } = this.props;\n return (\n \n \n {item.login_ip}\n {item.log_success ? gettext('Success') : gettext('Failed')}\n {moment(item.login_time).fromNow()}\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nclass LoginLogs extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n logList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n isExportExcelDialogOpen: false,\n };\n this.initPage = 1;\n }\n\n toggleExportExcelDialog = () => {\n this.setState({isExportExcelDialogOpen: !this.state.isExportExcelDialogOpen});\n };\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getLogsByPage(this.state.currentPage);\n });\n }\n\n getLogsByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListLoginLogs(page, perPage).then((res) => {\n this.setState({\n logList: res.data.login_log_list,\n loading: false,\n currentPage: page,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.total_count),\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getLogsByPage(this.initPage));\n };\n\n render() {\n let { logList, currentPage, perPage, hasNextPage, isExportExcelDialogOpen } = this.state;\n return (\n \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isExportExcelDialogOpen &&\n \n \n \n }\n
    \n );\n }\n}\n\nexport default LoginLogs;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../../utils/constants';\nimport { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';\n\nclass FilterMenu extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isMenuShown: false\n };\n }\n\n toggleMenu = () => {\n this.setState({\n isMenuShown: !this.state.isMenuShown\n }, () => {\n this.props.toggleFreezeItem(this.state.isMenuShown);\n });\n };\n\n onItemClick = () => {\n this.props.filterItems();\n this.props.toggleFreezeItem(false);\n };\n\n render() {\n const { filterBy } = this.props;\n return (\n \n \n \n {gettext('only show {placeholder}').replace('{placeholder}', filterBy)}\n \n \n );\n }\n}\n\nFilterMenu.propTypes = {\n toggleFreezeItem: PropTypes.func.isRequired,\n filterItems: PropTypes.func.isRequired,\n filterBy: PropTypes.string.isRequired,\n};\n\nexport default FilterMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\n\nclass ToggleFilter extends React.Component {\n render() {\n const { filterBy } = this.props;\n return (\n \n {filterBy}\n x\n \n );\n }\n}\n\nToggleFilter.propTypes = {\n filterBy: PropTypes.string.isRequired,\n toggleFilter: PropTypes.func.isRequired,\n};\n\nexport default ToggleFilter;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport EmptyTip from '../../../components/empty-tip';\nimport { Button } from 'reactstrap';\nimport { navigate } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport LogsExportExcelDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-logs-export-excel-dialog';\nimport ModalPortal from '../../../components/modal-portal';\nimport LogsNav from './logs-nav';\nimport FilterMenu from './file-access-item-menu';\nimport ToggleFilter from './file-access-toggle-filter';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\n\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n getPreviousPage = () => {\n this.props.getLogsByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getLogsByPage(this.props.currentPage + 1);\n };\n\n toggleFilterByUser = () => {\n this.props.filterByUser(null);\n };\n\n toggleFilterByRepo = () => {\n this.props.filterByRepo(null);\n };\n\n toggleFreezeItem = (freezed) => {\n this.setState({\n isItemFreezed: freezed\n });\n };\n\n render() {\n const {\n loading, errorMsg, items,\n userFilteredBy, repoFilteredBy,\n perPage, currentPage, hasNextPage\n } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No file access logs')}

    \n
    \n );\n const table = (\n \n
    \n {userFilteredBy && (\n \n )}\n {repoFilteredBy && (\n \n )}\n
    \n \n \n \n \n \n \n \n \n \n \n \n {items &&\n \n {items.map((item, index) => {\n return ();\n })}\n \n }\n
    {gettext('Name')}{gettext('Type')}{gettext('IP')}{' / '}{gettext('Device')}{gettext('Date')}{gettext('Library')}{gettext('File')}{' / '}{gettext('Folder')}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool,\n errorMsg: PropTypes.string,\n items: PropTypes.array,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n toggleFreezeItem: PropTypes.func,\n userFilteredBy: PropTypes.string,\n repoFilteredBy: PropTypes.string,\n filterByUser: PropTypes.func,\n filterByRepo: PropTypes.func,\n};\n\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isHighlighted: false,\n isOpIconShown: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isFreezed) {\n this.setState({\n isHighlighted: true,\n isOpIconShown: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isFreezed) {\n this.setState({\n isHighlighted: false,\n isOpIconShown: false\n });\n }\n };\n\n filterByUser = () => {\n const { item } = this.props;\n this.props.filterByUser(item.email);\n };\n\n filterByRepo = () => {\n const { item } = this.props;\n this.props.filterByRepo(item.repo_id);\n };\n\n toggleFreezeItem = (freezed) => {\n this.props.toggleFreezeItem(freezed);\n if (!freezed) {\n this.setState({\n isHighlighted: false,\n isOpIconShown: false\n });\n }\n };\n\n render() {\n const { isHighlighted, isOpIconShown } = this.state;\n const { item, userFilteredBy, repoFilteredBy } = this.props;\n return (\n \n \n \n {isOpIconShown && !userFilteredBy && (\n \n )}\n \n {item.event_type}\n {item.ip}{' / '}{item.device || '--'}\n {moment(item.time).fromNow()}\n \n {item.repo_name ? item.repo_name : gettext('Deleted')}\n {isOpIconShown && item.repo_name && !repoFilteredBy && (\n \n )}\n \n {item.file_or_dir_name}\n \n );\n }\n}\n\n\nItem.propTypes = {\n item: PropTypes.object,\n isFreezed: PropTypes.bool,\n toggleFreezeItem: PropTypes.func,\n userFilteredBy: PropTypes.string,\n repoFilteredBy: PropTypes.string,\n filterByUser: PropTypes.func,\n filterByRepo: PropTypes.func,\n};\n\nclass FileAccessLogs extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n logList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n isExportExcelDialogOpen: false,\n };\n this.initPage = 1;\n }\n\n toggleExportExcelDialog = () => {\n this.setState({isExportExcelDialogOpen: !this.state.isExportExcelDialogOpen});\n };\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage),\n userFilteredBy: urlParams.get('email'),\n repoFilteredBy: urlParams.get('repo_id')\n }, () => {\n this.getLogsByPage(this.state.currentPage);\n });\n }\n\n getLogsByPage = (page) => {\n const { perPage, userFilteredBy, repoFilteredBy } = this.state;\n seafileAPI.sysAdminListFileAccessLogs(page, perPage, userFilteredBy, repoFilteredBy).then((res) => {\n this.setState({\n logList: res.data.file_access_log_list,\n loading: false,\n currentPage: page,\n hasNextPage: res.data.has_next_page,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getLogsByPage(this.initPage));\n };\n\n updateURL = (obj) => {\n let url = new URL(location.href);\n let searchParams = new URLSearchParams(url.search);\n for (let key in obj) {\n obj[key] == null ?\n searchParams.delete(key) :\n searchParams.set(key, obj[key]);\n }\n url.search = searchParams.toString();\n navigate(url.toString());\n };\n\n filterByUser = (email) => {\n this.setState({\n userFilteredBy: email\n }, () => {\n this.getLogsByPage(this.initPage);\n this.updateURL({'email': email});\n });\n };\n\n filterByRepo = (repoID) => {\n this.setState({\n repoFilteredBy: repoID\n }, () => {\n this.getLogsByPage(this.initPage);\n this.updateURL({'repo_id': repoID});\n });\n };\n\n render() {\n const {\n logList,\n userFilteredBy, repoFilteredBy,\n currentPage, perPage, hasNextPage,\n isExportExcelDialogOpen\n } = this.state;\n return (\n \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isExportExcelDialogOpen &&\n \n \n \n }\n
    \n );\n }\n}\n\nexport default FileAccessLogs;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport EmptyTip from '../../../components/empty-tip';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport LogsNav from './logs-nav';\nimport { Button } from 'reactstrap';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport ModalPortal from '../../../components/modal-portal';\nimport CommitDetails from '../../../components/dialog/commit-details';\nimport LogsExportExcelDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-logs-export-excel-dialog';\n\nclass Content extends Component {\n\n getPreviousPage = () => {\n this.props.getLogsByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getLogsByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, perPage, currentPage, hasNextPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No file update logs')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n {items &&\n \n {items.map((item, index) => {\n return ();\n })}\n \n }\n
    {gettext('Name')}{gettext('Date')}{gettext('Library')}{gettext('Action')}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n};\n\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n isCommitDetailsDialogOpen: false,\n };\n }\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n\n toggleCommitDetailsDialog = () => {\n this.setState({\n isCommitDetailsDialogOpen: !this.state.isCommitDetailsDialogOpen\n });\n };\n\n showCommitDetails = (e) => {\n e.preventDefault();\n this.setState({\n isCommitDetailsDialogOpen: !this.state.isCommitDetailsDialogOpen\n });\n };\n\n render() {\n let { item } = this.props;\n return (\n \n \n \n {moment(item.time).fromNow()}\n {item.repo_name ? item.repo_name : gettext('Deleted')}\n \n {item.file_operation}\n {item.repo_name && !item.repo_encrypted &&\n {gettext('Details')}\n }\n \n \n {this.state.isCommitDetailsDialogOpen &&\n \n \n \n }\n \n );\n }\n}\n\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\n\nclass FileUpdateLogs extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n logList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n isExportExcelDialogOpen: false,\n };\n this.initPage = 1;\n }\n\n toggleExportExcelDialog = () => {\n this.setState({isExportExcelDialogOpen: !this.state.isExportExcelDialogOpen});\n };\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getLogsByPage(this.state.currentPage);\n });\n }\n\n getLogsByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListFileUpdateLogs(page, perPage).then((res) => {\n this.setState({\n logList: res.data.file_update_log_list,\n loading: false,\n currentPage: page,\n hasNextPage: res.data.has_next_page,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getLogsByPage(this.initPage));\n };\n\n render() {\n let { logList, currentPage, perPage, hasNextPage, isExportExcelDialogOpen } = this.state;\n return (\n \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isExportExcelDialogOpen &&\n \n \n \n }\n
    \n );\n }\n}\n\nexport default FileUpdateLogs;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport moment from 'moment';\nimport { Button } from 'reactstrap';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, siteRoot } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport LogsExportExcelDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-logs-export-excel-dialog';\nimport ModalPortal from '../../../components/modal-portal';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\nimport LogsNav from './logs-nav';\n\nclass Content extends Component {\n\n getPreviousPage = () => {\n this.props.getLogsByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getLogsByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, perPage, currentPage, hasNextPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No permission logs')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {items &&\n \n {items.map((item, index) => {\n return ();\n })}\n \n }\n
    {gettext('Share From')}{gettext('Share To')}{gettext('Actions')}{gettext('Permission')}{gettext('Library')}{gettext('Folder')}{gettext('Date')}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n };\n }\n\n handleMouseOver = () => {\n this.setState({\n isOpIconShown: true\n });\n };\n\n handleMouseOut = () => {\n this.setState({\n isOpIconShown: false\n });\n };\n\n getActionTextByEType = (etype) => {\n if (etype.indexOf('add') != -1) {\n return gettext('Add');\n } else if (etype.indexOf('modify') != -1) {\n return gettext('Modify');\n } else if (etype.indexOf('delete') != -1) {\n return gettext('Delete');\n } else {\n return '';\n }\n };\n\n getShareTo = (item) => {\n switch(item.share_type) {\n case 'user':\n return ;\n case 'group':\n return {item.to_group_name};\n case 'department':\n return {item.to_group_name};\n case 'all':\n return {gettext('All')};\n default:\n return gettext('Deleted');\n }\n };\n\n render() {\n let { item } = this.props;\n return (\n \n \n {this.getShareTo(item)}\n {this.getActionTextByEType(item.etype)}\n {Utils.sharePerms(item.permission)}\n {item.repo_name ? item.repo_name : gettext('Deleted')}\n {item.folder}\n {moment(item.date).fromNow()}\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nclass SharePermissionLogs extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n logList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n isExportExcelDialogOpen: false,\n };\n this.initPage = 1;\n }\n\n toggleExportExcelDialog = () => {\n this.setState({isExportExcelDialogOpen: !this.state.isExportExcelDialogOpen});\n };\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getLogsByPage(this.state.currentPage);\n });\n }\n\n getLogsByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListSharePermissionLogs(page, perPage).then((res) => {\n this.setState({\n logList: res.data.share_permission_log_list,\n loading: false,\n currentPage: page,\n hasNextPage: res.data.has_next_page,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getLogsByPage(this.initPage));\n };\n\n render() {\n let { logList, currentPage, perPage, hasNextPage, isExportExcelDialogOpen } = this.state;\n return (\n \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {isExportExcelDialogOpen &&\n \n \n \n }\n
    \n );\n }\n}\n\nexport default SharePermissionLogs;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n headingText: PropTypes.string.isRequired,\n children: PropTypes.object.isRequired\n};\n\nclass Section extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { headingText, children} = this.props;\n return (\n
    \n

    {headingText}

    \n {children}\n
    \n );\n }\n}\n\nSection.propTypes = propTypes;\n\nexport default Section;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col, Label } from 'reactstrap';\n\nconst propTypes = {\n displayName: PropTypes.string.isRequired,\n helpTip: PropTypes.string,\n mainContent: PropTypes.object.isRequired,\n extraContent: PropTypes.object\n};\n\nclass SettingItemBase extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { helpTip, displayName, mainContent, extraContent } = this.props;\n return (\n \n \n \n \n \n \n {mainContent}\n {helpTip &&

    {helpTip}

    }\n \n \n {extraContent}\n \n
    \n
    \n );\n }\n}\n\nSettingItemBase.propTypes = propTypes;\n\nexport default SettingItemBase;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Input, Button } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport SettingItemBase from './setting-item-base';\n\nconst propTypes = {\n inputType: PropTypes.string,\n saveSetting: PropTypes.func.isRequired,\n keyText: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.string,PropTypes.number]),\n helpTip: PropTypes.string.isRequired,\n displayName: PropTypes.string.isRequired\n};\n\nclass WebSettingInput extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isBtnsShown: false,\n value: this.props.value\n };\n }\n\n toggleBtns = () => {\n this.setState({isBtnsShown: !this.state.isBtnsShown});\n };\n\n hideBtns = (e) => {\n if (!this.state.isBtnsShown) {\n return;\n }\n if (this.props.value != this.state.value) {\n this.setState({value: this.props.value});\n }\n this.toggleBtns();\n };\n\n onInputChange = (e) => {\n this.setState({ value: e.target.value });\n };\n\n onSubmit = (e) => {\n const value = this.state.value.trim();\n if (value != this.props.value) {\n this.props.saveSetting(this.props.keyText, value);\n }\n this.toggleBtns();\n };\n\n render() {\n const { isBtnsShown, value } = this.state;\n const { helpTip, displayName, inputType } = this.props;\n return (\n \n }\n extraContent={\n isBtnsShown ?\n \n \n \n : null\n }\n />\n );\n }\n}\n\nWebSettingInput.propTypes = propTypes;\n\nexport default WebSettingInput;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport SettingItemBase from './setting-item-base';\n\nconst propTypes = {\n postFile: PropTypes.func.isRequired,\n keyText: PropTypes.string.isRequired,\n filePath: PropTypes.string.isRequired,\n helpTip: PropTypes.string.isRequired,\n fileWidth: PropTypes.number.isRequired,\n fileHeight: PropTypes.number.isRequired,\n displayName: PropTypes.string.isRequired\n};\n\nclass WebSettingFile extends Component {\n\n constructor(props) {\n super(props);\n this.fileInput = React.createRef();\n }\n\n uploadFile = () => {\n if (!this.fileInput.current.files.length) {\n return;\n }\n const file = this.fileInput.current.files[0];\n this.props.postFile(file, this.props.keyText);\n };\n\n openFileInput = () => {\n this.fileInput.current.click();\n };\n\n render() {\n const { helpTip, filePath, fileWidth, fileHeight, displayName } = this.props;\n return (\n \n \n \n }\n />\n );\n }\n}\n\nWebSettingFile.propTypes = propTypes;\n\nexport default WebSettingFile;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Input } from 'reactstrap';\nimport SettingItemBase from './setting-item-base';\n\nconst propTypes = {\n saveSetting: PropTypes.func.isRequired,\n keyText: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n helpTip: PropTypes.string.isRequired,\n displayName: PropTypes.string.isRequired\n};\n\nclass WebSettingCheckbox extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n inputChecked: this.props.value\n };\n }\n\n onInputChange = (e) => {\n const checked = e.target.checked;\n const valueToNum = checked ? 1 : 0;\n this.setState({\n inputChecked: checked\n });\n this.props.saveSetting(this.props.keyText, valueToNum);\n };\n\n render() {\n const { inputChecked } = this.state;\n const { helpTip, displayName } = this.props;\n return (\n \n \n

    {helpTip}

    \n \n }\n />\n );\n }\n}\n\nWebSettingCheckbox.propTypes = propTypes;\n\nexport default WebSettingCheckbox;\n","import React, { Component, Fragment } from 'react';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, isPro, mediaUrl, logoPath, faviconPath, loginBGPath } from '../../../utils/constants';\nimport Loading from '../../../components/loading';\nimport toaster from '../../../components/toast';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Section from './section';\nimport InputItem from './input-item';\nimport FileItem from './file-item';\nimport CheckboxItem from './checkbox-item';\n\nimport '../../../css/system-admin-web-settings.css';\n\nclass WebSettings extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n config_dict: null,\n logoPath: mediaUrl + logoPath,\n faviconPath: mediaUrl + faviconPath,\n loginBGPath: mediaUrl + loginBGPath\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminGetSysSettingInfo().then((res) => {\n this.setState({\n loading: false,\n config_dict: res.data\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n saveSetting = (key, value) => {\n seafileAPI.sysAdminSetSysSettingInfo(key, value).then((res) => {\n this.setState({\n config_dict: res.data\n });\n toaster.success(gettext('Success'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n postFile = (file, fileType) => {\n let postFile;\n if (fileType == 'Logo') {\n postFile = seafileAPI.sysAdminUpdateLogo(file);\n } else if (fileType == 'Favicon') {\n postFile = seafileAPI.sysAdminUpdateFavicon(file);\n } else if (fileType == 'loginBGImage') {\n postFile = seafileAPI.sysAdminUpdateLoginBG(file);\n }\n postFile.then((res) => {\n if (fileType == 'Logo') {\n this.setState({\n logoPath: res.data.logo_path\n });\n } else if (fileType == 'Favicon') {\n this.setState({\n faviconPath: res.data.favicon_path\n });\n } else if (fileType == 'loginBGImage') {\n this.setState({\n loginBGPath: res.data.login_bg_image_path\n });\n }\n toaster.success(gettext('Success'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { loading, errorMsg, config_dict, logoPath, faviconPath, loginBGPath } = this.state;\n return (\n \n \n
    \n
    \n
    \n

    {gettext('Settings')}

    \n
    \n
    \n {loading && }\n {errorMsg &&

    {errorMsg}

    }\n {(!loading && !errorMsg) && config_dict &&\n \n

    {gettext('Note: Settings via web interface are saved in database table (seahub-db/constance_config). They have a higher priority over the settings in config files.')}

    \n\n
    \n \n \n \n \n
    \n\n
    \n \n \n \n \n \n \n \n \n \n
    \n\n
    \n \n \n \n \n \n \n \n \n
    \n\n
    \n \n
    \n\n
    \n \n \n \n \n \n \n \n
    \n\n
    \n \n \n \n \n \n \n \n \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n {isPro &&
    \n \n
    }\n
    \n }\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default WebSettings;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Form, FormGroup, Input } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\n\nconst propTypes = {\n toggle: PropTypes.func.isRequired,\n addNotification: PropTypes.func.isRequired\n};\n\nclass SysAdminAddSysNotificationDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n value: '',\n isSubmitBtnActive: false\n };\n }\n\n handleChange = (e) => {\n const value = e.target.value;\n this.setState({\n value: value,\n isSubmitBtnActive: value.trim() != ''\n });\n };\n\n handleSubmit = () => {\n this.toggle();\n this.props.addNotification(this.state.value.trim());\n };\n\n toggle = () => {\n this.props.toggle();\n };\n\n render() {\n return (\n \n {gettext('Add new notification')}\n \n
    \n \n \n \n
    \n
    \n \n \n \n \n
    \n );\n }\n}\n\nSysAdminAddSysNotificationDialog.propTypes = propTypes;\n\nexport default SysAdminAddSysNotificationDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport SysAdminAddSysNotificationDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-sys-notification-dialog';\nimport MainPanelTopbar from '../main-panel-topbar';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No notifications')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Notification Detail')}{/*Operations*/}
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n getItemsByPage: PropTypes.func,\n curPerPage: PropTypes.number,\n deleteItem: PropTypes.func,\n setToCurrent: PropTypes.func.isRequired,\n deleteNotification: PropTypes.func.isRequired,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false,\n isDeleteDialogOpen: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n toggleDeleteDialog = (e) => {\n if (e) {\n e.preventDefault();\n }\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n deleteNotification = () => {\n this.props.deleteNotification(this.props.item.id);\n this.toggleDeleteDialog();\n };\n\n setToCurrent = () => {\n this.props.setToCurrent(this.props.item.id);\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Set to current':\n this.setToCurrent();\n break;\n case 'Delete':\n this.toggleDeleteDialog();\n break;\n }\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch (item) {\n case 'Set to current':\n translateResult = gettext('Set to current');\n break;\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n default:\n break;\n }\n return translateResult;\n };\n\n getOperations = () => {\n const { item } = this.props;\n let operations = [];\n if (!item.is_current) {\n operations.push('Set to current');\n }\n operations.push('Delete');\n return operations;\n };\n\n render() {\n const { item } = this.props;\n const { isOpIconShown, isDeleteDialogOpen } = this.state;\n\n return (\n \n \n \n {item.msg}\n {item.is_current &&\n {gettext('(current notification)')}\n }\n \n \n {isOpIconShown &&\n \n }\n \n \n {isDeleteDialogOpen &&\n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n deleteItem: PropTypes.func,\n onFreezedItem: PropTypes.func.isRequired,\n setToCurrent: PropTypes.func.isRequired,\n deleteNotification: PropTypes.func.isRequired,\n};\n\nclass Notifications extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n notificationList: [],\n isAddNotificationDialogOpen: false\n };\n }\n\n componentDidMount () {\n seafileAPI.sysAdminListAllSysNotifications().then((res) => {\n this.setState({\n loading: false,\n notificationList: res.data.notifications\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n toggleAddNotificationDialog = () => {\n this.setState({isAddNotificationDialogOpen: !this.state.isAddNotificationDialogOpen});\n };\n\n addNotification = (msg) => {\n seafileAPI.sysAdminAddSysNotification(msg).then(res => {\n let notificationList = this.state.notificationList;\n notificationList.unshift(res.data.notification);\n this.setState({notificationList: notificationList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteNotification = (id) => {\n seafileAPI.sysAdminDeleteSysNotification(id).then(res => {\n let notificationList = this.state.notificationList.filter(item => {\n return item.id != id;\n });\n this.setState({notificationList: notificationList});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n setToCurrent = (id) => {\n seafileAPI.sysAdminSetSysNotificationToCurrent(id).then(res => {\n let notificationList = this.state.notificationList.map(item => {\n if (item.id == id) {\n item.is_current = true;\n } else {\n item.is_current = false;\n }\n return item;\n });\n this.setState({notificationList: notificationList});\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n const { isAddNotificationDialogOpen } = this.state;\n return (\n \n \n \n \n
    \n
    \n
    \n

    {gettext('All Notifications')}

    \n
    \n
    \n \n
    \n
    \n
    \n {isAddNotificationDialogOpen &&\n \n }\n
    \n );\n }\n}\n\nexport default Notifications;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { gettext } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport MainPanelTopbar from './main-panel-topbar';\n\n\nconst tablePropTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n records: PropTypes.array.isRequired,\n};\n\nclass Table extends Component {\n\n render() {\n let { loading, errorMsg, records } = this.props;\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n return (\n \n \n \n \n \n \n \n \n \n \n \n {records.map((record, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Library')}ID{gettext('Path')}{gettext('Label')}{gettext('Suggestion')}
    \n );\n }\n }\n}\n\nTable.propTypes = tablePropTypes;\n\n\nconst itemPropTypes = {\n record: PropTypes.object.isRequired,\n};\n\nclass Item extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n render() {\n let record = this.props.record;\n\n return (\n \n {record.repo_name}\n {record.repo_id}\n {record.path}\n {record.detail.label}\n {record.detail.suggestion}\n \n );\n }\n}\n\nItem.propTypes = itemPropTypes;\n\n\nclass FileScanRecords extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n records: [],\n };\n }\n\n componentDidMount() {\n seafileAPI.listFileScanRecords().then((res) => {\n this.setState({\n loading: false,\n records: res.data.record_list,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n render() {\n return (\n \n \n
    \n
    \n
    \n

    {gettext('Content Scan Records')}

    \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default FileScanRecords;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'reactstrap';\nimport { siteRoot } from '../../../utils/constants';\nimport Loading from '../../../components/loading';\n\nconst WorkWeixinDepartmentMembersListPropTypes = {\n isMembersListLoading: PropTypes.bool.isRequired,\n membersList: PropTypes.array.isRequired,\n newUsersTempObj: PropTypes.object.isRequired,\n checkedDepartmentId: PropTypes.number.isRequired,\n onUserChecked: PropTypes.func.isRequired,\n onAllUsersChecked: PropTypes.func.isRequired,\n isCheckedAll: PropTypes.bool.isRequired,\n canCheckUserIds: PropTypes.array.isRequired,\n};\n\nclass WorkWeixinDepartmentMembersList extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { newUsersTempObj, checkedDepartmentId, isMembersListLoading, canCheckUserIds } = this.props;\n const membersList = this.props.membersList.map((member, index) => {\n let avatar = member.avatar;\n if (member.avatar && member.avatar.length > 0) {\n avatar = member.avatar.substring(0, member.avatar.length - 1) + '100';// get smaller avatar\n } else {\n avatar = siteRoot + 'media/avatars/default.png';\n }\n return (\n \n \n {!member.email &&\n this.props.onUserChecked(member)}\n checked={(member.userid in newUsersTempObj) ? 'checked' : ''}>}\n \n \"\"\n {member.name}\n {member.mobile}\n {member.contact_email}\n {member.email && }\n \n );\n });\n\n return (\n
    \n {isMembersListLoading && }\n {!isMembersListLoading && this.props.membersList.length > 0 &&\n \n \n \n \n \n \n \n \n \n \n \n {membersList}\n
    \n {canCheckUserIds.length > 0 &&\n this.props.onAllUsersChecked()}>}\n {'名称'}{'手机号'}{'邮箱'}{'已添加'}
    \n }\n {!isMembersListLoading && this.props.membersList.length === 0 &&\n
    \n \"\"/\n

    {'成员列表为空'}

    \n
    \n }\n
    \n );\n }\n}\n\nWorkWeixinDepartmentMembersList.propTypes = WorkWeixinDepartmentMembersListPropTypes;\n\nexport default WorkWeixinDepartmentMembersList;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Dropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';\nimport { gettext, isPro } from '../../../utils/constants';\n\nconst WorkWeixinDepartmentsTreeNodePropTypes = {\n index: PropTypes.number,\n department: PropTypes.object.isRequired,\n isChildrenShow: PropTypes.bool.isRequired,\n onChangeDepartment: PropTypes.func.isRequired,\n checkedDepartmentId: PropTypes.number.isRequired,\n importDepartmentDialogToggle: PropTypes.func.isRequired,\n};\n\nclass WorkWeixinDepartmentsTreeNode extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isChildrenShow: false,\n dropdownOpen: false,\n active: false,\n };\n }\n\n toggleChildren = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n isChildrenShow: !this.state.isChildrenShow,\n });\n };\n\n dropdownToggle = (e) => {\n e.stopPropagation();\n this.setState({ dropdownOpen: !this.state.dropdownOpen });\n };\n\n onMouseEnter = () => {\n this.setState({ active: true });\n };\n\n onMouseLeave = () => {\n if (this.state.dropdownOpen) return;\n this.setState({ active: false });\n };\n\n importDepartmentDialogToggle = (depart) => {\n this.setState({ active: false });\n this.props.importDepartmentDialogToggle(depart);\n };\n\n componentDidMount() {\n if (this.props.index === 0) {\n this.setState({ isChildrenShow: true });\n this.props.onChangeDepartment(this.props.department.id);\n }\n }\n\n renderTreeNodes = (departmentsTree) => {\n if (departmentsTree.length > 0) {\n return departmentsTree.map((department) => {\n return (\n \n );\n });\n }\n };\n\n changeDept = (departmentID) => {\n const { department, checkedDepartmentId } = this.props;\n this.props.onChangeDepartment(departmentID);\n if (checkedDepartmentId === department.id && !this.state.isChildrenShow) {\n this.setState({ isChildrenShow: true });\n }\n };\n\n render() {\n const { isChildrenShow, department, checkedDepartmentId } = this.props;\n let toggleClass = classNames({\n 'folder-toggle-icon fa fa-caret-down': department.children && this.state.isChildrenShow,\n 'folder-toggle-icon fa fa-caret-right': department.children && !this.state.isChildrenShow,\n });\n let nodeInnerClass = classNames({\n 'tree-node-inner': true,\n 'tree-node-inner-hover': this.state.active,\n 'tree-node-hight-light': checkedDepartmentId === department.id\n });\n return (\n \n {isChildrenShow &&\n this.changeDept(department.id)}\n onMouseEnter={this.onMouseEnter}\n onMouseLeave={this.onMouseLeave}\n >\n this.toggleChildren(e)}>\n \n \n {department.name}\n {isPro &&\n this.dropdownToggle(e)}\n direction=\"down\"\n style={this.state.active ? {} : { opacity: 0 }}\n >\n \n \n \n {'导入部门'}\n \n \n }\n \n }\n {this.state.isChildrenShow &&\n
    \n {department.children && this.renderTreeNodes(department.children)}\n
    \n }\n
    \n );\n }\n}\n\nWorkWeixinDepartmentsTreeNode.propTypes = WorkWeixinDepartmentsTreeNodePropTypes;\n\nexport default WorkWeixinDepartmentsTreeNode;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Loading from '../../../components/loading';\nimport WorkWeixinDepartmentsTreeNode from './work-weixin-departments-tree-node';\n\nconst WorkWeixinDepartmentsTreePanelPropTypes = {\n isTreeLoading: PropTypes.bool.isRequired,\n departmentsTree: PropTypes.array.isRequired,\n onChangeDepartment: PropTypes.func.isRequired,\n checkedDepartmentId: PropTypes.number.isRequired,\n importDepartmentDialogToggle: PropTypes.func.isRequired,\n};\n\nclass WorkWeixinDepartmentsTreePanel extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { departmentsTree } = this.props;\n return (\n
    \n
    \n {this.props.isTreeLoading ?\n :\n
    \n {departmentsTree.length > 0 && departmentsTree.map((department, index) => {\n return (\n \n );\n })}\n
    \n }\n
    \n
    \n );\n }\n}\n\nWorkWeixinDepartmentsTreePanel.propTypes = WorkWeixinDepartmentsTreePanelPropTypes;\n\nexport default WorkWeixinDepartmentsTreePanel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport Loading from '../loading';\n\nconst propTypes = {\n importDepartmentDialogToggle: PropTypes.func.isRequired,\n onImportDepartmentSubmit: PropTypes.func.isRequired,\n departmentsCount: PropTypes.number.isRequired,\n membersCount: PropTypes.number.isRequired,\n departmentName: PropTypes.string.isRequired,\n};\n\nclass ImportWorkWeixinDepartmentDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isLoading : false,\n };\n }\n\n toggle = () => {\n this.props.importDepartmentDialogToggle(null);\n };\n\n handleSubmit = () => {\n this.props.onImportDepartmentSubmit();\n this.setState({ isLoading : true });\n };\n\n render() {\n const { departmentsCount, membersCount, departmentName } = this.props;\n return (\n \n \n {'导入部门 '}{departmentName}\n \n \n

    {'将要导入 '}{departmentsCount}{' 个部门,其中包括 '}{membersCount}{' 个成员'}

    \n {this.state.isLoading && }\n
    \n \n \n \n \n
    \n );\n }\n}\n\nImportWorkWeixinDepartmentDialog.propTypes = propTypes;\n\nexport default ImportWorkWeixinDepartmentDialog;\n","import React, { Component, Fragment } from 'react';\nimport { Button } from 'reactstrap';\nimport deepCopy from 'deep-copy';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { siteRoot, isPro } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport toaster from '../../components/toast';\nimport MainPanelTopbar from './main-panel-topbar';\nimport { WorkWeixinDepartmentMembersList, WorkWeixinDepartmentsTreePanel } from './work-weixin';\nimport ImportWorkWeixinDepartmentDialog from '../../components/dialog/import-work-weixin-department-dialog';\n\nimport '../../css/work-weixin-departments.css';\n\nclass WorkWeixinDepartments extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isTreeLoading: true,\n isMembersListLoading: true,\n departmentsTree: [],\n checkedDepartmentId: 0,\n membersTempObj: {},\n membersList: [],\n newUsersTempObj: {},\n isCheckedAll: false,\n canCheckUserIds: [],\n isImportDepartmentDialogShow: false,\n importDepartment: null,\n importDepartmentChildrenCount: 0,\n importDepartmentMembersCount: 0,\n };\n }\n\n getDepartmentsTree = (list) => {\n let childIds = [];\n let parentIds = [];\n for (let i = 0; i < list.length; i++) {\n if (childIds.indexOf(list[i].id) === -1) {\n childIds.push(list[i].id);\n }\n if (parentIds.indexOf(list[i].parentid) === -1) {\n parentIds.push(list[i].parentid);\n }\n }\n let intersection = parentIds.filter((v) => {\n return childIds.indexOf(v) !== -1;\n });\n let rootIds = parentIds.concat(intersection).filter((v) => {\n return parentIds.indexOf(v) === -1 || intersection.indexOf(v) === -1;\n });\n let cloneData = deepCopy(list);\n return cloneData.filter(father => {\n let branchArr = cloneData.filter(child => father.id === child.parentid);\n branchArr.length > 0 ? father.children = branchArr : '';\n return rootIds.indexOf(father.parentid) !== -1;\n });\n };\n\n getWorkWeixinDepartmentsList = (departmentID) => {\n seafileAPI.adminListWorkWeixinDepartments(departmentID).then((res) => {\n if (!departmentID) {\n let departmentsTree = this.getDepartmentsTree(res.data.department);\n this.setState({\n isTreeLoading: false,\n departmentsTree: departmentsTree,\n });\n } else {\n this.setState({\n importDepartmentChildrenCount: res.data.department.length,\n importDepartmentMembersCount: this.state.membersTempObj[departmentID].length,\n });\n }\n }).catch((error) => {\n this.handleError(error);\n this.setState({\n isTreeLoading: false,\n isMembersListLoading: false,\n });\n if (error.response && error.response.status === 403) {\n window.location = siteRoot + 'sys/useradmin/';\n }\n });\n };\n\n getWorkWeixinDepartmentMembersList = (department_id) => {\n this.setState({\n isMembersListLoading: true,\n });\n seafileAPI.adminListWorkWeixinDepartmentMembers(department_id, {fetch_child: true}).then((res) => {\n let membersTempObj = this.state.membersTempObj;\n membersTempObj[department_id] = res.data.userlist;\n let canCheckUserIds = this.getCanCheckUserIds(res.data.userlist);\n this.setState({\n membersTempObj: membersTempObj,\n membersList: res.data.userlist,\n isMembersListLoading: false,\n canCheckUserIds: canCheckUserIds,\n });\n }).catch((error) => {\n this.setState({isMembersListLoading: false});\n this.handleError(error);\n });\n };\n\n getCanCheckUserIds = (membersList) => {\n let userIds = [];\n membersList.forEach((member) => {\n if (!member.email) userIds.push(member.userid);\n });\n return userIds;\n };\n\n onChangeDepartment = (department_id) => {\n this.setState({\n newUsersTempObj: {},\n isCheckedAll: false,\n checkedDepartmentId: department_id,\n });\n if (!(department_id in this.state.membersTempObj)) {\n this.getWorkWeixinDepartmentMembersList(department_id);\n } else {\n let canCheckUserIds = this.getCanCheckUserIds(this.state.membersTempObj[department_id]);\n this.setState({\n membersList: this.state.membersTempObj[department_id],\n canCheckUserIds: canCheckUserIds,\n });\n }\n };\n\n onUserChecked = (user) => {\n if (this.state.canCheckUserIds.indexOf(user.userid) !== -1) {\n let newUsersTempObj = this.state.newUsersTempObj;\n if (user.userid in newUsersTempObj) {\n delete newUsersTempObj[user.userid];\n if (this.state.isCheckedAll) {\n this.setState({ isCheckedAll: false });\n }\n } else {\n newUsersTempObj[user.userid] = user;\n if (Object.keys(newUsersTempObj).length === this.state.canCheckUserIds.length) {\n this.setState({ isCheckedAll: true });\n }\n }\n this.setState({ newUsersTempObj: newUsersTempObj });\n }\n };\n\n onAllUsersChecked = () => {\n this.setState({\n isCheckedAll: !this.state.isCheckedAll,\n }, () => {\n if (this.state.isCheckedAll) {\n let newUsersTempObj = {};\n let newUsersTempList = this.state.membersList.filter(user => {\n return this.state.canCheckUserIds.indexOf(user.userid) !== -1;\n });\n for (let i = 0; i < newUsersTempList.length; i++) {\n newUsersTempObj[newUsersTempList[i].userid] = newUsersTempList[i];\n }\n this.setState({ newUsersTempObj: newUsersTempObj });\n } else {\n this.setState({ newUsersTempObj: {} });\n }\n });\n };\n\n onSubmit = () => {\n const { newUsersTempObj } = this.state;\n if (JSON.stringify(newUsersTempObj) === '{}') return;\n let userList = [];\n for (let i in newUsersTempObj) {\n userList.push(newUsersTempObj[i]);\n }\n if (userList.length === 0) {\n toaster.danger('未选择成员', {duration: 3});\n return;\n }\n seafileAPI.adminAddWorkWeixinUsersBatch(userList).then((res) => {\n this.setState({\n newUsersTempObj: {},\n isCheckedAll: false,\n });\n if (res.data.success) {\n this.handleSubmitSuccess(res.data.success);\n }\n if (res.data.failed) {\n const fails= res.data.failed;\n for (let i = 0; i < fails.length; i++) {\n toaster.danger(fails[i].name + ' ' + fails[i].error_msg, {duration: 3});\n }\n }\n }).catch((error) => {\n this.handleError(error);\n });\n\n };\n\n handleSubmitSuccess = (success) => {\n let { membersTempObj, membersList, canCheckUserIds } = this.state;\n for (let i = 0; i < success.length; i++) {\n let { userid, name, email } = success[i];\n toaster.success(name + ' 成功导入', {duration: 1});\n // refresh all temp\n if (canCheckUserIds.indexOf(userid) !== -1) {\n canCheckUserIds.splice(canCheckUserIds.indexOf(userid), 1);\n }\n for (let j = 0; j < membersList.length; j++) {\n if (membersList[j].userid === userid) {\n membersList[j].email = email;\n break;\n }\n }\n for (let departmentId in membersTempObj) {\n for (let k = 0; k < membersTempObj[departmentId].length; k++) {\n if (membersTempObj[departmentId][k].userid === userid) {\n membersTempObj[departmentId][k].email = email;\n break;\n }\n }\n }\n }\n this.setState({\n membersTempObj: membersTempObj,\n membersList: membersList,\n canCheckUserIds: canCheckUserIds,\n });\n };\n\n importDepartmentDialogToggle = (importDepartment) => {\n this.setState({\n isImportDepartmentDialogShow: !this.state.isImportDepartmentDialogShow,\n importDepartment: importDepartment,\n }, () => {\n if (importDepartment) {\n this.getWorkWeixinDepartmentsList(importDepartment.id);\n }\n });\n };\n\n onImportDepartmentSubmit = () => {\n let importDepartment = this.state.importDepartment;\n if (!importDepartment) return;\n seafileAPI.adminImportWorkWeixinDepartment(importDepartment.id).then((res) => {\n this.setState({\n isMembersListLoading: true,\n checkedDepartmentId: importDepartment.id,\n membersTempObj: {},\n membersList: [],\n newUsersTempObj: {},\n isCheckedAll: false,\n canCheckUserIds: [],\n });\n this.getWorkWeixinDepartmentMembersList(importDepartment.id);\n this.importDepartmentDialogToggle(null);\n if (res.data.success) {\n this.handleImportDepartmentSubmitSuccess(res.data.success);\n }\n if (res.data.failed) {\n this.handleImportDepartmentSubmitFailed(res.data.failed);\n }\n }).catch((error) => {\n this.handleError(error);\n });\n };\n\n handleImportDepartmentSubmitSuccess = (successes) => {\n for (let i = 0, len = successes.length; i < len; i++) {\n let success = successes[i];\n let successMsg = success.type === 'department' ? '部门 ' + success.department_name + ' 导入成功' : success.api_user_name + ' 导入成功' ;\n toaster.success(successMsg, { duration: 3 });\n }\n };\n\n handleImportDepartmentSubmitFailed = (fails) => {\n for (let i = 0, len = fails.length; i < len; i++) {\n let fail = fails[i];\n let failName = fail.type === 'department' ? fail.department_name : fail.api_user_name;\n toaster.danger(failName + ' ' + fail.msg, { duration: 3} );\n }\n };\n\n handleError = (error) => {\n const errorMsg = Utils.getErrorMsg(error);\n toaster.danger(errorMsg);\n };\n\n componentDidMount() {\n this.getWorkWeixinDepartmentsList(null);\n }\n\n render() {\n const { isImportDepartmentDialogShow, isTreeLoading, importDepartment, importDepartmentChildrenCount, importDepartmentMembersCount } = this.state;\n let canImportDepartment = !!(isPro && isImportDepartmentDialogShow && !isTreeLoading && importDepartment);\n return (\n \n \n \n \n
    \n
    \n
    \n

    {'企业微信集成'}

    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {canImportDepartment &&\n \n }\n
    \n );\n }\n}\n\nexport default WorkWeixinDepartments;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'reactstrap';\nimport { siteRoot } from '../../../utils/constants';\nimport Loading from '../../../components/loading';\n\nconst DingtalkDepartmentMembersListPropTypes = {\n isMembersListLoading: PropTypes.bool.isRequired,\n membersList: PropTypes.array.isRequired,\n newUsersTempObj: PropTypes.object.isRequired,\n checkedDepartmentId: PropTypes.number.isRequired,\n onUserChecked: PropTypes.func.isRequired,\n onAllUsersChecked: PropTypes.func.isRequired,\n isCheckedAll: PropTypes.bool.isRequired,\n canCheckUserIds: PropTypes.array.isRequired,\n};\n\nclass DingtalkDepartmentMembersList extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { newUsersTempObj, checkedDepartmentId, isMembersListLoading, canCheckUserIds } = this.props;\n const membersList = this.props.membersList.map((member, index) => {\n let avatar = member.avatar;\n if (member.avatar && member.avatar.length > 0) {\n avatar = member.avatar;\n } else {\n avatar = siteRoot + 'media/avatars/default.png';\n }\n return (\n \n \n {!member.email &&\n this.props.onUserChecked(member)}\n checked={(member.userid in newUsersTempObj) ? 'checked' : ''}>}\n \n \"\"\n {member.name}\n {member.mobile}\n {member.contact_email}\n {member.email && }\n \n );\n });\n\n return (\n
    \n {isMembersListLoading && }\n {!isMembersListLoading && this.props.membersList.length > 0 &&\n \n \n \n \n \n \n \n \n \n \n \n {membersList}\n
    \n {canCheckUserIds.length > 0 &&\n this.props.onAllUsersChecked()}>}\n {'名称'}{'手机号'}{'邮箱'}{'已添加'}
    \n }\n {!isMembersListLoading && this.props.membersList.length === 0 &&\n
    \n \"\"/\n

    {'成员列表为空'}

    \n
    \n }\n
    \n );\n }\n}\n\nDingtalkDepartmentMembersList.propTypes = DingtalkDepartmentMembersListPropTypes;\n\nexport default DingtalkDepartmentMembersList;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Dropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';\nimport { gettext, isPro } from '../../../utils/constants';\n\nconst DingtalkDepartmentsTreeNodePropTypes = {\n index: PropTypes.number,\n department: PropTypes.object.isRequired,\n isChildrenShow: PropTypes.bool.isRequired,\n onChangeDepartment: PropTypes.func.isRequired,\n checkedDepartmentId: PropTypes.number.isRequired,\n importDepartmentDialogToggle: PropTypes.func.isRequired,\n};\n\nclass DingtalkDepartmentsTreeNode extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isChildrenShow: false,\n dropdownOpen: false,\n active: false,\n };\n }\n\n toggleChildren = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n isChildrenShow: !this.state.isChildrenShow,\n });\n };\n\n dropdownToggle = (e) => {\n e.stopPropagation();\n this.setState({ dropdownOpen: !this.state.dropdownOpen });\n };\n\n onMouseEnter = () => {\n this.setState({ active: true });\n };\n\n onMouseLeave = () => {\n if (this.state.dropdownOpen) return;\n this.setState({ active: false });\n };\n\n importDepartmentDialogToggle = (depart) => {\n this.setState({ active: false });\n this.props.importDepartmentDialogToggle(depart);\n };\n\n componentDidMount() {\n if (this.props.index === 0) {\n this.setState({ isChildrenShow: true });\n this.props.onChangeDepartment(this.props.department.id);\n }\n }\n\n renderTreeNodes = (departmentsTree) => {\n if (departmentsTree.length > 0) {\n return departmentsTree.map((department) => {\n return (\n \n );\n });\n }\n };\n\n changeDept = (departmentID) => {\n const { department, checkedDepartmentId } = this.props;\n this.props.onChangeDepartment(departmentID);\n if (checkedDepartmentId === department.id && !this.state.isChildrenShow) {\n this.setState({ isChildrenShow: true });\n }\n };\n\n render() {\n const { isChildrenShow, department, checkedDepartmentId } = this.props;\n let toggleClass = classNames({\n 'folder-toggle-icon fa fa-caret-down': department.children && this.state.isChildrenShow,\n 'folder-toggle-icon fa fa-caret-right': department.children && !this.state.isChildrenShow,\n });\n let nodeInnerClass = classNames({\n 'tree-node-inner': true,\n 'tree-node-inner-hover': this.state.active,\n 'tree-node-hight-light': checkedDepartmentId === department.id\n });\n return (\n \n {isChildrenShow &&\n this.changeDept(department.id)}\n onMouseEnter={this.onMouseEnter}\n onMouseLeave={this.onMouseLeave}\n >\n this.toggleChildren(e)}>\n \n \n {department.name}\n {isPro &&\n this.dropdownToggle(e)}\n direction=\"down\"\n style={this.state.active ? {} : { opacity: 0 }}\n >\n \n \n \n {'导入部门'}\n \n \n }\n \n }\n {this.state.isChildrenShow &&\n
    \n {department.children && this.renderTreeNodes(department.children)}\n
    \n }\n
    \n );\n }\n}\n\nDingtalkDepartmentsTreeNode.propTypes = DingtalkDepartmentsTreeNodePropTypes;\n\nexport default DingtalkDepartmentsTreeNode;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Loading from '../../../components/loading';\nimport DingtalkDepartmentsTreeNode from './dingtalk-departments-tree-node';\n\nconst DingtalkDepartmentsTreePanelPropTypes = {\n isTreeLoading: PropTypes.bool.isRequired,\n departmentsTree: PropTypes.array.isRequired,\n onChangeDepartment: PropTypes.func.isRequired,\n checkedDepartmentId: PropTypes.number.isRequired,\n importDepartmentDialogToggle: PropTypes.func.isRequired,\n};\n\nclass DingtalkDepartmentsTreePanel extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { departmentsTree } = this.props;\n return (\n
    \n
    \n {this.props.isTreeLoading ?\n :\n
    \n {departmentsTree.length > 0 && departmentsTree.map((department, index) => {\n return (\n \n );\n })}\n
    \n }\n
    \n
    \n );\n }\n}\n\nDingtalkDepartmentsTreePanel.propTypes = DingtalkDepartmentsTreePanelPropTypes;\n\nexport default DingtalkDepartmentsTreePanel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport Loading from '../loading';\n\nconst propTypes = {\n importDepartmentDialogToggle: PropTypes.func.isRequired,\n onImportDepartmentSubmit: PropTypes.func.isRequired,\n departmentsCount: PropTypes.number.isRequired,\n membersCount: PropTypes.number.isRequired,\n departmentName: PropTypes.string.isRequired,\n};\n\nclass ImportDingtalkDepartmentDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isLoading : false,\n };\n }\n\n toggle = () => {\n this.props.importDepartmentDialogToggle(null);\n };\n\n handleSubmit = () => {\n this.props.onImportDepartmentSubmit();\n this.setState({ isLoading : true });\n };\n\n render() {\n const { departmentsCount, membersCount, departmentName } = this.props;\n return (\n \n \n {'导入部门 '}{departmentName}\n \n \n

    {'将要导入 '}{departmentsCount}{' 个部门,其中包括 '}{membersCount}{' 个成员'}

    \n {this.state.isLoading && }\n
    \n \n \n \n \n
    \n );\n }\n}\n\nImportDingtalkDepartmentDialog.propTypes = propTypes;\n\nexport default ImportDingtalkDepartmentDialog;\n","import React, { Component, Fragment } from 'react';\nimport { Button } from 'reactstrap';\nimport deepCopy from 'deep-copy';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport { siteRoot, isPro } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport MainPanelTopbar from './main-panel-topbar';\nimport toaster from '../../components/toast';\nimport { DingtalkDepartmentMembersList, DingtalkDepartmentsTreePanel } from './dingtalk';\nimport ImportDingtalkDepartmentDialog from '../../components/dialog/import-dingtalk-department-dialog';\n\nimport '../../css/work-weixin-departments.css';\nimport '../../css/dingtalk-departments.css';\n\nclass DingtalkDepartments extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isTreeLoading: true,\n isMembersListLoading: true,\n departmentsTree: [],\n checkedDepartmentId: 0,\n membersTempObj: {},\n membersList: [],\n newUsersTempObj: {},\n isCheckedAll: false,\n canCheckUserIds: [],\n isImportDepartmentDialogShow: false,\n importDepartment: null,\n importDepartmentChildrenCount: 0,\n importDepartmentMembersCount: 0,\n };\n }\n\n getDepartmentsTree = (list) => {\n let childIds = [];\n let parentIds = [];\n for (let i = 0; i < list.length; i++) {\n if (childIds.indexOf(list[i].id) === -1) {\n childIds.push(list[i].id);\n }\n if (parentIds.indexOf(list[i].parentid) === -1) {\n parentIds.push(list[i].parentid);\n }\n }\n let intersection = parentIds.filter((v) => {\n return childIds.indexOf(v) !== -1;\n });\n let rootIds = parentIds.concat(intersection).filter((v) => {\n return parentIds.indexOf(v) === -1 || intersection.indexOf(v) === -1;\n });\n let cloneData = deepCopy(list);\n return cloneData.filter(father => {\n let branchArr = cloneData.filter(child => father.id === child.parentid);\n branchArr.length > 0 ? father.children = branchArr : '';\n return rootIds.indexOf(father.parentid) !== -1;\n });\n };\n\n getDingtalkDepartmentsList = (departmentID) => {\n seafileAPI.adminListDingtalkDepartments(departmentID).then((res) => {\n if (!departmentID) {\n let departmentsTree = this.getDepartmentsTree(res.data.department);\n this.setState({\n isTreeLoading: false,\n departmentsTree: departmentsTree,\n });\n } else {\n this.setState({\n importDepartmentChildrenCount: res.data.department.length,\n importDepartmentMembersCount: this.state.membersTempObj[departmentID].length,\n });\n }\n }).catch((error) => {\n this.handleError(error);\n this.setState({\n isTreeLoading: false,\n isMembersListLoading: false,\n });\n if (error.response && error.response.status === 403) {\n window.location = siteRoot + 'sys/useradmin/';\n }\n });\n };\n\n getDingtalkDepartmentMembersList = (department_id) => {\n this.setState({\n isMembersListLoading: true,\n });\n seafileAPI.adminListDingtalkDepartmentMembers(department_id).then((res) => {\n let membersTempObj = this.state.membersTempObj;\n membersTempObj[department_id] = res.data.userlist;\n let canCheckUserIds = this.getCanCheckUserIds(res.data.userlist);\n this.setState({\n membersTempObj: membersTempObj,\n membersList: res.data.userlist,\n isMembersListLoading: false,\n canCheckUserIds: canCheckUserIds,\n });\n }).catch((error) => {\n this.setState({isMembersListLoading: false});\n this.handleError(error);\n });\n };\n getCanCheckUserIds = (membersList) => {\n let userIds = [];\n membersList.forEach((member) => {\n if (!member.email) userIds.push(member.userid);\n });\n return userIds;\n };\n\n onChangeDepartment = (department_id) => {\n this.setState({\n newUsersTempObj: {},\n isCheckedAll: false,\n checkedDepartmentId: department_id,\n });\n if (!(department_id in this.state.membersTempObj)) {\n this.getDingtalkDepartmentMembersList(department_id);\n } else {\n let canCheckUserIds = this.getCanCheckUserIds(this.state.membersTempObj[department_id]);\n this.setState({\n membersList: this.state.membersTempObj[department_id],\n canCheckUserIds: canCheckUserIds,\n });\n }\n };\n\n onUserChecked = (user) => {\n if (this.state.canCheckUserIds.indexOf(user.userid) !== -1) {\n let newUsersTempObj = this.state.newUsersTempObj;\n if (user.userid in newUsersTempObj) {\n delete newUsersTempObj[user.userid];\n if (this.state.isCheckedAll) {\n this.setState({ isCheckedAll: false });\n }\n } else {\n newUsersTempObj[user.userid] = user;\n if (Object.keys(newUsersTempObj).length === this.state.canCheckUserIds.length) {\n this.setState({ isCheckedAll: true });\n }\n }\n this.setState({ newUsersTempObj: newUsersTempObj });\n }\n };\n\n onAllUsersChecked = () => {\n this.setState({\n isCheckedAll: !this.state.isCheckedAll,\n }, () => {\n if (this.state.isCheckedAll) {\n let newUsersTempObj = {};\n let newUsersTempList = this.state.membersList.filter(user => {\n return this.state.canCheckUserIds.indexOf(user.userid) !== -1;\n });\n for (let i = 0; i < newUsersTempList.length; i++) {\n newUsersTempObj[newUsersTempList[i].userid] = newUsersTempList[i];\n }\n this.setState({ newUsersTempObj: newUsersTempObj });\n } else {\n this.setState({ newUsersTempObj: {} });\n }\n });\n };\n\n onSubmit = () => {\n const { newUsersTempObj } = this.state;\n if (JSON.stringify(newUsersTempObj) === '{}') return;\n let userList = [];\n for (let i in newUsersTempObj) {\n userList.push(newUsersTempObj[i]);\n }\n if (userList.length === 0) {\n toaster.danger('未选择成员', {duration: 3});\n return;\n }\n seafileAPI.adminAddDingtalkUsersBatch(userList).then((res) => {\n this.setState({\n newUsersTempObj: {},\n isCheckedAll: false,\n });\n if (res.data.success) {\n this.handleSubmitSuccess(res.data.success);\n }\n if (res.data.failed) {\n const fails= res.data.failed;\n for (let i = 0; i < fails.length; i++) {\n toaster.danger(fails[i].name + ' ' + fails[i].error_msg, {duration: 3});\n }\n }\n }).catch((error) => {\n this.handleError(error);\n });\n\n };\n\n handleSubmitSuccess = (success) => {\n let { membersTempObj, membersList, canCheckUserIds } = this.state;\n for (let i = 0; i < success.length; i++) {\n let { userid, name, email } = success[i];\n toaster.success(name + ' 成功导入', {duration: 1});\n // refresh all temp\n if (canCheckUserIds.indexOf(userid) !== -1) {\n canCheckUserIds.splice(canCheckUserIds.indexOf(userid), 1);\n }\n for (let j = 0; j < membersList.length; j++) {\n if (membersList[j].userid === userid) {\n membersList[j].email = email;\n break;\n }\n }\n for (let departmentId in membersTempObj) {\n for (let k = 0; k < membersTempObj[departmentId].length; k++) {\n if (membersTempObj[departmentId][k].userid === userid) {\n membersTempObj[departmentId][k].email = email;\n break;\n }\n }\n }\n }\n this.setState({\n membersTempObj: membersTempObj,\n membersList: membersList,\n canCheckUserIds: canCheckUserIds,\n });\n };\n\n importDepartmentDialogToggle = (importDepartment) => {\n this.setState({\n isImportDepartmentDialogShow: !this.state.isImportDepartmentDialogShow,\n importDepartment: importDepartment,\n }, () => {\n if (importDepartment) {\n this.getDingtalkDepartmentsList(importDepartment.id);\n }\n });\n };\n\n onImportDepartmentSubmit = () => {\n let importDepartment = this.state.importDepartment;\n if (!importDepartment) return;\n seafileAPI.adminImportDingtalkDepartment(importDepartment.id).then((res) => {\n this.setState({\n isMembersListLoading: true,\n checkedDepartmentId: importDepartment.id,\n membersTempObj: {},\n membersList: [],\n newUsersTempObj: {},\n isCheckedAll: false,\n canCheckUserIds: [],\n });\n this.getDingtalkDepartmentMembersList(importDepartment.id);\n this.importDepartmentDialogToggle(null);\n if (res.data.success) {\n this.handleImportDepartmentSubmitSuccess(res.data.success);\n }\n if (res.data.failed) {\n this.handleImportDepartmentSubmitFailed(res.data.failed);\n }\n }).catch((error) => {\n this.handleError(error);\n });\n };\n\n handleImportDepartmentSubmitSuccess = (successes) => {\n for (let i = 0, len = successes.length; i < len; i++) {\n let success = successes[i];\n let successMsg = success.type === 'department' ? '部门 ' + success.department_name + ' 导入成功' : success.api_user_name + ' 导入成功' ;\n toaster.success(successMsg, { duration: 3 });\n }\n };\n\n handleImportDepartmentSubmitFailed = (fails) => {\n for (let i = 0, len = fails.length; i < len; i++) {\n let fail = fails[i];\n let failName = fail.type === 'department' ? fail.department_name : fail.api_user_name;\n toaster.danger(failName + ' ' + fail.msg, { duration: 3} );\n }\n };\n\n handleError = (error) => {\n const errorMsg = Utils.getErrorMsg(error);\n toaster.danger(errorMsg);\n };\n\n componentDidMount() {\n this.getDingtalkDepartmentsList(null);\n }\n\n render() {\n const { isImportDepartmentDialogShow, isTreeLoading, importDepartment, importDepartmentChildrenCount, importDepartmentMembersCount } = this.state;\n let canImportDepartment = !!(isPro && isImportDepartmentDialogShow && !isTreeLoading && importDepartment);\n return (\n \n \n \n \n
    \n
    \n
    \n

    {'钉钉集成'}

    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {canImportDepartment &&\n \n }\n
    \n );\n }\n}\n\nexport default DingtalkDepartments;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport moment from 'moment';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport toaster from '../../../components/toast';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n getPreviousPage = () => {\n this.props.getItemsByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getItemsByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, curPerPage, hasNextPage, currentPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No invitations')}

    \n
    \n );\n\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {items.map((item, index) => {\n return ();\n })}\n \n
    {gettext('Inviter')}{gettext('Accepter')}{gettext('Type')}{gettext('Invited at')}{gettext('Accepted at')}{gettext('Expired at')}
    \n \n
    \n );\n\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n getItemsByPage: PropTypes.func,\n curPerPage: PropTypes.number,\n deleteItem: PropTypes.func,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n highlight: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n deleteItem = () => {\n this.props.deleteItem(this.props.item);\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch (item) {\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n }\n return translateResult;\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Delete':\n this.deleteItem();\n break;\n default:\n break;\n }\n };\n\n getInviteTypeText = () => {\n let translateResult = '';\n switch (this.props.item.invite_type) {\n case 'Guest':\n translateResult = gettext('Guest');\n break;\n case 'guest':\n translateResult = gettext('Guest');\n break;\n case 'Default':\n translateResult = gettext('Default');\n break;\n case 'default':\n translateResult = gettext('Default');\n break;\n }\n return translateResult;\n };\n\n render() {\n const { item } = this.props;\n const {\n isOpIconShown\n } = this.state;\n\n return (\n \n \n \n \n \n \n {item.accept_time ?\n :\n item.accepter_email\n }\n \n {this.getInviteTypeText()}\n \n {moment(item.invite_time).fromNow()}\n \n \n {item.accept_time ?\n {moment(item.accept_time).fromNow()} :\n '--'\n }\n \n \n {item.is_expired ?\n {moment(item.expire_time).format('YYYY-MM-DD HH:mm')} :\n moment(item.expire_time).format('YYYY-MM-DD HH:mm')\n }\n \n \n {isOpIconShown &&\n \n }\n \n \n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n deleteItem: PropTypes.func,\n onFreezedItem: PropTypes.func.isRequired,\n};\n\nclass Invitations extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n items: [],\n totalItemCount: 0,\n hasNextPage: false,\n currentPage: 1,\n perPage: 25\n };\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getItemsByPage(this.state.currentPage);\n });\n }\n\n getItemsByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListInvitations(page, perPage).then(res => {\n this.setState({\n loading: false,\n items: res.data.invitation_list,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.total_count),\n currentPage: page\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n deleteItem = (targetItem) => {\n const token = targetItem.token;\n seafileAPI.sysAdminDeleteInvitation(token).then(res => {\n let items = this.state.items.filter(item => {\n return item.token != token;\n });\n this.setState({items: items});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteItemInBatch = () => {\n seafileAPI.sysAdminDeleteExpiredInvitations().then(res => {\n const prevItems = this.state.items;\n const items = this.state.items.filter(item => !item.is_expired || item.accept_time);\n if (items.length < prevItems.length) {\n this.setState({\n items: items\n });\n toaster.success(gettext('Operation succeeded.'));\n }\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getItemsByPage(1);\n });\n };\n\n render() {\n return (\n \n \n \n \n
    \n
    \n
    \n

    {gettext('Invitations')}

    \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default Invitations;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\nimport { SimpleEditor } from '@seafile/seafile-editor';\nimport { gettext } from '../../utils/constants';\n\nconst propTypes = {\n title: PropTypes.string,\n content: PropTypes.string,\n onCommit: PropTypes.func.isRequired,\n onCloseEditorDialog: PropTypes.func.isRequired,\n};\n\nclass TermsEditorDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isValueChanged: false,\n };\n this.editorRef = React.createRef();\n }\n\n static defaultProps = {\n title: gettext('Terms'),\n };\n\n onKeyDown = (event) => {\n event.stopPropagation();\n };\n\n toggle = () => {\n const { isValueChanged } = this.state;\n if (isValueChanged) {\n let currentContent = this.getCurrentContent();\n this.props.onCommit(currentContent);\n }\n this.props.onCloseEditorDialog();\n };\n\n onContentChanged = () => {\n return this.setState({isValueChanged: true});\n };\n\n getCurrentContent = () => {\n return this.editorRef.current.getValue();\n };\n\n setSimpleEditorRef = (editor) => {\n this.simpleEditor = editor;\n };\n\n render() {\n let { content, title } = this.props;\n return (\n \n {title}\n \n \n \n \n );\n }\n}\n\nTermsEditorDialog.propTypes = propTypes;\n\nexport default TermsEditorDialog;\n","import React, {Fragment} from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input, Alert, FormGroup, Label } from 'reactstrap';\nimport { gettext } from '../../../utils/constants';\nimport TermsPreviewWidget from '../../terms-preview-widget';\nimport TermsEditorDialog from '../terms-editor-dialog';\n\nimport '../../../css/terms-conditions-editor.css';\n\nconst propTypes = {\n isUpdate: PropTypes.bool,\n oldTermObj: PropTypes.object,\n addTerm: PropTypes.func,\n updateTerm: PropTypes.func,\n toggle: PropTypes.func.isRequired,\n};\n\nclass AddOrUpdateTermDialog extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n name: '',\n versionNumber: '',\n text: '',\n isActive: true,\n errorMsg: '',\n isConditionsEditorDialogShow: false,\n };\n }\n\n componentDidMount() {\n let oldTermObj = this.props.oldTermObj;\n if (oldTermObj) {\n this.setState({\n name: oldTermObj.name,\n versionNumber: oldTermObj.version_number,\n text: oldTermObj.text,\n isActive: !(oldTermObj.activate_time === ''),\n });\n }\n }\n\n handleNameChange = (e) => {\n this.setState({name: e.target.value.trim()});\n };\n\n handleVersionNumberChange = (e) => {\n this.setState({versionNumber: e.target.value.trim()});\n };\n\n handleTextChange = (e) => {\n this.setState({text: e.target.value.trim()});\n };\n\n setActive = () => {\n this.setState({isActive: true});\n };\n\n setInActive = () => {\n this.setState({isActive: false});\n };\n\n addTerm = () => {\n let { name, versionNumber, text, isActive } = this.state;\n if (name === '') {\n this.setState({errMsg: gettext('Name is required.')});\n return;\n }\n if (versionNumber === '') {\n this.setState({errMsg: gettext('Version Number is required.')});\n return;\n }\n if (isNaN(versionNumber)) {\n this.setState({errMsg: gettext('Version Number must be a number.')});\n return;\n }\n if (text === '') {\n this.setState({errMsg: gettext('Text is required.')});\n return;\n }\n if (this.props.isUpdate) {\n this.props.updateTerm(name, versionNumber, text, isActive);\n } else {\n this.props.addTerm(name, versionNumber, text, isActive);\n }\n };\n\n onContentClick = () => {\n this.setState({isConditionsEditorDialogShow: !this.state.isConditionsEditorDialogShow});\n };\n\n onCloseEditorDialog = () => {\n this.setState({isConditionsEditorDialogShow: false});\n };\n\n onUpdateContent = (content) => {\n this.setState({ text: content });\n };\n\n render() {\n let title = this.props.isUpdate ? gettext('Update Terms and Conditions') : gettext('Add Terms and Conditions');\n return (\n \n \n {title}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.state.errMsg && {this.state.errMsg}}\n \n \n \n \n \n {this.state.isConditionsEditorDialogShow && (\n \n )}\n \n );\n }\n}\n\nAddOrUpdateTermDialog.propTypes = propTypes;\n\nexport default AddOrUpdateTermDialog;\n","const hrefReg = /\\[.+\\]\\(\\S+\\)||!\\[\\]\\(\\S+\\)|<\\S+>/g,\n imageReg1 = /^/,\n imageReg2 = /^!\\[\\]\\((\\S+)\\)/,\n linkReg1 = /^\\[.+\\]\\(\\S+\\)/,\n linkReg2 = /^<\\S+>$/;\n\nconst getLinks = (hrefs) => {\n const hrefObj = {\n links: [],\n images: []\n };\n hrefs.forEach((href) => {\n if (href.search(linkReg1) >= 0 || href.search(linkReg2) >= 0) {\n hrefObj.links.push(href);\n } else {\n let imageSrcs = href.match(imageReg1);\n let imageSrcs1 = href.match(imageReg2);\n if (imageSrcs) {\n hrefObj.images.push(imageSrcs[1]);\n } else if (imageSrcs1) {\n hrefObj.images.push(imageSrcs1[1]);\n }\n }\n });\n return hrefObj;\n};\n\n\nconst getPreviewContent = (markdownContent) => {\n let previewText = '';\n let newMarkdownContent = markdownContent.replace(hrefReg, '');\n for (let index = 0; index < newMarkdownContent.length; index++) {\n if (newMarkdownContent[index] === '#') {\n continue;\n } else if (newMarkdownContent[index] === '\\n') {\n previewText += ' ';\n } else {\n previewText += newMarkdownContent[index];\n }\n if (previewText.length === 30) {\n break;\n }\n }\n\n const hrefs = markdownContent.match(hrefReg);\n if (hrefs) {\n const { images, links } = getLinks(hrefs);\n return { previewText, images, links };\n }\n return { previewText, images: [], links: [] };\n};\n\n\nexport default getPreviewContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\nimport TermsPreviewWidget from '../terms-preview-widget';\nimport { gettext } from '../../utils/constants';\n\nconst propTypes = {\n title: PropTypes.string,\n content: PropTypes.string,\n onClosePreviewDialog: PropTypes.func.isRequired,\n};\n\nclass TermsPreviewDialog extends React.Component {\n\n static defaultProps = {\n title: gettext('Terms'),\n };\n\n\n toggle = () => {\n this.props.onClosePreviewDialog();\n };\n\n render() {\n let { title, content } = this.props;\n return (\n \n {title}\n \n \n \n \n );\n }\n}\n\nTermsPreviewDialog.propTypes = propTypes;\n\nexport default TermsPreviewDialog;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { processor } from '@seafile/seafile-editor';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport getPreviewContent from '../../../utils/markdown-utils';\nimport AddOrUpdateTermDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-or-update-term-dialog';\nimport CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';\nimport TermsPerviewDialog from '../../../components/dialog/terms-preview-dialog';\nimport ModalPortal from '../../../components/modal-portal';\nimport OpMenu from '../../../components/dialog/op-menu';\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n itemContent: '...',\n isOpIconShown: false,\n isUpdateDialogOpen: false,\n isDeleteDialogOpen: false,\n isTermsPerviewDialogOpen: false,\n };\n }\n\n componentDidMount() {\n let mdFile = this.props.item.text;\n processor.process(mdFile).then((result) => {\n let innerHtml = String(result);\n this.setState({itemContent: innerHtml});\n });\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.item.text !== this.props.item.text) {\n let mdFile = nextProps.item.text;\n processor.process(mdFile).then((result) => {\n let innerHtml = String(result);\n this.setState({itemContent: innerHtml});\n });\n }\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n toggleUpdateDialog = (e) => {\n this.setState({isUpdateDialogOpen: !this.state.isUpdateDialogOpen});\n };\n\n toggleDeleteDialog = (e) => {\n this.setState({isDeleteDialogOpen: !this.state.isDeleteDialogOpen});\n };\n\n toggleTermsContentDialog = (e) => {\n this.setState({isTermsPerviewDialogOpen: !this.state.isTermsPerviewDialogOpen});\n };\n\n onMenuItemClick = (operation) => {\n switch(operation) {\n case 'Update':\n this.toggleUpdateDialog();\n break;\n case 'Delete':\n this.toggleDeleteDialog();\n break;\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n deleteTerm = () => {\n this.props.deleteTerm(this.props.item.id);\n this.toggleDeleteDialog();\n };\n\n updateTerm = (name, versionNumber, text, isActive) => {\n this.props.updateTerm(this.props.item.id, name, versionNumber, text, isActive);\n this.toggleUpdateDialog();\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'Update':\n translateResult = gettext('Update');\n break;\n case 'Delete':\n translateResult = gettext('Delete');\n break;\n default:\n break;\n }\n\n return translateResult;\n };\n\n render() {\n let { item } = this.props;\n let { isDeleteDialogOpen, isUpdateDialogOpen, isTermsPerviewDialogOpen } = this.state;\n let previewContent = getPreviewContent(item.text);\n let itemName = '' + Utils.HTMLescape(item.name) + '';\n let deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?').replace('{placeholder}', itemName);\n return (\n \n \n {item.name}\n {item.version_number}\n \n {previewContent.previewText}\n \n {moment(item.ctime).fromNow()}\n {item.activate_time ? moment(item.activate_time).fromNow() : '--'}\n \n {this.state.isOpIconShown &&\n \n }\n \n \n {isDeleteDialogOpen &&\n \n \n \n }\n {isUpdateDialogOpen &&\n \n \n \n }\n {isTermsPerviewDialogOpen &&\n \n \n \n }\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n deleteTerm: PropTypes.func.isRequired,\n updateTerm: PropTypes.func.isRequired,\n};\n\nexport default Item;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { gettext } from '../../../utils/constants';\nimport EmptyTip from '../../../components/empty-tip';\nimport Loading from '../../../components/loading';\nimport Item from './item';\n\nconst propTypes = {\n loading: PropTypes.bool.isRequired,\n items: PropTypes.array.isRequired,\n errorMsg: PropTypes.string,\n deleteTerm: PropTypes.func.isRequired,\n updateTerm: PropTypes.func.isRequired,\n};\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n render() {\n const { loading, errorMsg, items } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No terms and conditions')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n \n \n {items &&\n \n {items.map((item, index) => {\n return ();\n })}\n \n }\n
    {gettext('Name')}{gettext('Version')}{gettext('Text')}{gettext('Created')}{gettext('Activated')}{/* operation */}
    \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = propTypes;\n\nexport default Content;\n\n","import React, { Component, Fragment } from 'react';\nimport { Button } from 'reactstrap';\nimport { Utils } from '../../../utils/utils';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport AddOrUpdateTermDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-or-update-term-dialog';\nimport ModalPortal from '../../../components/modal-portal';\nimport toaster from '../../../components/toast';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Content from './content';\n\nclass TermsAndConditions extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n termList: [],\n isAddTermDialogOpen: false,\n };\n }\n\n toggleAddTermDialog = () => {\n this.setState({isAddTermDialogOpen: !this.state.isAddTermDialogOpen});\n };\n\n componentDidMount () {\n seafileAPI.sysAdminListTermsAndConditions().then((res) => {\n this.setState({\n termList: res.data.term_and_condition_list,\n loading: false,\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n }\n\n addTerm = (name, versionNumber, text, isActive) => {\n seafileAPI.sysAdminAddTermAndCondition(name, versionNumber, text, isActive).then(res => {\n // After adding the terms, you need to refresh the page.\n location.reload();\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n updateTerm = (termID, name, versionNumber, text, isActive) => {\n seafileAPI.sysAdminUpdateTermAndCondition(termID, name, versionNumber, text, isActive).then(res => {\n let termList = this.state.termList.map(item => {\n if (item.id == termID) {\n return res.data;\n } else {\n return item;\n }\n });\n this.setState({termList: termList});\n toaster.success(gettext('Update succeeded.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n deleteTerm = (termID) => {\n seafileAPI.sysAdminDeleteTermAndCondition(termID).then(res => {\n let termList = this.state.termList.filter(item => item.id != termID);\n this.setState({termList: termList});\n toaster.success(gettext('Successfully deleted 1 item.'));\n }).catch((error) => {\n let errMessage = Utils.getErrorMsg(error);\n toaster.danger(errMessage);\n });\n };\n\n render() {\n let { termList, isAddTermDialogOpen } = this.state;\n return (\n \n \n \n \n
    \n
    \n
    \n

    {gettext('Terms and Conditions')}

    \n
    \n
    \n \n
    \n
    \n
    \n {isAddTermDialogOpen &&\n \n \n \n }\n
    \n );\n }\n}\n\nexport default TermsAndConditions;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n currentItem: PropTypes.string.isRequired\n};\n\nclass Nav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'all', urlPart: 'all', text: gettext('All')},\n {name: 'unhandled', urlPart: 'unhandled', text: gettext('Unhandled')}\n ];\n }\n\n render() {\n const { currentItem } = this.props;\n return (\n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nNav.propTypes = propTypes;\n\nexport default Nav;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Nav from './nav';\n\nconst virusFileItemPropTypes = {\n virusFile: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n handleFile: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired,\n};\n\nclass VirusFileItem extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n highlight: false,\n isOpIconShown: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n onMenuItemClick = (operation) => {\n this.props.handleFile(this.props.virusFile.virus_id, operation);\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'delete':\n translateResult = gettext('Delete');\n break;\n case 'ignore':\n translateResult = gettext('Ignore');\n break;\n case 'do-not-ignore':\n translateResult = gettext('Don\\'t ignore');\n break;\n }\n return translateResult;\n };\n\n render() {\n const virusFile = this.props.virusFile;\n let fileStatus = '',\n fileOpList = [];\n if (virusFile.has_deleted) {\n fileStatus = {gettext('Deleted')};\n } else if (virusFile.has_ignored) {\n fileStatus = {gettext('Ignored')};\n fileOpList = ['do-not-ignore'];\n } else {\n fileStatus = {gettext('Unhandled')};\n fileOpList = ['delete', 'ignore'];\n }\n\n return (\n \n {virusFile.repo_name}\n {virusFile.repo_owner}\n {virusFile.file_path}\n {fileStatus}\n \n {fileOpList.length > 0 && this.state.isOpIconShown &&\n \n }\n \n \n );\n }\n}\n\nVirusFileItem.propTypes = virusFileItemPropTypes;\n\n\nconst virusFileListPropTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n virusFiles: PropTypes.array.isRequired,\n currentPage: PropTypes.number,\n hasNextPage: PropTypes.bool,\n curPerPage: PropTypes.number,\n resetPerPage: PropTypes.func,\n getListByPage: PropTypes.func.isRequired,\n handleFile: PropTypes.func.isRequired,\n};\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n getPreviousPage = () => {\n this.props.getListByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getListByPage(this.props.currentPage + 1);\n };\n\n render() {\n const {\n loading, errorMsg, virusFiles,\n curPerPage, hasNextPage, currentPage\n } = this.props;\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {virusFiles.map((virusFile, index) => {\n return (\n \n );\n })}\n \n
    {gettext('Library')}{gettext('Owner')}{gettext('Virus File')}{gettext('Status')}{/* Operations */}
    \n {virusFiles.length > 0 &&\n \n }\n
    \n );\n }\n }\n}\n\nContent.propTypes = virusFileListPropTypes;\n\n\nclass AllVirusFiles extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n virusFiles: [],\n currentPage: 1,\n perPage: 25,\n hasNextPage: false\n };\n }\n\n componentDidMount() {\n let urlParams = (new URL(window.location)).searchParams;\n const {\n currentPage, perPage\n } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getListByPage(this.state.currentPage);\n });\n }\n\n getListByPage = (page) => {\n const { perPage } = this.state;\n seafileAPI.listVirusFiles(page, perPage).then((res) => {\n const data = res.data;\n this.setState({\n loading: false,\n virusFiles: data.virus_file_list,\n hasNextPage: data.has_next_page\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getListByPage(1);\n });\n };\n\n handleFile = (virusID, op) => {\n let request;\n switch(op) {\n case 'delete':\n request = seafileAPI.deleteVirusFile(virusID);\n break;\n case 'ignore':\n request = seafileAPI.toggleIgnoreVirusFile(virusID, true);\n break;\n case 'do-not-ignore':\n request = seafileAPI.toggleIgnoreVirusFile(virusID, false);\n break;\n }\n request.then((res) => {\n this.setState({\n virusFiles: this.state.virusFiles.map((item) => {\n if (item.virus_id == virusID) {\n if (op == 'delete') {\n item.has_deleted = true;\n } else {\n item = res.data.virus_file;\n }\n }\n return item;\n })\n });\n }).catch((error) => {\n toaster.danger(Utils.getErrorMsg(error));\n });\n };\n\n render() {\n return (\n \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default AllVirusFiles;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'reactstrap';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport toaster from '../../../components/toast';\nimport OpMenu from '../../../components/dialog/op-menu';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport Nav from './nav';\n\nconst virusFileItemPropTypes = {\n resetPerPage: PropTypes.func,\n getListByPage: PropTypes.func.isRequired,\n handleFile: PropTypes.func.isRequired,\n virusFile: PropTypes.object.isRequired,\n isItemFreezed: PropTypes.bool.isRequired,\n toggleItemSelected: PropTypes.func.isRequired,\n onFreezedItem: PropTypes.func.isRequired,\n onUnfreezedItem: PropTypes.func.isRequired\n};\n\nclass VirusFileItem extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n highlight: false,\n isOpIconShown: false\n };\n }\n\n handleMouseEnter = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: true,\n highlight: true\n });\n }\n };\n\n handleMouseLeave = () => {\n if (!this.props.isItemFreezed) {\n this.setState({\n isOpIconShown: false,\n highlight: false\n });\n }\n };\n\n onUnfreezedItem = () => {\n this.setState({\n highlight: false,\n isOpIconShow: false\n });\n this.props.onUnfreezedItem();\n };\n\n onMenuItemClick = (operation) => {\n this.props.handleFile(this.props.virusFile.virus_id, operation);\n };\n\n translateOperations = (item) => {\n let translateResult = '';\n switch(item) {\n case 'delete':\n translateResult = gettext('Delete');\n break;\n case 'ignore':\n translateResult = gettext('Ignore');\n break;\n case 'do-not-ignore':\n translateResult = gettext('Don\\'t ignore');\n break;\n }\n return translateResult;\n };\n\n toggleItemSelected = (e) => {\n this.props.toggleItemSelected(this.props.virusFile, e.target.checked);\n };\n\n render() {\n const virusFile = this.props.virusFile;\n let fileStatus = '',\n fileOpList = [];\n if (virusFile.has_deleted) {\n fileStatus = {gettext('Deleted')};\n } else if (virusFile.has_ignored) {\n fileStatus = {gettext('Ignored')};\n fileOpList = ['do-not-ignore'];\n } else {\n fileStatus = {gettext('Unhandled')};\n fileOpList = ['delete', 'ignore'];\n }\n\n return (\n \n \n \n \n {virusFile.repo_name}\n {virusFile.repo_owner}\n {virusFile.file_path}\n {fileStatus}\n \n {fileOpList.length > 0 && this.state.isOpIconShown &&\n \n }\n \n \n );\n }\n}\n\nVirusFileItem.propTypes = virusFileItemPropTypes;\n\n\nconst virusFileListPropTypes = {\n currentPage: PropTypes.number,\n hasNextPage: PropTypes.bool,\n curPerPage: PropTypes.number,\n resetPerPage: PropTypes.func,\n getListByPage: PropTypes.func.isRequired,\n handleFile: PropTypes.func.isRequired,\n isAllItemsSelected: PropTypes.bool.isRequired,\n toggleAllSelected: PropTypes.func.isRequired,\n toggleItemSelected: PropTypes.func.isRequired,\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n virusFiles: PropTypes.array.isRequired\n};\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isItemFreezed: false\n };\n }\n\n onFreezedItem = () => {\n this.setState({isItemFreezed: true});\n };\n\n onUnfreezedItem = () => {\n this.setState({isItemFreezed: false});\n };\n\n getPreviousPage = () => {\n this.props.getListByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getListByPage(this.props.currentPage + 1);\n };\n\n render() {\n const {\n loading, errorMsg, virusFiles,\n curPerPage, hasNextPage, currentPage,\n isAllItemsSelected\n } = this.props;\n\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {virusFiles.map((virusFile, index) => {\n return (\n \n );\n })}\n \n
    \n \n {gettext('Library')}{gettext('Owner')}{gettext('Virus File')}{gettext('Status')}{/* Operations */}
    \n {virusFiles.length > 0 &&\n \n }\n
    \n );\n }\n }\n}\n\nContent.propTypes = virusFileListPropTypes;\n\n\nclass UnhandledVirusFiles extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n virusFiles: [],\n\n isAllItemsSelected: false,\n selectedItems: [],\n\n currentPage: 1,\n perPage: 25,\n hasNextPage: false\n };\n }\n\n componentDidMount() {\n let urlParams = (new URL(window.location)).searchParams;\n const {\n currentPage, perPage\n } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getListByPage(this.state.currentPage);\n });\n }\n\n getListByPage = (page) => {\n const { perPage } = this.state;\n const hasHandled = false;\n seafileAPI.listVirusFiles(page, perPage, hasHandled).then((res) => {\n const data = res.data;\n const items = data.virus_file_list.map(item => {\n item.isSelected = false;\n return item;\n });\n this.setState({\n loading: false,\n virusFiles: items,\n hasNextPage: data.has_next_page\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (perPage) => {\n this.setState({\n perPage: perPage\n }, () => {\n this.getListByPage(1);\n });\n };\n\n handleFile = (virusID, op) => {\n let request;\n switch(op) {\n case 'delete':\n request = seafileAPI.deleteVirusFile(virusID);\n break;\n case 'ignore':\n request = seafileAPI.toggleIgnoreVirusFile(virusID, true);\n break;\n case 'do-not-ignore':\n request = seafileAPI.toggleIgnoreVirusFile(virusID, false);\n break;\n }\n request.then((res) => {\n this.setState({\n virusFiles: this.state.virusFiles.map((item) => {\n if (item.virus_id == virusID) {\n if (op == 'delete') {\n item.has_deleted = true;\n } else {\n item = res.data.virus_file;\n }\n }\n return item;\n })\n });\n }).catch((error) => {\n toaster.danger(Utils.getErrorMsg(error));\n });\n };\n\n toggleAllSelected = () => {\n this.setState((prevState) => ({\n isAllItemsSelected: !prevState.isAllItemsSelected,\n virusFiles: this.state.virusFiles.map((item) => {\n item.isSelected = !prevState.isAllItemsSelected;\n return item;\n })\n }));\n };\n\n toggleItemSelected = (targetItem, isSelected) => {\n this.setState({\n virusFiles: this.state.virusFiles.map((item) => {\n if (item === targetItem) {\n item.isSelected = isSelected;\n }\n return item;\n })\n }, () => {\n this.setState({\n isAllItemsSelected: !this.state.virusFiles.some(item => !item.isSelected)\n });\n });\n };\n\n handleSelectedItems = (op) => {\n // op: 'delete-virus', 'ignore-virus'\n const virusIDs = this.state.virusFiles\n .filter(item => {\n if (op == 'delete-virus') {\n return item.isSelected && !item.has_deleted;\n } else {\n return item.isSelected && !item.has_ignored;\n }\n })\n .map(item => item.virus_id);\n seafileAPI.batchProcessVirusFiles(virusIDs, op).then((res) => {\n let fileList = this.state.virusFiles;\n res.data.success.forEach(item => {\n let file = fileList.find(file => file.virus_id == item.virus_id);\n if (op == 'delete-virus') {\n file.has_deleted = true;\n } else {\n file.has_ignored = true;\n }\n });\n this.setState({\n virusFiles: fileList\n });\n\n res.data.failed.forEach(item => {\n const file = fileList.find(file => file.virus_id == item.virus_id);\n let errMsg = op == 'delete-virus' ?\n gettext('Failed to delete %(virus_file) from library %(library): %(error_msg)') :\n gettext('Failed to ignore %(virus_file) from library %(library): %(error_msg)');\n errMsg = errMsg.replace('%(virus_file)', file.file_path)\n .replace('%(library)', file.repo_name)\n .replace('%(error_msg)', item.error_msg);\n toaster.danger(errMsg);\n });\n }).catch((error) => {\n toaster.danger(Utils.getErrorMsg(error));\n });\n };\n\n deleteSelectedItems = () => {\n const op = 'delete-virus';\n this.handleSelectedItems(op);\n };\n\n ignoreSelectedItems = () => {\n const op = 'ignore-virus';\n this.handleSelectedItems(op);\n };\n\n render() {\n return (\n \n {this.state.virusFiles.some(item => item.isSelected) ? (\n \n \n \n \n \n \n ) : \n }\n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default UnhandledVirusFiles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@gatsbyjs/reach-router';\nimport { siteRoot, gettext } from '../../../utils/constants';\n\nconst propTypes = {\n currentItem: PropTypes.string.isRequired\n};\n\nclass LogsNav extends React.Component {\n\n constructor(props) {\n super(props);\n this.navItems = [\n {name: 'adminOperationLogs', urlPart:'admin-logs/operation', text: gettext('Admin Operation Logs')},\n {name: 'adminLoginLogs', urlPart:'admin-logs/login', text: gettext('Admin Login Logs')},\n ];\n }\n\n render() {\n const { currentItem } = this.props;\n return (\n
    \n
      \n {this.navItems.map((item, index) => {\n return (\n
    • \n {item.text}\n
    • \n );\n })}\n
    \n
    \n );\n }\n}\n\nLogsNav.propTypes = propTypes;\n\nexport default LogsNav;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext, siteRoot, enableSysAdminViewRepo, isPro } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport EmptyTip from '../../../components/empty-tip';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport LogsNav from './logs-nav';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n getPreviousPage = () => {\n this.props.getLogsByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getLogsByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, perPage, currentPage, hasNextPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No Admin operation logs')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n {items &&\n \n {items.map((item, index) => {\n return ();\n })}\n \n }\n
    {gettext('Name')}{gettext('Operation')}{gettext('Detail')}{gettext('Time')}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n isOpIconShown: false,\n };\n }\n\n getOperationText = (operationType) => {\n switch (operationType) {\n case 'repo_create': return gettext('Create Library');\n case 'repo_delete': return gettext('Delete Library');\n case 'repo_transfer': return gettext('Transfer Library');\n case 'group_create': return gettext('Create Group');\n case 'group_transfer': return gettext('Transfer Group');\n case 'group_delete': return gettext('Delete Group');\n case 'user_add': return gettext('Add User');\n case 'user_delete': return gettext('Delete User');\n default: return '';\n }\n };\n\n getOperationDetail = (item) => {\n let detail = item.detail;\n\n let ownerPageUrl = '';\n if (detail.owner) {\n ownerPageUrl = siteRoot + 'sys/users/' + encodeURIComponent(detail.owner) + '/';\n }\n let userPageUrl = '';\n if (detail.email) {\n userPageUrl = siteRoot + 'sys/users/' + encodeURIComponent(detail.email) + '/';\n }\n let detailText = '';\n let repoPageUrl = '';\n let groupPageUrl = '';\n if (item.operation == 'repo_create' || item.operation == 'repo_delete' || item.operation == 'repo_transfer') {\n repoPageUrl = siteRoot + 'sys/libraries/' + detail.id + '/' + encodeURIComponent(detail.name) + '/';\n }\n if (item.operation == 'group_create' || item.operation == 'group_delete' || item.operation == 'group_transfer') {\n groupPageUrl = siteRoot + 'sys/groups/' + detail.id + '/libraries/';\n }\n\n switch (item.operation) {\n case 'repo_create':\n detailText = gettext('Created library {library_name} with {owner} as its owner')\n .replace('{owner}', '' + detail.owner + '');\n if (isPro && enableSysAdminViewRepo) {\n detailText = detailText.replace('{library_name}', '' + detail.name + '');\n } else {\n detailText = detailText.replace('{library_name}', '' + detail.name + '');\n }\n return detailText;\n\n case 'repo_delete':\n detailText = gettext('Deleted library {library_name}')\n .replace('{library_name}', '' + detail.name + '');\n return detailText;\n\n case 'repo_transfer':\n detailText = gettext('Transferred library {library_name} from {user_from} to {user_to}')\n .replace('{user_from}', '' + detail.from + '')\n .replace('{user_to}', '' + detail.to+ '');\n if (isPro && enableSysAdminViewRepo) {\n detailText = detailText.replace('{library_name}', '' + detail.name + '');\n } else {\n detailText = detailText.replace('{library_name}', '' + detail.name + '');\n }\n return detailText;\n\n case 'group_create':\n detailText = gettext('Created group {group_name}')\n .replace('{group_name}', '' + detail.name+ '');\n return detailText;\n\n case 'group_transfer':\n detailText = gettext('Transferred group {group_name} from {user_from} to {user_to}')\n .replace('{user_from}', '' + detail.from + '')\n .replace('{user_to}', '' + detail.to+ '')\n .replace('{group_name}', '' + detail.name+ '');\n return detailText;\n\n case 'group_delete':\n detailText = gettext('Deleted group {group_name}')\n .replace('{group_name}', '' + detail.name + '');\n return detailText;\n\n case 'user_add':\n detailText = gettext('Added user {user}')\n .replace('{user}', '' + detail.email+ '');\n return detailText;\n\n case 'user_delete':\n detailText = gettext('Deleted user {user}')\n .replace('{user}', '' + detail.email+ '');\n return detailText;\n\n default: return '';\n }\n };\n\n render() {\n let { item } = this.props;\n return (\n \n \n {this.getOperationText(item.operation)}\n \n \n \n {moment(item.datetime).fromNow()}\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nclass AdminOperationLogs extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n logList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n };\n this.initPage = 1;\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getLogsByPage(this.state.currentPage);\n });\n }\n\n getLogsByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListAdminLogs(page, perPage).then((res) => {\n this.setState({\n logList: res.data.data,\n loading: false,\n currentPage: page,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.total_count),\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getLogsByPage(this.initPage));\n };\n\n render() {\n let { logList, currentPage, perPage, hasNextPage } = this.state;\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default AdminOperationLogs;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { seafileAPI } from '../../../utils/seafile-api';\nimport { gettext } from '../../../utils/constants';\nimport { Utils } from '../../../utils/utils';\nimport EmptyTip from '../../../components/empty-tip';\nimport moment from 'moment';\nimport Loading from '../../../components/loading';\nimport Paginator from '../../../components/paginator';\nimport LogsNav from './logs-nav';\nimport MainPanelTopbar from '../main-panel-topbar';\nimport UserLink from '../user-link';\n\n\nclass Content extends Component {\n\n constructor(props) {\n super(props);\n }\n\n getPreviousPage = () => {\n this.props.getLogsByPage(this.props.currentPage - 1);\n };\n\n getNextPage = () => {\n this.props.getLogsByPage(this.props.currentPage + 1);\n };\n\n render() {\n const { loading, errorMsg, items, perPage, currentPage, hasNextPage } = this.props;\n if (loading) {\n return ;\n } else if (errorMsg) {\n return

    {errorMsg}

    ;\n } else {\n const emptyTip = (\n \n

    {gettext('No Admin login logs')}

    \n
    \n );\n const table = (\n \n \n \n \n \n \n \n \n \n \n {items &&\n \n {items.map((item, index) => {\n return ();\n })}\n \n }\n
    {gettext('Name')}{gettext('IP')}{gettext('Status')}{gettext('Time')}
    \n \n
    \n );\n return items.length ? table : emptyTip;\n }\n }\n}\n\nContent.propTypes = {\n loading: PropTypes.bool.isRequired,\n errorMsg: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n getLogsByPage: PropTypes.func,\n resetPerPage: PropTypes.func,\n currentPage: PropTypes.number,\n perPage: PropTypes.number,\n pageInfo: PropTypes.object,\n hasNextPage: PropTypes.bool,\n};\n\nclass Item extends Component {\n\n constructor(props) {\n super(props);\n }\n\n render() {\n let { item } = this.props;\n return (\n \n \n {item.login_ip}\n {item.login_success ? gettext('Success') : gettext('Failed')}\n {moment(item.login_time).fromNow()}\n \n );\n }\n}\n\nItem.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nclass AdminLoginLogs extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n errorMsg: '',\n logList: [],\n perPage: 25,\n currentPage: 1,\n hasNextPage: false,\n };\n this.initPage = 1;\n }\n\n componentDidMount () {\n let urlParams = (new URL(window.location)).searchParams;\n const { currentPage, perPage } = this.state;\n this.setState({\n perPage: parseInt(urlParams.get('per_page') || perPage),\n currentPage: parseInt(urlParams.get('page') || currentPage)\n }, () => {\n this.getLogsByPage(this.state.currentPage);\n });\n }\n\n getLogsByPage = (page) => {\n let { perPage } = this.state;\n seafileAPI.sysAdminListAdminLoginLogs(page, perPage).then((res) => {\n this.setState({\n logList: res.data.data,\n loading: false,\n currentPage: page,\n hasNextPage: Utils.hasNextPage(page, perPage, res.data.total_count),\n });\n }).catch((error) => {\n this.setState({\n loading: false,\n errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403\n });\n });\n };\n\n resetPerPage = (newPerPage) => {\n this.setState({\n perPage: newPerPage,\n }, () => this.getLogsByPage(this.initPage));\n };\n\n render() {\n let { logList, currentPage, perPage, hasNextPage } = this.state;\n return (\n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default AdminLoginLogs;\n","import React, { Component, Fragment } from 'react';\nimport { gettext, siteRoot } from '../../utils/constants';\nimport { seafileAPI } from '../../utils/seafile-api';\nimport toaster from '../../components/toast';\nimport moment from 'moment';\nimport MainPanelTopbar from './main-panel-topbar';\n\nclass AbuseReports extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n abuseReportList: [],\n };\n }\n\n listAbuseReports = () => {\n seafileAPI.sysAdminListAbuseReports().then((res) => {\n this.setState({\n abuseReportList: res.data.abuse_report_list,\n });\n }).catch((error) => {\n this.handleError(error);\n });\n };\n\n updateAbuseReport = (handled, abuseReportId) => {\n seafileAPI.sysAdminUpdateAbuseReport(handled, abuseReportId).then((res) => {\n const abuseReportList = this.state.abuseReportList.map((item, index) => {\n if (item.id === abuseReportId) {\n item.handled = res.data.handled;\n }\n return item;\n });\n this.setState({\n abuseReportList: abuseReportList,\n });\n }).catch((error) => {\n this.handleError(error);\n });\n };\n\n handleError = (e) => {\n if (e.response) {\n toaster.danger(e.response.data.error_msg || e.response.data.detail || gettext('Error'), {duration: 3});\n } else {\n toaster.danger(gettext('Please check the network.'), {duration: 3});\n }\n };\n\n componentDidMount() {\n this.listAbuseReports();\n }\n\n render() {\n const AbuseReportList = this.state.abuseReportList.map((item, index) => {\n const handled = (!item.handled).toString();\n const abuseReportId = item.id;\n const fileUrl = siteRoot + 'lib/' + item.repo_id + '/file' + item.file_path;\n return (\n \n {item.repo_name}\n {item.file_path}\n {item.reporter}\n {item.abuse_type}\n {item.description}\n {moment(item.time).format('YYYY-MM-DD')}\n

    {gettext(item.handled.toString())}

    \n \n );\n });\n\n return (\n \n \n
    \n
    \n
    \n

    {gettext('Abuse Reports')}

    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {AbuseReportList}\n \n
    {gettext('Library')}{gettext('File')}{gettext('Reporter')}{gettext('Abuse Type')}{gettext('Description')}{gettext('Time')}{gettext('Handled')}
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default AbuseReports;\n","import React from 'react';\nimport ReactDom from 'react-dom';\nimport MediaQuery from 'react-responsive';\nimport { Modal } from 'reactstrap';\nimport { Router } from '@gatsbyjs/reach-router';\nimport { I18nextProvider } from 'react-i18next';\nimport { siteRoot } from '../../utils/constants';\nimport { Utils } from '../../utils/utils';\nimport i18n from '../../_i18n/i18n-seafile-editor';\n\nimport SidePanel from './side-panel';\nimport MainPanel from './main-panel';\n\nimport Info from './info';\n\nimport StatisticFile from './statistic/statistic-file';\nimport StatisticStorage from './statistic/statistic-storage';\nimport StatisticTraffic from './statistic/statistic-traffic';\nimport StatisticUsers from './statistic/statistic-users';\nimport StatisticReport from './statistic/statistic-reports';\n\nimport DesktopDevices from './devices/desktop-devices';\nimport MobileDevices from './devices/mobile-devices';\nimport DeviceErrors from './devices/devices-errors';\n\nimport Users from './users/users';\nimport AdminUsers from './users/admin-users';\nimport LDAPImportedUsers from './users/ldap-imported-users';\nimport LDAPUsers from './users/ldap-users';\nimport SearchUsers from './users/search-users';\nimport User from './users/user-info';\nimport UserOwnedRepos from './users/user-repos';\nimport UserSharedRepos from './users/user-shared-repos';\nimport UserLinks from './users/user-links';\nimport UserGroups from './users/user-groups';\n\nimport AllRepos from './repos/all-repos';\nimport SystemRepo from './repos/system-repo';\nimport TrashRepos from './repos/trash-repos';\nimport SearchRepos from './repos/search-repos';\nimport DirView from './repos/dir-view';\n\nimport Groups from './groups/groups';\nimport SearchGroups from './groups/search-groups';\nimport GroupRepos from './groups/group-repos';\nimport GroupMembers from './groups/group-members';\n\nimport Departments from './departments/departments';\nimport DepartmentList from './departments/department-list';\nimport SubDepartments from './departments/sub-departments';\nimport DepartmentMembers from './departments/department-members';\nimport DepartmentLibraries from './departments/department-libraries';\n\nimport ShareLinks from './links/share-links';\nimport UploadLinks from './links/upload-links';\n\nimport Orgs from './orgs/orgs';\nimport SearchOrgs from './orgs/search-orgs';\nimport OrgInfo from './orgs/org-info';\nimport OrgUsers from './orgs/org-users';\nimport OrgGroups from './orgs/org-groups';\nimport OrgRepos from './orgs/org-repos';\n\nimport Institutions from './institutions/institutions';\nimport InstitutionInfo from './institutions/institution-info';\nimport InstitutionUsers from './institutions/institution-users';\nimport InstitutionAdmins from './institutions/institution-admins';\n\nimport LoginLogs from './logs-page/login-logs';\nimport FileAccessLogs from './logs-page/file-access-logs';\nimport FileUpdateLogs from './logs-page/file-update-logs';\nimport SharePermissionLogs from './logs-page/share-permission-logs';\n\nimport WebSettings from './web-settings/web-settings';\nimport Notifications from './notifications/notifications';\nimport FileScanRecords from './file-scan-records';\nimport WorkWeixinDepartments from './work-weixin-departments';\nimport DingtalkDepartments from './dingtalk-departments';\nimport Invitations from './invitations/invitations';\nimport TermsAndConditions from './terms-and-conditions/terms-and-conditions';\n\nimport AllVirusFiles from './virus-scan/all-virus-files';\nimport UnhandledVirusFiles from './virus-scan/unhandled-virus-files';\n\nimport AdminOperationLogs from './admin-logs/operation-logs';\nimport AdminLoginLogs from './admin-logs/login-logs';\n\nimport AbuseReports from './abuse-reports';\n\nimport '../../css/layout.css';\nimport '../../css/toolbar.css';\n\nclass SysAdmin extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isSidePanelClosed: false,\n currentTab: 'file-scan'\n };\n }\n\n componentDidMount() {\n let href = window.location.href.split('/');\n let currentTab = href[href.length - 2];\n\n const pageList = [\n {\n tab: 'devices',\n urlPartList: ['desktop-devices', 'mobile-devices', 'device-errors']\n },\n {\n tab: 'libraries',\n urlPartList: ['all-libraries', 'search-libraries', 'system-library', 'trash-libraries', 'libraries/']\n },\n {\n tab: 'statistic',\n urlPartList: ['statistics/file', 'statistics/storage', 'statistics/user', 'statistics/traffic', 'statistics/reports']\n },\n {\n tab: 'users',\n urlPartList: ['users/', 'search-users/']\n },\n {\n tab: 'groups',\n urlPartList: ['groups/', 'search-groups/']\n },\n {\n tab: 'organizations',\n urlPartList: ['organizations/', 'search-organizations/']\n },\n {\n tab: 'links',\n urlPartList: ['share-links/', 'upload-links/']\n },\n {\n tab: 'institutions',\n urlPartList: ['institutions/']\n },\n {\n tab: 'termsandconditions',\n urlPartList: ['terms-and-conditions/']\n },\n {\n tab: 'departments',\n urlPartList: ['departments/']\n },\n {\n tab: 'logs',\n urlPartList: ['logs/']\n },\n {\n tab: 'virus-files',\n urlPartList: ['virus-files/']\n },\n {\n tab: 'adminLogs',\n urlPartList: ['admin-logs/']\n }\n ];\n const tmpTab = this.getCurrentTabForPageList(pageList);\n currentTab = tmpTab ? tmpTab : currentTab;\n\n this.setState({currentTab: currentTab});\n }\n\n UNSAFE_componentWillMount() {\n if (!Utils.isDesktop()) {\n this.setState({\n isSidePanelClosed: true\n });\n }\n }\n\n getCurrentTabForPageList = (pageList) => {\n let urlPartList, tab;\n const urlBase = `${siteRoot}sys/`;\n for (let i = 0, len = pageList.length; i < len; i++) {\n urlPartList = pageList[i].urlPartList;\n tab = pageList[i].tab;\n for (let j = 0, jlen = urlPartList.length; j < jlen; j++) {\n if (location.href.indexOf(`${urlBase}${urlPartList[j]}`) != -1) {\n return tab;\n }\n }\n }\n };\n\n onCloseSidePanel = () => {\n this.setState({isSidePanelClosed: !this.state.isSidePanelClosed});\n };\n\n tabItemClick = (param) => {\n this.setState({currentTab: param});\n if (!Utils.isDesktop() && !this.state.isSidePanelClosed) {\n this.setState({ isSidePanelClosed: true });\n }\n };\n\n toggleSidePanel = () => {\n this.setState({\n isSidePanelClosed: !this.state.isSidePanelClosed\n });\n };\n\n render() {\n const { currentTab, isSidePanelClosed } = this.state;\n const commonProps = {\n toggleSidePanel: this.toggleSidePanel\n };\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n
    \n );\n }\n}\n\nReactDom.render(\n \n \n ,\n document.getElementById('wrapper')\n);\n","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is a finite number, else returns false\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {object|Array} loopable - The object or array to be iterated.\r\n\t * @param {function} fn - The function to call for each item.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see https://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = Object.create(source);\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @param {object} [options] - Merging options:\r\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {object} target - The target object in which all objects are merged into.\r\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\textend: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t},\r\n\r\n\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nvar helpers_easing = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} width - The rectangle's width.\r\n\t * @param {number} height - The rectangle's height.\r\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\nvar helpers_canvas = exports$1;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.clear = exports$1.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace. all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers_core.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array} inputs - An array of values, falling back to the last value.\r\n\t * @param {object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers$1.extend({}, me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = helpers$1.extend({}, model);\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\nvar core_animation = exports$3;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {number} duration - The animation duration in ms.\r\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tme.advance();\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar angle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += TAU;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\r\n\t\tvar arc = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tinnerRadius: vm.innerRadius,\r\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\r\n\t\t\tpixelMargin: pixelMargin,\r\n\t\t\tstartAngle: vm.startAngle,\r\n\t\t\tendAngle: vm.endAngle,\r\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\r\n\t\t};\r\n\t\tvar i;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\r\n\t\tif (arc.fullCircles) {\r\n\t\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\t\tctx.closePath();\r\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\t\t\tctx.fill();\r\n\t\t\t}\r\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tdrawBorder(ctx, vm, arc);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar element_line = core_element.extend({\r\n\t_type: 'line',\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar closePath = me._loop;\r\n\t\tvar index, previous, currentVM;\r\n\r\n\t\tif (!points.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (me._loop) {\r\n\t\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\r\n\t\t\t\t// If the line has an open path, shift the point array\r\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\r\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\r\n\t\t\t\t\tclosePath = spanGaps;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If the line has a close path, add the first point again\r\n\t\t\tif (closePath) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\r\n\t\t// First point moves to it's starting position no matter what\r\n\t\tcurrentVM = points[0]._view;\r\n\t\tif (!currentVM.skip) {\r\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\tlastDrawnIndex = 0;\r\n\t\t}\r\n\r\n\t\tfor (index = 1; index < points.length; ++index) {\r\n\t\t\tcurrentVM = points[index]._view;\r\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\r\n\r\n\t\t\tif (!currentVM.skip) {\r\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Line to next point\r\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\r\n\t\t\t\t}\r\n\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (closePath) {\r\n\t\t\tctx.closePath();\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor$1 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor$1,\r\n\t\t\tborderColor: defaultColor$1,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nvar element_point = core_element.extend({\r\n\t_type: 'point',\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaultColor$2,\r\n\t\t\tborderColor: defaultColor$2,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(vm) {\r\n\treturn vm && vm.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(vm) {\r\n\tvar x1, x2, y1, y2, half;\r\n\r\n\tif (isVertical(vm)) {\r\n\t\thalf = vm.width / 2;\r\n\t\tx1 = vm.x - half;\r\n\t\tx2 = vm.x + half;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\thalf = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - half;\r\n\t\ty2 = vm.y + half;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nfunction swap(orig, v1, v2) {\r\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\r\n}\r\n\r\nfunction parseBorderSkipped(vm) {\r\n\tvar edge = vm.borderSkipped;\r\n\tvar res = {};\r\n\r\n\tif (!edge) {\r\n\t\treturn res;\r\n\t}\r\n\r\n\tif (vm.horizontal) {\r\n\t\tif (vm.base > vm.x) {\r\n\t\t\tedge = swap(edge, 'left', 'right');\r\n\t\t}\r\n\t} else if (vm.base < vm.y) {\r\n\t\tedge = swap(edge, 'bottom', 'top');\r\n\t}\r\n\r\n\tres[edge] = true;\r\n\treturn res;\r\n}\r\n\r\nfunction parseBorderWidth(vm, maxW, maxH) {\r\n\tvar value = vm.borderWidth;\r\n\tvar skip = parseBorderSkipped(vm);\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = +value.top || 0;\r\n\t\tr = +value.right || 0;\r\n\t\tb = +value.bottom || 0;\r\n\t\tl = +value.left || 0;\r\n\t} else {\r\n\t\tt = r = b = l = +value || 0;\r\n\t}\r\n\r\n\treturn {\r\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\r\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\r\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\r\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\r\n\t};\r\n}\r\n\r\nfunction boundingRects(vm) {\r\n\tvar bounds = getBarBounds(vm);\r\n\tvar width = bounds.right - bounds.left;\r\n\tvar height = bounds.bottom - bounds.top;\r\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\r\n\r\n\treturn {\r\n\t\touter: {\r\n\t\t\tx: bounds.left,\r\n\t\t\ty: bounds.top,\r\n\t\t\tw: width,\r\n\t\t\th: height\r\n\t\t},\r\n\t\tinner: {\r\n\t\t\tx: bounds.left + border.l,\r\n\t\t\ty: bounds.top + border.t,\r\n\t\t\tw: width - border.l - border.r,\r\n\t\t\th: height - border.t - border.b\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction inRange(vm, x, y) {\r\n\tvar skipX = x === null;\r\n\tvar skipY = y === null;\r\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\r\n\r\n\treturn bounds\r\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\r\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\r\n}\r\n\r\nvar element_rectangle = core_element.extend({\r\n\t_type: 'rectangle',\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar rects = boundingRects(vm);\r\n\t\tvar outer = rects.outer;\r\n\t\tvar inner = rects.inner;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\r\n\r\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\r\n\t\tctx.clip();\r\n\t\tctx.fillStyle = vm.borderColor;\r\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\r\n\t\tctx.fill('evenodd');\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\treturn inRange(this._view, mouseX, mouseY);\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn isVertical(vm)\r\n\t\t\t? inRange(vm, mouseX, null)\r\n\t\t\t: inRange(vm, null, mouseY);\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\treturn inRange(this._view, mouseX, null);\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\treturn inRange(this._view, null, mouseY);\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(vm)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\r\n\t\treturn isVertical(vm)\r\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\r\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\n\nvar elements = {};\r\nvar Arc = element_arc;\r\nvar Line = element_line;\r\nvar Point = element_point;\r\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\r\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tbar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale._length;\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar min = helpers$1.isNullOrUndef(thickness)\r\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\r\n\t\t: -1;\r\n\tvar size, ratio;\r\n\r\n\tif (helpers$1.isNullOrUndef(thickness)) {\r\n\t\tsize = min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale size.\r\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\r\n\tsize = Math.abs(next - prev) / 2 * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nvar controller_bar = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Rectangle,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderSkipped',\r\n\t\t'borderWidth',\r\n\t\t'barPercentage',\r\n\t\t'barThickness',\r\n\t\t'categoryPercentage',\r\n\t\t'maxBarThickness',\r\n\t\t'minBarLength'\r\n\t],\r\n\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta, scaleOpts;\r\n\r\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\tmeta = me.getMeta();\r\n\t\tmeta.stack = me.getDataset().stack;\r\n\t\tmeta.bar = true;\r\n\r\n\t\tscaleOpts = me._getIndexScale().options;\r\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\r\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\r\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\r\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\r\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._ruler = me.getRuler();\r\n\r\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(rectangle, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\r\n\r\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\trectangle._datasetIndex = me.index;\r\n\t\trectangle._index = index;\r\n\t\trectangle._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderSkipped: options.borderSkipped,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\tdatasetLabel: dataset.label,\r\n\t\t\tlabel: me.chart.data.labels[index]\r\n\t\t};\r\n\r\n\t\tif (helpers$1.isArray(dataset.data[index])) {\r\n\t\t\trectangle._model.borderSkipped = null;\r\n\t\t}\r\n\r\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\r\n\r\n\t\trectangle.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\r\n\t\tvar me = this;\r\n\t\tvar model = rectangle._model;\r\n\t\tvar vscale = me._getValueScale();\r\n\t\tvar base = vscale.getBasePixel();\r\n\t\tvar horizontal = vscale.isHorizontal();\r\n\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\r\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\r\n\r\n\t\tmodel.horizontal = horizontal;\r\n\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stacks based on groups and bar visibility.\r\n\t * @param {number} [last] - The dataset index\r\n\t * @returns {string[]} The list of stack IDs\r\n\t * @private\r\n\t */\r\n\t_getStacks: function(last) {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar stacks = [];\r\n\t\tvar i, meta;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\t// stacked | meta.stack\r\n\t\t\t// | found | not found | undefined\r\n\t\t\t// false | x | x | x\r\n\t\t\t// true | | x |\r\n\t\t\t// undefined | | x | x\r\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\r\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\r\n\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t}\r\n\t\t\tif (meta.index === last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stacks;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t * @private\r\n\t */\r\n\tgetStackCount: function() {\r\n\t\treturn this._getStacks().length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t * @param {number} [datasetIndex] - The dataset index\r\n\t * @param {string} [name] - The stack name to find\r\n\t * @returns {number} The stack index\r\n\t * @private\r\n\t */\r\n\tgetStackIndex: function(datasetIndex, name) {\r\n\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\tvar index = (name !== undefined)\r\n\t\t\t? stacks.indexOf(name)\r\n\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\treturn (index === -1)\r\n\t\t\t? stacks.length - 1\r\n\t\t\t: index;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetRuler: function() {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar pixels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tpixels: pixels,\r\n\t\t\tstart: scale._startPixel,\r\n\t\t\tend: scale._endPixel,\r\n\t\t\tstackCount: me.getStackCount(),\r\n\t\t\tscale: scale\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Note: pixel values are not clamped to the scale area.\r\n\t * @private\r\n\t */\r\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\r\n\t\tvar minBarLength = options.minBarLength;\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar stack = me.getMeta().stack;\r\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\r\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\r\n\r\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\timeta = metasets[i];\r\n\r\n\t\t\t\tif (imeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (imeta.stack === stack) {\r\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\r\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\r\n\r\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbase = scale.getPixelForValue(start);\r\n\t\thead = scale.getPixelForValue(start + length);\r\n\t\tsize = head - base;\r\n\r\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\r\n\t\t\tsize = minBarLength;\r\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\r\n\t\t\t\thead = base - minBarLength;\r\n\t\t\t} else {\r\n\t\t\t\thead = base + minBarLength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tsize: size,\r\n\t\t\tbase: base,\r\n\t\t\thead: head,\r\n\t\t\tcenter: head + size / 2\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\r\n\t\tvar me = this;\r\n\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\tvar size = Math.min(\r\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\r\n\t\t\trange.chunk * range.ratio);\r\n\r\n\t\treturn {\r\n\t\t\tbase: center - size / 2,\r\n\t\t\thead: center + size / 2,\r\n\t\t\tcenter: center,\r\n\t\t\tsize: size\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar ilen = rects.length;\r\n\t\tvar i = 0;\r\n\r\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\r\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\r\n\t\t\t\trects[i].draw();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\r\n\t\tvar indexOpts = me._getIndexScale().options;\r\n\t\tvar valueOpts = me._getValueScale().options;\r\n\r\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\r\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\r\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\r\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\r\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\r\nvar resolve$1 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_bubble = core_datasetController.extend({\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t\t'hoverRadius',\r\n\t\t'hitRadius',\r\n\t\t'pointStyle',\r\n\t\t'rotation'\r\n\t],\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data;\r\n\r\n\t\t// Update Points\r\n\t\thelpers$1.each(points, function(point, index) {\r\n\t\t\tme.updateElement(point, index, reset);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar data = me.getDataset().data[index];\r\n\t\tvar dsIndex = me.index;\r\n\r\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = dsIndex;\r\n\t\tpoint._index = index;\r\n\t\tpoint._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\thitRadius: options.hitRadius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\r\n\t\tpoint.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(point, index) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar data = dataset.data[index] || {};\r\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// In case values were cached (and thus frozen), we need to clone the values\r\n\t\tif (me._cachedDataOpts === values) {\r\n\t\t\tvalues = helpers$1.extend({}, values);\r\n\t\t}\r\n\r\n\t\t// Custom radius resolution\r\n\t\tvalues.radius = resolve$1([\r\n\t\t\tcustom.radius,\r\n\t\t\tdata.r,\r\n\t\t\tme._config.radius,\r\n\t\t\tchart.options.elements.point.radius\r\n\t\t], context, index);\r\n\r\n\t\treturn values;\r\n\t}\r\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\r\n\r\nvar PI$1 = Math.PI;\r\nvar DOUBLE_PI$1 = PI$1 * 2;\r\nvar HALF_PI$1 = PI$1 / 2;\r\n\r\ncore_defaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: -HALF_PI$1,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: DOUBLE_PI$1,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_doughnut = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\tgetRingIndex: function(datasetIndex) {\r\n\t\tvar ringIndex = 0;\r\n\r\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t++ringIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringIndex;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar ratioX = 1;\r\n\t\tvar ratioY = 1;\r\n\t\tvar offsetX = 0;\r\n\t\tvar offsetY = 0;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar arcs = meta.data;\r\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\r\n\t\tvar circumference = opts.circumference;\r\n\t\tvar chartWeight = me._getRingWeight(me.index);\r\n\t\tvar maxWidth, maxHeight, i, ilen;\r\n\r\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\r\n\t\tif (circumference < DOUBLE_PI$1) {\r\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\r\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\r\n\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\tvar startX = Math.cos(startAngle);\r\n\t\t\tvar startY = Math.sin(startAngle);\r\n\t\t\tvar endX = Math.cos(endAngle);\r\n\t\t\tvar endY = Math.sin(endAngle);\r\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\r\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\r\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\r\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\r\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tratioX = (maxX - minX) / 2;\r\n\t\t\tratioY = (maxY - minY) / 2;\r\n\t\t\toffsetX = -(maxX + minX) / 2;\r\n\t\t\toffsetY = -(maxY + minY) / 2;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t}\r\n\r\n\t\tchart.borderWidth = me.getMaxBorderWidth();\r\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\r\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\r\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\r\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\r\n\t\tchart.offsetX = offsetX * chart.outerRadius;\r\n\t\tchart.offsetY = offsetY * chart.outerRadius;\r\n\r\n\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\r\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\r\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\tendAngle: endAngle,\r\n\t\t\t\tcircumference: circumference,\r\n\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar model = arc._model;\r\n\r\n\t\t// Set correct angles if not resetting\r\n\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t} else {\r\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t}\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcalculateTotal: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar total = 0;\r\n\t\tvar value;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tvalue = dataset.data[index];\r\n\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if (total === 0) {\r\n\t\t\ttotal = NaN;\r\n\t\t}*/\r\n\r\n\t\treturn total;\r\n\t},\r\n\r\n\tcalculateCircumference: function(value) {\r\n\t\tvar total = this.getMeta().total;\r\n\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// gets the max border or hover width to properly scale pie charts\r\n\tgetMaxBorderWidth: function(arcs) {\r\n\t\tvar me = this;\r\n\t\tvar max = 0;\r\n\t\tvar chart = me.chart;\r\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\r\n\r\n\t\tif (!arcs) {\r\n\t\t\t// Find the outmost visible dataset\r\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tarcs = meta.data;\r\n\t\t\t\t\tif (i !== me.index) {\r\n\t\t\t\t\t\tcontroller = meta.controller;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!arcs) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarc = arcs[i];\r\n\t\t\tif (controller) {\r\n\t\t\t\tcontroller._configure();\r\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\r\n\t\t\t} else {\r\n\t\t\t\toptions = arc._options;\r\n\t\t\t}\r\n\t\t\tif (options.borderAlign !== 'inner') {\r\n\t\t\t\tborderWidth = options.borderWidth;\r\n\t\t\t\thoverWidth = options.hoverBorderWidth;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn max;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n\t * @private\r\n\t */\r\n\t_getRingWeightOffset: function(datasetIndex) {\r\n\t\tvar ringWeightOffset = 0;\r\n\r\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\r\n\t\t\tif (this.chart.isDatasetVisible(i)) {\r\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringWeightOffset;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getRingWeight: function(dataSetIndex) {\r\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the sum of all visibile data set weights. This value can be 0.\r\n\t * @private\r\n\t */\r\n\t_getVisibleDatasetWeightTotal: function() {\r\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\r\n\t}\r\n});\n\ncore_defaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tposition: 'left',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\thorizontalBar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_horizontalBar = controller_bar.extend({\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t}\r\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\r\nvar resolve$2 = helpers$1.options.resolve;\r\nvar isPointInArea = helpers$1.canvas._isPointInArea;\r\n\r\ncore_defaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nfunction scaleClip(scale, halfBorderWidth) {\r\n\tvar tickOpts = scale && scale.options.ticks || {};\r\n\tvar reverse = tickOpts.reverse;\r\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\r\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\r\n\treturn {\r\n\t\tstart: reverse ? max : min,\r\n\t\tend: reverse ? min : max\r\n\t};\r\n}\r\n\r\nfunction defaultClip(xScale, yScale, borderWidth) {\r\n\tvar halfBorderWidth = borderWidth / 2;\r\n\tvar x = scaleClip(xScale, halfBorderWidth);\r\n\tvar y = scaleClip(yScale, halfBorderWidth);\r\n\r\n\treturn {\r\n\t\ttop: y.end,\r\n\t\tright: x.end,\r\n\t\tbottom: y.start,\r\n\t\tleft: x.start\r\n\t};\r\n}\r\n\r\nfunction toClip(value) {\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = value.top;\r\n\t\tr = value.right;\r\n\t\tb = value.bottom;\r\n\t\tl = value.left;\r\n\t} else {\r\n\t\tt = r = b = l = value;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop: t,\r\n\t\tright: r,\r\n\t\tbottom: b,\r\n\t\tleft: l\r\n\t};\r\n}\r\n\r\n\r\nvar controller_line = core_datasetController.extend({\r\n\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth',\r\n\t\t'cubicInterpolationMode',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar options = me.chart.options;\r\n\t\tvar config = me._config;\r\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\r\n\r\n\t\t// Update Line\r\n\t\tif (showLine) {\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\t\tconfig.lineTension = config.tension;\r\n\t\t\t}\r\n\r\n\t\t\t// Utility\r\n\t\t\tline._scale = me._yScale;\r\n\t\t\tline._datasetIndex = me.index;\r\n\t\t\t// Data\r\n\t\t\tline._children = points;\r\n\t\t\t// Model\r\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\t\tline.pivot();\r\n\t\t}\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t}\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar datasetIndex = me.index;\r\n\t\tvar value = dataset.data[index];\r\n\t\tvar xScale = me._xScale;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar x, y;\r\n\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\r\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t// Utility\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = datasetIndex;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\r\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element) {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = me.chart.options;\r\n\t\tvar lineOptions = options.elements.line;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\t// The default behavior of lines is to break at null values, according\r\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t// This option gives lines the ability to span gaps\r\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\r\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\r\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar sumPos = 0;\r\n\t\tvar sumNeg = 0;\r\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\r\n\r\n\t\tif (yScale.options.stacked) {\r\n\t\t\trightValue = +yScale.getRightValue(value);\r\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\r\n\t\t\tilen = metasets.length;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tdsMeta = metasets[i];\r\n\t\t\t\tif (dsMeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\r\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\r\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\r\n\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (rightValue < 0) {\r\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t}\r\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t}\r\n\t\treturn yScale.getPixelForValue(value);\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (lineModel.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\r\n\t\t\thelpers$1.splineCurveMonotone(points);\r\n\t\t} else {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\r\n\t\t\t\t\tlineModel.tension\r\n\t\t\t\t);\r\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (chart.options.elements.line.capBezierPoints) {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tif (isPointInArea(model, area)) {\r\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data || [];\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar i = 0;\r\n\t\tvar ilen = points.length;\r\n\t\tvar clip;\r\n\r\n\t\tif (me._showLine) {\r\n\t\t\tclip = meta.dataset._model.clip;\r\n\r\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\r\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\r\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\r\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\r\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t\t}\r\n\r\n\t\t// Draw the points\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tpoints[i].draw(area);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\r\n\t},\r\n});\n\nvar resolve$3 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_polarArea = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\tvar starts = me._starts = [];\r\n\t\tvar angles = me._angles = [];\r\n\t\tvar arcs = meta.data;\r\n\t\tvar i, ilen, angle;\r\n\r\n\t\tme._updateRadius();\r\n\r\n\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\tstarts[i] = start;\r\n\t\t\tangle = me._computeAngle(i);\r\n\t\t\tangles[i] = angle;\r\n\t\t\tstart += angle;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateRadius: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\r\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar scale = chart.scale;\r\n\t\tvar labels = chart.data.labels;\r\n\r\n\t\tvar centerX = scale.xCenter;\r\n\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar startAngle = me._starts[index];\r\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\t\t\t_scale: scale,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX,\r\n\t\t\t\ty: centerY,\r\n\t\t\t\tinnerRadius: 0,\r\n\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcountVisibleElements: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar count = 0;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn count;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeAngle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar count = this.getMeta().count;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\r\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: me.chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\treturn resolve$3([\r\n\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t(2 * Math.PI) / count\r\n\t\t], context, index);\r\n\t}\r\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\r\ncore_defaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\n// Pie charts are Doughnut chart with different defaults\r\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('radar', {\r\n\tspanGaps: false,\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\tfill: 'start',\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_radar = core_datasetController.extend({\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderWidth',\r\n\t\t'borderColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar config = me._config;\r\n\t\tvar i, ilen;\r\n\r\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\tconfig.lineTension = config.tension;\r\n\t\t}\r\n\r\n\t\t// Utility\r\n\t\tline._scale = scale;\r\n\t\tline._datasetIndex = me.index;\r\n\t\t// Data\r\n\t\tline._children = points;\r\n\t\tline._loop = true;\r\n\t\t// Model\r\n\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\tline.pivot();\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\t// Update bezier control points\r\n\t\tme.updateBezierControlPoints();\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar lineModel = me.getMeta().dataset._model;\r\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\r\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\r\n\r\n\t\t// Utility\r\n\t\tpoint._scale = scale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = me.index;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\r\n\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar options = me.chart.options;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar area = me.chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tmodel = points[i]._model;\r\n\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\r\n\t\t\t\tmodel,\r\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\r\n\t\t\t\tmodel.tension\r\n\t\t\t);\r\n\r\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\r\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\r\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\r\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\r\n\t}\r\n});\n\ncore_defaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tscatter: {\r\n\t\t\tshowLine: false\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Scatter charts use line controllers\r\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\r\n// the class, and so must be CamelCase in order to be correctly retrieved\r\n// by the controller in core.controller.js (`controllers[meta.type]`).\r\n\r\nvar controllers = {\r\n\tbar: controller_bar,\r\n\tbubble: controller_bubble,\r\n\tdoughnut: controller_doughnut,\r\n\thorizontalBar: controller_horizontalBar,\r\n\tline: controller_line,\r\n\tpolarArea: controller_polarArea,\r\n\tpie: controller_pie,\r\n\tradar: controller_radar,\r\n\tscatter: controller_scatter\r\n};\n\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers$1.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\tvar metadata, i, j, ilen, jlen, element;\r\n\r\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\r\n\t\tmetadata = metasets[i].data;\r\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\r\n\t\t\telement = metadata[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\r\n\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t// don't count items that are skipped (null data)\r\n\t\tif (element && !element._view.skip) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nvar core_interaction = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\n\nvar extend = helpers$1.extend;\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers$1.where(array, function(v) {\r\n\t\treturn v.pos === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\treturn array.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0.index - v1.index :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n}\r\n\r\nfunction wrapBoxes(boxes) {\r\n\tvar layoutBoxes = [];\r\n\tvar i, ilen, box;\r\n\r\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\r\n\t\tbox = boxes[i];\r\n\t\tlayoutBoxes.push({\r\n\t\t\tindex: i,\r\n\t\t\tbox: box,\r\n\t\t\tpos: box.position,\r\n\t\t\thorizontal: box.isHorizontal(),\r\n\t\t\tweight: box.weight\r\n\t\t});\r\n\t}\r\n\treturn layoutBoxes;\r\n}\r\n\r\nfunction setLayoutDims(layouts, params) {\r\n\tvar i, ilen, layout;\r\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\r\n\t\tlayout = layouts[i];\r\n\t\t// store width used instead of chartArea.w in fitBoxes\r\n\t\tlayout.width = layout.horizontal\r\n\t\t\t? layout.box.fullWidth && params.availableWidth\r\n\t\t\t: params.vBoxMaxWidth;\r\n\t\t// store height used instead of chartArea.h in fitBoxes\r\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\r\n\t}\r\n}\r\n\r\nfunction buildLayoutBoxes(boxes) {\r\n\tvar layoutBoxes = wrapBoxes(boxes);\r\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\r\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\r\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\r\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\r\n\r\n\treturn {\r\n\t\tleftAndTop: left.concat(top),\r\n\t\trightAndBottom: right.concat(bottom),\r\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\r\n\t\tvertical: left.concat(right),\r\n\t\thorizontal: top.concat(bottom)\r\n\t};\r\n}\r\n\r\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\r\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\r\n}\r\n\r\nfunction updateDims(chartArea, params, layout) {\r\n\tvar box = layout.box;\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\tvar newWidth, newHeight;\r\n\r\n\tif (layout.size) {\r\n\t\t// this layout was already counted for, lets first reduce old size\r\n\t\tchartArea[layout.pos] -= layout.size;\r\n\t}\r\n\tlayout.size = layout.horizontal ? box.height : box.width;\r\n\tchartArea[layout.pos] += layout.size;\r\n\r\n\tif (box.getPadding) {\r\n\t\tvar boxPadding = box.getPadding();\r\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\r\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\r\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\r\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\r\n\t}\r\n\r\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\r\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\r\n\r\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\r\n\t\tchartArea.w = newWidth;\r\n\t\tchartArea.h = newHeight;\r\n\r\n\t\t// return true if chart area changed in layout's direction\r\n\t\tvar sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\r\n\t\treturn sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\r\n\t}\r\n}\r\n\r\nfunction handleMaxPadding(chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction updatePos(pos) {\r\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\r\n\t\tchartArea[pos] += change;\r\n\t\treturn change;\r\n\t}\r\n\tchartArea.y += updatePos('top');\r\n\tchartArea.x += updatePos('left');\r\n\tupdatePos('right');\r\n\tupdatePos('bottom');\r\n}\r\n\r\nfunction getMargins(horizontal, chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction marginForPositions(positions) {\r\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\r\n\t\tpositions.forEach(function(pos) {\r\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\r\n\t\t});\r\n\t\treturn margin;\r\n\t}\r\n\r\n\treturn horizontal\r\n\t\t? marginForPositions(['left', 'right'])\r\n\t\t: marginForPositions(['top', 'bottom']);\r\n}\r\n\r\nfunction fitBoxes(boxes, chartArea, params) {\r\n\tvar refitBoxes = [];\r\n\tvar i, ilen, layout, box, refit, changed;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\r\n\t\tbox.update(\r\n\t\t\tlayout.width || chartArea.w,\r\n\t\t\tlayout.height || chartArea.h,\r\n\t\t\tgetMargins(layout.horizontal, chartArea)\r\n\t\t);\r\n\t\tif (updateDims(chartArea, params, layout)) {\r\n\t\t\tchanged = true;\r\n\t\t\tif (refitBoxes.length) {\r\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\r\n\t\t\t\t// -> we have to refit those\r\n\t\t\t\trefit = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\r\n\t\t\trefitBoxes.push(layout);\r\n\t\t}\r\n\t}\r\n\r\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\r\n}\r\n\r\nfunction placeBoxes(boxes, chartArea, params) {\r\n\tvar userPadding = params.padding;\r\n\tvar x = chartArea.x;\r\n\tvar y = chartArea.y;\r\n\tvar i, ilen, layout, box;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\t\tif (layout.horizontal) {\r\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\r\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\r\n\t\t\tbox.top = y;\r\n\t\t\tbox.bottom = y + box.height;\r\n\t\t\tbox.width = box.right - box.left;\r\n\t\t\ty = box.bottom;\r\n\t\t} else {\r\n\t\t\tbox.left = x;\r\n\t\t\tbox.right = x + box.width;\r\n\t\t\tbox.top = chartArea.top;\r\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\r\n\t\t\tbox.height = box.bottom - box.top;\r\n\t\t\tx = box.right;\r\n\t\t}\r\n\t}\r\n\r\n\tchartArea.x = x;\r\n\tchartArea.y = y;\r\n}\r\n\r\ncore_defaults._set('global', {\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding - Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nvar core_layouts = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\t\titem._layers = item._layers || function() {\r\n\t\t\treturn [{\r\n\t\t\t\tz: 0,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\titem.draw.apply(item, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t};\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {ILayoutItem} item - the item to configure with the given options\r\n\t * @param {object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {number} width - the width to fit into\r\n\t * @param {number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\r\n\r\n\t\tvar availableWidth = width - padding.width;\r\n\t\tvar availableHeight = height - padding.height;\r\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\r\n\t\tvar verticalBoxes = boxes.vertical;\r\n\t\tvar horizontalBoxes = boxes.horizontal;\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\r\n\t\tvar params = Object.freeze({\r\n\t\t\touterWidth: width,\r\n\t\t\touterHeight: height,\r\n\t\t\tpadding: padding,\r\n\t\t\tavailableWidth: availableWidth,\r\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\r\n\t\t\thBoxMaxHeight: availableHeight / 2\r\n\t\t});\r\n\t\tvar chartArea = extend({\r\n\t\t\tmaxPadding: extend({}, padding),\r\n\t\t\tw: availableWidth,\r\n\t\t\th: availableHeight,\r\n\t\t\tx: padding.left,\r\n\t\t\ty: padding.top\r\n\t\t}, padding);\r\n\r\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\r\n\r\n\t\t// First fit vertical boxes\r\n\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\r\n\t\t// Then fit horizontal boxes\r\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\r\n\t\t\t// if the area changed, re-fit vertical boxes\r\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\t\t}\r\n\r\n\t\thandleMaxPadding(chartArea);\r\n\r\n\t\t// Finally place the boxes to correct coordinates\r\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\r\n\r\n\t\t// Move to opposite side of chart\r\n\t\tchartArea.x += chartArea.w;\r\n\t\tchartArea.y += chartArea.h;\r\n\r\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\r\n\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: chartArea.left,\r\n\t\t\ttop: chartArea.top,\r\n\t\t\tright: chartArea.left + chartArea.w,\r\n\t\t\tbottom: chartArea.top + chartArea.h\r\n\t\t};\r\n\r\n\t\t// Finally update boxes in chartArea (radial scale for example)\r\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\r\n\t\t\tvar box = layout.box;\r\n\t\t\textend(box, chart.chartArea);\r\n\t\t\tbox.update(chartArea.w, chartArea.h);\r\n\t\t});\r\n\t}\r\n};\n\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nvar platform_basic = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\n\nvar platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers$1.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\t// eslint-disable-next-line getter-return\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers$1.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction createDiv(cls) {\r\n\tvar el = document.createElement('div');\r\n\tel.className = cls || '';\r\n\treturn el;\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar maxSize = 1000000;\r\n\r\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\r\n\t// https://github.com/chartjs/Chart.js/issues/5902\r\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\r\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\r\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\r\n\r\n\texpand.appendChild(createDiv());\r\n\tshrink.appendChild(createDiv());\r\n\r\n\tresizer.appendChild(expand);\r\n\tresizer.appendChild(shrink);\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\r\n\t\t\tvar w = container ? container.clientWidth : 0;\r\n\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\r\n\t\t\t\t// If the container size shrank during chart resize, let's assume\r\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\r\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\r\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\r\n\t\t\t\t// events are ignored during this whole 2 resize process.\r\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\r\n\t\t\t\t// twice in a frame (potential performance issue)\r\n\t\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\t}\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\n/**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the

    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 UTP41N1ia~k+UrTc%A6PcKSYhtvH$=8 literal 0 HcmV?d00001 diff --git a/locale/ja/LC_MESSAGES/djangojs.mo b/locale/ja/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..677d77a690c67629f398588f8e7ae45171f1ec41 GIT binary patch literal 29540 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 CXaTbT literal 0 HcmV?d00001 diff --git a/locale/ko/LC_MESSAGES/django.mo b/locale/ko/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..8020471018047db037cefba9f4e342fcccd7dbfb GIT binary patch literal 171888 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�Yj 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༵YRA>$zB9JUSPtlx1D zBWntsrj)oggEY68ZbNN(SX;127C3W9t9M%X8s+OxAYA=miE#DDXbL~ft>tDwi9YkJ z7-?74m)0xZ#lcx@aA9)!EqeF~mE;@8d|2Q-q*Y3EBLqPk9>Wp0iPvExBrAW0WqEDq z(SRdf7;2Z!1jnE4UdPeXmvDpTP*ky_x}YopegKC-ZTGEa8q)`J%FtYvZX`2t=3AOE zT@VeP*6l?{Xj=^^3Y~z77+|zz!vJJI22S=J4+csvO(8HwwNegyjFQ`-IZ4Xk9!0&# zUjr&`dC3@`nRv>|LCq8!NbE00>V_1FKkPNXz~*C*217R%wE)80H}5mp57V4E9L*VS zN-rmS?3t|-R9dye8XKh;T{MT!QUg<=fii|@R$Tq-V*{{E^i|Si6fSx8nZsww11ufr zAN`v1t(V%~{ADLgTWfb0W3Swm@z!VdRO*NhA^|7TN#r{EjRQ}kQx0!t3}KB1I$d>? zP(^_f+{DHsZ{RVt~D0lvW8)$^(aJ|t<5Z_z-j zAmUWq21RJ$r6@o)`$&9bnhsMkLf10JaUsV`lJ{OnSJ)v1mHvax9mXJ-1>3?{6Qxtx zMu_bvTTh>O@@RbAPBIl|j2ai|RICqTD3jfneVMw|nb%EeK*5TqGwbfr&-xu3Z;D4aB0bpUt0DyC*O$2 z!o?DIKWmhsaNAe@7GVM&O~HHxT0FA$n!Wl;_apG04nB<}%3G79#s%Iz>iWp~w^}y8 zfF2Dir!Wep6W@DmB|8UDedEa2k9;$|Ml7TkT?P|n!)=OcCW8nlQeGt()Md5cGZ%14 zJQyn;zDWPdVIrZOmV0Er+&ImOHCMIi36~)Tdj-^mJ$9T4Z4vzsm@T0P=1>N|C>E3uak61nvwb>d9)14$OkBez8NeK zZPRdCpz2ySRU>1p?VFkneNfakby`Oixy2>MBToJo*^$X{*43JQohFio^wgh_Eq0^+CVFbLQ}!TYR4>TN&L>`u(&zsJVB&vl literal 0 HcmV?d00001 diff --git a/locale/ko/LC_MESSAGES/djangojs.mo b/locale/ko/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..827865c1848ea416c08f3b78d5ccb0d272dfebe2 GIT binary patch literal 93666 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 Q;fO~)ceG<$^vv4(e}tp;lK=n! literal 0 HcmV?d00001 diff --git a/locale/lt/LC_MESSAGES/djangojs.mo b/locale/lt/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..169973a067457330f74980fc55b4113d75fd8aed GIT binary patch literal 11150 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 CxMuqR literal 0 HcmV?d00001 diff --git a/locale/lv/LC_MESSAGES/django.mo b/locale/lv/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..c21a1c34c946544cd7891ec9727ce79a29a72a1b GIT binary patch literal 39879 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 H8r%DSt3$Eq literal 0 HcmV?d00001 diff --git a/locale/lv_LV/LC_MESSAGES/djangojs.mo b/locale/lv_LV/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..48f5bb916ff699ac5215f39fae1a685e6b39056a GIT binary patch literal 4698 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 Y?}G>RI&3Y5Q|rAZ+ye#zUeBrh0>mVK2LJ#7 literal 0 HcmV?d00001 diff --git a/locale/mk/LC_MESSAGES/djangojs.mo b/locale/mk/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..3259ca6f00e7d72036d65728c437fdebb009e8a9 GIT binary patch literal 447 zcmYL^(N4lJ7=<-@wM(zP_)U~Rv}_|G8O5n6BO%$8!0^6oWvguM(sqgu;3N2YK8u|g zIO&)6q$ht*f6h+7kBp8D=Y~teiQ&f3$TNJI%YoUO%w97o-e{uHG)1peDkeAvMM++- ztU0ZO)F@IJOVMMUDHIC~*6an%={swpXiPN4&~w~Aa?Bcl)5ksU+A*?1qBM#n;i@27 zNDPx@7{c=?3g9+~M$_-D2~dfya7xv^$NElGhULY4{xul}s^dqdbA{Wgaya2@b{ XaG}+Lops>Cc(()h-~a}9XdV3m)BJuE literal 0 HcmV?d00001 diff --git a/locale/nb/LC_MESSAGES/djangojs.mo b/locale/nb/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..c32ac1cf3a7f4088c4ce079728544f9262b4820f GIT binary patch literal 429 zcmYL^O-{ow5QRao%91q;Be7@&u9L86>Jo$styGCZRR#7=I&}<*9oY^ky$46&B;13u z;84^)>GR(_kDq@|jz15a4jreCbH|b6($Ok%7*`y)x%KQc*Xk8Ai>FKc0@?^ADKfzF zI`tM%DQ)r0aIwUrnj4%bioE#~UckF(t@xfCB${XjGyk;D50<5IyQRxP_U=oegTlxJ}piXXW zMG0w|rf1u}Vg>8=F3Fi_K$2~4Qv5d}G9_JaHl2<4UkiG^cc-KU>9T!PF1&@cB~`(M z9HJ~|+JKFplL?OYzV@vZXgrpgS_;W2ic(>Bfhm%yH!o_<3OrG|H144K+nP8WqU|#7 NNOTsXpgZ&qegUpoXb_uiSy%-l_u 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 A#Q*>R literal 0 HcmV?d00001 diff --git a/locale/nl/LC_MESSAGES/djangojs.mo b/locale/nl/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..214386993df3ce9b4aefef8db9d6e897027ce599 GIT binary patch literal 412 zcmYL^(N4lJ6oxT+wM(zPI3`{|v~-Y=j3P#KBO%$8!0^6|vek@sX*LPGjc2T-AwOj z!R4n=^bnJl|CgyMX~#=uNp$*2uj_lyS~;OG%2$P1o!C2Cm0YS3WCb@?xbZ5TlHlZP zdToUvk;?Q&s+>WvmhKpmfhxUuSsPxGsWv-{8`WQF$Ndo;mgBa9>oN2?Bd_%fj(m2~ literal 0 HcmV?d00001 diff --git a/locale/nl_NL/LC_MESSAGES/djangojs.mo b/locale/nl_NL/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..05aa1355dab916d234b056fd51d914ca38f61394 GIT binary patch literal 31234 zcmb812b^40*@v%`0HFpj5b7lul924CP=uv~^n_&7HX#y9nBBR%JK34J!<1|`6blF< zMFgZNpa@tH3q=JHMMQ*8!Gc&pP(Tq-{8R)ie9!-!_ujd)1oWF<&V5e1r=Rz{=iIY- zV&^SB67bt&vmn?DzOYjeJc9l1{p1@2uS^bt(ePC`3hvYv1S8;BxGkIrN5Vsl$H1*{ zFM^8K1rLL3;Fj=GxHY`W!ml^?XNv)7kC;}ybnR;`*FA{{36^9-VgQO z<52Z`7OI_IF!#Tq+F^?+zFgZvm1jq&czZylKN;=-kAl1sEH?LPQ0adVsvj4~XN}K5#Sf?X@{NabPlr3g!{G$D z5UL%kQ1w02c((a}5blrvAzt9 zBM$QMMnlCLXYNCw(whTE!KG0Bl!GegI;i@@Q0bllRnGTA<$D3tdmn{r&s(74-w9Q| z2jI@|QKXMN_5CN@2X1$We{T|0elv`Vpyt79sC;7MAXI(d4Hf?!^S=aYeq9YEVs3zHx9`9` z;UgCQJXHPv235YT5B2dzL-qTir);z4w@fKMvLJe}WocuR*=P?K{2yE>P{i57c{;;BIg_RDF+ys(%rx z-0PvreHv8$=fZjLDyaOQgi7aG3x5$Rzt^G4xfQ}y>Ffj*|Lsua+7qh(CPTe{q=nCh zdVe9*d&`Z-ng0n;@AW{XQ-drA!P!vhp9_`Vg;4E$8B~2g2^If~Q02N8D*cCG8+-&R z-oK#wbL8Qa748lXgza#5csx{lRH5RZY3}o(+WiWs@?Q^C&d)-%+g(ukeGjT!KZGjB zlThV)4l3Q(pwbzE@RNHKRK4~#_x@1*GX*N2!=cJC6RO@zpz>J-_1+q&{7x}vgZl`mc31^fzf+*cwcmMA?R+(qp71%Sd>@1=|IeV- z-Dl1J4^Zj7YVOSuMk?>lQ2Fi&6@CCzKTL%x$B|I;ej!x7Pc(N0s$I^4O6Pp2d@qBl z-}UCc6)N3tn*T#k_5FqMuTb^c;V3_@cY$ip(NOi71oeIgRC(q=m3KLG<+1PzRQ!!l z>756!f)_!>o4_Kg@*N4)e#b(!&k0cJu7#RcMYs=)q3UrFRQ}gOmFv?``F|biz3)P` z&rhJz|2@<=d>QKff0}!{8I&FO&QR~IhHAGwRJlt~^Y3)1{4RmJ!H=2$?NI&l5LCNA z2KD|E#@|7e>m{gh@eio@+aKfOje%WT^hR5URZ|hbr$Upz^;J zD*e07{UB8OKQ{gbD*ZphecFqPukN5FVYRQ;*D8o{Q)&E$3yua z3Dqt$;S{(Sy81ws;|_EG3@ZMpW4*pP8kTTRgImJup!(@XsQhn(TfuL@t>FVu{qX~+ zarJAcdcOpZfo+R?I%TNwS%(|pMNs)}v)HG%15|xSL*=)(xhGlpbf|IAVgAP&mqYc( zyWn=P4mH2u3zgoL=6@Yjx}SsF!n@4>JLdi|R6TwTw}F3zs{boc<@`5P{+oCD@Liz7 z_l9bZ{h{8UWd0pc?;Qh2!ntsJxC~0po(%PV9V&dI@%>Qcz8G!?uQ2}`pwj;W+#KEm zPk`ToA>3z)m(Md`JMOhm@h&o60#)zJq1Kn{p~`m`bo~h>mme_ypF@@733ERK_1+(# z`hBydzTDeFr862Toju`ZaDS+FJOJvwsZi_40(kb@*xy6t_u?`?ZeEAVZ>QzHop*yf z;2v-8L!t7W2bIrKcraWImH!16{$Z&0yc(+gZiJ)Yt#C*9ZK!sC6e_=8K()(LQ008l z{I^`;<;`|b>Ff(tpUF_^911nw=RwW8)o^=QgzDdo#*3l!kelGn@Ghu%|9$iS6IA@o zyL@_MV2JxbsQI!8sy-3aIIlpJ{{pD;UjkMCtDwqxEmXVR3{|eX;3)VAoC2SMD#xgm zz8&8I$Kjp~+u;g05xy550&j)~!Ka||efuh(@19WoFc!-HKuFUCQ{gQ5J~#*757llX zkMr%eD^$7P0pAWML6vJJR6S3Hihnv(ymO%1`9i38*Fxp{u<geg|2;}+MxoK@8wYA?HZ`|yb10K?|@48A*lDBFg^#>u78D! zzty|E92yN(zBZ`-I|%CirBLIp2P%GS?laB(K{y)!tDws9MW}S{gsR6kpxWsXsC0e~ zmF_c8<$TrLI~?!hkArn5X4b?AKLZ$P0bKhs-KZl5%;6q(!I#sSDO18sDAnsRDa$MRj!Aj)``cV%Kao%yyv0j@hec{ zZ=1EA`#_cJAgK69!h_&^sP|4YegLX`AAytMXW+i@F{tvt4Aq}ooZ{2n6{GzZfl7ZpRC}BY z)gRYe_}8G`dl)LepPTNN@O1v}sYa5Yproe4LG=R)OkK2&{f zfGXGRQ0;IpRK7okD%TTG>AngzPqvPHJB@{R;vNqb{uEUIykzdzpz_j6{c~XmFNK2P*T2lYN5Si1^PtMx4>eBCgd^aGpwhV`kt zeE){ZcgF!=zP;dB+|%GTa3xfGoD3(!)1lt`4BQ&t1xLdBp!AD}E&Lg%bYF(5_vS^P z-tJK48VgmPgQ3RP9H??HF#lyx>7HW#18@u6HK_7!fZM^3Lbdm&q0+ktYFs}I)!&ap z<@aZ(_cky2d=7wZxZC0O@I<&BTnF|3AXIwiK-X{Pz8Si9HTUo2$;@n42YXZNy~ zGvlD#lc3u3FsOE$1$Tgp%zq7(yvjqB`#r|Xpx*y9+yUMJw};<0{s^jkPeQ%-H>h%N z6Z`fW1GmM!4^;ae2zP|j;SO*XR68$+8mA{h<<|q%pB1QbpKIYChEs802@i)4!gjcM zg*@PNsClv6ScXU7J|9kn55N$<0_Vapr+R&3E!4O^52_t+G5<%P(tFk1qpQB$$3WF* zDclLJhNECV)cUy*YP?(m)!tV?wZq5Zmhf{>^}iJ!2JeN3z}KM4Iko2JTMjDzhhYe> zfJ5-BQ0+9m?(>@gH4auom8$~Pt{b4rcNSE8UIx`3H^bTRcTn*rHGKG?@GRV&Q04z2 zRQVr+D*vzHuJC!N_k#7lKevVQ-xF#aO@->W#qjO$IJh$`LdmsvL-qG{=6@4ZeeQ(H z=R3w9LABEpQ1yEes+~s+`t)}b!~7x%BY0a}9n>&)`JN z@9{gu{4XQz_CJ~bMEDc@)VA-!{2a3pvlye_Op7P` z$1sSEU$c}!I8w<0Un3@b5OsHaGcrY-VgJfEd1K>Ki|Ug z-YfWkxyP9MG2D+}Ujq+^h>c)Z>$9c!osWAq=6K8jxPOir!07io%;lIDaBJ+`3NM0Z zz#QBLYR-><@59W*-idh@`;Kr3>h~yo#an{~=64U=%W&l<)otSP+^7|D2W2n1iV;=i& z;CRd~*!3G@yarx~`$$YD_Mc$hVPWsb@6(u3q@&+xIM>21f*W| z_MPCDFx!*guiz5QD&jAN>*2THw_yc-52N4racg}{es^H`i#g^Kwhi_ zjDCwSPg%S_z};{UVIIKrVT$-I!;HpsU_OXhfWLlkC#~dn75>@Z6S${k{7xhA&$y4r ztioP`$6+4Bz5??a_Jg5*=U~4QYVEuY`#&(fn4QUQGJbXJUzEWfLH)Lc`+e4 zYvFQlMqV-Q&zRr0@w))CJMOjcd5nHX;vS1>$9})X-JN%H*w4go7N&vu8s>j7lktBJ z^DyR{n0xU%0qzf_G<+3I!mZ!mFrUJlj{9_Z@VgrO&KCZ%@qc`fdyX^vmkIkB=7+eq zAl*B#moXP(^!uYn%kvMowj=J7#95C0pO}wZ{HI}rdz86%B;M!Ej55Iu>lkmf^3$qRWms=W7;@$|Aj|Por9m%Jr}u*9*Oco?N{UmnSy8*GJWw z^O+VNALXjSw6GMH>-}M_FUCF?MFY-yP?*mR)x33TI0t+1PLG*kZ=o24g9Toy_eWtZ zSBk>29=T#Q%H@Z`XhWe^uZ4v&;e}e*8yE9YwLO^G9XIO!8Lp}YGkba>c8MNQKCx7t zrB(|U$9-5;dV^l67uM(MF0$E3i3<6U$dL6b)C&>8dD744!O2f!g1Lrpdz>!xitA)qaM=^l|r@o zeqS|iRKij-heEklFVq{pisV?123vZ~rCG_FuJW90LZ_Xtmu z_Zj&3dh(=*#iC3&U->&{xFj<+yw9>mcd^hzTa*X9hwJ3}P(`g*rZ4MJUsR<-bM=ru z?W3pb-dzskY8ai`$Q48CJe7Vf$K|0?+^D&J2xe9);Sz>NFtZwkLvbUlHLwsh9~Gne zFmHtq<`}(%_Y@hQVZEBG_0MR1IUCET5{|2dZxN{))#|Zw)p#uW{(g(-jdGE8@UipJ z`a(}cgO33!EBnM?4DKs z3|Fcf&90&4#e+QEjG|vu>p$InHE{}vFDh3gxnOo&Y?MeUE|nVPLVYNl>t`N5<=#TI zlrU3ZYyY{WT!C6;T^*@&VYxT1mi*jIq7<5b8sb&PG`*2;=cUS!dxSNHY!C8>E{RGL zY7^-lrP(OggV}CI82nsI9EpJOQNo;?==EHmh36B7Gm~WUPR6GGUV^4h8^GQj)50e4 zsYuxuZ;l(Zw4sHhB{280T)n>|OoNZ}YeMR-B*An_DV*KaMToOzgu)yqLO0_*z~Ud_ z!t(lDu|R{(iF$L5Vja2}?hzvCT}zpBPE^TN>m~Zy;)U}V7pdKis>J0)SK?Th5u27) zQa^K=6gO8^*d=MS2zQIOvVf2>yA$bV&sTH3X&L?4?XA)-PMCP{fSolk+JM|55k?2I zxx^TcB}gJQh#DfFFwA6?PbaPxDvRj5KkLW@Wm_hXB-W~On!{Qx!)K(4B;zDW$K2s* zW*HV;OGmPRG&@Hb*Ltdjid&{K_Us%{oPl~=fpun`-jUQac=4Z%$vKIL3+5DRxo%X6 zm4k8HJVYiEa%O{;EZ0qK3FgE-4L?H6BI$|-qq2m(RAgUQrsgf=DH(FFApRx3QEMv8hAq8RpK1*yaCF3yV-6 zMEv_|q8?c1LnDQG`NLVE776G-iLB7P^@Ex-??*wt!zEhl&#_MX<(J+;fz^sb zbjBu;8KY=A6`u_G`MKZ`E<-^p)TG^7KrNUb@uCFO{AwZ3gSq0L*~re@t--wrD2v9s z4YY<}0SX_(ELac~E5U+7KH}lls)S)zRIgLH)NRtV7A#yAEG*?%Q{5AH$+fzdPN`GV z4o4aFxoG_^NwBcYP${hEWtJr#l}6nw-bk6KtV-6x{-_#FW>G?rQb(_nkDolA*r{Tv zgizGVXlK&xny#*>%0vqNxJu)=hVReS!tMx_29=~hdpljMQ0b0y)jSC}A&>S(9%Z+J zhFUKaP^de%^28p6z6H(UWS+O@H3q%48Z2}QWplM%r0Lt+pfQp;ym-#cWq}?O3a$mC z{KQ}}%1T3Rn^@9rSe&cXwbn$n8iCl^NTBpP>#B;IOpBu&4eOp^mj+z0*y)67cW)a? z7_LMG#!*5E1GJzX9qvifBtlJ|3TMD9j{TlX7GlSJp|(A+7Ifyy6xlWza#q=FQBiH1 z0$a3_(a}lyRX<}mA$AftSDe@pbjID9Xq|CB-QiIZFL}Ku12(a^QA1`fG8>gnZTFN0 z)z%|iTG147yO~ZDNj%XeH>v3;#8eZr`uW#69l@5T9%689_@kisrAQ= zB6}b-;X=8m*vLoW_$mBVs{)&K50-eL6Gl!RE{O*58Km;5F5#R`y36JyoL4O5bn?kr ze8FY)LP55q>t#>%->f5?*_UG|Ij?vysxFJ!7c~>@YIL{dTT8MMEl<%`7X}L6qODw7 zj6|i^z*Dqd3CA)uPF?2jirWlHH-(7AdK`x|UbXJtNkWjTZZSm1?dd0k@32c^{%HX< zCDE%cWT35B(tghAlnG}mrt^YWCAW2T{uRGnYzbzQC8dvuwV`s4?;%AlQyaFf9mx!> zh3gABP8z!1uCmIK$k74gu*RfBvo34FbE;(sXpafCDA%v1?Vdv6Yjtf|)?(`|^i6CJ zSN2CkVLz{;SN9kC5Q*%R3tEqcLWZlhtQyTuM7vFgf78zjhF4}MY;&l^j|wz&B%oEu znq_HkZ?Kf1nhuerwX9xm1D8MtTI!)}um$8Ss#++}uuG&#O;Ca1|^35B0Uz&0y6 zue!Gf%h>Sd5T|Y_Pa7bya9pJMkvdyOXX4wDhHH$v3GW7}68A?Ptz(x}Jv=x>ID8vbCqPjJUlEex0Rzl|TauF()__e_^mQRER!I`vAFw$zi|4PBua9QI&|ds(wsN6%vw`vGjq?nhh;7=aR#syxUo|@ z5Q*WkWY9Y2vcbIk*@meh9MdJy+-d1uXr}n)_UnN<(=7!nqV*h&CCXUha%Yn(Vn#)m z)G$3lG)`>}u$ye@igIq?z$y!vhZowCSJ{KSB+$fjmph{gz2xql( zrBbJRFLAaelCE#kf!)@GcGd(Zmh0^+WAk*U{Tgy za-5Hs>k~O4(u(b6&42MCi%}Z?t)mYM_2MzlY9_JPTEf<_VJ}K7=F`J~|GxB_c<(I= z-x_;Z5vopBRgz_oaWrm%bLDA2mU2Ji#!b-Znpk_o%T5Go>2qiCnOPtWZQQUgg1QCTB+TF9$wxCE2UMq6Bt@7 zD|ykoIVW$RJ90QdSWUBxEV6orTZK?02l&|MCAZXZC;QZQ(jgd?Qs(p`t9R0RSkpeY zZ(qz_7bQlNdBN*a*Pf9aP((Nx*b{Ut%t<_IRTWYH$TT!$R>|IbuystLxEwdCxxPFAI@yY5jGD` z-y{XS5|t6gJ-lxl6-F5AB3nROTIV;b$^&IaFf3{{^I!nDLuy<)saaL7X(36Nwk-Zy zG3@BbBi!V?@nNPTt*Z1@a~xtIOi+GPh1kwTJ)90%BWazLhIW`~F1PGv>}fQo7BNa# z`O&)k=NUQuX9{fjj({g6<`FhGL(VOs;Dc*{sU8VKztIhj8La8(W5^!%;n%Ynd1mJpY&ZKKw36fEsU`-8aTv5Lgf>L8gNm`e4z0RvVZJR@W&L^0 zNH!y!O0{*?`U?5BS&hD0+se2j9Jy?18#@7p13P2)fg+qfb=o0qQ~7szIQ5W@>4#04 z%5S6&Y}=ezW2K6#9pQppm2W}ek+ni!DL%$M+snnHC;RtF)hdZP{Pe6yR1QjTvmODTkVu-bE* z#NGSh%SAbuA0e;N3!;b*3t0ze4eZcX#vGimOJPoS$DHxZxeb+IF5K>cY(VyQpC9{MNqJ~ zAc>Pi@h5UM^b-mH#P>KVG)NE7=o#PnNm(;~K8uLdiL5v+5)D@7$zt@WTy(4u^X z;h>cHt{C&Haa5`C@ja8!n-zq#Y@E1PSLb^A`H-h`>25TrLb0Ipy-YeTch1oogPA6D zudY<9t>>ZMvsSk+$O=!w{3lBHq)&=${PmEU5^*l-9af^msRPq)R%5sO^q$GMtLaiw z*^R_LzIhZGnRTV5y*JuKUPqan)kej_x&e7G-jiENg@|tv=_t_6Bn@2_B}VePDBKt^ zYFu(S&@Ag}=E1@`x`7Ng8H)wJQe``+(hm4{iW*5XHXWUP!|-(9B&M4^*@4D;NSA7( zuRlj_Z}t|)KFBoADQOdz6VhoQu2h)rytBzWOsF!AzJMzmIvkl$j`*gmVSWa(T; ze49SudMcFdk(Q+~SR@_8O-PRKnWKF6V9fA28Z2uL5jQ%5F2cFNV3L%IaHN$PM|kvc z>7t*rYYwn$TrsjcQC-D`lUR#5!P3>IOZ7o-$ zyfeKUm0p92k{6mjnoq9%+4XRWxG3#S=6}r{uQ{pZ4jFVksYcMPf;IJA;w4X=O>OE&0)41Pxq&(vJBGB!EL)g}mV|aP05i^E88l-t@q-1n zh*H6BjY(8bH+%fTVFgN;lx(65VyO&ol4x^AX}0Pb zPbv-(W}4z9E@shWS~Q#hL;rE75Zu#ZxRw~zX%RVXctg1|9pHtP)}l8wZ)>cyP<-*v zRMA~D;jTmW?pCu}!;)yuj3C?m!*=OuLv3O~&V(gn#23A%zgk$QbN66r387<-mZ{G2 z(0ad%rPD1kT0@=1Eu`L|`9eiG4u~`%E4A!xrzk{%kqgtGC5a1Jo4(-1Bw{~PD>eq` zkR*~Tu9T=2=@@EZ36K(QOwjETf5{#bs|}ch_%I{2X~MQRr~6(^MLy3aYWh9BNfVD4x>%iBTFeVgDbfv#y!Y%!Xy)?*6_E*l6mBvQCXjalActBX&H75O5w78_HMKp-nX+i8YF^2fBThSvHc}XZ}VX3Dbhe z*)D(n>xOXRr-M0lQ(q*df%0+}$f<~Q??92k%?5>Q7JflYi^JmU>`{r+kG^14pmn&7MX6pvSU%iF9M8pEIyRO*J=vT^L~Ro4Q!e(N|Sy z#)FRUHGc9M29X_1shB<>T_n`Ase?^)7v02hd1gJ)S)*A5RP6*(+qjL@-{#6Eu%%xY^i!h>OMYGw-ZeeU9D5ISr4`!nv{O9(4@(> zLKATl%B&j#nT-d3{$UDd8d7(XBd2k4LPqt=S(y7Zf)}1A7Hsqe^Ji5 z&LXt9+{P?P$yF$EWCxc|tGQ=N;xv6YH0?uS=i`TuyDYs&*ETFa{^F&z#2lySHl44G zzfdQ8xEjeY{N)m(R_*H}TgrUfQFFKWH6!s#Hat^gra#L2fV*PnUv37{9cYa_%UXxD z#?V6?*c6!!+!bCDaW6$G2NX$ zKAq@biuk(0=nmL(rBcoxFxK2valiLM!a2=#K}Nu2mc{H6nI5TRJvk<0^ymar7}mpc zwZUg;qzcJt%m7WN&5ch?xBC3GK2)Un)-3DvW(SI%8ongcuVb-Q&4vqu$Ln-Y;`6c-;njKh#ALK zPg>KpWOkrQp>Xe6I}^oS1th*dy5zE?3(xs6>kr=(&*p$78*8EyY-NlSsN4^U5|4GOd&V5&68o1Ho4~uLoMCEm^?KDxo!8UIQYOTjDwcG^~ ztxDr(?g+BJhIVSjCnSA-^LGR_e-csTZwdCeDp`t7ad4_cRBrQHL@Fcc{>9QOrbx?Y zM@vI2W(V5V<($1uF-gQV?x=TAYL7b#;K0|N1~{p)sWVzmUx~xNWTI%7AX$#W;m(I= zNGbCp!0GFWzbmZ2;FAc}%t>FG0Ds4{fcInWb<8rY0<}qQs-f*k(=}h}#GAV{ScWCR z9|JT~$Y<5TBpGc?TyDrZPR}WpSB4lP34^=c#`r|pTi*_|5hDC#Vi!)7jcd+KYnyQyey2}bTFx^MDp^o>f7W|NV)A6MBy z>Y^meQ*$53hhz80rJBIHq?2{K!)47Vc0!0he|1q}NPaG#Y2(=Tn< zB=K+#qB3##-LgJ$x{Te?)nxJ0oUoKkK?Gv#6!xl?m1S#(+#|o<}_Uf zVfHBge~O-@<}YK-ObyVZt>((gFE`sed~4HbJGlz-emUySm*{gQE^Wf zU&0gt5=vinJ))8ShOe#Y{wR5US^@kVbc(6eh!zD=|96PyFsJ6zq&qV|NsGnBUBTq! zn-KRW`&{J6%saJ3avi{5^-xC5IZF9>Aw56|wF5!>VK+(N^QB5#Dl#3QEEItH=Pv(=4);6V! zh;q|ySRa!lK26c%#8r+nmIaMsrBvX*Qqh{AyO^jhrkAIi_hJ6&%y5_KbolJ9xoqTi zJ!$xnsPShWnL+Hdpq6;8Ux8@9>}^dq3cLsRHQmd7v_I!$&2zkAf7b7pKh0OW@%g4{ zG`~*2$%l+L@zxM=U9RblMyF3Yd;nx%XY}Ou5cOLj+{4}E=O8pB_X>v&YEGRcCpvaA z{z$*w-{V|b?$)@`L2!DlA^il!&}(|miI`^yAiBgayG=FEyVG&%mp7d(yJ72`uJL+p z0i==F+4rH$tYxw!zKI%&k9L_=J{*NhD}HvTf{$vk(Mk3^cJ0yLWJG%pMvXM}!03Z(kXo`L<3=pD-n=X-mI-q+#yJEECsm zjq+i@sd(i^sYDC=E2Fcb0j}Io1^ePg@yx@Agz5EB+wp13=r+@g3}m!6Y?&*hCJMb* zO?OCVMH|tsiN(dy^pDZ7`{q)S)Zh86lsYyS9Lv$2K9a}rfY-&6db{ zDdNP36R8~dxIdPO^jG#0w5ZKVyH@!M(t409K_RW$4W9NiOMQP{uSrqYCei)DK1%_& z9dxiR37Pa0W#nkgq&WwX95NB=^gSh(UXBVky1PbR8CL4q?YI}T+K6p*pP1(Fr=|6x3+(2akV~E%U(>>H&DM+rL zHrEIQX&YjSB;nvEczROn|QYcuzwCQTqBQ$A- Hf4}=bY?DbY literal 0 HcmV?d00001 diff --git a/locale/pl/LC_MESSAGES/django.mo b/locale/pl/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..4c6587b9c44d4b915bb6411d4b1b2c40ca5a63c6 GIT binary patch literal 70550 zcmd4437j2OnfG6jMGX5cdl3vtAn7bDLRdo<5+Edy#0UuCcHi6GH{E@2a~C?@q9}s6 zj*1H+I*QAeN}E^PJ~-&Qn$2K48~ZC;VRjgd{l<{Nq7M^5R{RdHSeg{Ix&jEKk%dhVV9z(kQ!9&2s;FH1C;GSR!oC%JAr-IwS{lWK! z_kjOsD63?TnO&6%aQPyy6>0ZW#FH{ad0!4EB;I1 zR`3CEHhBID#uyv{p8{S7iVp4o_XEEOijKYus$YK-;tyQu?RpBhH}NNeyMm{O@Y$g1 za}jt1_;gU?+X5k> zsCKLa4+Hx_(bIE4jprLdrGGc5arzkeMDVkq%Kb8^a=s6y;4eX?KX8rr->iUhK=sdj zQ1_n)s@)fWN`DEc@~#He&m#fHL8ZSbTz@I3^sfU|pLc?4_uXI$ehySW{uEUI{tgt~ zo_GOs8e9cx9IgU2Pi_H~|NB7I=OduX|7Y+?;AcVg%U3~_`!i7K9|MmCcfZj4Z!Wk8 z;d4Ocvl{{ z_umfE^yCikDd0~)<+uOE-Y+MB8kZ%YuAc{rP6oi4;5KkR_&l%&d>^R!_#IH~{uQWl z9|h@x&?RQv}((d(B$&BGrB+?7t8M>qw=7cT&n?l}Q(1y3b>CkTsAegG~2 zkG;hC-#Sq7*MnDr9|J`vhh6H|*MjPoXMrbxuLn;A{{>Y4J_4%$4&LD7a11DVTMUX0 z)_@0q7lT)WC2%8nAE@>nN+Y)d;!b?Hb_d-zRtOrHcSA*h5RZ#c86x*gf69GnR*pF#V;*@WN8B6|$@1yKF>GjJDh|I57mgTcKB z9}a51%>hME3qg&;#(+)m350I}zY4w@{2(|)p*z6z3g!&>L-3v8zR#eqz`MZ};42tx zweM@7`u#iL5#Yn1#%tzPUZ0~t)q55wdS4A543i&LE>1&|qZwyp9*MaJn8$jiI3#fA50G