artalk 2.7.0 → 2.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/Artalk.css +1 -1
- package/dist/Artalk.es.js +209 -188
- package/dist/Artalk.es.js.map +1 -0
- package/dist/Artalk.iife.js +2 -1
- package/dist/Artalk.iife.js.map +1 -0
- package/dist/Artalk.js +2 -1
- package/dist/Artalk.js.map +1 -0
- package/dist/ArtalkLite.css +1 -1
- package/dist/ArtalkLite.es.js +209 -188
- package/dist/ArtalkLite.es.js.map +1 -0
- package/dist/ArtalkLite.iife.js +2 -1
- package/dist/ArtalkLite.iife.js.map +1 -0
- package/dist/ArtalkLite.js +2 -1
- package/dist/ArtalkLite.js.map +1 -0
- package/dist/i18n/jp.js +1 -1
- package/dist/i18n/zh-TW.js +1 -1
- package/dist/src/api/_base.d.ts +7 -0
- package/dist/src/api/_options.d.ts +5 -0
- package/dist/src/artalk.d.ts +0 -2
- package/dist/src/components/checker/index.d.ts +2 -0
- package/dist/src/i18n/en.d.ts +4 -0
- package/dist/src/i18n/external.d.ts +4 -0
- package/dist/src/i18n/index.d.ts +12 -0
- package/dist/src/i18n/jp.d.ts +4 -0
- package/dist/src/i18n/zh-TW.d.ts +4 -0
- package/dist/src/lib/user.d.ts +8 -6
- package/dist/src/main.d.ts +3 -0
- package/dist/src/plugins/editor/_kit.d.ts +7 -1
- package/dist/src/service.d.ts +2 -8
- package/dist/types/event.d.ts +1 -1
- package/package.json +43 -17
- package/dist/src/components/dark-mode.d.ts +0 -2
- package/src/api/_base.ts +0 -18
- package/src/api/_options.ts +0 -25
- package/src/api/_request.ts +0 -104
- package/src/api/admin.ts +0 -18
- package/src/api/captcha.ts +0 -24
- package/src/api/comment.ts +0 -84
- package/src/api/index.ts +0 -29
- package/src/api/page.ts +0 -83
- package/src/api/site.ts +0 -51
- package/src/api/system.ts +0 -49
- package/src/api/upload.ts +0 -28
- package/src/api/user.ts +0 -132
- package/src/artalk.ts +0 -119
- package/src/comment/actions.ts +0 -83
- package/src/comment/comment.html +0 -18
- package/src/comment/comment.ts +0 -192
- package/src/comment/height-limit.ts +0 -100
- package/src/comment/index.ts +0 -3
- package/src/comment/render.ts +0 -150
- package/src/comment/renders/actions.ts +0 -114
- package/src/comment/renders/avatar.ts +0 -22
- package/src/comment/renders/content.ts +0 -39
- package/src/comment/renders/header.ts +0 -84
- package/src/comment/renders/index.ts +0 -19
- package/src/comment/renders/pending.ts +0 -12
- package/src/comment/renders/reply-at.ts +0 -16
- package/src/comment/renders/reply-to.ts +0 -24
- package/src/components/action-btn.ts +0 -170
- package/src/components/checker/admin.ts +0 -37
- package/src/components/checker/captcha-renders.ts +0 -69
- package/src/components/checker/captcha.ts +0 -26
- package/src/components/checker/index.ts +0 -192
- package/src/components/dark-mode.ts +0 -30
- package/src/components/dialog.ts +0 -62
- package/src/components/error-dialog.ts +0 -35
- package/src/components/pagination.ts +0 -153
- package/src/components/read-more-btn.ts +0 -92
- package/src/config.ts +0 -119
- package/src/context.ts +0 -146
- package/src/data.ts +0 -110
- package/src/defaults.ts +0 -61
- package/src/editor/editor.html +0 -18
- package/src/editor/editor.ts +0 -114
- package/src/editor/state.ts +0 -52
- package/src/editor/ui.ts +0 -36
- package/src/i18n/en.ts +0 -81
- package/src/i18n/external.ts +0 -10
- package/src/i18n/index.ts +0 -67
- package/src/i18n/jp.ts +0 -83
- package/src/i18n/zh-CN.ts +0 -85
- package/src/i18n/zh-TW.ts +0 -83
- package/src/layer/index.ts +0 -4
- package/src/layer/layer-manager.ts +0 -32
- package/src/layer/layer.ts +0 -39
- package/src/layer/scrollbar-helper.ts +0 -24
- package/src/layer/sidebar-layer.html +0 -8
- package/src/layer/sidebar-layer.ts +0 -155
- package/src/layer/wrap.ts +0 -77
- package/src/lib/component.ts +0 -12
- package/src/lib/detect.ts +0 -222
- package/src/lib/event-manager.ts +0 -47
- package/src/lib/highlight.ts +0 -5
- package/src/lib/marked-renderer.ts +0 -32
- package/src/lib/marked.ts +0 -72
- package/src/lib/sanitizer.ts +0 -57
- package/src/lib/ui.ts +0 -193
- package/src/lib/user.ts +0 -55
- package/src/lib/utils.ts +0 -236
- package/src/list/comment.ts +0 -20
- package/src/list/layout.ts +0 -120
- package/src/list/list.html +0 -20
- package/src/list/list.ts +0 -79
- package/src/list/nest.ts +0 -66
- package/src/list/page.ts +0 -97
- package/src/list/paginator/index.ts +0 -25
- package/src/list/paginator/read-more.ts +0 -67
- package/src/list/paginator/up-down.ts +0 -51
- package/src/main.ts +0 -5
- package/src/plugins/admin-only-elem.ts +0 -40
- package/src/plugins/conf-remoter.ts +0 -54
- package/src/plugins/dark-mode.ts +0 -12
- package/src/plugins/editor/_kit.ts +0 -57
- package/src/plugins/editor/_plug.ts +0 -60
- package/src/plugins/editor/_sample.ts +0 -8
- package/src/plugins/editor/closable.ts +0 -44
- package/src/plugins/editor/emoticons.scss +0 -72
- package/src/plugins/editor/emoticons.ts +0 -293
- package/src/plugins/editor/header-event.ts +0 -35
- package/src/plugins/editor/header-link.ts +0 -31
- package/src/plugins/editor/header-user.ts +0 -98
- package/src/plugins/editor/index.ts +0 -40
- package/src/plugins/editor/local-storage.ts +0 -36
- package/src/plugins/editor/mover.ts +0 -29
- package/src/plugins/editor/preview.scss +0 -7
- package/src/plugins/editor/preview.ts +0 -41
- package/src/plugins/editor/state-edit.ts +0 -116
- package/src/plugins/editor/state-reply.ts +0 -91
- package/src/plugins/editor/submit-add.ts +0 -33
- package/src/plugins/editor/submit-btn.ts +0 -25
- package/src/plugins/editor/submit.ts +0 -73
- package/src/plugins/editor/textarea.ts +0 -55
- package/src/plugins/editor/upload.ts +0 -145
- package/src/plugins/editor-kit.ts +0 -161
- package/src/plugins/index.ts +0 -16
- package/src/plugins/list/copyright.ts +0 -16
- package/src/plugins/list/count.ts +0 -31
- package/src/plugins/list/dropdown.ts +0 -95
- package/src/plugins/list/error-dialog.ts +0 -22
- package/src/plugins/list/fetch.ts +0 -64
- package/src/plugins/list/goto-first.ts +0 -23
- package/src/plugins/list/goto.ts +0 -72
- package/src/plugins/list/index.ts +0 -25
- package/src/plugins/list/loading.ts +0 -17
- package/src/plugins/list/no-comment.ts +0 -25
- package/src/plugins/list/reach-bottom.ts +0 -46
- package/src/plugins/list/sidebar-btn.ts +0 -39
- package/src/plugins/list/time-ticking.ts +0 -22
- package/src/plugins/list/unread-badge.ts +0 -26
- package/src/plugins/list/unread.ts +0 -38
- package/src/plugins/list/with-editor.ts +0 -59
- package/src/plugins/markdown.ts +0 -10
- package/src/plugins/stat.ts +0 -79
- package/src/plugins/version-check.ts +0 -37
- package/src/service.ts +0 -91
- package/src/style/_color.scss +0 -41
- package/src/style/_extend.scss +0 -20
- package/src/style/_variables.scss +0 -3
- package/src/style/comment.scss +0 -360
- package/src/style/editor.scss +0 -194
- package/src/style/list.scss +0 -212
- package/src/style/main.scss +0 -486
- package/src/style/pagination.scss +0 -58
- package/src/style/sidebar-layer.scss +0 -92
- package/types/config.ts +0 -153
- package/types/context.ts +0 -84
- package/types/data.ts +0 -271
- package/types/editor.ts +0 -95
- package/types/event.ts +0 -40
- package/types/global.d.ts +0 -1
- package/types/index.ts +0 -7
- package/types/plugin.ts +0 -3
- package/types/sidebar.ts +0 -3
package/dist/Artalk.es.js
CHANGED
|
@@ -55,7 +55,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
55
55
|
});
|
|
56
56
|
};
|
|
57
57
|
var _parseMarkdown, parseMarkdown_fn, _onError, onError_fn;
|
|
58
|
-
const main = "";
|
|
59
58
|
function createElement(htmlStr = "") {
|
|
60
59
|
const div = document.createElement("div");
|
|
61
60
|
div.innerHTML = htmlStr.trim();
|
|
@@ -565,13 +564,13 @@ function getDefaultExportFromCjs(x) {
|
|
|
565
564
|
}
|
|
566
565
|
var Request = NativeRequest;
|
|
567
566
|
if (Request && !Request.prototype.hasOwnProperty("signal") || __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {
|
|
568
|
-
Request = function Request2(input,
|
|
567
|
+
Request = function Request2(input, init2) {
|
|
569
568
|
var signal;
|
|
570
|
-
if (
|
|
571
|
-
signal =
|
|
572
|
-
delete
|
|
569
|
+
if (init2 && init2.signal) {
|
|
570
|
+
signal = init2.signal;
|
|
571
|
+
delete init2.signal;
|
|
573
572
|
}
|
|
574
|
-
var request = new NativeRequest(input,
|
|
573
|
+
var request = new NativeRequest(input, init2);
|
|
575
574
|
if (signal) {
|
|
576
575
|
Object.defineProperty(request, "signal", {
|
|
577
576
|
writable: false,
|
|
@@ -585,8 +584,8 @@ function getDefaultExportFromCjs(x) {
|
|
|
585
584
|
Request.prototype = NativeRequest.prototype;
|
|
586
585
|
}
|
|
587
586
|
var realFetch = fetch2;
|
|
588
|
-
var abortableFetch = function abortableFetch2(input,
|
|
589
|
-
var signal = Request && Request.prototype.isPrototypeOf(input) ? input.signal :
|
|
587
|
+
var abortableFetch = function abortableFetch2(input, init2) {
|
|
588
|
+
var signal = Request && Request.prototype.isPrototypeOf(input) ? input.signal : init2 ? init2.signal : void 0;
|
|
590
589
|
if (signal) {
|
|
591
590
|
var abortError;
|
|
592
591
|
try {
|
|
@@ -605,12 +604,12 @@ function getDefaultExportFromCjs(x) {
|
|
|
605
604
|
once: true
|
|
606
605
|
});
|
|
607
606
|
});
|
|
608
|
-
if (
|
|
609
|
-
delete
|
|
607
|
+
if (init2 && init2.signal) {
|
|
608
|
+
delete init2.signal;
|
|
610
609
|
}
|
|
611
|
-
return Promise.race([cancellation, realFetch(input,
|
|
610
|
+
return Promise.race([cancellation, realFetch(input, init2)]);
|
|
612
611
|
}
|
|
613
|
-
return realFetch(input,
|
|
612
|
+
return realFetch(input, init2);
|
|
614
613
|
};
|
|
615
614
|
return {
|
|
616
615
|
fetch: abortableFetch,
|
|
@@ -642,48 +641,6 @@ function getDefaultExportFromCjs(x) {
|
|
|
642
641
|
});
|
|
643
642
|
})(typeof self !== "undefined" ? self : commonjsGlobal);
|
|
644
643
|
});
|
|
645
|
-
const LOCAL_USER_KEY = "ArtalkUser";
|
|
646
|
-
class User {
|
|
647
|
-
constructor() {
|
|
648
|
-
__publicField(this, "data");
|
|
649
|
-
__publicField(this, "onUserChanged", null);
|
|
650
|
-
const localUser = JSON.parse(window.localStorage.getItem(LOCAL_USER_KEY) || "{}");
|
|
651
|
-
this.data = {
|
|
652
|
-
nick: localUser.nick || "",
|
|
653
|
-
email: localUser.email || "",
|
|
654
|
-
link: localUser.link || "",
|
|
655
|
-
token: localUser.token || "",
|
|
656
|
-
isAdmin: localUser.isAdmin || false
|
|
657
|
-
};
|
|
658
|
-
}
|
|
659
|
-
/** 保存用户到 localStorage 中 */
|
|
660
|
-
update(obj = {}) {
|
|
661
|
-
Object.entries(obj).forEach(([key, value]) => {
|
|
662
|
-
this.data[key] = value;
|
|
663
|
-
});
|
|
664
|
-
window.localStorage.setItem(LOCAL_USER_KEY, JSON.stringify(this.data));
|
|
665
|
-
this.onUserChanged && this.onUserChanged(this.data);
|
|
666
|
-
}
|
|
667
|
-
setOnUserChanged(fn) {
|
|
668
|
-
this.onUserChanged = fn;
|
|
669
|
-
}
|
|
670
|
-
/**
|
|
671
|
-
* Logout
|
|
672
|
-
*
|
|
673
|
-
* @description Logout will clear login status, but not clear user data (nick, email, link)
|
|
674
|
-
*/
|
|
675
|
-
logout() {
|
|
676
|
-
this.update({
|
|
677
|
-
token: "",
|
|
678
|
-
isAdmin: false
|
|
679
|
-
});
|
|
680
|
-
}
|
|
681
|
-
/** 是否已填写基本用户信息 */
|
|
682
|
-
checkHasBasicUserInfo() {
|
|
683
|
-
return !!this.data.nick && !!this.data.email;
|
|
684
|
-
}
|
|
685
|
-
}
|
|
686
|
-
const UserInstance = new User();
|
|
687
644
|
const en = {
|
|
688
645
|
/* Editor */
|
|
689
646
|
placeholder: "Leave a comment",
|
|
@@ -757,7 +714,11 @@ const en = {
|
|
|
757
714
|
deleting: "Deleting",
|
|
758
715
|
deleteFail: "Delete Failed",
|
|
759
716
|
reqGot: "Request got",
|
|
760
|
-
reqAborted: "Request timed out or terminated unexpectedly"
|
|
717
|
+
reqAborted: "Request timed out or terminated unexpectedly",
|
|
718
|
+
updateMsg: "Please update Artalk {name} to get the full experience",
|
|
719
|
+
currentVersion: "Current Version",
|
|
720
|
+
ignore: "Ignore",
|
|
721
|
+
open: "Open"
|
|
761
722
|
};
|
|
762
723
|
const zhCN = {
|
|
763
724
|
/* Editor */
|
|
@@ -832,7 +793,11 @@ const zhCN = {
|
|
|
832
793
|
deleting: "删除中",
|
|
833
794
|
deleteFail: "删除失败",
|
|
834
795
|
reqGot: "请求响应",
|
|
835
|
-
reqAborted: "请求超时或意外终止"
|
|
796
|
+
reqAborted: "请求超时或意外终止",
|
|
797
|
+
updateMsg: "请更新 Artalk {name} 以获得完整体验",
|
|
798
|
+
currentVersion: "当前版本",
|
|
799
|
+
ignore: "忽略",
|
|
800
|
+
open: "打开"
|
|
836
801
|
};
|
|
837
802
|
const GLOBAL_LOCALES_KEY = "ArtalkI18n";
|
|
838
803
|
const internal = {
|
|
@@ -866,15 +831,15 @@ function t(key, args = {}) {
|
|
|
866
831
|
str = str.replace(/\{\s*(\w+?)\s*\}/g, (_, token) => args[token] || "");
|
|
867
832
|
return str;
|
|
868
833
|
}
|
|
869
|
-
function Fetch$1(opts, input,
|
|
834
|
+
function Fetch$1(opts, input, init2, timeout) {
|
|
870
835
|
return __async(this, null, function* () {
|
|
871
836
|
var _a, _b;
|
|
872
|
-
if (
|
|
873
|
-
const headers = new Headers(
|
|
874
|
-
headers.set("Authorization", `Bearer ${
|
|
875
|
-
|
|
837
|
+
if (opts.apiToken) {
|
|
838
|
+
const headers = new Headers(init2.headers);
|
|
839
|
+
headers.set("Authorization", `Bearer ${opts.apiToken}`);
|
|
840
|
+
init2.headers = headers;
|
|
876
841
|
}
|
|
877
|
-
const resp = yield timeoutFetch(input, timeout || opts.timeout || 15e3,
|
|
842
|
+
const resp = yield timeoutFetch(input, timeout || opts.timeout || 15e3, init2);
|
|
878
843
|
const respHttpCode = resp.status;
|
|
879
844
|
const noAccessCodes = [401, 400];
|
|
880
845
|
const isNoAccess = noAccessCodes.includes(respHttpCode);
|
|
@@ -882,7 +847,7 @@ function Fetch$1(opts, input, init, timeout) {
|
|
|
882
847
|
throw new Error(`${t("reqGot")} ${respHttpCode}`);
|
|
883
848
|
let json = yield resp.json();
|
|
884
849
|
const recall = (resolve, reject) => {
|
|
885
|
-
Fetch$1(opts, input,
|
|
850
|
+
Fetch$1(opts, input, init2).then((d) => {
|
|
886
851
|
resolve(d);
|
|
887
852
|
}).catch((e) => {
|
|
888
853
|
reject(e);
|
|
@@ -919,12 +884,12 @@ function Fetch$1(opts, input, init, timeout) {
|
|
|
919
884
|
}
|
|
920
885
|
function POST(opts, url, data) {
|
|
921
886
|
return __async(this, null, function* () {
|
|
922
|
-
const
|
|
887
|
+
const init2 = {
|
|
923
888
|
method: "POST"
|
|
924
889
|
};
|
|
925
890
|
data = __spreadValues({ site_name: opts.siteName || "" }, data || {});
|
|
926
|
-
|
|
927
|
-
const json = yield Fetch$1(opts, url,
|
|
891
|
+
init2.body = ToFormData(data);
|
|
892
|
+
const json = yield Fetch$1(opts, url, init2);
|
|
928
893
|
return json.data || {};
|
|
929
894
|
});
|
|
930
895
|
}
|
|
@@ -958,11 +923,25 @@ class ApiBase {
|
|
|
958
923
|
return POST(this.options, this.options.baseURL + path, data);
|
|
959
924
|
});
|
|
960
925
|
}
|
|
961
|
-
Fetch(path,
|
|
926
|
+
Fetch(path, init2, timeout) {
|
|
962
927
|
return __async(this, null, function* () {
|
|
963
|
-
return Fetch$1(this.options, this.options.baseURL + path,
|
|
928
|
+
return Fetch$1(this.options, this.options.baseURL + path, init2, timeout);
|
|
964
929
|
});
|
|
965
930
|
}
|
|
931
|
+
/**
|
|
932
|
+
* Carry user info to request params
|
|
933
|
+
*
|
|
934
|
+
* @param params Request params
|
|
935
|
+
* @returns Request params with user info
|
|
936
|
+
*/
|
|
937
|
+
withUserInfo(params) {
|
|
938
|
+
const user = this.options.userInfo;
|
|
939
|
+
if (user == null ? void 0 : user.name)
|
|
940
|
+
params.name = user.name;
|
|
941
|
+
if (user == null ? void 0 : user.email)
|
|
942
|
+
params.email = user.email;
|
|
943
|
+
return params;
|
|
944
|
+
}
|
|
966
945
|
}
|
|
967
946
|
class CommentApi extends ApiBase {
|
|
968
947
|
/** 评论 · 获取 */
|
|
@@ -975,10 +954,7 @@ class CommentApi extends ApiBase {
|
|
|
975
954
|
};
|
|
976
955
|
if (flatMode)
|
|
977
956
|
params.flat_mode = flatMode;
|
|
978
|
-
|
|
979
|
-
params.name = UserInstance.data.nick;
|
|
980
|
-
params.email = UserInstance.data.email;
|
|
981
|
-
}
|
|
957
|
+
this.withUserInfo(params);
|
|
982
958
|
if (paramsEditor)
|
|
983
959
|
paramsEditor(params);
|
|
984
960
|
return this.POST("/get", params);
|
|
@@ -1027,10 +1003,7 @@ class CommentApi extends ApiBase {
|
|
|
1027
1003
|
target_id: targetID,
|
|
1028
1004
|
type
|
|
1029
1005
|
};
|
|
1030
|
-
|
|
1031
|
-
params.name = UserInstance.data.nick;
|
|
1032
|
-
params.email = UserInstance.data.email;
|
|
1033
|
-
}
|
|
1006
|
+
this.withUserInfo(params);
|
|
1034
1007
|
const data = yield this.POST("/vote", params);
|
|
1035
1008
|
return data;
|
|
1036
1009
|
});
|
|
@@ -1199,10 +1172,7 @@ class UserApi extends ApiBase {
|
|
|
1199
1172
|
/** 用户 · 登录状态 */
|
|
1200
1173
|
loginStatus() {
|
|
1201
1174
|
return __async(this, null, function* () {
|
|
1202
|
-
const data = yield this.POST("/login-status", {
|
|
1203
|
-
name: UserInstance.data.nick,
|
|
1204
|
-
email: UserInstance.data.email
|
|
1205
|
-
});
|
|
1175
|
+
const data = yield this.POST("/login-status", this.withUserInfo({}));
|
|
1206
1176
|
return data || { is_login: false, is_admin: false };
|
|
1207
1177
|
});
|
|
1208
1178
|
}
|
|
@@ -1222,8 +1192,7 @@ class UserApi extends ApiBase {
|
|
|
1222
1192
|
delete params.comment_id;
|
|
1223
1193
|
delete params.notify_key;
|
|
1224
1194
|
params.read_all = true;
|
|
1225
|
-
params
|
|
1226
|
-
params.email = UserInstance.data.email;
|
|
1195
|
+
this.withUserInfo(params);
|
|
1227
1196
|
}
|
|
1228
1197
|
return this.POST(`/mark-read`, params);
|
|
1229
1198
|
}
|
|
@@ -1360,17 +1329,16 @@ class UploadApi extends ApiBase {
|
|
|
1360
1329
|
imgUpload(file) {
|
|
1361
1330
|
return __async(this, null, function* () {
|
|
1362
1331
|
const params = {
|
|
1363
|
-
name: UserInstance.data.nick,
|
|
1364
|
-
email: UserInstance.data.email,
|
|
1365
1332
|
page_key: this.options.pageKey
|
|
1366
1333
|
};
|
|
1334
|
+
this.withUserInfo(params);
|
|
1367
1335
|
const form = ToFormData(params);
|
|
1368
1336
|
form.set("file", file);
|
|
1369
|
-
const
|
|
1337
|
+
const init2 = {
|
|
1370
1338
|
method: "POST",
|
|
1371
1339
|
body: form
|
|
1372
1340
|
};
|
|
1373
|
-
const json = yield this.Fetch("/img-upload",
|
|
1341
|
+
const json = yield this.Fetch("/img-upload", init2);
|
|
1374
1342
|
return json.data || {};
|
|
1375
1343
|
});
|
|
1376
1344
|
}
|
|
@@ -4425,6 +4393,11 @@ function convertApiOptions(conf, ctx) {
|
|
|
4425
4393
|
pageKey: conf.pageKey || "",
|
|
4426
4394
|
pageTitle: conf.pageTitle || "",
|
|
4427
4395
|
timeout: conf.reqTimeout,
|
|
4396
|
+
apiToken: ctx == null ? void 0 : ctx.get("user").getData().token,
|
|
4397
|
+
userInfo: (ctx == null ? void 0 : ctx.get("user").checkHasBasicUserInfo()) ? {
|
|
4398
|
+
name: ctx == null ? void 0 : ctx.get("user").getData().nick,
|
|
4399
|
+
email: ctx == null ? void 0 : ctx.get("user").getData().email
|
|
4400
|
+
} : void 0,
|
|
4428
4401
|
onNeedCheckAdmin(payload) {
|
|
4429
4402
|
ctx == null ? void 0 : ctx.checkAdmin({
|
|
4430
4403
|
onSuccess: () => {
|
|
@@ -4488,7 +4461,7 @@ class Context {
|
|
|
4488
4461
|
this.data.fetchComments({ offset: 0 });
|
|
4489
4462
|
}
|
|
4490
4463
|
listGotoFirst() {
|
|
4491
|
-
this.trigger("list-goto-first");
|
|
4464
|
+
this.events.trigger("list-goto-first");
|
|
4492
4465
|
}
|
|
4493
4466
|
/* 编辑器 */
|
|
4494
4467
|
editorShowLoading() {
|
|
@@ -4533,11 +4506,11 @@ class Context {
|
|
|
4533
4506
|
}
|
|
4534
4507
|
setDarkMode(darkMode) {
|
|
4535
4508
|
this.conf.darkMode = darkMode;
|
|
4536
|
-
this.trigger("dark-mode-changed", darkMode);
|
|
4509
|
+
this.events.trigger("dark-mode-changed", darkMode);
|
|
4537
4510
|
}
|
|
4538
4511
|
updateConf(nConf) {
|
|
4539
4512
|
this.conf = mergeDeep(this.conf, handelCustomConf(nConf));
|
|
4540
|
-
this.trigger("conf-loaded", this.conf);
|
|
4513
|
+
this.events.trigger("conf-loaded", this.conf);
|
|
4541
4514
|
}
|
|
4542
4515
|
getMarked() {
|
|
4543
4516
|
return getInstance();
|
|
@@ -4744,7 +4717,7 @@ function imgBody(checker) {
|
|
|
4744
4717
|
}
|
|
4745
4718
|
function iframeBody(checker) {
|
|
4746
4719
|
const $iframeWrap = createElement(`<div class="atk-checker-iframe-wrap"></div>`);
|
|
4747
|
-
const $iframe = createElement(`<iframe class="atk-fade-in"></iframe>`);
|
|
4720
|
+
const $iframe = createElement(`<iframe class="atk-fade-in" referrerpolicy="strict-origin-when-cross-origin"></iframe>`);
|
|
4748
4721
|
$iframe.style.display = "none";
|
|
4749
4722
|
showLoading($iframeWrap, { transparentBg: true });
|
|
4750
4723
|
$iframe.src = `${checker.getOpts().getIframeURLBase() || ""}/api/captcha/get?t=${+/* @__PURE__ */ new Date()}`;
|
|
@@ -4808,8 +4781,8 @@ const AdminChecker = {
|
|
|
4808
4781
|
inputType: "password",
|
|
4809
4782
|
request(checker, inputVal) {
|
|
4810
4783
|
const data = {
|
|
4811
|
-
name:
|
|
4812
|
-
email:
|
|
4784
|
+
name: checker.getUser().getData().nick,
|
|
4785
|
+
email: checker.getUser().getData().email,
|
|
4813
4786
|
password: inputVal
|
|
4814
4787
|
};
|
|
4815
4788
|
return (() => __async(this, null, function* () {
|
|
@@ -4821,7 +4794,7 @@ const AdminChecker = {
|
|
|
4821
4794
|
return createElement(`<span>${t("adminCheck")}</span>`);
|
|
4822
4795
|
},
|
|
4823
4796
|
onSuccess(checker, userToken, inputVal, formEl) {
|
|
4824
|
-
|
|
4797
|
+
checker.getUser().update({
|
|
4825
4798
|
isAdmin: true,
|
|
4826
4799
|
token: userToken
|
|
4827
4800
|
});
|
|
@@ -4854,6 +4827,7 @@ class CheckerLauncher {
|
|
|
4854
4827
|
},
|
|
4855
4828
|
get: (key) => checkerStore[key],
|
|
4856
4829
|
getOpts: () => this.opts,
|
|
4830
|
+
getUser: () => this.opts.getCtx().get("user"),
|
|
4857
4831
|
getApi: () => this.opts.getApi(),
|
|
4858
4832
|
hideInteractInput: () => {
|
|
4859
4833
|
hideInteractInput = true;
|
|
@@ -5245,7 +5219,7 @@ class SidebarLayer extends Component {
|
|
|
5245
5219
|
});
|
|
5246
5220
|
}
|
|
5247
5221
|
createIframe(view) {
|
|
5248
|
-
const $iframe = createElement(
|
|
5222
|
+
const $iframe = createElement('<iframe referrerpolicy="strict-origin-when-cross-origin"></iframe>');
|
|
5249
5223
|
const baseURL = getURLBasedOnApi({
|
|
5250
5224
|
base: this.ctx.conf.server,
|
|
5251
5225
|
path: "/sidebar/"
|
|
@@ -5253,7 +5227,7 @@ class SidebarLayer extends Component {
|
|
|
5253
5227
|
const query = {
|
|
5254
5228
|
pageKey: this.conf.pageKey,
|
|
5255
5229
|
site: this.conf.site || "",
|
|
5256
|
-
user: JSON.stringify(
|
|
5230
|
+
user: JSON.stringify(this.ctx.get("user").getData()),
|
|
5257
5231
|
time: +/* @__PURE__ */ new Date()
|
|
5258
5232
|
};
|
|
5259
5233
|
if (view)
|
|
@@ -5330,7 +5304,7 @@ class ListLayout {
|
|
|
5330
5304
|
constructor(options) {
|
|
5331
5305
|
this.options = options;
|
|
5332
5306
|
}
|
|
5333
|
-
// TODO refactor `if syntax` to strategy pattern
|
|
5307
|
+
// TODO: refactor `if syntax` to strategy pattern
|
|
5334
5308
|
import(comments) {
|
|
5335
5309
|
if (this.options.flatMode) {
|
|
5336
5310
|
comments.forEach((commentData) => {
|
|
@@ -5406,9 +5380,9 @@ class ListLayout {
|
|
|
5406
5380
|
scrollIntoView(comment.getEl());
|
|
5407
5381
|
}
|
|
5408
5382
|
}
|
|
5409
|
-
const win = window || {};
|
|
5410
|
-
const nav = navigator || {};
|
|
5411
5383
|
function Detect(userAgent) {
|
|
5384
|
+
const win = window || {};
|
|
5385
|
+
const nav = navigator || {};
|
|
5412
5386
|
const u = String(userAgent || nav.userAgent);
|
|
5413
5387
|
const dest = {
|
|
5414
5388
|
os: "",
|
|
@@ -6757,20 +6731,6 @@ const initListPaginatorFunc = (ctx) => {
|
|
|
6757
6731
|
var _a;
|
|
6758
6732
|
(_a = paginator == null ? void 0 : paginator.showErr) == null ? void 0 : _a.call(paginator, t("loadFail"));
|
|
6759
6733
|
});
|
|
6760
|
-
const autoSwitchPageForFindComment = (commentID) => {
|
|
6761
|
-
const comment = ctx.getData().findComment(commentID);
|
|
6762
|
-
if (!!comment || !(paginator == null ? void 0 : paginator.getHasMore()))
|
|
6763
|
-
return;
|
|
6764
|
-
ctx.on("list-loaded", () => {
|
|
6765
|
-
autoSwitchPageForFindComment(commentID);
|
|
6766
|
-
}, { once: true });
|
|
6767
|
-
setTimeout(() => {
|
|
6768
|
-
paginator == null ? void 0 : paginator.next();
|
|
6769
|
-
}, 80);
|
|
6770
|
-
};
|
|
6771
|
-
ctx.on("list-goto", (commentID) => {
|
|
6772
|
-
autoSwitchPageForFindComment(commentID);
|
|
6773
|
-
});
|
|
6774
6734
|
ctx.on("list-fetch", (params) => {
|
|
6775
6735
|
paginator == null ? void 0 : paginator.setLoading(true);
|
|
6776
6736
|
});
|
|
@@ -6968,6 +6928,47 @@ class LayerManager {
|
|
|
6968
6928
|
return layer;
|
|
6969
6929
|
}
|
|
6970
6930
|
}
|
|
6931
|
+
const LOCAL_USER_KEY = "ArtalkUser";
|
|
6932
|
+
class User {
|
|
6933
|
+
constructor(opts) {
|
|
6934
|
+
__publicField(this, "data");
|
|
6935
|
+
this.opts = opts;
|
|
6936
|
+
const localUser = JSON.parse(window.localStorage.getItem(LOCAL_USER_KEY) || "{}");
|
|
6937
|
+
this.data = {
|
|
6938
|
+
nick: localUser.nick || "",
|
|
6939
|
+
email: localUser.email || "",
|
|
6940
|
+
link: localUser.link || "",
|
|
6941
|
+
token: localUser.token || "",
|
|
6942
|
+
isAdmin: localUser.isAdmin || false
|
|
6943
|
+
};
|
|
6944
|
+
}
|
|
6945
|
+
getData() {
|
|
6946
|
+
return this.data;
|
|
6947
|
+
}
|
|
6948
|
+
/** 保存用户到 localStorage 中 */
|
|
6949
|
+
update(obj = {}) {
|
|
6950
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
6951
|
+
this.data[key] = value;
|
|
6952
|
+
});
|
|
6953
|
+
window.localStorage.setItem(LOCAL_USER_KEY, JSON.stringify(this.data));
|
|
6954
|
+
this.opts.onUserChanged && this.opts.onUserChanged(this.data);
|
|
6955
|
+
}
|
|
6956
|
+
/**
|
|
6957
|
+
* Logout
|
|
6958
|
+
*
|
|
6959
|
+
* @description Logout will clear login status, but not clear user data (nick, email, link)
|
|
6960
|
+
*/
|
|
6961
|
+
logout() {
|
|
6962
|
+
this.update({
|
|
6963
|
+
token: "",
|
|
6964
|
+
isAdmin: false
|
|
6965
|
+
});
|
|
6966
|
+
}
|
|
6967
|
+
/** 是否已填写基本用户信息 */
|
|
6968
|
+
checkHasBasicUserInfo() {
|
|
6969
|
+
return !!this.data.nick && !!this.data.email;
|
|
6970
|
+
}
|
|
6971
|
+
}
|
|
6971
6972
|
const services = {
|
|
6972
6973
|
// I18n
|
|
6973
6974
|
i18n(ctx) {
|
|
@@ -6978,10 +6979,12 @@ const services = {
|
|
|
6978
6979
|
},
|
|
6979
6980
|
// User Store
|
|
6980
6981
|
user(ctx) {
|
|
6981
|
-
|
|
6982
|
-
|
|
6982
|
+
const user = new User({
|
|
6983
|
+
onUserChanged: (data) => {
|
|
6984
|
+
ctx.trigger("user-changed", data);
|
|
6985
|
+
}
|
|
6983
6986
|
});
|
|
6984
|
-
return
|
|
6987
|
+
return user;
|
|
6985
6988
|
},
|
|
6986
6989
|
// 弹出层
|
|
6987
6990
|
layerManager(ctx) {
|
|
@@ -7031,11 +7034,8 @@ function showErrorDialog(opts) {
|
|
|
7031
7034
|
errEl.appendChild($retryBtn);
|
|
7032
7035
|
}
|
|
7033
7036
|
if (opts.onOpenSidebar) {
|
|
7034
|
-
const $openSidebar = createElement(
|
|
7037
|
+
const $openSidebar = createElement(`<span atk-only-admin-show> | <span style="cursor:pointer;">${t("open") + t("ctrlCenter")}</span></span>`);
|
|
7035
7038
|
errEl.appendChild($openSidebar);
|
|
7036
|
-
if (!UserInstance.data.isAdmin) {
|
|
7037
|
-
$openSidebar.classList.add("atk-hide");
|
|
7038
|
-
}
|
|
7039
7039
|
$openSidebar.onclick = () => opts.onOpenSidebar && opts.onOpenSidebar();
|
|
7040
7040
|
}
|
|
7041
7041
|
setError(opts.$err, errEl);
|
|
@@ -7071,9 +7071,10 @@ function loadConf(ctx) {
|
|
|
7071
7071
|
errMsg: err.msg || String(err),
|
|
7072
7072
|
errData: err.data,
|
|
7073
7073
|
retryFn: () => loadConf(ctx),
|
|
7074
|
-
onOpenSidebar: () => ctx.showSidebar({
|
|
7074
|
+
onOpenSidebar: ctx.get("user").getData().isAdmin ? () => ctx.showSidebar({
|
|
7075
7075
|
view: sidebarOpenView
|
|
7076
|
-
})
|
|
7076
|
+
}) : void 0
|
|
7077
|
+
// only show open sidebar button when user is admin
|
|
7077
7078
|
});
|
|
7078
7079
|
throw err;
|
|
7079
7080
|
}).then(() => {
|
|
@@ -7178,7 +7179,7 @@ class SubmitAddPreset {
|
|
|
7178
7179
|
});
|
|
7179
7180
|
}
|
|
7180
7181
|
getSubmitAddParams() {
|
|
7181
|
-
const { nick, email, link } =
|
|
7182
|
+
const { nick, email, link } = this.kit.useUser().getData();
|
|
7182
7183
|
const conf = this.kit.useConf();
|
|
7183
7184
|
return {
|
|
7184
7185
|
content: this.kit.useEditor().getContentFinal(),
|
|
@@ -7376,7 +7377,7 @@ class StateEdit extends EditorPlug {
|
|
|
7376
7377
|
ui.$editCancelBtn = void 0;
|
|
7377
7378
|
}
|
|
7378
7379
|
this.comment = void 0;
|
|
7379
|
-
const { nick, email, link } =
|
|
7380
|
+
const { nick, email, link } = this.kit.useUser().getData();
|
|
7380
7381
|
ui.$nick.value = nick;
|
|
7381
7382
|
ui.$email.value = email;
|
|
7382
7383
|
ui.$link.value = link;
|
|
@@ -7415,7 +7416,7 @@ class Closable extends EditorPlug {
|
|
|
7415
7416
|
close() {
|
|
7416
7417
|
if (!this.kit.useUI().$textareaWrap.querySelector(".atk-comment-closed"))
|
|
7417
7418
|
this.kit.useUI().$textareaWrap.prepend(createElement(`<div class="atk-comment-closed">${t("onlyAdminCanReply")}</div>`));
|
|
7418
|
-
if (!
|
|
7419
|
+
if (!this.kit.useUser().getData().isAdmin) {
|
|
7419
7420
|
this.kit.useUI().$textarea.style.display = "none";
|
|
7420
7421
|
this.kit.useEvents().trigger("panel-close");
|
|
7421
7422
|
this.kit.useUI().$bottom.style.display = "none";
|
|
@@ -7460,14 +7461,14 @@ class HeaderUser extends EditorPlug {
|
|
|
7460
7461
|
const onInput = ({ $input, field }) => {
|
|
7461
7462
|
if (this.kit.useEditor().getState() === "edit")
|
|
7462
7463
|
return;
|
|
7463
|
-
|
|
7464
|
+
this.kit.useUser().update({ [field]: $input.value.trim() });
|
|
7464
7465
|
if (field === "nick" || field === "email")
|
|
7465
7466
|
this.fetchUserInfo();
|
|
7466
7467
|
};
|
|
7467
7468
|
this.kit.useMounted(() => {
|
|
7468
7469
|
Object.entries(this.kit.useEditor().getHeaderInputEls()).forEach(([key, $input]) => {
|
|
7469
7470
|
$input.placeholder = `${t(key)}`;
|
|
7470
|
-
$input.value =
|
|
7471
|
+
$input.value = this.kit.useUser().getData()[key] || "";
|
|
7471
7472
|
});
|
|
7472
7473
|
this.kit.useEvents().on("header-input", onInput);
|
|
7473
7474
|
});
|
|
@@ -7479,7 +7480,7 @@ class HeaderUser extends EditorPlug {
|
|
|
7479
7480
|
* Fetch user info from server
|
|
7480
7481
|
*/
|
|
7481
7482
|
fetchUserInfo() {
|
|
7482
|
-
|
|
7483
|
+
this.kit.useUser().logout();
|
|
7483
7484
|
if (this.query.timer)
|
|
7484
7485
|
window.clearTimeout(this.query.timer);
|
|
7485
7486
|
if (this.query.abortFn)
|
|
@@ -7487,8 +7488,8 @@ class HeaderUser extends EditorPlug {
|
|
|
7487
7488
|
this.query.timer = window.setTimeout(() => {
|
|
7488
7489
|
this.query.timer = null;
|
|
7489
7490
|
const { req, abort } = this.kit.useApi().user.userGet(
|
|
7490
|
-
|
|
7491
|
-
|
|
7491
|
+
this.kit.useUser().getData().nick,
|
|
7492
|
+
this.kit.useUser().getData().email
|
|
7492
7493
|
);
|
|
7493
7494
|
this.query.abortFn = abort;
|
|
7494
7495
|
req.then((data) => this.onUserInfoFetched(data)).catch((err) => {
|
|
@@ -7505,9 +7506,9 @@ class HeaderUser extends EditorPlug {
|
|
|
7505
7506
|
onUserInfoFetched(data) {
|
|
7506
7507
|
var _a;
|
|
7507
7508
|
if (!data.is_login)
|
|
7508
|
-
|
|
7509
|
+
this.kit.useUser().logout();
|
|
7509
7510
|
this.kit.useGlobalCtx().getData().updateUnreads(data.unread);
|
|
7510
|
-
if (
|
|
7511
|
+
if (this.kit.useUser().checkHasBasicUserInfo() && !data.is_login && ((_a = data.user) == null ? void 0 : _a.is_admin)) {
|
|
7511
7512
|
this.kit.useGlobalCtx().checkAdmin({
|
|
7512
7513
|
onSuccess: () => {
|
|
7513
7514
|
}
|
|
@@ -7515,7 +7516,7 @@ class HeaderUser extends EditorPlug {
|
|
|
7515
7516
|
}
|
|
7516
7517
|
if (data.user && data.user.link) {
|
|
7517
7518
|
this.kit.useUI().$link.value = data.user.link;
|
|
7518
|
-
|
|
7519
|
+
this.kit.useUser().update({ link: data.user.link });
|
|
7519
7520
|
}
|
|
7520
7521
|
}
|
|
7521
7522
|
}
|
|
@@ -7537,11 +7538,10 @@ class HeaderLink extends EditorPlug {
|
|
|
7537
7538
|
const link = this.kit.useUI().$link.value.trim();
|
|
7538
7539
|
if (!!link && !/^(http|https):\/\//.test(link)) {
|
|
7539
7540
|
this.kit.useUI().$link.value = `https://${link}`;
|
|
7540
|
-
|
|
7541
|
+
this.kit.useUser().update({ link: this.kit.useUI().$link.value });
|
|
7541
7542
|
}
|
|
7542
7543
|
}
|
|
7543
7544
|
}
|
|
7544
|
-
const emoticons = "";
|
|
7545
7545
|
class Emoticons extends EditorPlug {
|
|
7546
7546
|
constructor(kit) {
|
|
7547
7547
|
super(kit);
|
|
@@ -7657,7 +7657,8 @@ class Emoticons extends EditorPlug {
|
|
|
7657
7657
|
return json;
|
|
7658
7658
|
} catch (err) {
|
|
7659
7659
|
hideLoading(this.$panel);
|
|
7660
|
-
|
|
7660
|
+
console.error("[Emoticons] Load Failed:", err);
|
|
7661
|
+
setError(this.$panel, `${t("emoticon")}${t("loadFail")} ${String(err)}`);
|
|
7661
7662
|
return [];
|
|
7662
7663
|
}
|
|
7663
7664
|
});
|
|
@@ -7866,7 +7867,7 @@ class Upload extends EditorPlug {
|
|
|
7866
7867
|
const fileExt = /[^.]+$/.exec(file.name);
|
|
7867
7868
|
if (!fileExt || !AllowImgExts.includes(fileExt[0]))
|
|
7868
7869
|
return;
|
|
7869
|
-
if (!
|
|
7870
|
+
if (!this.kit.useUser().checkHasBasicUserInfo()) {
|
|
7870
7871
|
this.kit.useEditor().showNotify(t("uploadLoginMsg"), "w");
|
|
7871
7872
|
return;
|
|
7872
7873
|
}
|
|
@@ -7901,7 +7902,6 @@ class Upload extends EditorPlug {
|
|
|
7901
7902
|
});
|
|
7902
7903
|
}
|
|
7903
7904
|
}
|
|
7904
|
-
const preview = "";
|
|
7905
7905
|
class Preview extends EditorPlug {
|
|
7906
7906
|
constructor(kit) {
|
|
7907
7907
|
super(kit);
|
|
@@ -7964,7 +7964,11 @@ class PlugKit {
|
|
|
7964
7964
|
useEditor() {
|
|
7965
7965
|
return this.plugs.editor;
|
|
7966
7966
|
}
|
|
7967
|
-
/**
|
|
7967
|
+
/**
|
|
7968
|
+
* Use the context of global
|
|
7969
|
+
*
|
|
7970
|
+
* @deprecated The calls to this function should be reduced as much as possible
|
|
7971
|
+
*/
|
|
7968
7972
|
useGlobalCtx() {
|
|
7969
7973
|
return this.plugs.editor.ctx;
|
|
7970
7974
|
}
|
|
@@ -7976,6 +7980,10 @@ class PlugKit {
|
|
|
7976
7980
|
useApi() {
|
|
7977
7981
|
return this.plugs.editor.ctx.getApi();
|
|
7978
7982
|
}
|
|
7983
|
+
/** Use the user manager */
|
|
7984
|
+
useUser() {
|
|
7985
|
+
return this.plugs.editor.ctx.get("user");
|
|
7986
|
+
}
|
|
7979
7987
|
/** Use the ui of editor */
|
|
7980
7988
|
useUI() {
|
|
7981
7989
|
return this.plugs.editor.getUI();
|
|
@@ -8193,7 +8201,7 @@ const SidebarBtn = (ctx) => {
|
|
|
8193
8201
|
const syncByUser = () => {
|
|
8194
8202
|
if (!$openSidebarBtn)
|
|
8195
8203
|
return;
|
|
8196
|
-
const user = ctx.get("user").
|
|
8204
|
+
const user = ctx.get("user").getData();
|
|
8197
8205
|
if (!!user.nick && !!user.email) {
|
|
8198
8206
|
$openSidebarBtn.classList.remove("atk-hide");
|
|
8199
8207
|
const $btnText = $openSidebarBtn.querySelector(".atk-text");
|
|
@@ -8292,7 +8300,7 @@ function extractCommentID() {
|
|
|
8292
8300
|
}
|
|
8293
8301
|
return commentId || null;
|
|
8294
8302
|
}
|
|
8295
|
-
const version = "2.7.
|
|
8303
|
+
const version = "2.7.2";
|
|
8296
8304
|
const Copyright = (ctx) => {
|
|
8297
8305
|
ctx.on("conf-loaded", () => {
|
|
8298
8306
|
const list = ctx.get("list");
|
|
@@ -8566,12 +8574,15 @@ function initCountWidget(opt) {
|
|
|
8566
8574
|
if (opt.countEl && document.querySelector(opt.countEl)) {
|
|
8567
8575
|
refreshStatCount(opt, { query: "page_comment", numEl: opt.countEl });
|
|
8568
8576
|
}
|
|
8569
|
-
const
|
|
8577
|
+
const initialData = opt.pvAdd ? {
|
|
8578
|
+
[opt.pageKey]: yield opt.getApi().page.pv()
|
|
8579
|
+
// pv+1 and get pv count
|
|
8580
|
+
} : void 0;
|
|
8570
8581
|
if (opt.pvEl && document.querySelector(opt.pvEl)) {
|
|
8571
8582
|
refreshStatCount(opt, {
|
|
8572
8583
|
query: "page_pv",
|
|
8573
8584
|
numEl: opt.pvEl,
|
|
8574
|
-
data:
|
|
8585
|
+
data: initialData
|
|
8575
8586
|
});
|
|
8576
8587
|
}
|
|
8577
8588
|
});
|
|
@@ -8579,10 +8590,10 @@ function initCountWidget(opt) {
|
|
|
8579
8590
|
function refreshStatCount(opt, args) {
|
|
8580
8591
|
return __async(this, null, function* () {
|
|
8581
8592
|
let data = args.data || {};
|
|
8582
|
-
let
|
|
8583
|
-
|
|
8584
|
-
if (
|
|
8585
|
-
const res = yield opt.getApi().page.stat(args.query,
|
|
8593
|
+
let queryPageKeys = Array.from(document.querySelectorAll(args.numEl)).map((e) => e.getAttribute("data-page-key") || opt.pageKey).filter((k) => typeof data[k] !== "number");
|
|
8594
|
+
queryPageKeys = [...new Set(queryPageKeys)];
|
|
8595
|
+
if (queryPageKeys.length > 0) {
|
|
8596
|
+
const res = yield opt.getApi().page.stat(args.query, queryPageKeys);
|
|
8586
8597
|
data = __spreadValues(__spreadValues({}, data), res);
|
|
8587
8598
|
}
|
|
8588
8599
|
applyCountData(args.numEl, data, data[opt.pageKey]);
|
|
@@ -8609,9 +8620,9 @@ function versionCheck(list, feVer, beVer) {
|
|
|
8609
8620
|
if (sameVer)
|
|
8610
8621
|
return;
|
|
8611
8622
|
const errEl = createElement(
|
|
8612
|
-
`<div
|
|
8623
|
+
`<div>${t("updateMsg", { name: comp < 0 ? t("frontend") : t("backend") })}<br/><br/><span style="color: var(--at-color-meta);">${t("currentVersion")}: ${t("frontend")} ${feVer} / ${t("backend")} ${beVer}</span><br/><br/></div>`
|
|
8613
8624
|
);
|
|
8614
|
-
const ignoreBtn = createElement(
|
|
8625
|
+
const ignoreBtn = createElement(`<span style="cursor:pointer">${t("ignore")}</span>`);
|
|
8615
8626
|
ignoreBtn.onclick = () => {
|
|
8616
8627
|
setError(list.$el.parentElement, null);
|
|
8617
8628
|
IgnoreVersionCheck = true;
|
|
@@ -8622,7 +8633,7 @@ function versionCheck(list, feVer, beVer) {
|
|
|
8622
8633
|
}
|
|
8623
8634
|
const AdminOnlyElem = (ctx) => {
|
|
8624
8635
|
const scanApply = () => {
|
|
8625
|
-
applyAdminOnlyEls(ctx.get("user").
|
|
8636
|
+
applyAdminOnlyEls(ctx.get("user").getData().isAdmin, getAdminOnlyEls({
|
|
8626
8637
|
$root: ctx.$root
|
|
8627
8638
|
}));
|
|
8628
8639
|
};
|
|
@@ -8649,38 +8660,44 @@ function applyAdminOnlyEls(isAdmin, els) {
|
|
|
8649
8660
|
$item.classList.add("atk-hide");
|
|
8650
8661
|
});
|
|
8651
8662
|
}
|
|
8652
|
-
|
|
8653
|
-
|
|
8654
|
-
|
|
8655
|
-
|
|
8656
|
-
|
|
8657
|
-
|
|
8658
|
-
|
|
8659
|
-
|
|
8660
|
-
|
|
8661
|
-
darkModeMedia.addEventListener("change", darkModeAutoFunc);
|
|
8662
|
-
}
|
|
8663
|
-
apply(darkModeMedia.matches);
|
|
8664
|
-
} else {
|
|
8665
|
-
if (darkModeAutoFunc)
|
|
8666
|
-
darkModeMedia.removeEventListener("change", darkModeAutoFunc);
|
|
8667
|
-
apply(darkMode);
|
|
8668
|
-
}
|
|
8669
|
-
}
|
|
8670
|
-
const DarkModeClassName = "atk-dark-mode";
|
|
8671
|
-
function updateClassName($el, darkMode) {
|
|
8672
|
-
if (darkMode)
|
|
8673
|
-
$el.classList.add(DarkModeClassName);
|
|
8674
|
-
else
|
|
8675
|
-
$el.classList.remove(DarkModeClassName);
|
|
8663
|
+
let darkModeMedia;
|
|
8664
|
+
function updateClassnames($els, darkMode) {
|
|
8665
|
+
const DarkModeClassName = "atk-dark-mode";
|
|
8666
|
+
$els.forEach(($el) => {
|
|
8667
|
+
if (darkMode)
|
|
8668
|
+
$el.classList.add(DarkModeClassName);
|
|
8669
|
+
else
|
|
8670
|
+
$el.classList.remove(DarkModeClassName);
|
|
8671
|
+
});
|
|
8676
8672
|
}
|
|
8677
8673
|
const DarkMode = (ctx) => {
|
|
8678
|
-
|
|
8679
|
-
|
|
8674
|
+
let darkModeAutoHandler;
|
|
8675
|
+
const sync = (darkMode) => {
|
|
8676
|
+
const $els = [ctx.$root, ctx.get("layerManager").getEl()];
|
|
8677
|
+
if (!darkModeMedia) {
|
|
8678
|
+
darkModeMedia = window.matchMedia("(prefers-color-scheme: dark)");
|
|
8679
|
+
}
|
|
8680
|
+
if (darkMode === "auto") {
|
|
8681
|
+
if (!darkModeAutoHandler) {
|
|
8682
|
+
darkModeAutoHandler = (evt) => updateClassnames($els, evt.matches);
|
|
8683
|
+
darkModeMedia.addEventListener("change", darkModeAutoHandler);
|
|
8684
|
+
}
|
|
8685
|
+
updateClassnames($els, darkModeMedia.matches);
|
|
8686
|
+
} else {
|
|
8687
|
+
if (darkModeAutoHandler) {
|
|
8688
|
+
darkModeMedia.removeEventListener("change", darkModeAutoHandler);
|
|
8689
|
+
darkModeAutoHandler = void 0;
|
|
8690
|
+
}
|
|
8691
|
+
updateClassnames($els, darkMode);
|
|
8692
|
+
}
|
|
8680
8693
|
};
|
|
8681
|
-
ctx.on("inited", () => sync());
|
|
8682
|
-
ctx.on("conf-loaded", () => sync());
|
|
8683
|
-
ctx.on("dark-mode-changed", () => sync());
|
|
8694
|
+
ctx.on("inited", () => sync(ctx.conf.darkMode));
|
|
8695
|
+
ctx.on("conf-loaded", (conf) => sync(conf.darkMode));
|
|
8696
|
+
ctx.on("dark-mode-changed", (darkMode) => sync(darkMode));
|
|
8697
|
+
ctx.on("destroy", () => {
|
|
8698
|
+
darkModeAutoHandler && (darkModeMedia == null ? void 0 : darkModeMedia.removeEventListener("change", darkModeAutoHandler));
|
|
8699
|
+
darkModeAutoHandler = void 0;
|
|
8700
|
+
});
|
|
8684
8701
|
};
|
|
8685
8702
|
const DefaultPlugins = [
|
|
8686
8703
|
ConfRemoter,
|
|
@@ -8693,7 +8710,7 @@ const DefaultPlugins = [
|
|
|
8693
8710
|
DarkMode
|
|
8694
8711
|
];
|
|
8695
8712
|
const GlobalPlugins = [...DefaultPlugins];
|
|
8696
|
-
|
|
8713
|
+
class Artalk {
|
|
8697
8714
|
constructor(conf) {
|
|
8698
8715
|
__publicField(this, "conf");
|
|
8699
8716
|
__publicField(this, "ctx");
|
|
@@ -8745,9 +8762,12 @@ const _Artalk = class _Artalk {
|
|
|
8745
8762
|
setDarkMode(darkMode) {
|
|
8746
8763
|
this.ctx.setDarkMode(darkMode);
|
|
8747
8764
|
}
|
|
8765
|
+
// ===========================
|
|
8766
|
+
// Static Members
|
|
8767
|
+
// ===========================
|
|
8748
8768
|
/** Init Artalk */
|
|
8749
8769
|
static init(conf) {
|
|
8750
|
-
return new
|
|
8770
|
+
return new Artalk(conf);
|
|
8751
8771
|
}
|
|
8752
8772
|
/** Use plugin, the plugin will be used when Artalk.init */
|
|
8753
8773
|
static use(plugin) {
|
|
@@ -8766,17 +8786,18 @@ const _Artalk = class _Artalk {
|
|
|
8766
8786
|
pvAdd: false
|
|
8767
8787
|
});
|
|
8768
8788
|
}
|
|
8769
|
-
}
|
|
8770
|
-
// ===========================
|
|
8771
|
-
// Static Members
|
|
8772
|
-
// ===========================
|
|
8773
|
-
/** Default Configs */
|
|
8774
|
-
__publicField(_Artalk, "defaults", defaults);
|
|
8775
|
-
let Artalk = _Artalk;
|
|
8789
|
+
}
|
|
8776
8790
|
const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
8777
8791
|
__proto__: null
|
|
8778
8792
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
8793
|
+
const init = Artalk.init;
|
|
8794
|
+
const use = Artalk.use;
|
|
8795
|
+
const loadCountWidget = Artalk.loadCountWidget;
|
|
8779
8796
|
export {
|
|
8780
8797
|
index as ArtalkType,
|
|
8781
|
-
Artalk as default
|
|
8798
|
+
Artalk as default,
|
|
8799
|
+
init,
|
|
8800
|
+
loadCountWidget,
|
|
8801
|
+
use
|
|
8782
8802
|
};
|
|
8803
|
+
//# sourceMappingURL=Artalk.es.js.map
|