@waline/client 1.6.0 → 2.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 (94) hide show
  1. package/dist/component.js +2 -0
  2. package/dist/component.js.map +1 -0
  3. package/dist/pageview.cjs.js +2 -0
  4. package/dist/pageview.cjs.js.map +1 -0
  5. package/dist/pageview.d.ts +33 -0
  6. package/dist/pageview.esm.js +2 -0
  7. package/dist/pageview.esm.js.map +1 -0
  8. package/dist/pageview.js +2 -0
  9. package/dist/pageview.js.map +1 -0
  10. package/dist/{Waline.min.d.ts → shim.d.ts} +192 -261
  11. package/dist/{Waline.noStyle.d.ts → shim.esm.d.ts} +192 -261
  12. package/dist/shim.esm.js +2 -0
  13. package/dist/shim.esm.js.map +1 -0
  14. package/dist/shim.js +2 -0
  15. package/dist/shim.js.map +1 -0
  16. package/dist/waline.cjs.d.ts +388 -0
  17. package/dist/waline.cjs.js +2 -0
  18. package/dist/waline.cjs.js.map +1 -0
  19. package/dist/waline.css +1 -0
  20. package/dist/waline.css.map +1 -0
  21. package/dist/waline.d.ts +388 -0
  22. package/dist/waline.esm.d.ts +388 -0
  23. package/dist/waline.esm.js +2 -0
  24. package/dist/waline.esm.js.map +1 -0
  25. package/dist/waline.js +2 -0
  26. package/dist/waline.js.map +1 -0
  27. package/package.json +33 -18
  28. package/src/comment.ts +39 -0
  29. package/src/components/CommentBox.vue +667 -0
  30. package/src/components/CommentCard.vue +125 -0
  31. package/src/components/Icons.ts +124 -0
  32. package/src/components/Waline.vue +359 -0
  33. package/src/composables/index.ts +3 -0
  34. package/src/composables/inputs.ts +29 -0
  35. package/src/composables/store.ts +38 -0
  36. package/src/composables/userInfo.ts +27 -0
  37. package/src/config/default.ts +21 -0
  38. package/src/config/i18n/en.ts +34 -0
  39. package/src/config/i18n/generate.ts +39 -0
  40. package/src/config/i18n/index.ts +30 -0
  41. package/src/config/i18n/jp.ts +34 -0
  42. package/src/config/i18n/pt-BR.ts +34 -0
  43. package/src/config/i18n/ru.ts +34 -0
  44. package/src/config/i18n/vi-VN.ts +34 -0
  45. package/src/config/i18n/zh-CN.ts +34 -0
  46. package/src/config/i18n/zh-TW.ts +34 -0
  47. package/src/config/index.ts +2 -0
  48. package/src/entrys/components.ts +2 -0
  49. package/src/entrys/full.ts +7 -0
  50. package/src/entrys/init.ts +4 -0
  51. package/src/entrys/pageview.ts +2 -0
  52. package/src/init.ts +92 -0
  53. package/src/pageview.ts +100 -0
  54. package/src/shims-hanabi.d.ts +9 -0
  55. package/src/shims-vue.d.ts +5 -0
  56. package/src/styles/base.scss +67 -0
  57. package/src/styles/card.scss +223 -0
  58. package/src/styles/config.scss +52 -0
  59. package/src/styles/emoji.scss +118 -0
  60. package/src/styles/highlight.scss +135 -0
  61. package/src/styles/index.scss +12 -0
  62. package/src/styles/layout.scss +78 -0
  63. package/src/styles/nomalize.scss +112 -0
  64. package/src/styles/panel.scss +293 -0
  65. package/src/styles/recent.scss +3 -0
  66. package/src/typings/base.ts +54 -0
  67. package/src/typings/comment.ts +25 -0
  68. package/src/typings/index.ts +5 -0
  69. package/src/typings/locale.ts +32 -0
  70. package/src/typings/options.ts +41 -0
  71. package/src/typings/waline.ts +208 -0
  72. package/src/utils/config.ts +99 -0
  73. package/src/utils/darkmode.ts +11 -0
  74. package/src/utils/data.ts +10 -0
  75. package/src/utils/emoji.ts +75 -0
  76. package/src/utils/error.ts +3 -0
  77. package/src/utils/fetch.ts +177 -0
  78. package/src/utils/getRoot.ts +8 -0
  79. package/src/utils/index.ts +13 -0
  80. package/src/utils/markdown.ts +41 -0
  81. package/src/utils/markedMathExtension.ts +52 -0
  82. package/src/utils/path.ts +15 -0
  83. package/src/utils/query.ts +2 -0
  84. package/src/utils/timeAgo.ts +75 -0
  85. package/src/utils/userInfo.ts +26 -0
  86. package/src/utils/wordCount.ts +20 -0
  87. package/src/version.ts +3 -0
  88. package/src/widgets/index.ts +1 -0
  89. package/src/widgets/recentComments.ts +52 -0
  90. package/dist/Waline.min.js +0 -2
  91. package/dist/Waline.min.js.map +0 -1
  92. package/dist/Waline.noStyle.js +0 -2
  93. package/dist/Waline.noStyle.js.map +0 -1
  94. package/dist/index.html +0 -11
@@ -0,0 +1,223 @@
1
+ .wl-cards {
2
+ .wl-item {
3
+ position: relative;
4
+ display: flex;
5
+ padding: 0.5em;
6
+
7
+ &:last-child .wl-card {
8
+ border-bottom: none;
9
+ }
10
+ }
11
+
12
+ .wl-card {
13
+ .wl-item {
14
+ padding-right: 0;
15
+ }
16
+ }
17
+
18
+ .wl-user {
19
+ --avatar-size: var(--waline-avatar-size);
20
+
21
+ @media (max-width: 720px) {
22
+ --avatar-size: var(--waline-m-avatar-size);
23
+ }
24
+
25
+ position: relative;
26
+ margin-right: 0.75em;
27
+
28
+ img {
29
+ width: var(--avatar-size);
30
+ height: var(--avatar-size);
31
+ border-radius: var(--waline-avatar-radius);
32
+ box-shadow: var(--waline-box-shadow);
33
+ }
34
+
35
+ .verified-icon {
36
+ position: absolute;
37
+ top: calc(var(--avatar-size) * 3 / 4);
38
+ left: calc(var(--avatar-size) * 3 / 4);
39
+
40
+ border-radius: 50%;
41
+
42
+ background: var(--waline-bgcolor);
43
+ box-shadow: var(--waline-box-shadow);
44
+ }
45
+ }
46
+ }
47
+
48
+ .wl-card {
49
+ flex: 1;
50
+ width: 0;
51
+ padding-bottom: 0.5em;
52
+ border-bottom: 1px dashed var(--waline-border-color);
53
+
54
+ &:first-child {
55
+ margin-left: 1em;
56
+ }
57
+
58
+ .wl-head {
59
+ line-height: 1.5;
60
+ }
61
+
62
+ .wl-nick {
63
+ position: relative;
64
+
65
+ display: inline-block;
66
+
67
+ margin-right: 0.5em;
68
+
69
+ font-weight: bold;
70
+ font-size: 0.875em;
71
+ line-height: 1;
72
+ text-decoration: none;
73
+
74
+ svg {
75
+ position: relative;
76
+ bottom: -0.125em;
77
+ line-height: 1;
78
+ }
79
+ }
80
+
81
+ span.wl-nick {
82
+ color: var(--waline-dark-grey);
83
+ }
84
+
85
+ .wl-badge {
86
+ display: inline-block;
87
+
88
+ margin-right: 0.5em;
89
+ padding: 0 0.3em;
90
+ border-radius: 3px;
91
+
92
+ background: var(--waline-badge-color);
93
+ color: var(--waline-white);
94
+
95
+ font-size: var(--waline-badge-font-size);
96
+ }
97
+
98
+ .wl-time {
99
+ margin-right: 0.875em;
100
+ color: var(--waline-info-color);
101
+ font-size: 0.75em;
102
+ }
103
+
104
+ .wl-reply {
105
+ float: right;
106
+
107
+ padding: 4px;
108
+ border: none;
109
+
110
+ background: transparent;
111
+ color: var(--waline-color);
112
+
113
+ line-height: 1;
114
+
115
+ cursor: pointer;
116
+
117
+ transition: color 0.2s ease;
118
+
119
+ &:hover {
120
+ color: var(--waline-theme-color);
121
+ }
122
+
123
+ &.active {
124
+ color: var(--waline-active-color);
125
+ }
126
+ }
127
+
128
+ .wl-meta {
129
+ position: relative;
130
+ line-height: 1;
131
+
132
+ > span {
133
+ display: inline-block;
134
+
135
+ margin-right: 0.25em;
136
+ padding: 2px 4px;
137
+ border-radius: 0.2em;
138
+
139
+ background: var(--waline-info-bgcolor);
140
+ color: var(--waline-info-color);
141
+
142
+ font-size: var(--waline-info-font-size);
143
+ line-height: 1.5;
144
+
145
+ @media (max-width: 520px) {
146
+ display: none;
147
+ }
148
+
149
+ &:empty {
150
+ display: none;
151
+ }
152
+ }
153
+ }
154
+
155
+ .wl-content {
156
+ position: relative;
157
+
158
+ margin-bottom: 0.75em;
159
+ padding-top: 0.625em;
160
+
161
+ font-size: 0.875em;
162
+ line-height: 2;
163
+ word-wrap: break-word;
164
+
165
+ &.expand {
166
+ overflow: hidden;
167
+ max-height: 8em;
168
+ cursor: pointer;
169
+
170
+ &::before {
171
+ content: '';
172
+
173
+ position: absolute;
174
+ top: 0;
175
+ bottom: 3.15em;
176
+ left: 0;
177
+ z-index: 999;
178
+
179
+ display: block;
180
+
181
+ width: 100%;
182
+
183
+ background: linear-gradient(180deg, #000, rgb(255 255 255 / 90%));
184
+ }
185
+
186
+ &::after {
187
+ content: attr(data-expand);
188
+
189
+ position: absolute;
190
+ bottom: 0;
191
+ left: 0;
192
+ z-index: 999;
193
+
194
+ display: block;
195
+
196
+ width: 100%;
197
+ height: 3.15em;
198
+
199
+ background: rgb(255 255 255 / 90%);
200
+ color: #828586;
201
+
202
+ line-height: 3.15em;
203
+ text-align: center;
204
+ }
205
+ }
206
+
207
+ > *:first-child {
208
+ margin-top: 0;
209
+ }
210
+
211
+ > *:last-child {
212
+ margin-bottom: 0;
213
+ }
214
+ }
215
+
216
+ .wl-quote {
217
+ border-left: 1px dashed rgb(237 237 237 / 50%);
218
+
219
+ .wl-user {
220
+ --avatar-size: var(--waline-m-avatar-size);
221
+ }
222
+ }
223
+ }
@@ -0,0 +1,52 @@
1
+ :root {
2
+ // font-size
3
+ --waline-font-size: 16px;
4
+
5
+ // regular colors
6
+ --waline-white: #fff;
7
+ --waline-light-grey: #999;
8
+ --waline-dark-grey: #666;
9
+
10
+ // theme colors
11
+ --waline-theme-color: #27ae60;
12
+ --waline-active-color: #2ecc71;
13
+
14
+ // layout colors
15
+ --waline-color: #444;
16
+ --waline-bgcolor: #fff;
17
+ --waline-bgcolor-light: #f8f8f8;
18
+ --waline-bgcolor-hover: #f0f0f0;
19
+ --waline-border-color: #ddd;
20
+ --waline-disable-bgcolor: #f8f8f8;
21
+ --waline-disable-color: #000;
22
+ --waline-code-bgcolor: #282c34;
23
+
24
+ // special colors
25
+ --waline-bq-color: #f0f0f0;
26
+
27
+ // avatar
28
+ --waline-avatar-size: 3.25rem;
29
+ --waline-m-avatar-size: calc(var(--waline-avatar-size) * 9 / 13);
30
+
31
+ // badge
32
+ --waline-badge-color: #3498db;
33
+ --waline-badge-font-size: 0.775em;
34
+
35
+ // info
36
+ --waline-info-bgcolor: #f8f8f8;
37
+ --waline-info-color: #999;
38
+ --waline-info-font-size: 0.625em;
39
+
40
+ // ====render choises====
41
+ // ** using border **
42
+ --waline-border: 1px solid var(--waline-border-color);
43
+ --waline-avatar-radius: 50%;
44
+ --waline-box-shadow: none;
45
+
46
+ // ** using box-shadow **
47
+ // --waline-border: none;
48
+ // Light:
49
+ // --waline-box-shadow: 0 12px 40px rgb(134 151 168 / 25%);
50
+ // Dark:
51
+ // --waline-box-shadow: 0 12px 40px #0f0e0d
52
+ }
@@ -0,0 +1,118 @@
1
+ @mixin emoji() {
2
+ .wl-emoji-popup {
3
+ position: absolute;
4
+ top: 100%;
5
+ left: 1.25em;
6
+ z-index: 10;
7
+
8
+ max-width: 526px;
9
+ border: var(--waline-border);
10
+ border-radius: 6px;
11
+
12
+ background: var(--waline-bgcolor);
13
+ box-shadow: var(--waline-box-shadow);
14
+
15
+ opacity: 0;
16
+ visibility: hidden;
17
+
18
+ transition: transform 0.2s ease-out, opacity 0.2s ease-out;
19
+ transform: scale(0.9, 0.9);
20
+ transform-origin: 0 0;
21
+
22
+ &.display {
23
+ opacity: 1;
24
+ visibility: visible;
25
+ transform: none;
26
+ }
27
+
28
+ button {
29
+ display: inline-block;
30
+ vertical-align: middle;
31
+
32
+ width: 2em;
33
+ margin: 0.125em;
34
+ padding: 0;
35
+ border-width: 0;
36
+
37
+ background: transparent;
38
+
39
+ font-size: inherit;
40
+ line-height: 2;
41
+ text-align: center;
42
+
43
+ cursor: pointer;
44
+
45
+ &:hover {
46
+ background: var(--waline-bgcolor-hover);
47
+ }
48
+ }
49
+
50
+ .wl-emoji {
51
+ display: inline-block;
52
+ vertical-align: middle;
53
+ max-width: 1.5em;
54
+ max-height: 1.5em;
55
+ }
56
+
57
+ .wl-tab-wrapper {
58
+ overflow-y: auto;
59
+ max-height: 145px;
60
+ padding: 0.5em;
61
+
62
+ &::-webkit-scrollbar {
63
+ width: 6px;
64
+ height: 6px;
65
+ }
66
+
67
+ &::-webkit-scrollbar-track-piece:vertical {
68
+ -webkit-border-radius: 6px;
69
+ border-radius: 6px;
70
+ background: rgb(0 0 0 / 10%);
71
+ }
72
+
73
+ &::-webkit-scrollbar-thumb:vertical {
74
+ width: 6px;
75
+ -webkit-border-radius: 6px;
76
+ border-radius: 6px;
77
+ background: var(--waline-theme-color);
78
+ }
79
+ }
80
+
81
+ .wl-tabs {
82
+ position: relative;
83
+ height: 2em;
84
+ padding: 0 6px;
85
+
86
+ &::before {
87
+ content: ' ';
88
+
89
+ position: absolute;
90
+ top: 0;
91
+ right: 0;
92
+ left: 0;
93
+ z-index: 2;
94
+
95
+ height: 1px;
96
+
97
+ background: var(--waline-border-color);
98
+ }
99
+ }
100
+
101
+ .wl-tab {
102
+ position: relative;
103
+ margin: 0;
104
+ padding: 0 0.5em;
105
+
106
+ &.active {
107
+ z-index: 3;
108
+
109
+ border: 1px solid var(--waline-border-color);
110
+ border-top-width: 0;
111
+ border-bottom-right-radius: 6px;
112
+ border-bottom-left-radius: 6px;
113
+
114
+ background: var(--waline-bgcolor);
115
+ }
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,135 @@
1
+ // should only effect waline content
2
+ .wl-content {
3
+ pre,
4
+ pre[class*='language-'] {
5
+ overflow: auto;
6
+
7
+ margin: 0.75rem 0;
8
+ padding: 1rem 1.25rem;
9
+ border-radius: 6px;
10
+
11
+ background: var(--waline-code-bgcolor);
12
+
13
+ line-height: 1.4;
14
+
15
+ code {
16
+ padding: 0;
17
+ border-radius: 0;
18
+ background: transparent !important;
19
+ color: #bbb;
20
+ }
21
+ }
22
+
23
+ /**
24
+ * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
25
+ * Based on https://github.com/chriskempson/tomorrow-theme
26
+ * @author Rose Pritchard
27
+ */
28
+ code[class*='language-'],
29
+ pre[class*='language-'] {
30
+ background: none;
31
+ color: #ccc;
32
+
33
+ font-size: 1em;
34
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
35
+ text-align: left;
36
+ white-space: pre;
37
+ word-spacing: normal;
38
+ word-wrap: normal;
39
+ word-break: normal;
40
+ tab-size: 4;
41
+ hyphens: none;
42
+ }
43
+
44
+ /* Code blocks */
45
+ pre[class*='language-'] {
46
+ overflow: auto;
47
+ }
48
+
49
+ :not(pre) > code[class*='language-'],
50
+ pre[class*='language-'] {
51
+ background: #2d2d2d;
52
+ }
53
+
54
+ /* Inline code */
55
+ :not(pre) > code[class*='language-'] {
56
+ padding: 0.1em;
57
+ border-radius: 0.3em;
58
+ white-space: normal;
59
+ }
60
+
61
+ .token.comment,
62
+ .token.block-comment,
63
+ .token.prolog,
64
+ .token.doctype,
65
+ .token.cdata {
66
+ color: #999;
67
+ }
68
+
69
+ .token.punctuation {
70
+ color: #ccc;
71
+ }
72
+
73
+ .token.tag,
74
+ .token.attr-name,
75
+ .token.namespace,
76
+ .token.deleted {
77
+ color: #e2777a;
78
+ }
79
+
80
+ .token.function-name {
81
+ color: #6196cc;
82
+ }
83
+
84
+ .token.boolean,
85
+ .token.number,
86
+ .token.function {
87
+ color: #f08d49;
88
+ }
89
+
90
+ .token.property,
91
+ .token.class-name,
92
+ .token.constant,
93
+ .token.symbol {
94
+ color: #f8c555;
95
+ }
96
+
97
+ .token.selector,
98
+ .token.important,
99
+ .token.atrule,
100
+ .token.keyword,
101
+ .token.builtin {
102
+ color: #cc99cd;
103
+ }
104
+
105
+ .token.string,
106
+ .token.char,
107
+ .token.attr-value,
108
+ .token.regex,
109
+ .token.variable {
110
+ color: #7ec699;
111
+ }
112
+
113
+ .token.operator,
114
+ .token.entity,
115
+ .token.url {
116
+ color: #67cdcc;
117
+ }
118
+
119
+ .token.important,
120
+ .token.bold {
121
+ font-weight: bold;
122
+ }
123
+
124
+ .token.italic {
125
+ font-style: italic;
126
+ }
127
+
128
+ .token.entity {
129
+ cursor: help;
130
+ }
131
+
132
+ .token.inserted {
133
+ color: #008000;
134
+ }
135
+ }
@@ -0,0 +1,12 @@
1
+ @use 'config';
2
+ @use 'nomalize';
3
+
4
+ @use 'base';
5
+
6
+ @use 'panel';
7
+ @use 'card';
8
+ @use 'layout';
9
+
10
+ @use 'highlight';
11
+
12
+ @use 'recent';
@@ -0,0 +1,78 @@
1
+ .wl-close-icon {
2
+ color: var(--waline-border-color);
3
+ }
4
+
5
+ .wl-content {
6
+ // remain for historical reasons
7
+ .vemoji,
8
+ .wl-emoji {
9
+ display: inline-block;
10
+ vertical-align: middle;
11
+ width: 1.25em;
12
+ margin: 0.25em;
13
+ }
14
+
15
+ .wl-tex {
16
+ background: var(--waline-info-bgcolor);
17
+ color: var(--waline-info-color);
18
+ }
19
+
20
+ span.wl-tex {
21
+ display: inline-block;
22
+
23
+ margin-right: 0.25em;
24
+ padding: 2px 4px;
25
+ border-radius: 0.2em;
26
+
27
+ font-size: var(--waline-info-font-size);
28
+ line-height: 1.5;
29
+ }
30
+
31
+ p.wl-tex {
32
+ text-align: center;
33
+ }
34
+
35
+ // katex support
36
+ .katex-display {
37
+ overflow: auto hidden;
38
+ -webkit-overflow-scrolling: touch;
39
+ padding-top: 0.2em;
40
+ padding-bottom: 0.2em;
41
+
42
+ &::-webkit-scrollbar {
43
+ height: 3px;
44
+ }
45
+ }
46
+
47
+ .katex-error {
48
+ color: #f00;
49
+ }
50
+ }
51
+
52
+ .wl-count {
53
+ padding: 0.375em;
54
+ font-weight: bold;
55
+ font-size: 1.25em;
56
+ }
57
+
58
+ .wl-empty {
59
+ overflow: auto;
60
+ padding: 1.25em;
61
+ color: var(--waline-color);
62
+ text-align: center;
63
+ }
64
+
65
+ .wl-more {
66
+ text-align: center;
67
+
68
+ button {
69
+ margin: 1em 0;
70
+ }
71
+ }
72
+
73
+ .wl-power {
74
+ padding: 0.5em 0;
75
+ color: var(--waline-light-grey);
76
+ font-size: var(--waline-info-font-size);
77
+ text-align: right;
78
+ }
@@ -0,0 +1,112 @@
1
+ [data-waline] {
2
+ font-size: var(--waline-font-size);
3
+ text-align: left;
4
+
5
+ * {
6
+ box-sizing: content-box;
7
+ line-height: 1.75;
8
+ }
9
+
10
+ p {
11
+ color: var(--waline-color);
12
+ }
13
+
14
+ a {
15
+ position: relative;
16
+
17
+ display: inline-block;
18
+
19
+ color: var(--waline-theme-color);
20
+
21
+ text-decoration: none;
22
+
23
+ cursor: pointer;
24
+
25
+ &:hover {
26
+ color: var(--waline-active-color);
27
+ }
28
+ }
29
+
30
+ img {
31
+ max-width: 100%;
32
+ max-height: 400px;
33
+ border: none;
34
+ }
35
+
36
+ hr {
37
+ margin: 0.825em 0;
38
+ border-style: dashed;
39
+ border-color: var(--waline-bgcolor-light);
40
+ }
41
+
42
+ code,
43
+ pre {
44
+ margin: 0;
45
+ padding: 0.2em 0.4em;
46
+ border-radius: 3px;
47
+
48
+ background: var(--waline-bgcolor-light);
49
+
50
+ font-size: 85%;
51
+ }
52
+
53
+ pre {
54
+ overflow: auto;
55
+ padding: 10px;
56
+ line-height: 1.45;
57
+
58
+ &::-webkit-scrollbar {
59
+ width: 6px;
60
+ height: 6px;
61
+ }
62
+
63
+ &::-webkit-scrollbar-track-piece:horizontal {
64
+ -webkit-border-radius: 6px;
65
+ border-radius: 6px;
66
+ background: rgb(0 0 0 / 10%);
67
+ }
68
+
69
+ &::-webkit-scrollbar-thumb:horizontal {
70
+ width: 6px;
71
+ -webkit-border-radius: 6px;
72
+ border-radius: 6px;
73
+ background: var(--waline-theme-color);
74
+ }
75
+
76
+ code {
77
+ padding: 0;
78
+
79
+ background: transparent;
80
+ color: var(--waline-color);
81
+
82
+ white-space: pre-wrap;
83
+ word-break: keep-all;
84
+ }
85
+ }
86
+
87
+ blockquote {
88
+ margin: 0.5em 0;
89
+ padding: 0.5em 0 0.5em 1em;
90
+ border-left: 8px solid var(--waline-bq-color);
91
+ color: var(--waline-dark-grey);
92
+
93
+ > p {
94
+ margin: 0;
95
+ }
96
+ }
97
+
98
+ ol,
99
+ ul {
100
+ margin-left: 1.25em;
101
+ padding: 0;
102
+ }
103
+
104
+ input {
105
+ &[type='checkbox'],
106
+ &[type='radio'] {
107
+ display: inline-block;
108
+ vertical-align: middle;
109
+ margin-top: -2px;
110
+ }
111
+ }
112
+ }