plugin-build-guide-block 1.0.2 → 1.0.3
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/node_modules/sanitize-html/LICENSE +7 -0
- package/dist/node_modules/sanitize-html/index.js +7 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/async/index.browser.cjs +34 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/async/index.browser.js +34 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/async/index.cjs +35 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/async/index.d.ts +56 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/async/index.js +35 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/async/index.native.js +26 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/async/package.json +12 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/bin/nanoid.cjs +55 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/index.browser.cjs +34 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/index.browser.js +34 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/index.cjs +45 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/index.d.cts +91 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/index.d.ts +91 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/index.js +45 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/nanoid.js +1 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/non-secure/index.cjs +21 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/non-secure/index.d.ts +33 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/non-secure/index.js +21 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/non-secure/package.json +6 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/package.json +88 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/url-alphabet/index.cjs +3 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/url-alphabet/index.js +3 -0
- package/dist/node_modules/sanitize-html/node_modules/nanoid/url-alphabet/package.json +6 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/at-rule.d.ts +115 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/at-rule.js +25 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/comment.d.ts +67 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/comment.js +13 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/container.d.ts +452 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/container.js +439 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/css-syntax-error.d.ts +248 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/css-syntax-error.js +100 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/declaration.d.ts +148 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/declaration.js +24 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/document.d.ts +68 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/document.js +33 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/fromJSON.d.ts +9 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/fromJSON.js +54 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/input.d.ts +194 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/input.js +248 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/lazy-result.d.ts +190 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/lazy-result.js +550 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/list.d.ts +57 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/list.js +58 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/map-generator.js +359 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/no-work-result.d.ts +46 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/no-work-result.js +135 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/node.d.ts +536 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/node.js +381 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/parse.d.ts +9 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/parse.js +42 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/parser.js +610 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/postcss.d.mts +72 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/postcss.d.ts +441 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/postcss.js +101 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/previous-map.d.ts +81 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/previous-map.js +142 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/processor.d.ts +115 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/processor.js +67 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/result.d.ts +206 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/result.js +42 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/root.d.ts +86 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/root.js +61 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/rule.d.ts +113 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/rule.js +27 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/stringifier.d.ts +46 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/stringifier.js +353 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/stringify.d.ts +9 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/stringify.js +11 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/symbols.js +5 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/terminal-highlight.js +70 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/tokenize.js +266 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/warn-once.js +13 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/warning.d.ts +147 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/lib/warning.js +37 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/node_modules/.bin/nanoid +15 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/node_modules/.bin/nanoid.cmd +7 -0
- package/dist/node_modules/sanitize-html/node_modules/postcss/package.json +88 -0
- package/dist/node_modules/sanitize-html/package.json +1 -0
- package/package.json +9 -1
- package/src/client/UserGuideBlock.tsx +53 -0
- package/src/client/UserGuideBlockInitializer.tsx +26 -0
- package/src/client/UserGuideBlockProvider.tsx +12 -0
- package/src/client/UserGuideManager.tsx +133 -0
- package/src/client/client.d.ts +249 -0
- package/src/client/components/BuildButton.tsx +43 -0
- package/src/client/components/LLMServiceSelect.tsx +44 -0
- package/src/client/components/ModelSelect.tsx +41 -0
- package/src/client/components/StatusTag.tsx +17 -0
- package/src/client/index.tsx +1 -0
- package/src/client/models/UserGuideBlockModel.ts +47 -0
- package/src/client/models/index.ts +12 -0
- package/src/client/plugin.tsx +30 -0
- package/src/client/schemas/spacesSchema.ts +305 -0
- package/src/index.ts +2 -0
- package/src/locale/en-US.json +27 -0
- package/src/locale/vi-VN.json +27 -0
- package/src/locale/zh-CN.json +27 -0
- package/src/server/actions/build.ts +171 -0
- package/src/server/actions/getHtml.ts +26 -0
- package/src/server/collections/.gitkeep +0 -0
- package/src/server/collections/ai-build-guide-spaces.ts +49 -0
- package/src/server/index.ts +1 -0
- package/src/server/plugin.ts +42 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const SINGLE_QUOTE = "'".charCodeAt(0)
|
|
4
|
+
const DOUBLE_QUOTE = '"'.charCodeAt(0)
|
|
5
|
+
const BACKSLASH = '\\'.charCodeAt(0)
|
|
6
|
+
const SLASH = '/'.charCodeAt(0)
|
|
7
|
+
const NEWLINE = '\n'.charCodeAt(0)
|
|
8
|
+
const SPACE = ' '.charCodeAt(0)
|
|
9
|
+
const FEED = '\f'.charCodeAt(0)
|
|
10
|
+
const TAB = '\t'.charCodeAt(0)
|
|
11
|
+
const CR = '\r'.charCodeAt(0)
|
|
12
|
+
const OPEN_SQUARE = '['.charCodeAt(0)
|
|
13
|
+
const CLOSE_SQUARE = ']'.charCodeAt(0)
|
|
14
|
+
const OPEN_PARENTHESES = '('.charCodeAt(0)
|
|
15
|
+
const CLOSE_PARENTHESES = ')'.charCodeAt(0)
|
|
16
|
+
const OPEN_CURLY = '{'.charCodeAt(0)
|
|
17
|
+
const CLOSE_CURLY = '}'.charCodeAt(0)
|
|
18
|
+
const SEMICOLON = ';'.charCodeAt(0)
|
|
19
|
+
const ASTERISK = '*'.charCodeAt(0)
|
|
20
|
+
const COLON = ':'.charCodeAt(0)
|
|
21
|
+
const AT = '@'.charCodeAt(0)
|
|
22
|
+
|
|
23
|
+
const RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g
|
|
24
|
+
const RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g
|
|
25
|
+
const RE_BAD_BRACKET = /.[\r\n"'(/\\]/
|
|
26
|
+
const RE_HEX_ESCAPE = /[\da-f]/i
|
|
27
|
+
|
|
28
|
+
module.exports = function tokenizer(input, options = {}) {
|
|
29
|
+
let css = input.css.valueOf()
|
|
30
|
+
let ignore = options.ignoreErrors
|
|
31
|
+
|
|
32
|
+
let code, next, quote, content, escape
|
|
33
|
+
let escaped, escapePos, prev, n, currentToken
|
|
34
|
+
|
|
35
|
+
let length = css.length
|
|
36
|
+
let pos = 0
|
|
37
|
+
let buffer = []
|
|
38
|
+
let returned = []
|
|
39
|
+
|
|
40
|
+
function position() {
|
|
41
|
+
return pos
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function unclosed(what) {
|
|
45
|
+
throw input.error('Unclosed ' + what, pos)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function endOfFile() {
|
|
49
|
+
return returned.length === 0 && pos >= length
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function nextToken(opts) {
|
|
53
|
+
if (returned.length) return returned.pop()
|
|
54
|
+
if (pos >= length) return
|
|
55
|
+
|
|
56
|
+
let ignoreUnclosed = opts ? opts.ignoreUnclosed : false
|
|
57
|
+
|
|
58
|
+
code = css.charCodeAt(pos)
|
|
59
|
+
|
|
60
|
+
switch (code) {
|
|
61
|
+
case NEWLINE:
|
|
62
|
+
case SPACE:
|
|
63
|
+
case TAB:
|
|
64
|
+
case CR:
|
|
65
|
+
case FEED: {
|
|
66
|
+
next = pos
|
|
67
|
+
do {
|
|
68
|
+
next += 1
|
|
69
|
+
code = css.charCodeAt(next)
|
|
70
|
+
} while (
|
|
71
|
+
code === SPACE ||
|
|
72
|
+
code === NEWLINE ||
|
|
73
|
+
code === TAB ||
|
|
74
|
+
code === CR ||
|
|
75
|
+
code === FEED
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
currentToken = ['space', css.slice(pos, next)]
|
|
79
|
+
pos = next - 1
|
|
80
|
+
break
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
case OPEN_SQUARE:
|
|
84
|
+
case CLOSE_SQUARE:
|
|
85
|
+
case OPEN_CURLY:
|
|
86
|
+
case CLOSE_CURLY:
|
|
87
|
+
case COLON:
|
|
88
|
+
case SEMICOLON:
|
|
89
|
+
case CLOSE_PARENTHESES: {
|
|
90
|
+
let controlChar = String.fromCharCode(code)
|
|
91
|
+
currentToken = [controlChar, controlChar, pos]
|
|
92
|
+
break
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
case OPEN_PARENTHESES: {
|
|
96
|
+
prev = buffer.length ? buffer.pop()[1] : ''
|
|
97
|
+
n = css.charCodeAt(pos + 1)
|
|
98
|
+
if (
|
|
99
|
+
prev === 'url' &&
|
|
100
|
+
n !== SINGLE_QUOTE &&
|
|
101
|
+
n !== DOUBLE_QUOTE &&
|
|
102
|
+
n !== SPACE &&
|
|
103
|
+
n !== NEWLINE &&
|
|
104
|
+
n !== TAB &&
|
|
105
|
+
n !== FEED &&
|
|
106
|
+
n !== CR
|
|
107
|
+
) {
|
|
108
|
+
next = pos
|
|
109
|
+
do {
|
|
110
|
+
escaped = false
|
|
111
|
+
next = css.indexOf(')', next + 1)
|
|
112
|
+
if (next === -1) {
|
|
113
|
+
if (ignore || ignoreUnclosed) {
|
|
114
|
+
next = pos
|
|
115
|
+
break
|
|
116
|
+
} else {
|
|
117
|
+
unclosed('bracket')
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
escapePos = next
|
|
121
|
+
while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
|
|
122
|
+
escapePos -= 1
|
|
123
|
+
escaped = !escaped
|
|
124
|
+
}
|
|
125
|
+
} while (escaped)
|
|
126
|
+
|
|
127
|
+
currentToken = ['brackets', css.slice(pos, next + 1), pos, next]
|
|
128
|
+
|
|
129
|
+
pos = next
|
|
130
|
+
} else {
|
|
131
|
+
next = css.indexOf(')', pos + 1)
|
|
132
|
+
content = css.slice(pos, next + 1)
|
|
133
|
+
|
|
134
|
+
if (next === -1 || RE_BAD_BRACKET.test(content)) {
|
|
135
|
+
currentToken = ['(', '(', pos]
|
|
136
|
+
} else {
|
|
137
|
+
currentToken = ['brackets', content, pos, next]
|
|
138
|
+
pos = next
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
break
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
case SINGLE_QUOTE:
|
|
146
|
+
case DOUBLE_QUOTE: {
|
|
147
|
+
quote = code === SINGLE_QUOTE ? "'" : '"'
|
|
148
|
+
next = pos
|
|
149
|
+
do {
|
|
150
|
+
escaped = false
|
|
151
|
+
next = css.indexOf(quote, next + 1)
|
|
152
|
+
if (next === -1) {
|
|
153
|
+
if (ignore || ignoreUnclosed) {
|
|
154
|
+
next = pos + 1
|
|
155
|
+
break
|
|
156
|
+
} else {
|
|
157
|
+
unclosed('string')
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
escapePos = next
|
|
161
|
+
while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
|
|
162
|
+
escapePos -= 1
|
|
163
|
+
escaped = !escaped
|
|
164
|
+
}
|
|
165
|
+
} while (escaped)
|
|
166
|
+
|
|
167
|
+
currentToken = ['string', css.slice(pos, next + 1), pos, next]
|
|
168
|
+
pos = next
|
|
169
|
+
break
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
case AT: {
|
|
173
|
+
RE_AT_END.lastIndex = pos + 1
|
|
174
|
+
RE_AT_END.test(css)
|
|
175
|
+
if (RE_AT_END.lastIndex === 0) {
|
|
176
|
+
next = css.length - 1
|
|
177
|
+
} else {
|
|
178
|
+
next = RE_AT_END.lastIndex - 2
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
currentToken = ['at-word', css.slice(pos, next + 1), pos, next]
|
|
182
|
+
|
|
183
|
+
pos = next
|
|
184
|
+
break
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
case BACKSLASH: {
|
|
188
|
+
next = pos
|
|
189
|
+
escape = true
|
|
190
|
+
while (css.charCodeAt(next + 1) === BACKSLASH) {
|
|
191
|
+
next += 1
|
|
192
|
+
escape = !escape
|
|
193
|
+
}
|
|
194
|
+
code = css.charCodeAt(next + 1)
|
|
195
|
+
if (
|
|
196
|
+
escape &&
|
|
197
|
+
code !== SLASH &&
|
|
198
|
+
code !== SPACE &&
|
|
199
|
+
code !== NEWLINE &&
|
|
200
|
+
code !== TAB &&
|
|
201
|
+
code !== CR &&
|
|
202
|
+
code !== FEED
|
|
203
|
+
) {
|
|
204
|
+
next += 1
|
|
205
|
+
if (RE_HEX_ESCAPE.test(css.charAt(next))) {
|
|
206
|
+
while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {
|
|
207
|
+
next += 1
|
|
208
|
+
}
|
|
209
|
+
if (css.charCodeAt(next + 1) === SPACE) {
|
|
210
|
+
next += 1
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
currentToken = ['word', css.slice(pos, next + 1), pos, next]
|
|
216
|
+
|
|
217
|
+
pos = next
|
|
218
|
+
break
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
default: {
|
|
222
|
+
if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {
|
|
223
|
+
next = css.indexOf('*/', pos + 2) + 1
|
|
224
|
+
if (next === 0) {
|
|
225
|
+
if (ignore || ignoreUnclosed) {
|
|
226
|
+
next = css.length
|
|
227
|
+
} else {
|
|
228
|
+
unclosed('comment')
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
currentToken = ['comment', css.slice(pos, next + 1), pos, next]
|
|
233
|
+
pos = next
|
|
234
|
+
} else {
|
|
235
|
+
RE_WORD_END.lastIndex = pos + 1
|
|
236
|
+
RE_WORD_END.test(css)
|
|
237
|
+
if (RE_WORD_END.lastIndex === 0) {
|
|
238
|
+
next = css.length - 1
|
|
239
|
+
} else {
|
|
240
|
+
next = RE_WORD_END.lastIndex - 2
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
currentToken = ['word', css.slice(pos, next + 1), pos, next]
|
|
244
|
+
buffer.push(currentToken)
|
|
245
|
+
pos = next
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
break
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
pos++
|
|
253
|
+
return currentToken
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
function back(token) {
|
|
257
|
+
returned.push(token)
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return {
|
|
261
|
+
back,
|
|
262
|
+
endOfFile,
|
|
263
|
+
nextToken,
|
|
264
|
+
position
|
|
265
|
+
}
|
|
266
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
'use strict'
|
|
3
|
+
|
|
4
|
+
let printed = {}
|
|
5
|
+
|
|
6
|
+
module.exports = function warnOnce(message) {
|
|
7
|
+
if (printed[message]) return
|
|
8
|
+
printed[message] = true
|
|
9
|
+
|
|
10
|
+
if (typeof console !== 'undefined' && console.warn) {
|
|
11
|
+
console.warn(message)
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { RangePosition } from './css-syntax-error.js'
|
|
2
|
+
import Node from './node.js'
|
|
3
|
+
|
|
4
|
+
declare namespace Warning {
|
|
5
|
+
export interface WarningOptions {
|
|
6
|
+
/**
|
|
7
|
+
* End position, exclusive, in CSS node string that caused the warning.
|
|
8
|
+
*/
|
|
9
|
+
end?: RangePosition
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* End index, exclusive, in CSS node string that caused the warning.
|
|
13
|
+
*/
|
|
14
|
+
endIndex?: number
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Start index, inclusive, in CSS node string that caused the warning.
|
|
18
|
+
*/
|
|
19
|
+
index?: number
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* CSS node that caused the warning.
|
|
23
|
+
*/
|
|
24
|
+
node?: Node
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Name of the plugin that created this warning. `Result#warn` fills
|
|
28
|
+
* this property automatically.
|
|
29
|
+
*/
|
|
30
|
+
plugin?: string
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Start position, inclusive, in CSS node string that caused the warning.
|
|
34
|
+
*/
|
|
35
|
+
start?: RangePosition
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Word in CSS source that caused the warning.
|
|
39
|
+
*/
|
|
40
|
+
word?: string
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
44
|
+
export { Warning_ as default }
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Represents a plugin’s warning. It can be created using `Node#warn`.
|
|
49
|
+
*
|
|
50
|
+
* ```js
|
|
51
|
+
* if (decl.important) {
|
|
52
|
+
* decl.warn(result, 'Avoid !important', { word: '!important' })
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
declare class Warning_ {
|
|
57
|
+
/**
|
|
58
|
+
* Column for inclusive start position in the input file with this warning’s source.
|
|
59
|
+
*
|
|
60
|
+
* ```js
|
|
61
|
+
* warning.column //=> 6
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
column: number
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Column for exclusive end position in the input file with this warning’s source.
|
|
68
|
+
*
|
|
69
|
+
* ```js
|
|
70
|
+
* warning.endColumn //=> 4
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
endColumn?: number
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Line for exclusive end position in the input file with this warning’s source.
|
|
77
|
+
*
|
|
78
|
+
* ```js
|
|
79
|
+
* warning.endLine //=> 6
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
endLine?: number
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Line for inclusive start position in the input file with this warning’s source.
|
|
86
|
+
*
|
|
87
|
+
* ```js
|
|
88
|
+
* warning.line //=> 5
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
line: number
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Contains the CSS node that caused the warning.
|
|
95
|
+
*
|
|
96
|
+
* ```js
|
|
97
|
+
* warning.node.toString() //=> 'color: white !important'
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
node: Node
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* The name of the plugin that created this warning.
|
|
104
|
+
* When you call `Node#warn` it will fill this property automatically.
|
|
105
|
+
*
|
|
106
|
+
* ```js
|
|
107
|
+
* warning.plugin //=> 'postcss-important'
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
plugin: string
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* The warning message.
|
|
114
|
+
*
|
|
115
|
+
* ```js
|
|
116
|
+
* warning.text //=> 'Try to avoid !important'
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
text: string
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Type to filter warnings from `Result#messages`.
|
|
123
|
+
* Always equal to `"warning"`.
|
|
124
|
+
*/
|
|
125
|
+
type: 'warning'
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @param text Warning message.
|
|
129
|
+
* @param opts Warning options.
|
|
130
|
+
*/
|
|
131
|
+
constructor(text: string, opts?: Warning.WarningOptions)
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Returns a warning position and message.
|
|
135
|
+
*
|
|
136
|
+
* ```js
|
|
137
|
+
* warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* @return Warning position and message.
|
|
141
|
+
*/
|
|
142
|
+
toString(): string
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
declare class Warning extends Warning_ {}
|
|
146
|
+
|
|
147
|
+
export = Warning
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
class Warning {
|
|
4
|
+
constructor(text, opts = {}) {
|
|
5
|
+
this.type = 'warning'
|
|
6
|
+
this.text = text
|
|
7
|
+
|
|
8
|
+
if (opts.node && opts.node.source) {
|
|
9
|
+
let range = opts.node.rangeBy(opts)
|
|
10
|
+
this.line = range.start.line
|
|
11
|
+
this.column = range.start.column
|
|
12
|
+
this.endLine = range.end.line
|
|
13
|
+
this.endColumn = range.end.column
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
for (let opt in opts) this[opt] = opts[opt]
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
toString() {
|
|
20
|
+
if (this.node) {
|
|
21
|
+
return this.node.error(this.text, {
|
|
22
|
+
index: this.index,
|
|
23
|
+
plugin: this.plugin,
|
|
24
|
+
word: this.word
|
|
25
|
+
}).message
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (this.plugin) {
|
|
29
|
+
return this.plugin + ': ' + this.text
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return this.text
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
module.exports = Warning
|
|
37
|
+
Warning.default = Warning
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
|
6
|
+
esac
|
|
7
|
+
|
|
8
|
+
if [ -x "$basedir/node" ]; then
|
|
9
|
+
"$basedir/node" "$basedir/../../../nanoid/bin/nanoid.cjs" "$@"
|
|
10
|
+
ret=$?
|
|
11
|
+
else
|
|
12
|
+
node "$basedir/../../../nanoid/bin/nanoid.cjs" "$@"
|
|
13
|
+
ret=$?
|
|
14
|
+
fi
|
|
15
|
+
exit $ret
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "postcss",
|
|
3
|
+
"version": "8.4.32",
|
|
4
|
+
"description": "Tool for transforming styles with JS plugins",
|
|
5
|
+
"engines": {
|
|
6
|
+
"node": "^10 || ^12 || >=14"
|
|
7
|
+
},
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"require": "./lib/postcss.js",
|
|
11
|
+
"import": "./lib/postcss.mjs"
|
|
12
|
+
},
|
|
13
|
+
"./lib/at-rule": "./lib/at-rule.js",
|
|
14
|
+
"./lib/comment": "./lib/comment.js",
|
|
15
|
+
"./lib/container": "./lib/container.js",
|
|
16
|
+
"./lib/css-syntax-error": "./lib/css-syntax-error.js",
|
|
17
|
+
"./lib/declaration": "./lib/declaration.js",
|
|
18
|
+
"./lib/fromJSON": "./lib/fromJSON.js",
|
|
19
|
+
"./lib/input": "./lib/input.js",
|
|
20
|
+
"./lib/lazy-result": "./lib/lazy-result.js",
|
|
21
|
+
"./lib/no-work-result": "./lib/no-work-result.js",
|
|
22
|
+
"./lib/list": "./lib/list.js",
|
|
23
|
+
"./lib/map-generator": "./lib/map-generator.js",
|
|
24
|
+
"./lib/node": "./lib/node.js",
|
|
25
|
+
"./lib/parse": "./lib/parse.js",
|
|
26
|
+
"./lib/parser": "./lib/parser.js",
|
|
27
|
+
"./lib/postcss": "./lib/postcss.js",
|
|
28
|
+
"./lib/previous-map": "./lib/previous-map.js",
|
|
29
|
+
"./lib/processor": "./lib/processor.js",
|
|
30
|
+
"./lib/result": "./lib/result.js",
|
|
31
|
+
"./lib/root": "./lib/root.js",
|
|
32
|
+
"./lib/rule": "./lib/rule.js",
|
|
33
|
+
"./lib/stringifier": "./lib/stringifier.js",
|
|
34
|
+
"./lib/stringify": "./lib/stringify.js",
|
|
35
|
+
"./lib/symbols": "./lib/symbols.js",
|
|
36
|
+
"./lib/terminal-highlight": "./lib/terminal-highlight.js",
|
|
37
|
+
"./lib/tokenize": "./lib/tokenize.js",
|
|
38
|
+
"./lib/warn-once": "./lib/warn-once.js",
|
|
39
|
+
"./lib/warning": "./lib/warning.js",
|
|
40
|
+
"./package.json": "./package.json"
|
|
41
|
+
},
|
|
42
|
+
"main": "./lib/postcss.js",
|
|
43
|
+
"types": "./lib/postcss.d.ts",
|
|
44
|
+
"keywords": [
|
|
45
|
+
"css",
|
|
46
|
+
"postcss",
|
|
47
|
+
"rework",
|
|
48
|
+
"preprocessor",
|
|
49
|
+
"parser",
|
|
50
|
+
"source map",
|
|
51
|
+
"transform",
|
|
52
|
+
"manipulation",
|
|
53
|
+
"transpiler"
|
|
54
|
+
],
|
|
55
|
+
"funding": [
|
|
56
|
+
{
|
|
57
|
+
"type": "opencollective",
|
|
58
|
+
"url": "https://opencollective.com/postcss/"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "tidelift",
|
|
62
|
+
"url": "https://tidelift.com/funding/github/npm/postcss"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"type": "github",
|
|
66
|
+
"url": "https://github.com/sponsors/ai"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"author": "Andrey Sitnik <andrey@sitnik.ru>",
|
|
70
|
+
"license": "MIT",
|
|
71
|
+
"homepage": "https://postcss.org/",
|
|
72
|
+
"repository": "postcss/postcss",
|
|
73
|
+
"bugs": {
|
|
74
|
+
"url": "https://github.com/postcss/postcss/issues"
|
|
75
|
+
},
|
|
76
|
+
"dependencies": {
|
|
77
|
+
"nanoid": "^3.3.7",
|
|
78
|
+
"picocolors": "^1.0.0",
|
|
79
|
+
"source-map-js": "^1.0.2"
|
|
80
|
+
},
|
|
81
|
+
"browser": {
|
|
82
|
+
"./lib/terminal-highlight": false,
|
|
83
|
+
"source-map-js": false,
|
|
84
|
+
"path": false,
|
|
85
|
+
"url": false,
|
|
86
|
+
"fs": false
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"sanitize-html","version":"2.17.2","description":"Clean up user-submitted HTML, preserving allowlisted elements and allowlisted attributes on a per-element basis","sideEffects":false,"main":"index.js","files":["index.js"],"repository":{"type":"git","url":"https://github.com/apostrophecms/apostrophe.git","directory":"packages/sanitize-html"},"homepage":"https://github.com/apostrophecms/apostrophe/tree/main/packages/sanitize-html#readme","keywords":["html","parser","sanitizer","sanitize"],"author":"Apostrophe Technologies, Inc.","license":"MIT","dependencies":{"deepmerge":"^4.2.2","escape-string-regexp":"^4.0.0","htmlparser2":"^10.1.0","is-plain-object":"^5.0.0","parse-srcset":"^1.0.2","postcss":"^8.3.11"},"devDependencies":{"eslint":"^9.39.1","mocha":"^10.2.0","sinon":"^9.0.2","eslint-config-apostrophe":"^6.0.2"},"apostropheTestConfig":{"requiresMongo":false},"scripts":{"test":"npm run lint && mocha","lint":"eslint ."},"_lastModified":"2026-04-09T19:44:45.769Z"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "plugin-build-guide-block",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"main": "dist/server/index.js",
|
|
5
|
+
"files": [
|
|
6
|
+
"dist",
|
|
7
|
+
"src",
|
|
8
|
+
"client.js",
|
|
9
|
+
"server.js",
|
|
10
|
+
"client.d.ts",
|
|
11
|
+
"server.d.ts"
|
|
12
|
+
],
|
|
5
13
|
"dependencies": {
|
|
6
14
|
"dompurify": "^3.1.2",
|
|
7
15
|
"sanitize-html": "^2.13.0"
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Card, Spin } from 'antd';
|
|
3
|
+
import { useRequest } from '@nocobase/client';
|
|
4
|
+
import { observer } from '@formily/react';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
6
|
+
import DOMPurify from 'dompurify';
|
|
7
|
+
|
|
8
|
+
export const UserGuideBlock = observer(
|
|
9
|
+
(props: any) => {
|
|
10
|
+
const { spaceId } = props;
|
|
11
|
+
const { t } = useTranslation();
|
|
12
|
+
|
|
13
|
+
const { loading, data: htmlContent } = useRequest(
|
|
14
|
+
{
|
|
15
|
+
url: `aiBuildGuideSpaces:getHtml/${spaceId}`,
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
refreshDeps: [spaceId],
|
|
19
|
+
ready: !!spaceId,
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
if (!spaceId) {
|
|
24
|
+
return (
|
|
25
|
+
<Card style={{ padding: 24, textAlign: 'center', color: '#888' }}>
|
|
26
|
+
{t('Please select a User Guide Space in block settings')}
|
|
27
|
+
</Card>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (loading) {
|
|
32
|
+
return (
|
|
33
|
+
<Card style={{ padding: 24, textAlign: 'center' }}>
|
|
34
|
+
<Spin size="large" />
|
|
35
|
+
</Card>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<Card
|
|
41
|
+
bordered={false}
|
|
42
|
+
className="user-guide-block"
|
|
43
|
+
style={{ width: '100%', minHeight: 300 }}
|
|
44
|
+
>
|
|
45
|
+
<div
|
|
46
|
+
className="user-guide-content"
|
|
47
|
+
dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize((htmlContent as any)?.data || '') }}
|
|
48
|
+
/>
|
|
49
|
+
</Card>
|
|
50
|
+
);
|
|
51
|
+
},
|
|
52
|
+
{ displayName: 'UserGuideBlock' }
|
|
53
|
+
);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SchemaInitializerItem, useSchemaInitializer, useSchemaInitializerItem } from '@nocobase/client';
|
|
3
|
+
import { ReadOutlined } from '@ant-design/icons';
|
|
4
|
+
|
|
5
|
+
export const UserGuideBlockInitializer = () => {
|
|
6
|
+
const { insert } = useSchemaInitializer();
|
|
7
|
+
const itemConfig = useSchemaInitializerItem();
|
|
8
|
+
return (
|
|
9
|
+
<SchemaInitializerItem
|
|
10
|
+
{...itemConfig}
|
|
11
|
+
icon={<ReadOutlined />}
|
|
12
|
+
onClick={() => {
|
|
13
|
+
insert({
|
|
14
|
+
type: 'void',
|
|
15
|
+
'x-settings': 'userGuideBlockSettings',
|
|
16
|
+
'x-decorator': 'BlockItem',
|
|
17
|
+
'x-decorator-props': {
|
|
18
|
+
name: 'userGuide',
|
|
19
|
+
},
|
|
20
|
+
'x-component': 'UserGuideBlock',
|
|
21
|
+
'x-component-props': {},
|
|
22
|
+
});
|
|
23
|
+
}}
|
|
24
|
+
/>
|
|
25
|
+
);
|
|
26
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SchemaComponentOptions } from '@nocobase/client';
|
|
3
|
+
import { UserGuideBlock } from './UserGuideBlock';
|
|
4
|
+
import { UserGuideBlockInitializer } from './UserGuideBlockInitializer';
|
|
5
|
+
|
|
6
|
+
export const UserGuideBlockProvider = (props: any) => {
|
|
7
|
+
return (
|
|
8
|
+
<SchemaComponentOptions components={{ UserGuideBlock, UserGuideBlockInitializer }}>
|
|
9
|
+
{props.children}
|
|
10
|
+
</SchemaComponentOptions>
|
|
11
|
+
);
|
|
12
|
+
};
|