@waline/client 2.15.8 → 3.0.0-alpha.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.
Files changed (139) hide show
  1. package/dist/comment.cjs +1 -1
  2. package/dist/comment.cjs.map +1 -1
  3. package/dist/comment.d.cts +2 -1
  4. package/dist/comment.d.mts +2 -1
  5. package/dist/comment.d.ts +2 -1
  6. package/dist/comment.js +1 -1
  7. package/dist/comment.js.map +1 -1
  8. package/dist/comment.mjs +1 -1
  9. package/dist/comment.mjs.map +1 -1
  10. package/dist/component.mjs +8 -1
  11. package/dist/component.mjs.map +1 -1
  12. package/dist/pageview.cjs +1 -1
  13. package/dist/pageview.cjs.map +1 -1
  14. package/dist/pageview.d.cts +2 -1
  15. package/dist/pageview.d.mts +2 -1
  16. package/dist/pageview.d.ts +2 -1
  17. package/dist/pageview.js +1 -1
  18. package/dist/pageview.js.map +1 -1
  19. package/dist/pageview.mjs +1 -1
  20. package/dist/pageview.mjs.map +1 -1
  21. package/dist/shim.cjs +8 -1
  22. package/dist/shim.cjs.map +1 -1
  23. package/dist/shim.d.cts +7 -82
  24. package/dist/shim.d.mts +7 -82
  25. package/dist/shim.mjs +8 -1
  26. package/dist/shim.mjs.map +1 -1
  27. package/dist/waline.cjs +53 -1
  28. package/dist/waline.cjs.map +1 -1
  29. package/dist/waline.css +1 -1
  30. package/dist/waline.css.map +1 -1
  31. package/dist/waline.d.cts +7 -82
  32. package/dist/waline.d.mts +7 -82
  33. package/dist/waline.d.ts +7 -82
  34. package/dist/waline.js +53 -1
  35. package/dist/waline.js.map +1 -1
  36. package/dist/waline.mjs +53 -1
  37. package/dist/waline.mjs.map +1 -1
  38. package/package.json +20 -53
  39. package/dist/api.cjs +0 -2
  40. package/dist/api.cjs.map +0 -1
  41. package/dist/api.d.cts +0 -445
  42. package/dist/api.d.mts +0 -445
  43. package/dist/api.d.ts +0 -445
  44. package/dist/api.mjs +0 -2
  45. package/dist/api.mjs.map +0 -1
  46. package/dist/legacy.umd.d.ts +0 -628
  47. package/dist/legacy.umd.js +0 -2
  48. package/dist/legacy.umd.js.map +0 -1
  49. package/src/api/articleCounter.ts +0 -82
  50. package/src/api/comment.ts +0 -258
  51. package/src/api/commentCount.ts +0 -33
  52. package/src/api/index.ts +0 -7
  53. package/src/api/login.ts +0 -96
  54. package/src/api/pageview.ts +0 -54
  55. package/src/api/recentComment.ts +0 -42
  56. package/src/api/user.ts +0 -44
  57. package/src/api/utils.ts +0 -46
  58. package/src/comment.ts +0 -69
  59. package/src/compact/convert.ts +0 -80
  60. package/src/compact/dropped.ts +0 -35
  61. package/src/compact/index.ts +0 -4
  62. package/src/compact/logger.ts +0 -5
  63. package/src/compact/v1.ts +0 -103
  64. package/src/compact/valine.ts +0 -132
  65. package/src/components/ArticleReaction.vue +0 -159
  66. package/src/components/CommentBox.vue +0 -807
  67. package/src/components/CommentCard.vue +0 -271
  68. package/src/components/Icons.ts +0 -181
  69. package/src/components/ImageWall.vue +0 -169
  70. package/src/components/WalineComment.vue +0 -353
  71. package/src/composables/index.ts +0 -6
  72. package/src/composables/inputs.ts +0 -17
  73. package/src/composables/like.ts +0 -13
  74. package/src/composables/reaction.ts +0 -15
  75. package/src/composables/recaptchaV3.ts +0 -19
  76. package/src/composables/turnstile.ts +0 -50
  77. package/src/composables/userInfo.ts +0 -16
  78. package/src/config/default.ts +0 -93
  79. package/src/config/highlighter.ts +0 -74
  80. package/src/config/i18n/en.ts +0 -53
  81. package/src/config/i18n/generate.ts +0 -58
  82. package/src/config/i18n/index.ts +0 -30
  83. package/src/config/i18n/jp.ts +0 -53
  84. package/src/config/i18n/pt-BR.ts +0 -53
  85. package/src/config/i18n/ru.ts +0 -53
  86. package/src/config/i18n/vi-VN.ts +0 -53
  87. package/src/config/i18n/zh-CN.ts +0 -53
  88. package/src/config/i18n/zh-TW.ts +0 -53
  89. package/src/config/index.ts +0 -3
  90. package/src/entries/api.ts +0 -1
  91. package/src/entries/comment.ts +0 -2
  92. package/src/entries/components.ts +0 -2
  93. package/src/entries/full.ts +0 -7
  94. package/src/entries/init.ts +0 -4
  95. package/src/entries/legacy.ts +0 -31
  96. package/src/entries/pageview.ts +0 -2
  97. package/src/init.ts +0 -112
  98. package/src/pageview.ts +0 -116
  99. package/src/shims-vue.d.ts +0 -6
  100. package/src/styles/base.scss +0 -67
  101. package/src/styles/card.scss +0 -258
  102. package/src/styles/config.scss +0 -52
  103. package/src/styles/emoji.scss +0 -137
  104. package/src/styles/gif.scss +0 -73
  105. package/src/styles/helpers/_svg.scss +0 -51
  106. package/src/styles/highlight.scss +0 -138
  107. package/src/styles/index.scss +0 -12
  108. package/src/styles/layout.scss +0 -105
  109. package/src/styles/meta.scss +0 -82
  110. package/src/styles/normalize.scss +0 -117
  111. package/src/styles/panel.scss +0 -286
  112. package/src/styles/reaction.scss +0 -103
  113. package/src/styles/recent.scss +0 -3
  114. package/src/styles/user-list.scss +0 -159
  115. package/src/typings/base.ts +0 -123
  116. package/src/typings/comment.ts +0 -94
  117. package/src/typings/index.ts +0 -5
  118. package/src/typings/locale.ts +0 -73
  119. package/src/typings/options.ts +0 -44
  120. package/src/typings/waline.ts +0 -251
  121. package/src/utils/config.ts +0 -122
  122. package/src/utils/darkmode.ts +0 -11
  123. package/src/utils/date.ts +0 -71
  124. package/src/utils/email.ts +0 -8
  125. package/src/utils/emoji.ts +0 -73
  126. package/src/utils/error.ts +0 -3
  127. package/src/utils/getRoot.ts +0 -8
  128. package/src/utils/image.ts +0 -10
  129. package/src/utils/index.ts +0 -13
  130. package/src/utils/markdown.ts +0 -41
  131. package/src/utils/markedMathExtension.ts +0 -54
  132. package/src/utils/path.ts +0 -15
  133. package/src/utils/query.ts +0 -2
  134. package/src/utils/userAgent.ts +0 -31
  135. package/src/utils/wordCount.ts +0 -31
  136. package/src/version.ts +0 -3
  137. package/src/widgets/index.ts +0 -2
  138. package/src/widgets/recentComments.ts +0 -93
  139. package/src/widgets/userList.ts +0 -136
@@ -1,53 +0,0 @@
1
- import { generateLocale } from './generate';
2
-
3
- export default generateLocale([
4
- 'NickName',
5
- 'NickName cannot be less than 3 bytes.',
6
- 'E-Mail',
7
- 'Please confirm your email address.',
8
- 'Website',
9
- 'Optional',
10
- 'Comment here...',
11
- 'No comment yet.',
12
- 'Submit',
13
- 'Like',
14
- 'Cancel like',
15
- 'Reply',
16
- 'Cancel reply',
17
- 'Comments',
18
- 'Refresh',
19
- 'Load More...',
20
- 'Preview',
21
- 'Emoji',
22
- 'Upload Image',
23
- 'seconds ago',
24
- 'minutes ago',
25
- 'hours ago',
26
- 'days ago',
27
- 'just now',
28
- 'Uploading',
29
- 'Login',
30
- 'logout',
31
- 'Admin',
32
- 'Sticky',
33
- 'Words',
34
- 'Please input comments between $0 and $1 words!\n Current word number: $2',
35
- 'Anonymous',
36
- 'Dwarves',
37
- 'Hobbits',
38
- 'Ents',
39
- 'Wizards',
40
- 'Elves',
41
- 'Maiar',
42
- 'GIF',
43
- 'Search GIF',
44
- 'Profile',
45
- 'Approved',
46
- 'Waiting',
47
- 'Spam',
48
- 'Unsticky',
49
- 'Oldest',
50
- 'Latest',
51
- 'Hottest',
52
- 'What do you think?',
53
- ]);
@@ -1,58 +0,0 @@
1
- import { type WalineLocale } from '../../typings/index.js';
2
-
3
- const localeKeys = [
4
- 'nick',
5
- 'nickError',
6
- 'mail',
7
- 'mailError',
8
- 'link',
9
- 'optional',
10
- 'placeholder',
11
- 'sofa',
12
- 'submit',
13
- 'like',
14
- 'cancelLike',
15
- 'reply',
16
- 'cancelReply',
17
- 'comment',
18
- 'refresh',
19
- 'more',
20
- 'preview',
21
- 'emoji',
22
- 'uploadImage',
23
- 'seconds',
24
- 'minutes',
25
- 'hours',
26
- 'days',
27
- 'now',
28
- 'uploading',
29
- 'login',
30
- 'logout',
31
- 'admin',
32
- 'sticky',
33
- 'word',
34
- 'wordHint',
35
- 'anonymous',
36
- 'level0',
37
- 'level1',
38
- 'level2',
39
- 'level3',
40
- 'level4',
41
- 'level5',
42
- 'gif',
43
- 'gifSearchPlaceholder',
44
- 'profile',
45
- 'approved',
46
- 'waiting',
47
- 'spam',
48
- 'unsticky',
49
- 'oldest',
50
- 'latest',
51
- 'hottest',
52
- 'reactionTitle',
53
- ];
54
-
55
- export const generateLocale = (locale: string[]): WalineLocale =>
56
- Object.fromEntries(
57
- locale.map((item, index) => [localeKeys[index], item]),
58
- ) as unknown as WalineLocale;
@@ -1,30 +0,0 @@
1
- /* eslint-disable @typescript-eslint/naming-convention */
2
- import en from './en.js';
3
- import jp from './jp.js';
4
- import ptBR from './pt-BR.js';
5
- import ru from './ru.js';
6
- import zhCN from './zh-CN.js';
7
- import zhTW from './zh-TW.js';
8
- import { type WalineLocale } from '../../typings/index.js';
9
-
10
- export type Locales = Record<string, WalineLocale>;
11
-
12
- export const DEFAULT_LOCALES: Locales = {
13
- zh: zhCN,
14
- 'zh-cn': zhCN,
15
- 'zh-CN': zhCN,
16
- 'zh-tw': zhTW,
17
- 'zh-TW': zhTW,
18
- en: en,
19
- 'en-US': en,
20
- 'en-us': en,
21
- jp: jp,
22
- ja: jp,
23
- 'jp-jp': jp,
24
- 'jp-JP': jp,
25
- 'pt-br': ptBR,
26
- 'pt-BR': ptBR,
27
- ru: ru,
28
- 'ru-ru': ru,
29
- 'ru-RU': ru,
30
- };
@@ -1,53 +0,0 @@
1
- import { generateLocale } from './generate';
2
-
3
- export default generateLocale([
4
- 'ニックネーム',
5
- '3バイト以上のニックネームをご入力ください.',
6
- 'メールアドレス',
7
- 'メールアドレスをご確認ください.',
8
- 'サイト',
9
- 'オプション',
10
- 'ここにコメント',
11
- 'コメントしましょう~',
12
- '提出する',
13
- 'Like',
14
- 'Cancel like',
15
- '返信する',
16
- 'キャンセル',
17
- 'コメント',
18
- '更新',
19
- 'さらに読み込む',
20
- 'プレビュー',
21
- '絵文字',
22
- '画像をアップロード',
23
- '秒前',
24
- '分前',
25
- '時間前',
26
- '日前',
27
- 'たっだ今',
28
- 'アップロード',
29
- 'ログインする',
30
- 'ログアウト',
31
- '管理者',
32
- 'トップに置く',
33
- 'ワード',
34
- 'コメントは $0 から $1 ワードの間でなければなりません!\n 現在の単語番号: $2',
35
- '匿名',
36
- 'うえにん',
37
- 'なかにん',
38
- 'しもおし',
39
- '特にしもおし',
40
- 'かげ',
41
- 'なぬし',
42
- 'GIF',
43
- '探す GIF',
44
- '個人情報',
45
- '承認済み',
46
- '待っている',
47
- 'スパム',
48
- 'べたつかない',
49
- '逆順',
50
- '正順',
51
- '人気順',
52
- 'どう思いますか?',
53
- ]);
@@ -1,53 +0,0 @@
1
- import { generateLocale } from './generate';
2
-
3
- export default generateLocale([
4
- 'Apelido',
5
- 'Apelido não pode ser menor que 3 bytes.',
6
- 'E-Mail',
7
- 'Por favor, confirme seu endereço de e-mail.',
8
- 'Website',
9
- 'Opcional',
10
- 'Comente aqui...',
11
- 'Nenhum comentário, ainda.',
12
- 'Enviar',
13
- 'Like',
14
- 'Cancel like',
15
- 'Responder',
16
- 'Cancelar resposta',
17
- 'Comentários',
18
- 'Refrescar',
19
- 'Carregar Mais...',
20
- 'Visualizar',
21
- 'Emoji',
22
- 'Enviar Imagem',
23
- 'segundos atrás',
24
- 'minutos atrás',
25
- 'horas atrás',
26
- 'dias atrás',
27
- 'agora mesmo',
28
- 'Enviando',
29
- 'Entrar',
30
- 'Sair',
31
- 'Admin',
32
- 'Sticky',
33
- 'Palavras',
34
- 'Favor enviar comentário com $0 a $1 palavras!\n Número de palavras atuais: $2',
35
- 'Anônimo',
36
- 'Dwarves',
37
- 'Hobbits',
38
- 'Ents',
39
- 'Wizards',
40
- 'Elves',
41
- 'Maiar',
42
- 'GIF',
43
- 'Pesquisar GIF',
44
- 'informação pessoal',
45
- 'Aprovado',
46
- 'Espera',
47
- 'Spam',
48
- 'Unsticky',
49
- 'Mais velho',
50
- 'Mais recentes',
51
- 'Mais quente',
52
- 'O que você acha?',
53
- ]);
@@ -1,53 +0,0 @@
1
- import { generateLocale } from './generate';
2
-
3
- export default generateLocale([
4
- 'Псевдоним',
5
- 'Никнейм не может быть меньше 3 байт.',
6
- 'Эл. адрес',
7
- 'Пожалуйста, подтвердите адрес вашей электронной почты.',
8
- 'Веб-сайт',
9
- 'Необязательный',
10
- 'Комментарий здесь...',
11
- 'Пока нет комментариев.',
12
- 'Отправить',
13
- 'Like',
14
- 'Cancel like',
15
- 'Отвечать',
16
- 'Отменить ответ',
17
- 'Комментарии',
18
- 'Обновить',
19
- 'Загрузи больше...',
20
- 'Превью',
21
- 'эмодзи',
22
- 'Загрузить изображение',
23
- 'секунд назад',
24
- 'несколько минут назад',
25
- 'несколько часов назад',
26
- 'дней назад',
27
- 'прямо сейчас',
28
- 'Загрузка',
29
- 'Авторизоваться',
30
- 'Выход из системы',
31
- 'Админ',
32
- 'Липкий',
33
- 'Слова',
34
- 'Пожалуйста, введите комментарии от $0 до $1 слов!\nНомер текущего слова: $2',
35
- 'Анонимный',
36
- 'Dwarves',
37
- 'Hobbits',
38
- 'Ents',
39
- 'Wizards',
40
- 'Elves',
41
- 'Maiar',
42
- 'GIF',
43
- 'Поиск GIF',
44
- 'Персональные данные',
45
- 'Одобренный',
46
- 'Ожидающий',
47
- 'Спам',
48
- 'Нелипкий',
49
- 'самый старый',
50
- 'последний',
51
- 'самый горячий',
52
- 'Что вы думаете?',
53
- ]);
@@ -1,53 +0,0 @@
1
- import { generateLocale } from './generate';
2
-
3
- export default generateLocale([
4
- 'Tên',
5
- 'Tên không được nhỏ hơn 3 ký tự.',
6
- 'E-Mail',
7
- 'Vui lòng xác nhập địa chỉ email của bạn.',
8
- 'Website',
9
- 'Tùy chọn',
10
- 'Hãy bình luận có văn hoá!',
11
- 'Chưa có bình luận',
12
- 'Gửi',
13
- 'Thích',
14
- 'Bỏ thích',
15
- 'Trả lời',
16
- 'Hủy bỏ',
17
- 'bình luận',
18
- 'Làm mới',
19
- 'Tải thêm...',
20
- 'Xem trước',
21
- 'Emoji',
22
- 'Tải lên hình ảnh',
23
- 'giây trước',
24
- 'phút trước',
25
- 'giờ trước',
26
- 'ngày trước',
27
- 'Vừa xong',
28
- 'Đang tải lên',
29
- 'Đăng nhập',
30
- 'đăng xuất',
31
- 'Quản trị viên',
32
- 'Dính',
33
- 'từ',
34
- 'Bình luận phải có độ dài giữa $0 và $1 từ!\n Số từ hiện tại: $2',
35
- 'Vô danh',
36
- 'Người lùn',
37
- 'Người tí hon',
38
- 'Thần rừng',
39
- 'Pháp sư',
40
- 'Tiên tộc',
41
- 'Maiar',
42
- 'Ảnh GIF',
43
- 'Tìm kiếm ảnh GIF',
44
- 'thông tin cá nhân',
45
- 'Đã được phê duyệt',
46
- 'Đang chờ đợi',
47
- 'Thư rác',
48
- 'Không dính',
49
- 'lâu đời nhất',
50
- 'muộn nhất',
51
- 'nóng nhất',
52
- 'What do you think?',
53
- ]);
@@ -1,53 +0,0 @@
1
- import { generateLocale } from './generate';
2
-
3
- export default generateLocale([
4
- '昵称',
5
- '昵称不能少于3个字符',
6
- '邮箱',
7
- '请填写正确的邮件地址',
8
- '网址',
9
- '可选',
10
- '欢迎评论',
11
- '来发评论吧~',
12
- '提交',
13
- '喜欢',
14
- '取消喜欢',
15
- '回复',
16
- '取消回复',
17
- '评论',
18
- '刷新',
19
- '加载更多...',
20
- '预览',
21
- '表情',
22
- '上传图片',
23
- '秒前',
24
- '分钟前',
25
- '小时前',
26
- '天前',
27
- '刚刚',
28
- '正在上传',
29
- '登录',
30
- '退出',
31
- '博主',
32
- '置顶',
33
- '字',
34
- '评论字数应在 $0 到 $1 字之间!\n当前字数:$2',
35
- '匿名',
36
- '潜水',
37
- '冒泡',
38
- '吐槽',
39
- '活跃',
40
- '话痨',
41
- '传说',
42
- '表情包',
43
- '搜索表情包',
44
- '个人资料',
45
- '通过',
46
- '待审核',
47
- '垃圾',
48
- '取消置顶',
49
- '按倒序',
50
- '按正序',
51
- '按热度',
52
- '你认为这篇文章怎么样?',
53
- ]);
@@ -1,53 +0,0 @@
1
- import { generateLocale } from './generate';
2
-
3
- export default generateLocale([
4
- '暱稱',
5
- '暱稱不能少於3個字元',
6
- '郵箱',
7
- '請填寫正確的郵件地址',
8
- '網址',
9
- '可選',
10
- '歡迎留言',
11
- '來發留言吧~',
12
- '送出',
13
- '喜歡',
14
- '取消喜歡',
15
- '回覆',
16
- '取消回覆',
17
- '留言',
18
- '重整',
19
- '載入更多...',
20
- '預覽',
21
- '表情',
22
- '上傳圖片',
23
- '秒前',
24
- '分鐘前',
25
- '小時前',
26
- '天前',
27
- '剛剛',
28
- '正在上傳',
29
- '登入',
30
- '登出',
31
- '管理者',
32
- '置頂',
33
- '字',
34
- '留言字數應在 $0 到 $1 字之間!\n目前字數:$2',
35
- '匿名',
36
- '潛水',
37
- '冒泡',
38
- '吐槽',
39
- '活躍',
40
- '多話',
41
- '傳說',
42
- '表情包',
43
- '搜尋表情包',
44
- '個人資料',
45
- '通過',
46
- '待審核',
47
- '垃圾',
48
- '取消置頂',
49
- '最早',
50
- '最新',
51
- '熱門',
52
- '你認為這篇文章怎麼樣?',
53
- ]);
@@ -1,3 +0,0 @@
1
- export * from './default';
2
- export * from './highlighter';
3
- export * from './i18n';
@@ -1 +0,0 @@
1
- export * from '../api';
@@ -1,2 +0,0 @@
1
- export * from '../comment';
2
- export * from '../version';
@@ -1,2 +0,0 @@
1
- export { default as Waline } from '../components/WalineComment.vue';
2
- export * from '../version';
@@ -1,7 +0,0 @@
1
- export { DEFAULT_LOCALES as defaultLocales } from '../config';
2
- export * from '../comment';
3
- export * from '../init';
4
- export * from '../pageview';
5
- export * from '../typings';
6
- export * from '../version';
7
- export * from '../widgets';
@@ -1,4 +0,0 @@
1
- export * from '../init';
2
- export { DEFAULT_LOCALES as defaultLocales } from '../config';
3
- export * from '../typings';
4
- export * from '../version';
@@ -1,31 +0,0 @@
1
- import {
2
- type DeprecatedValineOptions,
3
- type DeprecatedWalineOptions,
4
- covertOptions,
5
- warning,
6
- } from '../compact/index.js';
7
- import { init, WalineInstance } from '../init.js';
8
- import { type WalineInitOptions } from '../typings/index.js';
9
-
10
- export { WalineInstance } from '../init.js';
11
-
12
- warning(
13
- ' This is a legacy package compatible with Valine and Waline@v1, please switch to Waline@v2 using https://<CDN.LINK>/@waline/client/dist/waline.js instead!',
14
- );
15
-
16
- // inject css styles
17
-
18
- const link = document.createElement('link');
19
-
20
- link.rel = 'stylesheet';
21
- link.href = '//unpkg.com/@waline/client@v2/dist/waline.css';
22
-
23
- document.head.appendChild(link);
24
-
25
- export default function legacyWaline(
26
- options: WalineInitOptions &
27
- DeprecatedValineOptions &
28
- DeprecatedWalineOptions,
29
- ): WalineInstance | null {
30
- return init(covertOptions(options));
31
- }
@@ -1,2 +0,0 @@
1
- export * from '../version';
2
- export * from '../pageview';
package/src/init.ts DELETED
@@ -1,112 +0,0 @@
1
- import { createApp, h, reactive, watchEffect } from 'vue';
2
-
3
- import { commentCount } from './comment.js';
4
- import Waline from './components/WalineComment.vue';
5
- import { pageviewCount } from './pageview.js';
6
- import { type WalineInitOptions } from './typings/index.js';
7
- import { getRoot } from './utils/index.js';
8
-
9
- export interface WalineInstance {
10
- /**
11
- * Waline 被挂载到的元素
12
- *
13
- * @description 当通过 `el: null` 初始化,值为 `null`
14
- *
15
- * Element where Waline is mounted
16
- *
17
- * @description when initialized with `el: null`, it will be `null`
18
- */
19
- el: HTMLElement | null;
20
-
21
- /**
22
- * 更新 Waline 实例
23
- *
24
- * @description 只要不设置`path` 选项,更新时它就会被重置为 `windows.location.pathname`
25
- *
26
- * Update Waline instance
27
- *
28
- * @description when not setting `path` option, it will be reset to `window.location.pathname`
29
- */
30
- update: (newOptions?: Partial<Omit<WalineInitOptions, 'el'>>) => void;
31
-
32
- /**
33
- * 取消挂载并摧毁 Waline 实例
34
- *
35
- * Unmount and destroy Waline instance
36
- */
37
- destroy: () => void;
38
- }
39
-
40
- export const init = ({
41
- el = '#waline',
42
- path = window.location.pathname,
43
- comment = false,
44
- pageview = false,
45
- ...initProps
46
- }: WalineInitOptions): WalineInstance | null => {
47
- // check el element
48
- const root = el ? getRoot(el) : null;
49
-
50
- // check root
51
- if (el && !root) throw new Error(`Option 'el' do not match any domElement!`);
52
-
53
- // check serverURL
54
- if (!initProps.serverURL) throw new Error("Option 'serverURL' is missing!");
55
-
56
- const props = reactive({ ...initProps });
57
- const state = reactive({ comment, pageview, path });
58
-
59
- const updateCommentCount = (): void => {
60
- if (state.comment)
61
- commentCount({
62
- serverURL: props.serverURL,
63
- path: state.path,
64
- selector: typeof state.comment === 'string' ? state.comment : undefined,
65
- });
66
- };
67
-
68
- const updatePageviewCount = (): void => {
69
- if (state.pageview)
70
- pageviewCount({
71
- serverURL: props.serverURL,
72
- path: state.path,
73
- selector:
74
- typeof state.pageview === 'string' ? state.pageview : undefined,
75
- });
76
- };
77
-
78
- const app = root
79
- ? createApp(() => h(Waline, { path: state.path, ...props }))
80
- : null;
81
-
82
- if (app) app.mount(root!);
83
-
84
- const stopComment = watchEffect(updateCommentCount);
85
- const stopPageview = watchEffect(updatePageviewCount);
86
-
87
- return {
88
- el: root,
89
- update: ({
90
- comment,
91
- pageview,
92
- path = window.location.pathname,
93
- ...newProps
94
- }: Partial<Omit<WalineInitOptions, 'el'>> = {}): void => {
95
- Object.entries(newProps).forEach(([key, value]) => {
96
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
97
- // @ts-ignore
98
- // eslint-disable-next-line
99
- props[key] = value;
100
- });
101
-
102
- state.path = path;
103
- if (comment !== undefined) state.comment = comment;
104
- if (pageview !== undefined) state.pageview = pageview;
105
- },
106
- destroy: (): void => {
107
- app?.unmount();
108
- stopComment();
109
- stopPageview();
110
- },
111
- };
112
- };