artalk 2.6.4 → 2.7.1
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/dist/Artalk.css +1 -1
- package/dist/Artalk.es.js +7756 -7432
- 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 +5576 -5252
- 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/{api-base.d.ts → _base.d.ts} +3 -7
- package/dist/src/api/_options.d.ts +19 -0
- package/dist/src/api/{request.d.ts → _request.d.ts} +3 -3
- package/dist/src/api/admin.d.ts +1 -1
- package/dist/src/api/captcha.d.ts +1 -1
- package/dist/src/api/comment.d.ts +2 -2
- package/dist/src/api/index.d.ts +2 -4
- package/dist/src/api/page.d.ts +3 -3
- package/dist/src/api/site.d.ts +2 -2
- package/dist/src/api/system.d.ts +13 -3
- package/dist/src/api/upload.d.ts +1 -1
- package/dist/src/api/user.d.ts +2 -2
- package/dist/src/artalk.d.ts +12 -37
- package/dist/src/comment/actions.d.ts +1 -1
- package/dist/src/comment/comment.d.ts +3 -4
- package/dist/src/comment/render.d.ts +21 -3
- package/dist/src/comment/renders/actions.d.ts +2 -2
- package/dist/src/comment/renders/avatar.d.ts +2 -2
- package/dist/src/comment/renders/content.d.ts +2 -2
- package/dist/src/comment/renders/header.d.ts +2 -2
- package/dist/src/comment/renders/index.d.ts +2 -2
- package/dist/src/comment/renders/pending.d.ts +2 -2
- package/dist/src/comment/renders/reply-at.d.ts +2 -2
- package/dist/src/comment/renders/reply-to.d.ts +2 -2
- package/dist/src/components/action-btn.d.ts +3 -5
- package/dist/src/{lib → components}/checker/admin.d.ts +1 -1
- package/dist/src/{lib → components}/checker/captcha-renders.d.ts +1 -1
- package/dist/src/{lib → components}/checker/captcha.d.ts +1 -1
- package/dist/src/{lib → components}/checker/index.d.ts +10 -7
- package/dist/src/components/dark-mode.d.ts +2 -0
- package/dist/src/components/dialog.d.ts +1 -3
- package/dist/src/components/error-dialog.d.ts +8 -0
- package/dist/src/components/pagination.d.ts +4 -3
- package/dist/src/components/read-more-btn.d.ts +3 -3
- package/dist/src/config.d.ts +24 -8
- package/dist/src/context.d.ts +16 -35
- package/dist/src/data.d.ts +27 -0
- package/dist/src/defaults.d.ts +1 -1
- package/dist/src/editor/editor.d.ts +14 -61
- package/dist/src/editor/state.d.ts +20 -0
- package/dist/src/i18n/en.d.ts +3 -0
- package/dist/src/i18n/external.d.ts +3 -0
- package/dist/src/i18n/index.d.ts +9 -0
- package/dist/src/i18n/jp.d.ts +3 -0
- package/dist/src/i18n/zh-CN.d.ts +1 -1
- package/dist/src/i18n/zh-TW.d.ts +3 -0
- package/dist/src/layer/index.d.ts +4 -3
- package/dist/src/layer/layer-manager.d.ts +9 -0
- package/dist/src/layer/layer.d.ts +8 -28
- package/dist/src/layer/scrollbar-helper.d.ts +5 -0
- package/dist/src/layer/sidebar-layer.d.ts +6 -6
- package/dist/src/layer/wrap.d.ts +13 -0
- package/dist/src/lib/component.d.ts +3 -8
- package/dist/src/lib/event-manager.d.ts +28 -0
- package/dist/src/lib/highlight.d.ts +1 -0
- package/dist/src/lib/marked-renderer.d.ts +4 -0
- package/dist/src/lib/marked.d.ts +4 -2
- package/dist/src/lib/sanitizer.d.ts +1 -0
- package/dist/src/lib/ui.d.ts +3 -2
- package/dist/src/lib/user.d.ts +8 -5
- package/dist/src/lib/utils.d.ts +11 -5
- package/dist/src/list/comment.d.ts +3 -0
- package/dist/src/list/layout.d.ts +23 -0
- package/dist/src/list/list.d.ts +13 -25
- package/dist/src/list/{list-nest.d.ts → nest.d.ts} +1 -1
- package/dist/src/list/page.d.ts +2 -0
- package/dist/src/list/paginator/index.d.ts +22 -7
- package/dist/src/list/paginator/read-more.d.ts +18 -0
- package/dist/src/list/paginator/up-down.d.ts +14 -0
- package/dist/src/main.d.ts +5 -0
- package/dist/src/plugins/admin-only-elem.d.ts +2 -0
- package/dist/src/plugins/conf-remoter.d.ts +2 -0
- package/dist/src/plugins/dark-mode.d.ts +2 -0
- package/dist/src/plugins/editor/_kit.d.ts +27 -0
- package/dist/src/plugins/editor/_plug.d.ts +29 -0
- package/dist/src/plugins/editor/_sample.d.ts +5 -0
- package/dist/src/plugins/editor/closable.d.ts +7 -0
- package/dist/src/{editor/plugs/emoticons-plug.d.ts → plugins/editor/emoticons.d.ts} +10 -16
- package/dist/src/plugins/editor/header-event.d.ts +6 -0
- package/dist/src/plugins/editor/header-link.d.ts +6 -0
- package/dist/src/plugins/editor/header-user.d.ts +16 -0
- package/dist/src/plugins/editor/index.d.ts +6 -0
- package/dist/src/plugins/editor/local-storage.d.ts +6 -0
- package/dist/src/plugins/editor/mover.d.ts +6 -0
- package/dist/src/plugins/editor/preview.d.ts +7 -0
- package/dist/src/plugins/editor/state-edit.d.ts +11 -0
- package/dist/src/plugins/editor/state-reply.d.ts +8 -0
- package/dist/src/plugins/editor/submit-add.d.ts +18 -0
- package/dist/src/plugins/editor/submit-btn.d.ts +5 -0
- package/dist/src/plugins/editor/submit.d.ts +17 -0
- package/dist/src/plugins/editor/textarea.d.ts +8 -0
- package/dist/src/plugins/editor/upload.d.ts +9 -0
- package/dist/src/plugins/editor-kit.d.ts +42 -0
- package/dist/src/plugins/index.d.ts +2 -0
- package/dist/src/plugins/list/copyright.d.ts +2 -0
- package/dist/src/plugins/list/count.d.ts +2 -0
- package/dist/src/plugins/list/dropdown.d.ts +2 -0
- package/dist/src/plugins/list/error-dialog.d.ts +2 -0
- package/dist/src/plugins/list/fetch.d.ts +2 -0
- package/dist/src/plugins/list/goto-first.d.ts +3 -0
- package/dist/src/plugins/list/goto.d.ts +2 -0
- package/dist/src/plugins/list/index.d.ts +3 -0
- package/dist/src/plugins/list/loading.d.ts +2 -0
- package/dist/src/plugins/list/no-comment.d.ts +2 -0
- package/dist/src/plugins/list/reach-bottom.d.ts +2 -0
- package/dist/src/plugins/list/sidebar-btn.d.ts +2 -0
- package/dist/src/plugins/list/time-ticking.d.ts +3 -0
- package/dist/src/plugins/list/unread-badge.d.ts +2 -0
- package/dist/src/plugins/list/unread.d.ts +2 -0
- package/dist/src/plugins/list/with-editor.d.ts +2 -0
- package/dist/src/plugins/markdown.d.ts +2 -0
- package/dist/src/plugins/stat.d.ts +13 -0
- package/dist/src/plugins/version-check.d.ts +2 -0
- package/dist/src/service.d.ts +19 -23
- package/dist/tests/e2e/comment-add.spec.d.ts +1 -0
- package/dist/types/config.d.ts +110 -0
- package/dist/types/context.d.ts +56 -136
- package/dist/types/data.d.ts +194 -0
- package/dist/types/editor.d.ts +76 -0
- package/dist/types/event.d.ts +36 -25
- package/dist/types/index.d.ts +7 -0
- package/dist/types/plugin.d.ts +2 -0
- package/dist/types/sidebar.d.ts +3 -0
- package/package.json +5 -2
- package/src/api/_base.ts +18 -0
- package/src/api/_options.ts +25 -0
- package/src/api/{request.ts → _request.ts} +19 -18
- package/src/api/admin.ts +1 -1
- package/src/api/captcha.ts +1 -1
- package/src/api/comment.ts +4 -4
- package/src/api/index.ts +3 -12
- package/src/api/page.ts +5 -5
- package/src/api/site.ts +2 -2
- package/src/api/system.ts +19 -7
- package/src/api/upload.ts +3 -3
- package/src/api/user.ts +3 -3
- package/src/artalk.ts +47 -99
- package/src/comment/actions.ts +1 -4
- package/src/comment/comment.ts +9 -6
- package/src/comment/render.ts +27 -5
- package/src/comment/renders/actions.ts +45 -45
- package/src/comment/renders/avatar.ts +7 -7
- package/src/comment/renders/content.ts +18 -18
- package/src/comment/renders/header.ts +13 -13
- package/src/comment/renders/index.ts +3 -3
- package/src/comment/renders/pending.ts +5 -5
- package/src/comment/renders/reply-at.ts +8 -8
- package/src/comment/renders/reply-to.ts +13 -13
- package/src/components/action-btn.ts +11 -13
- package/src/{lib → components}/checker/admin.ts +6 -6
- package/src/{lib → components}/checker/captcha-renders.ts +7 -6
- package/src/{lib → components}/checker/captcha.ts +1 -1
- package/src/{lib → components}/checker/index.ts +21 -26
- package/src/components/dark-mode.ts +30 -0
- package/src/components/dialog.ts +4 -9
- package/src/components/error-dialog.ts +35 -0
- package/src/components/pagination.ts +10 -6
- package/src/components/read-more-btn.ts +7 -7
- package/src/config.ts +60 -6
- package/src/context.ts +39 -144
- package/src/data.ts +110 -0
- package/src/defaults.ts +1 -1
- package/src/editor/editor.ts +39 -152
- package/src/editor/state.ts +52 -0
- package/src/i18n/en.ts +3 -0
- package/src/i18n/jp.ts +3 -0
- package/src/i18n/zh-CN.ts +4 -1
- package/src/i18n/zh-TW.ts +3 -0
- package/src/layer/index.ts +4 -4
- package/src/layer/layer-manager.ts +32 -0
- package/src/layer/layer.ts +20 -144
- package/src/layer/scrollbar-helper.ts +24 -0
- package/src/layer/sidebar-layer.ts +74 -64
- package/src/layer/wrap.ts +77 -0
- package/src/lib/component.ts +4 -11
- package/src/lib/detect.ts +1 -1
- package/src/lib/event-manager.ts +47 -0
- package/src/lib/highlight.ts +5 -0
- package/src/lib/marked-renderer.ts +32 -0
- package/src/lib/marked.ts +43 -104
- package/src/lib/sanitizer.ts +57 -0
- package/src/lib/ui.ts +22 -15
- package/src/lib/user.ts +21 -16
- package/src/lib/utils.ts +29 -18
- package/src/list/comment.ts +20 -0
- package/src/list/layout.ts +120 -0
- package/src/list/list.html +3 -1
- package/src/list/list.ts +56 -200
- package/src/list/{list-nest.ts → nest.ts} +1 -1
- package/src/list/page.ts +97 -0
- package/src/list/paginator/index.ts +20 -8
- package/src/list/paginator/read-more.ts +67 -0
- package/src/list/paginator/up-down.ts +51 -0
- package/src/main.ts +11 -0
- package/src/plugins/admin-only-elem.ts +40 -0
- package/src/plugins/conf-remoter.ts +54 -0
- package/src/plugins/dark-mode.ts +12 -0
- package/src/plugins/editor/_kit.ts +57 -0
- package/src/plugins/editor/_plug.ts +60 -0
- package/src/plugins/editor/_sample.ts +8 -0
- package/src/plugins/editor/closable.ts +44 -0
- package/src/{editor/plugs/emoticons-plug.ts → plugins/editor/emoticons.ts} +51 -52
- package/src/plugins/editor/header-event.ts +35 -0
- package/src/plugins/editor/header-link.ts +31 -0
- package/src/plugins/editor/header-user.ts +98 -0
- package/src/plugins/editor/index.ts +40 -0
- package/src/plugins/editor/local-storage.ts +36 -0
- package/src/plugins/editor/mover.ts +29 -0
- package/src/plugins/editor/preview.ts +41 -0
- package/src/plugins/editor/state-edit.ts +116 -0
- package/src/plugins/editor/state-reply.ts +91 -0
- package/src/plugins/editor/submit-add.ts +33 -0
- package/src/plugins/editor/submit-btn.ts +25 -0
- package/src/plugins/editor/submit.ts +73 -0
- package/src/plugins/editor/textarea.ts +55 -0
- package/src/plugins/editor/upload.ts +145 -0
- package/src/plugins/editor-kit.ts +161 -0
- package/src/plugins/index.ts +16 -0
- package/src/plugins/list/copyright.ts +16 -0
- package/src/plugins/list/count.ts +31 -0
- package/src/plugins/list/dropdown.ts +95 -0
- package/src/plugins/list/error-dialog.ts +22 -0
- package/src/plugins/list/fetch.ts +64 -0
- package/src/plugins/list/goto-first.ts +23 -0
- package/src/plugins/list/goto.ts +72 -0
- package/src/plugins/list/index.ts +25 -0
- package/src/plugins/list/loading.ts +17 -0
- package/src/plugins/list/no-comment.ts +25 -0
- package/src/plugins/list/reach-bottom.ts +46 -0
- package/src/plugins/list/sidebar-btn.ts +39 -0
- package/src/plugins/list/time-ticking.ts +22 -0
- package/src/plugins/list/unread-badge.ts +26 -0
- package/src/plugins/list/unread.ts +38 -0
- package/src/plugins/list/with-editor.ts +59 -0
- package/src/plugins/markdown.ts +10 -0
- package/src/plugins/stat.ts +82 -0
- package/src/plugins/version-check.ts +36 -0
- package/src/service.ts +34 -61
- package/src/style/comment.scss +5 -7
- package/src/style/editor.scss +5 -0
- package/src/style/list.scss +1 -1
- package/types/{artalk-config.d.ts → config.ts} +16 -2
- package/types/context.ts +84 -0
- package/types/{artalk-data.d.ts → data.ts} +41 -0
- package/types/editor.ts +95 -0
- package/types/event.ts +40 -0
- package/types/index.ts +7 -0
- package/types/plugin.ts +3 -0
- package/types/sidebar.ts +3 -0
- package/dist/src/comment/render-ctx.d.ts +0 -23
- package/dist/src/editor/edit-mode.d.ts +0 -9
- package/dist/src/editor/funcs.d.ts +0 -2
- package/dist/src/editor/index.d.ts +0 -2
- package/dist/src/editor/mover.d.ts +0 -8
- package/dist/src/editor/plug-manager.d.ts +0 -17
- package/dist/src/editor/plugs/editor-plug.d.ts +0 -38
- package/dist/src/editor/plugs/header-input-plug.d.ts +0 -13
- package/dist/src/editor/plugs/preview-plug.d.ts +0 -10
- package/dist/src/editor/plugs/upload-plug.d.ts +0 -10
- package/dist/src/editor/reply.d.ts +0 -9
- package/dist/src/editor/submit.d.ts +0 -16
- package/dist/src/lib/dark-mode.d.ts +0 -4
- package/dist/src/lib/stat.d.ts +0 -15
- package/dist/src/list/index.d.ts +0 -2
- package/dist/src/list/list-lite.d.ts +0 -77
- package/dist/src/list/list-ui.d.ts +0 -16
- package/dist/src/list/paginator/adaptors/index.d.ts +0 -12
- package/dist/src/list/paginator/adaptors/pagination.d.ts +0 -9
- package/dist/src/list/paginator/adaptors/read-more.d.ts +0 -10
- package/dist/src/list/paginator/holder.d.ts +0 -16
- package/dist/types/artalk-config.d.ts +0 -139
- package/dist/types/artalk-data.d.ts +0 -230
- package/dist/types/plug.d.ts +0 -4
- package/src/api/api-base.ts +0 -27
- package/src/comment/render-ctx.ts +0 -30
- package/src/editor/edit-mode.ts +0 -105
- package/src/editor/funcs.ts +0 -150
- package/src/editor/index.ts +0 -3
- package/src/editor/mover.ts +0 -43
- package/src/editor/plug-manager.ts +0 -172
- package/src/editor/plugs/editor-plug.ts +0 -69
- package/src/editor/plugs/header-input-plug.ts +0 -79
- package/src/editor/plugs/preview-plug.ts +0 -44
- package/src/editor/plugs/upload-plug.ts +0 -122
- package/src/editor/reply.ts +0 -62
- package/src/editor/submit.ts +0 -99
- package/src/lib/dark-mode.ts +0 -48
- package/src/lib/stat.ts +0 -71
- package/src/list/index.ts +0 -3
- package/src/list/list-lite.ts +0 -424
- package/src/list/list-ui.ts +0 -137
- package/src/list/paginator/adaptors/index.ts +0 -21
- package/src/list/paginator/adaptors/pagination.ts +0 -42
- package/src/list/paginator/adaptors/read-more.ts +0 -56
- package/src/list/paginator/holder.ts +0 -56
- package/types/context.d.ts +0 -142
- package/types/event.d.ts +0 -28
- package/types/plug.d.ts +0 -4
- /package/src/{editor/plugs/emoticons-plug.scss → plugins/editor/emoticons.scss} +0 -0
- /package/src/{editor/plugs/preview-plug.scss → plugins/editor/preview.scss} +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { ContextApi, ArtalkPlugin } from '~/types'
|
|
2
|
+
import Api from '../api'
|
|
3
|
+
|
|
4
|
+
export interface CountOptions {
|
|
5
|
+
getApi(): Api
|
|
6
|
+
|
|
7
|
+
pageKey: string
|
|
8
|
+
countEl: string
|
|
9
|
+
pvEl: string
|
|
10
|
+
|
|
11
|
+
/** 是否增加当前页面 PV 数 */
|
|
12
|
+
pvAdd?: boolean
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const PvCountWidget: ArtalkPlugin = (ctx: ContextApi) => {
|
|
16
|
+
ctx.on('conf-loaded', () => {
|
|
17
|
+
initCountWidget({
|
|
18
|
+
getApi: () => ctx.getApi(),
|
|
19
|
+
pageKey: ctx.conf.pageKey,
|
|
20
|
+
countEl: ctx.conf.countEl,
|
|
21
|
+
pvEl: ctx.conf.pvEl,
|
|
22
|
+
pvAdd: true,
|
|
23
|
+
})
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** 初始化评论数和 PV 数量展示元素 */
|
|
28
|
+
export async function initCountWidget(opt: CountOptions) {
|
|
29
|
+
// 评论数
|
|
30
|
+
if (opt.countEl && document.querySelector(opt.countEl)) {
|
|
31
|
+
refreshStatCount(opt, { query: 'page_comment', numEl: opt.countEl })
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// PV
|
|
35
|
+
const initialData = opt.pvAdd ? {
|
|
36
|
+
[opt.pageKey]: (await opt.getApi().page.pv()) // pv+1 and get pv count
|
|
37
|
+
} : undefined
|
|
38
|
+
|
|
39
|
+
if (opt.pvEl && document.querySelector(opt.pvEl)) {
|
|
40
|
+
refreshStatCount(opt, {
|
|
41
|
+
query: 'page_pv',
|
|
42
|
+
numEl: opt.pvEl,
|
|
43
|
+
data: initialData,
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
type CountData = { [pageKey: string]: number }
|
|
49
|
+
|
|
50
|
+
async function refreshStatCount(
|
|
51
|
+
opt: CountOptions,
|
|
52
|
+
args: {
|
|
53
|
+
query: 'page_pv' | 'page_comment'
|
|
54
|
+
numEl: string
|
|
55
|
+
data?: CountData
|
|
56
|
+
}
|
|
57
|
+
) {
|
|
58
|
+
let data: CountData = args.data || {}
|
|
59
|
+
|
|
60
|
+
// Get page keys which will be queried
|
|
61
|
+
let queryPageKeys = Array.from(document.querySelectorAll(args.numEl))
|
|
62
|
+
.map((e) => e.getAttribute('data-page-key') || opt.pageKey)
|
|
63
|
+
.filter((k) => typeof data[k] !== 'number') // filter out keys that already have data
|
|
64
|
+
|
|
65
|
+
queryPageKeys = [...new Set(queryPageKeys)] // deduplicate
|
|
66
|
+
|
|
67
|
+
// Fetch count data from server
|
|
68
|
+
if (queryPageKeys.length > 0) {
|
|
69
|
+
const res = await opt.getApi().page.stat(args.query, queryPageKeys) as CountData
|
|
70
|
+
data = { ...data, ...res }
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
applyCountData(args.numEl, data, data[opt.pageKey])
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function applyCountData(selector: string, data: CountData, defaultCount: number) {
|
|
77
|
+
document.querySelectorAll(selector).forEach((el) => {
|
|
78
|
+
const pageKey = el.getAttribute('data-page-key')
|
|
79
|
+
const count = Number(pageKey ? (data[pageKey]) : defaultCount)
|
|
80
|
+
el.innerHTML = `${count}`
|
|
81
|
+
})
|
|
82
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ArtalkPlugin } from '~/types'
|
|
2
|
+
import { version as ARTALK_VERSION } from '~/package.json'
|
|
3
|
+
import type List from '~/src/list/list'
|
|
4
|
+
import * as Ui from '@/lib/ui'
|
|
5
|
+
import * as Utils from '@/lib/utils'
|
|
6
|
+
import $t from '@/i18n'
|
|
7
|
+
|
|
8
|
+
let IgnoreVersionCheck = false
|
|
9
|
+
|
|
10
|
+
export const VersionCheck: ArtalkPlugin = (ctx) => {
|
|
11
|
+
ctx.on('conf-loaded', () => {
|
|
12
|
+
const list = ctx.get('list')
|
|
13
|
+
if (ctx.conf.apiVersion && ctx.conf.versionCheck && !IgnoreVersionCheck)
|
|
14
|
+
versionCheck(list, ARTALK_VERSION, ctx.conf.apiVersion)
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function versionCheck(list: List, feVer: string, beVer: string) {
|
|
19
|
+
const comp = Utils.versionCompare(feVer, beVer)
|
|
20
|
+
const sameVer = (comp === 0)
|
|
21
|
+
if (sameVer) return
|
|
22
|
+
|
|
23
|
+
const errEl = Utils.createElement(
|
|
24
|
+
`<div>${$t('updateMsg', { name: (comp < 0) ? $t('frontend') : $t('backend') })}` +
|
|
25
|
+
`<br/><br/><span style="color: var(--at-color-meta);">` +
|
|
26
|
+
`${$t('currentVersion')}: ${$t('frontend')} ${feVer} / ${$t('backend')} ${beVer}` +
|
|
27
|
+
`</span><br/><br/></div>`)
|
|
28
|
+
const ignoreBtn = Utils.createElement(`<span style="cursor:pointer">${$t('ignore')}</span>`)
|
|
29
|
+
ignoreBtn.onclick = () => {
|
|
30
|
+
Ui.setError(list.$el.parentElement!, null)
|
|
31
|
+
IgnoreVersionCheck = true
|
|
32
|
+
list.ctx.fetch({ offset: 0 })
|
|
33
|
+
}
|
|
34
|
+
errEl.append(ignoreBtn)
|
|
35
|
+
Ui.setError(list.$el.parentElement!, errEl, '<span class="atk-warn-title">Artalk Warn</span>')
|
|
36
|
+
}
|
package/src/service.ts
CHANGED
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import CheckerLauncher from './
|
|
3
|
-
import
|
|
4
|
-
import Editor from './editor'
|
|
5
|
-
import List from './list'
|
|
6
|
-
import Layer from './layer'
|
|
1
|
+
import type { ContextApi } from '~/types'
|
|
2
|
+
import CheckerLauncher from './components/checker'
|
|
3
|
+
import Editor from './editor/editor'
|
|
7
4
|
import SidebarLayer from './layer/sidebar-layer'
|
|
8
|
-
|
|
5
|
+
|
|
9
6
|
import User from './lib/user'
|
|
10
|
-
import
|
|
11
|
-
|
|
7
|
+
import List from './list/list'
|
|
8
|
+
|
|
12
9
|
import * as I18n from './i18n'
|
|
10
|
+
import { PlugManager } from './plugins/editor-kit'
|
|
11
|
+
import { LayerManager } from './layer/layer-manager'
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* Services
|
|
16
15
|
*
|
|
17
|
-
* @description
|
|
18
|
-
* 当函数有返回值时,该值将自动添加到 Context 类作为一个 private 成员的值,
|
|
19
|
-
* 这个成员的名称与函数名对应。可在 Context 类中访问该对象(同事类)。
|
|
16
|
+
* @description Call these services by `ctx.get('serviceName')` or `ctx.serviceName`
|
|
20
17
|
*/
|
|
21
18
|
const services = {
|
|
22
19
|
// I18n
|
|
23
|
-
i18n(ctx:
|
|
20
|
+
i18n(ctx: ContextApi) {
|
|
24
21
|
I18n.setLocale(ctx.conf.locale)
|
|
25
22
|
|
|
26
23
|
ctx.on('conf-loaded', () => {
|
|
@@ -28,82 +25,58 @@ const services = {
|
|
|
28
25
|
})
|
|
29
26
|
},
|
|
30
27
|
|
|
31
|
-
// Markdown 组件
|
|
32
|
-
markdown() {
|
|
33
|
-
initMarked()
|
|
34
|
-
},
|
|
35
|
-
|
|
36
28
|
// User Store
|
|
37
|
-
user(ctx:
|
|
38
|
-
User.
|
|
29
|
+
user(ctx: ContextApi) {
|
|
30
|
+
User.setOnUserChanged((user) => {
|
|
31
|
+
ctx?.trigger('user-changed', user)
|
|
32
|
+
})
|
|
39
33
|
return User
|
|
40
34
|
},
|
|
41
35
|
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return api
|
|
36
|
+
// 弹出层
|
|
37
|
+
layerManager(ctx: ContextApi) {
|
|
38
|
+
return new LayerManager(ctx)
|
|
46
39
|
},
|
|
47
40
|
|
|
48
41
|
// CheckerLauncher
|
|
49
|
-
checkerLauncher(ctx:
|
|
50
|
-
const checkerLauncher = new CheckerLauncher(
|
|
42
|
+
checkerLauncher(ctx: ContextApi) {
|
|
43
|
+
const checkerLauncher = new CheckerLauncher({
|
|
44
|
+
getCtx: () => ctx,
|
|
45
|
+
getApi: () => ctx.getApi(),
|
|
46
|
+
getIframeURLBase: () => ctx.conf.server,
|
|
47
|
+
onReload: () => ctx.reload()
|
|
48
|
+
})
|
|
51
49
|
return checkerLauncher
|
|
52
50
|
},
|
|
53
51
|
|
|
54
52
|
// 编辑器
|
|
55
|
-
editor(ctx:
|
|
53
|
+
editor(ctx: ContextApi) {
|
|
56
54
|
const editor = new Editor(ctx)
|
|
57
55
|
ctx.$root.appendChild(editor.$el)
|
|
58
56
|
return editor
|
|
59
57
|
},
|
|
60
58
|
|
|
61
59
|
// 评论列表
|
|
62
|
-
list(ctx:
|
|
63
|
-
// 评论列表
|
|
60
|
+
list(ctx: ContextApi): List {
|
|
64
61
|
const list = new List(ctx)
|
|
65
62
|
ctx.$root.appendChild(list.$el)
|
|
66
|
-
|
|
67
|
-
// 评论获取
|
|
68
|
-
list.fetchComments(0)
|
|
69
|
-
|
|
70
63
|
return list
|
|
71
64
|
},
|
|
72
65
|
|
|
73
|
-
// 弹出层
|
|
74
|
-
layer(ctx: Context) {
|
|
75
|
-
// 记录页面原始 CSS 属性
|
|
76
|
-
Layer.BodyOrgOverflow = document.body.style.overflow
|
|
77
|
-
Layer.BodyOrgPaddingRight = document.body.style.paddingRight
|
|
78
|
-
},
|
|
79
|
-
|
|
80
66
|
// 侧边栏 Layer
|
|
81
|
-
sidebarLayer(ctx:
|
|
67
|
+
sidebarLayer(ctx: ContextApi) {
|
|
82
68
|
const sidebarLayer = new SidebarLayer(ctx)
|
|
83
69
|
return sidebarLayer
|
|
84
70
|
},
|
|
85
71
|
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
})
|
|
72
|
+
// Extra Service
|
|
73
|
+
// -----------------------------------------
|
|
74
|
+
// Only for type check
|
|
75
|
+
// Not inject to ctx immediately,
|
|
76
|
+
// but can be injected by other occasions
|
|
92
77
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
ctx.checkAdminShowEl()
|
|
96
|
-
ctx.listRefreshUI()
|
|
97
|
-
})
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
// 夜间模式
|
|
101
|
-
darkMode(ctx: Context) {
|
|
102
|
-
DarkMode.syncDarkModeConf(ctx)
|
|
103
|
-
|
|
104
|
-
ctx.on('conf-loaded', () => {
|
|
105
|
-
DarkMode.syncDarkModeConf(ctx)
|
|
106
|
-
})
|
|
78
|
+
editorPlugs(): PlugManager|undefined {
|
|
79
|
+
return undefined
|
|
107
80
|
}
|
|
108
81
|
}
|
|
109
82
|
|
package/src/style/comment.scss
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
|
|
42
42
|
.atk-comment {
|
|
43
43
|
display: block;
|
|
44
|
-
padding:
|
|
44
|
+
padding: 10px;
|
|
45
45
|
|
|
46
46
|
& > .atk-avatar {
|
|
47
47
|
display: block;
|
|
@@ -239,23 +239,21 @@
|
|
|
239
239
|
}
|
|
240
240
|
|
|
241
241
|
& > .atk-footer {
|
|
242
|
-
margin-top:
|
|
242
|
+
margin-top: 5px;
|
|
243
243
|
|
|
244
244
|
.atk-actions {
|
|
245
245
|
display: flex;
|
|
246
246
|
flex-direction: row;
|
|
247
247
|
align-items: center;
|
|
248
248
|
flex-wrap: wrap;
|
|
249
|
-
margin-bottom: -15px;
|
|
250
249
|
|
|
251
250
|
& > span {
|
|
252
251
|
color: var(--at-color-meta);
|
|
253
252
|
font-size: 13px;
|
|
254
|
-
line-height:
|
|
253
|
+
line-height: 25px;
|
|
255
254
|
display: inline-flex;
|
|
256
255
|
cursor: pointer;
|
|
257
256
|
user-select: none;
|
|
258
|
-
margin-bottom: 15px;
|
|
259
257
|
|
|
260
258
|
&.atk-error, &.atk-error:hover {
|
|
261
259
|
color: var(--at-color-red);
|
|
@@ -340,11 +338,11 @@
|
|
|
340
338
|
border-left: 1px dashed transparent;
|
|
341
339
|
border-bottom-color: transparent;
|
|
342
340
|
&:not(:last-child) {
|
|
343
|
-
margin-bottom:
|
|
341
|
+
margin-bottom: 10px;
|
|
344
342
|
}
|
|
345
343
|
|
|
346
344
|
& > .atk-comment {
|
|
347
|
-
padding:
|
|
345
|
+
padding: 0;
|
|
348
346
|
|
|
349
347
|
& > .atk-avatar img {
|
|
350
348
|
width: 36px;
|
package/src/style/editor.scss
CHANGED
package/src/style/list.scss
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { I18n } from '~/src/i18n'
|
|
2
|
-
import { CommentData } from './
|
|
2
|
+
import { CommentData } from './data'
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export interface ArtalkConfig {
|
|
5
5
|
/** 装载元素 */
|
|
6
6
|
el: string|HTMLElement
|
|
7
7
|
|
|
@@ -115,6 +115,20 @@ export default interface ArtalkConfig {
|
|
|
115
115
|
|
|
116
116
|
/** 语言本地化 */
|
|
117
117
|
locale: I18n|string
|
|
118
|
+
|
|
119
|
+
/** 后端版本 (系统数据,用户不允许更改) */
|
|
120
|
+
apiVersion?: string
|
|
121
|
+
|
|
122
|
+
/** Replacer for marked */
|
|
123
|
+
markedReplacers?: ((raw: string) => string)[]
|
|
124
|
+
|
|
125
|
+
/** 列表请求参数修改器 */
|
|
126
|
+
listFetchParamsModifier?: (params: any) => void
|
|
127
|
+
|
|
128
|
+
// TODO consider merge list related config into one object, or flatten all to keep simple (keep consistency)
|
|
129
|
+
remoteConfModifier?: (conf: Partial<ArtalkConfig>) => void
|
|
130
|
+
listUnreadHighlight?: boolean
|
|
131
|
+
scrollRelativeTo?: () => HTMLElement
|
|
118
132
|
}
|
|
119
133
|
|
|
120
134
|
/**
|
package/types/context.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { TInjectedServices } from '@/service'
|
|
2
|
+
import type { CheckerCaptchaPayload, CheckerPayload } from '@/components/checker'
|
|
3
|
+
import type { EventManagerFuncs } from '@/lib/event-manager'
|
|
4
|
+
import type { TMarked } from '@/lib/marked'
|
|
5
|
+
import type { I18n } from '@/i18n'
|
|
6
|
+
import type Api from '@/api'
|
|
7
|
+
import type { SidebarShowPayload, EventPayloadMap, ArtalkConfig, CommentData, DataManagerApi, ListFetchParams, NotifyLevel } from '.'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Context 接口
|
|
11
|
+
*
|
|
12
|
+
* (面向接口的编程)
|
|
13
|
+
*/
|
|
14
|
+
export interface ContextApi extends EventManagerFuncs<EventPayloadMap> {
|
|
15
|
+
/** Artalk 根元素对象 */
|
|
16
|
+
$root: HTMLElement
|
|
17
|
+
|
|
18
|
+
/** 依赖注入函数 */
|
|
19
|
+
inject<K extends keyof TInjectedServices>(depName: K, obj: TInjectedServices[K]): void
|
|
20
|
+
|
|
21
|
+
/** 获取依赖对象 */
|
|
22
|
+
get<K extends keyof TInjectedServices>(depName: K): TInjectedServices[K]
|
|
23
|
+
|
|
24
|
+
/** 配置对象 */
|
|
25
|
+
// TODO 修改为 getConf() 和 setConf() 并且返回拷贝而不是引用
|
|
26
|
+
conf: ArtalkConfig
|
|
27
|
+
|
|
28
|
+
/** marked 依赖对象 */
|
|
29
|
+
getMarked(): TMarked | undefined
|
|
30
|
+
|
|
31
|
+
/** 获取 API 以供 HTTP 请求 */
|
|
32
|
+
getApi(): Api
|
|
33
|
+
|
|
34
|
+
/** 获取数据管理器对象 */
|
|
35
|
+
getData(): DataManagerApi
|
|
36
|
+
|
|
37
|
+
/** 评论回复 */
|
|
38
|
+
replyComment(commentData: CommentData, $comment: HTMLElement): void
|
|
39
|
+
|
|
40
|
+
/** 编辑评论 */
|
|
41
|
+
editComment(commentData: CommentData, $comment: HTMLElement): void
|
|
42
|
+
|
|
43
|
+
/** 获取评论数据 */
|
|
44
|
+
fetch(params: Partial<ListFetchParams>): void
|
|
45
|
+
|
|
46
|
+
/** 重载评论数据 */
|
|
47
|
+
reload(): void
|
|
48
|
+
|
|
49
|
+
/** 列表滚动到第一个评论的位置 */
|
|
50
|
+
listGotoFirst(): void
|
|
51
|
+
|
|
52
|
+
/** 显示侧边栏 */
|
|
53
|
+
showSidebar(payload?: SidebarShowPayload): void
|
|
54
|
+
|
|
55
|
+
/** 隐藏侧边栏 */
|
|
56
|
+
hideSidebar(): void
|
|
57
|
+
|
|
58
|
+
/** 编辑器 - 显示加载 */
|
|
59
|
+
editorShowLoading(): void
|
|
60
|
+
|
|
61
|
+
/** 编辑器 - 隐藏加载 */
|
|
62
|
+
editorHideLoading(): void
|
|
63
|
+
|
|
64
|
+
/** 编辑器 - 显示提示消息 */
|
|
65
|
+
editorShowNotify(msg: string, type: NotifyLevel): void
|
|
66
|
+
|
|
67
|
+
/** 评论框 - 复原状态 */
|
|
68
|
+
editorResetState(): void
|
|
69
|
+
|
|
70
|
+
/** 验证码检测 */
|
|
71
|
+
checkCaptcha(payload: CheckerCaptchaPayload): void
|
|
72
|
+
|
|
73
|
+
/** 管理员检测 */
|
|
74
|
+
checkAdmin(payload: CheckerPayload): void
|
|
75
|
+
|
|
76
|
+
/** i18n 翻译 */
|
|
77
|
+
$t(key: keyof I18n, args?: {[key: string]: string}): string
|
|
78
|
+
|
|
79
|
+
/** 设置夜间模式 */
|
|
80
|
+
setDarkMode(darkMode: boolean|'auto'): void
|
|
81
|
+
|
|
82
|
+
/** 更新配置 */
|
|
83
|
+
updateConf(conf: Partial<ArtalkConfig>): void
|
|
84
|
+
}
|
|
@@ -228,3 +228,44 @@ export interface ApiVersionData {
|
|
|
228
228
|
/** API 程序 CommitHash */
|
|
229
229
|
commit_hash: string
|
|
230
230
|
}
|
|
231
|
+
|
|
232
|
+
export interface ListFetchParams {
|
|
233
|
+
offset: number
|
|
234
|
+
limit: number
|
|
235
|
+
flatMode: boolean
|
|
236
|
+
paramsModifier?: (p: any) => void
|
|
237
|
+
onSuccess?: (data: ListData) => void
|
|
238
|
+
onError?: (err: any) => void
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export interface ListLastFetchData {
|
|
242
|
+
params: ListFetchParams
|
|
243
|
+
data?: ListData
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export interface DataManagerApi {
|
|
247
|
+
getLoading(): boolean
|
|
248
|
+
setLoading(val: boolean): void
|
|
249
|
+
|
|
250
|
+
getListLastFetch(): ListLastFetchData|undefined
|
|
251
|
+
setListLastFetch(val: ListLastFetchData): void
|
|
252
|
+
|
|
253
|
+
getComments(): CommentData[]
|
|
254
|
+
findComment(id: number): CommentData|undefined
|
|
255
|
+
|
|
256
|
+
fetchComments(params: Partial<ListFetchParams>): void
|
|
257
|
+
loadComments(comments: CommentData[]): void
|
|
258
|
+
clearComments(): void
|
|
259
|
+
|
|
260
|
+
insertComment(comment: CommentData): void
|
|
261
|
+
updateComment(comment: CommentData): void
|
|
262
|
+
deleteComment(id: number): void
|
|
263
|
+
|
|
264
|
+
getUnreads(): NotifyData[]
|
|
265
|
+
updateUnreads(unreads: NotifyData[]): void
|
|
266
|
+
|
|
267
|
+
getPage(): PageData|undefined
|
|
268
|
+
updatePage(pageData: PageData): void
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export type NotifyLevel = "i" | "s" | "w" | "e"
|
package/types/editor.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { CommentData, NotifyLevel } from '.'
|
|
2
|
+
import type Component from '../src/lib/component'
|
|
3
|
+
import type { EditorUI } from '../src/editor/ui'
|
|
4
|
+
|
|
5
|
+
export type EditorState = 'reply' | 'edit' | 'normal'
|
|
6
|
+
|
|
7
|
+
export interface EditorApi extends Component {
|
|
8
|
+
getUI(): EditorUI
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get the header input elements
|
|
12
|
+
*/
|
|
13
|
+
getHeaderInputEls(): Record<string, HTMLInputElement>
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Set content
|
|
17
|
+
*/
|
|
18
|
+
setContent(val: string): void
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Insert content
|
|
22
|
+
*/
|
|
23
|
+
insertContent(val: string): void
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Get the final content
|
|
27
|
+
*
|
|
28
|
+
* This function returns the raw content or the content transformed through a plugin hook.
|
|
29
|
+
*/
|
|
30
|
+
getContentFinal(): string
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Get the raw content which is inputed by user
|
|
34
|
+
*/
|
|
35
|
+
getContentRaw(): string
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Get the HTML format content which is rendered by marked (a markdown parser)
|
|
39
|
+
*/
|
|
40
|
+
getContentMarked(): string
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Get editor current state
|
|
44
|
+
*/
|
|
45
|
+
getState(): EditorState
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Focus editor
|
|
49
|
+
*/
|
|
50
|
+
focus(): void
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Reset editor
|
|
54
|
+
*/
|
|
55
|
+
reset(): void
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Reset editor UI
|
|
59
|
+
*
|
|
60
|
+
* call it will move editor to the initial position
|
|
61
|
+
*/
|
|
62
|
+
resetState(): void
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Submit comment
|
|
66
|
+
*/
|
|
67
|
+
submit(): void
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Show notification message
|
|
71
|
+
*/
|
|
72
|
+
showNotify(msg: string, type: NotifyLevel): void
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Show loading on editor
|
|
76
|
+
*/
|
|
77
|
+
showLoading(): void
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Hide loading on editor
|
|
81
|
+
*/
|
|
82
|
+
hideLoading(): void
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Start replaying a comment
|
|
86
|
+
*/
|
|
87
|
+
setReply(commentData: CommentData, $comment: HTMLElement, scroll?: boolean): void
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Start editing a comment
|
|
91
|
+
*/
|
|
92
|
+
setEditComment(commentData: CommentData, $comment: HTMLElement): void
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export default EditorApi
|
package/types/event.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type Comment from '~/src/comment'
|
|
2
|
+
import { CommentData, ListData, ListFetchParams, NotifyData, PageData } from './data'
|
|
3
|
+
import { ArtalkConfig, LocalUser } from './config'
|
|
4
|
+
|
|
5
|
+
interface ErrorData { msg: string, data?: any }
|
|
6
|
+
interface ListFetchedArgs { params: Partial<ListFetchParams>, data?: ListData, error?: ErrorData }
|
|
7
|
+
|
|
8
|
+
/** EventName to EventPayload Type */
|
|
9
|
+
export interface EventPayloadMap {
|
|
10
|
+
'inited': undefined // Artalk 初始化后
|
|
11
|
+
'destroy': undefined // Artalk 销毁时
|
|
12
|
+
'list-fetch': Partial<ListFetchParams> // 评论列表请求时
|
|
13
|
+
'list-fetched': ListFetchedArgs // 评论列表请求后
|
|
14
|
+
'list-load': CommentData[] // 评论装载前
|
|
15
|
+
|
|
16
|
+
// TODO merge 'list-loaded' and 'list-error', for purpose of `once` 'list-loaded' and simplify
|
|
17
|
+
// example need bind 'list-loaded' and 'list-error' to same handler
|
|
18
|
+
// consider name it to 'list-fetched': { data: CommentData[], error?: { msg: string, data?: any } }
|
|
19
|
+
// and remove `list-load`
|
|
20
|
+
'list-loaded': CommentData[] // 评论装载后
|
|
21
|
+
'list-error': ErrorData // 评论加载错误时
|
|
22
|
+
|
|
23
|
+
'list-goto-first': undefined // 评论列表归位时
|
|
24
|
+
'list-reach-bottom': undefined // 评论列表滚动到底部时
|
|
25
|
+
|
|
26
|
+
'comment-inserted': CommentData // 评论插入后
|
|
27
|
+
'comment-updated': CommentData // 评论更新后
|
|
28
|
+
'comment-deleted': CommentData // 评论删除后
|
|
29
|
+
'comment-rendered': Comment // 评论节点渲染后
|
|
30
|
+
'unreads-updated': NotifyData[] // 未读消息变更时
|
|
31
|
+
'list-goto': number // 评论跳转时
|
|
32
|
+
'page-loaded': PageData // 页面数据更新后
|
|
33
|
+
'editor-submit': undefined // 编辑器提交时
|
|
34
|
+
'editor-submitted': undefined // 编辑器提交后
|
|
35
|
+
'user-changed': LocalUser // 本地用户数据变更时
|
|
36
|
+
'conf-loaded': ArtalkConfig // Artalk 配置变更时
|
|
37
|
+
'dark-mode-changed': boolean // 深色模式变更时
|
|
38
|
+
'sidebar-show': undefined // 侧边栏显示
|
|
39
|
+
'sidebar-hide': undefined // 侧边栏隐藏
|
|
40
|
+
}
|
package/types/index.ts
ADDED
package/types/plugin.ts
ADDED
package/types/sidebar.ts
ADDED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import Comment from './comment';
|
|
2
|
-
import ActionBtn from '../components/action-btn';
|
|
3
|
-
export default class RenderCtx {
|
|
4
|
-
comment: Comment;
|
|
5
|
-
get ctx(): import("../../types/context").default;
|
|
6
|
-
get data(): import("../../types/artalk-data").CommentData;
|
|
7
|
-
get conf(): import("../../types/artalk-config").default;
|
|
8
|
-
get cConf(): import("./comment").CommentConf;
|
|
9
|
-
$el: HTMLElement;
|
|
10
|
-
$main: HTMLElement;
|
|
11
|
-
$header: HTMLElement;
|
|
12
|
-
$headerNick: HTMLElement;
|
|
13
|
-
$headerBadgeWrap: HTMLElement;
|
|
14
|
-
$body: HTMLElement;
|
|
15
|
-
$content: HTMLElement;
|
|
16
|
-
$childrenWrap: HTMLElement | null;
|
|
17
|
-
$actions: HTMLElement;
|
|
18
|
-
voteBtnUp?: ActionBtn;
|
|
19
|
-
voteBtnDown?: ActionBtn;
|
|
20
|
-
$replyTo?: HTMLElement;
|
|
21
|
-
$replyAt?: HTMLElement;
|
|
22
|
-
constructor(comment: Comment);
|
|
23
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CommentData } from '../../types/artalk-data';
|
|
2
|
-
import Editor from './editor';
|
|
3
|
-
export interface EditModeManager {
|
|
4
|
-
editor: Editor;
|
|
5
|
-
comment?: CommentData;
|
|
6
|
-
setEdit: (comment: CommentData, $comment: HTMLElement) => void;
|
|
7
|
-
cancelEdit: () => void;
|
|
8
|
-
}
|
|
9
|
-
export declare function createEditModeManager(editor: Editor): EditModeManager;
|