@pacem/pacem-ui 1.0.6-ricci → 2.0.0-abel
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/browser/pacem-ui.js +14 -183
- package/dist/browser/pacem-ui.js.map +1 -1
- package/dist/browser/pacem-ui.min.js +2 -2
- package/dist/bundle/pacem-ui.min.mjs +75 -75
- package/dist/bundle/pacem-ui.mjs +11 -239
- package/dist/bundle/pacem-ui.mjs.map +3 -3
- package/dist/docs/pacem-ui.json +1 -16
- package/dist/esm/adapter.js +1 -1
- package/dist/esm/anchor.js +1 -1
- package/dist/esm/balloon.js +1 -1
- package/dist/esm/binder.js +1 -1
- package/dist/esm/blade.js +1 -1
- package/dist/esm/bottom-sheet.js +1 -1
- package/dist/esm/button.js +1 -1
- package/dist/esm/buttonset.js +1 -1
- package/dist/esm/calendar.js +1 -1
- package/dist/esm/collapse.js +1 -1
- package/dist/esm/dialog-abstractions.js +1 -1
- package/dist/esm/dialog.js +1 -1
- package/dist/esm/divider.js +1 -1
- package/dist/esm/icon.js +1 -1
- package/dist/esm/image.js +1 -1
- package/dist/esm/index-components-ui.js +1 -1
- package/dist/esm/index-components.js +1 -1
- package/dist/esm/index-iife.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/infinite-scroller.js +1 -1
- package/dist/esm/iterative.js +1 -1
- package/dist/esm/lightbox-abstractions.js +1 -1
- package/dist/esm/lightbox.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/markdown-svc.js +14 -183
- package/dist/esm/markdown.js +1 -1
- package/dist/esm/marquee.js +1 -1
- package/dist/esm/media-query.js +1 -1
- package/dist/esm/menu.js +1 -1
- package/dist/esm/pager.js +1 -1
- package/dist/esm/picture.js +1 -1
- package/dist/esm/progressbar.js +1 -1
- package/dist/esm/sidebar.js +1 -1
- package/dist/esm/slideshow.js +1 -1
- package/dist/esm/social-twitter.js +1 -1
- package/dist/esm/sticky-header.js +1 -1
- package/dist/esm/tabs.js +1 -1
- package/dist/esm/ticker.js +1 -1
- package/dist/esm/toast.js +1 -1
- package/dist/esm/toc.js +1 -1
- package/dist/esm/tuner.js +1 -1
- package/dist/esm/types.js +1 -1
- package/dist/esm/vibration.js +1 -1
- package/dist/esm/view.js +1 -1
- package/dist/esm/window.js +1 -1
- package/package.json +1 -1
- package/typings/index.d.ts +5 -2
package/dist/docs/pacem-ui.json
CHANGED
|
@@ -2525,7 +2525,7 @@
|
|
|
2525
2525
|
{
|
|
2526
2526
|
"kind": "Class",
|
|
2527
2527
|
"canonicalReference": "@pacem/pacem-ui!Components.UI.MarkdownService:class",
|
|
2528
|
-
"docComment": "/**\n * Parses Markdown into HTML, extended with
|
|
2528
|
+
"docComment": "/**\n * Parses Markdown into HTML, extended with Pacem-specific inline embeds (`{tweet}(id)`, `{yt}(id)`). Fenced code blocks are highlighted by the language-agnostic `Compile.Scanner`, for every language registered in `Compile.Syntaxes` (built-in: javascript/typescript, html/xml, c#, c/c++, json; more can be registered at runtime).\n */\n",
|
|
2529
2529
|
"excerptTokens": [
|
|
2530
2530
|
{
|
|
2531
2531
|
"kind": "Content",
|
|
@@ -2538,21 +2538,6 @@
|
|
|
2538
2538
|
"name": "MarkdownService",
|
|
2539
2539
|
"preserveMemberOrder": false,
|
|
2540
2540
|
"members": [
|
|
2541
|
-
{
|
|
2542
|
-
"kind": "Constructor",
|
|
2543
|
-
"canonicalReference": "@pacem/pacem-ui!Components.UI.MarkdownService:constructor(1)",
|
|
2544
|
-
"docComment": "/**\n * Constructs a new instance of the `MarkdownService` class\n */\n",
|
|
2545
|
-
"excerptTokens": [
|
|
2546
|
-
{
|
|
2547
|
-
"kind": "Content",
|
|
2548
|
-
"text": "constructor();"
|
|
2549
|
-
}
|
|
2550
|
-
],
|
|
2551
|
-
"releaseTag": "Public",
|
|
2552
|
-
"isProtected": false,
|
|
2553
|
-
"overloadIndex": 1,
|
|
2554
|
-
"parameters": []
|
|
2555
|
-
},
|
|
2556
2541
|
{
|
|
2557
2542
|
"kind": "Method",
|
|
2558
2543
|
"canonicalReference": "@pacem/pacem-ui!Components.UI.MarkdownService#toHtml:member(1)",
|
package/dist/esm/adapter.js
CHANGED
package/dist/esm/anchor.js
CHANGED
package/dist/esm/balloon.js
CHANGED
package/dist/esm/binder.js
CHANGED
package/dist/esm/blade.js
CHANGED
package/dist/esm/bottom-sheet.js
CHANGED
package/dist/esm/button.js
CHANGED
package/dist/esm/buttonset.js
CHANGED
package/dist/esm/calendar.js
CHANGED
package/dist/esm/collapse.js
CHANGED
package/dist/esm/dialog.js
CHANGED
package/dist/esm/divider.js
CHANGED
package/dist/esm/icon.js
CHANGED
package/dist/esm/image.js
CHANGED
package/dist/esm/index-iife.js
CHANGED
package/dist/esm/index.js
CHANGED
package/dist/esm/iterative.js
CHANGED
package/dist/esm/lightbox.js
CHANGED
package/dist/esm/loader.js
CHANGED
package/dist/esm/markdown-svc.js
CHANGED
|
@@ -1,161 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @pacem/pacem-ui
|
|
2
|
+
* @pacem/pacem-ui v2.0.0-abel (https://js.pacem.it)
|
|
3
3
|
* Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Compile } from '@pacem/pacem-foundation';
|
|
7
7
|
import { P } from '@pacem/pacem-core';
|
|
8
8
|
//namespace Pacem {
|
|
9
|
-
const match = (input, pattern, fn) => {
|
|
10
|
-
const arr = pattern.exec(input);
|
|
11
|
-
if (arr && arr.length) {
|
|
12
|
-
return fn(arr);
|
|
13
|
-
}
|
|
14
|
-
return null;
|
|
15
|
-
};
|
|
16
|
-
const MARKUP_RULES = [
|
|
17
|
-
{
|
|
18
|
-
// comment
|
|
19
|
-
exec: (input) => match(input, /^((<|<)!--(?:(?!(--(>|>)))[\s\S])*(--(?:>|>)|$))/, arr => {
|
|
20
|
-
const raw = arr[0], text = raw;
|
|
21
|
-
return [{
|
|
22
|
-
type: 'code-comment', raw, text, index: arr.index
|
|
23
|
-
}];
|
|
24
|
-
})
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
// opening/self-closing tag
|
|
28
|
-
exec: (input, lexer) => match(input, /^(<|<)([\w-]+)(?:\s+[\w-]+(?:=(?:'[^']*'|"[^"]*"))*)*(\s*\/?(?:>|>))/, arr => {
|
|
29
|
-
const openingTag = arr[1], tagName = arr[2], closingTag = arr[3];
|
|
30
|
-
const closingTagIndex = arr[0].length - closingTag.length, attributesIndex = openingTag.length + tagName.length, attributesString = input.substring(attributesIndex, closingTagIndex);
|
|
31
|
-
const attributes = lexer.tokenize(attributesString, [{
|
|
32
|
-
exec: (input) => match(input, /^(\s+[\w-]+)(=('[^']*'|"[^"]*"))?/, arr => {
|
|
33
|
-
const raw = arr[1];
|
|
34
|
-
const output = [{
|
|
35
|
-
type: 'code-attribute', raw, text: raw, index: arr[0].indexOf(raw)
|
|
36
|
-
}];
|
|
37
|
-
if (arr.length > 2) {
|
|
38
|
-
output.push({
|
|
39
|
-
type: 'code-string', raw: arr[2], text: arr[2], index: arr.index + arr[0].length - arr[2].length
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
return output;
|
|
43
|
-
})
|
|
44
|
-
}]);
|
|
45
|
-
const retval = [{
|
|
46
|
-
type: 'code-tag', raw: openingTag, text: openingTag, index: 0
|
|
47
|
-
}, {
|
|
48
|
-
type: 'code-tagname', raw: tagName, text: tagName, index: openingTag.length
|
|
49
|
-
}];
|
|
50
|
-
// attributes
|
|
51
|
-
Array.prototype.push.apply(retval, attributes);
|
|
52
|
-
retval.push({
|
|
53
|
-
type: 'code-tag', raw: closingTag, text: closingTag, index: closingTagIndex
|
|
54
|
-
});
|
|
55
|
-
return retval;
|
|
56
|
-
})
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
// closing tag
|
|
60
|
-
exec: (input) => match(input, /^((?:<|<)\/)([\w-]+)(\s*(?:>|>))/, arr => {
|
|
61
|
-
const openingTag = arr[1], tagName = arr[2], closingTag = arr[3];
|
|
62
|
-
return [{
|
|
63
|
-
type: 'code-tag', raw: openingTag, text: openingTag, index: 0
|
|
64
|
-
}, {
|
|
65
|
-
type: 'code-tagname', raw: tagName, text: tagName, index: openingTag.length
|
|
66
|
-
}, {
|
|
67
|
-
type: 'code-tag', raw: closingTag, text: closingTag, index: arr.index + arr[0].length - closingTag.length
|
|
68
|
-
}];
|
|
69
|
-
})
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
// text
|
|
73
|
-
exec: (input) => match(input, /^(<|<)?((?!<|<).)+/, arr => {
|
|
74
|
-
const raw = arr[0], text = raw;
|
|
75
|
-
return [{
|
|
76
|
-
type: 'text', raw, text
|
|
77
|
-
}];
|
|
78
|
-
})
|
|
79
|
-
}
|
|
80
|
-
];
|
|
81
|
-
const C_LIKE_RULES = [{
|
|
82
|
-
// comments
|
|
83
|
-
exec: (input, _) => match(input, /^\/\/.*/, arr => {
|
|
84
|
-
const raw = arr[0], text = raw;
|
|
85
|
-
return [{
|
|
86
|
-
type: 'code-comment', raw, text
|
|
87
|
-
}];
|
|
88
|
-
})
|
|
89
|
-
}, {
|
|
90
|
-
exec: (input, _) => match(input, /^\/\*(?:(?!(\*\/))[\s\S])*(?:\*\/|$)/, arr => {
|
|
91
|
-
const raw = arr[0], text = raw;
|
|
92
|
-
return [{
|
|
93
|
-
type: 'code-comment', raw, text
|
|
94
|
-
}];
|
|
95
|
-
})
|
|
96
|
-
}, {
|
|
97
|
-
// string literal
|
|
98
|
-
exec: (input, _) => match(input, /^('(\\'|[^'])*[^\\]?'|@?\$?"(\\"|[^"])*[^\\]?")/, arr => {
|
|
99
|
-
const raw = arr[0], text = raw;
|
|
100
|
-
return [{
|
|
101
|
-
type: 'code-string', raw, text
|
|
102
|
-
}];
|
|
103
|
-
})
|
|
104
|
-
}, {
|
|
105
|
-
// keywords
|
|
106
|
-
exec: (input, _) => match(input, /^\b(abstract|as|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|static|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|nameof|orderby|partial|remove|select|set|value|var|when|where|yield)\b/, arr => {
|
|
107
|
-
const raw = arr[0], text = raw;
|
|
108
|
-
return [{
|
|
109
|
-
type: 'code-keyword', raw, text
|
|
110
|
-
}];
|
|
111
|
-
})
|
|
112
|
-
}, {
|
|
113
|
-
// number
|
|
114
|
-
exec: (input, _) => match(input, /^\b((0x[0-9a-fA-F]|[\d])*\.?[\d]+)\b/, arr => {
|
|
115
|
-
const raw = arr[0], text = raw;
|
|
116
|
-
return [{
|
|
117
|
-
type: 'code-number', raw, text
|
|
118
|
-
}];
|
|
119
|
-
})
|
|
120
|
-
}, {
|
|
121
|
-
// variables, operators, parentheses
|
|
122
|
-
exec: (input, _) => match(input, /^(@?\w+|:|\?\??|\?=?|\|\|?|&&?|&=?|;|,|=|\*=?|--|-=?|\+\+|\+=?|\/=?|\^|\(|\[|\)|\]|\{|\})/, arr => {
|
|
123
|
-
const raw = arr[0], text = raw;
|
|
124
|
-
return [{
|
|
125
|
-
type: 'text', raw, text
|
|
126
|
-
}];
|
|
127
|
-
}),
|
|
128
|
-
}, {
|
|
129
|
-
// spaces
|
|
130
|
-
exec: (input, _) => match(input, /^\s+/, arr => {
|
|
131
|
-
const raw = arr[0], text = raw;
|
|
132
|
-
return [{
|
|
133
|
-
type: 'space', raw, text
|
|
134
|
-
}];
|
|
135
|
-
}),
|
|
136
|
-
}];
|
|
137
|
-
const SCRIPT_RULES = [
|
|
138
|
-
C_LIKE_RULES[0], C_LIKE_RULES[1], {
|
|
139
|
-
// string literal
|
|
140
|
-
exec: (input, _) => match(input, /^('(\\'|[^'])*[^\\]?'|"(\\"|[^"])*[^\\]?"|`(\\`|[^`])*[^\\]?`)/, arr => {
|
|
141
|
-
const raw = arr[0], text = raw;
|
|
142
|
-
return [{
|
|
143
|
-
type: 'code-string', raw, text
|
|
144
|
-
}];
|
|
145
|
-
})
|
|
146
|
-
}, {
|
|
147
|
-
// keywords
|
|
148
|
-
exec: (input, _) => match(input, /^\b(abstract|any|arguments|async|await|boolean|break|byte|case|catch|char|class|const|continue|debugger|declare|default|delete|do|double|else|enum|eval|export|extends|false|final|finally|float|for|function|get|goto|if|implements|import|in|instanceof|int|interface|let|long|native|new|null|number|package|private|protected|public|return|short|static|string|super|switch|synchronized|this|throw|throws|transient|true|try|type|typeof|var|void|volatile|while|with|yield)\b/, arr => {
|
|
149
|
-
const raw = arr[0], text = raw;
|
|
150
|
-
return [{
|
|
151
|
-
type: 'code-keyword', raw, text
|
|
152
|
-
}];
|
|
153
|
-
})
|
|
154
|
-
},
|
|
155
|
-
C_LIKE_RULES[4],
|
|
156
|
-
C_LIKE_RULES[5],
|
|
157
|
-
C_LIKE_RULES[6]
|
|
158
|
-
];
|
|
159
9
|
const TWITTER_RULE = {
|
|
160
10
|
rule: {
|
|
161
11
|
exec: (input) => {
|
|
@@ -194,39 +44,18 @@ const RULES_TO_HTML = (token) => {
|
|
|
194
44
|
case 'tweet':
|
|
195
45
|
return `<!-- twitter embed -->
|
|
196
46
|
<${P}-tweetembed tweetid="${token.text}"></${P}-tweetembed>`;
|
|
197
|
-
// code
|
|
198
|
-
case 'code-string':
|
|
199
|
-
case 'code-keyword':
|
|
200
|
-
case 'code-number':
|
|
201
|
-
case 'code-comment':
|
|
202
|
-
case 'code-tag':
|
|
203
|
-
case 'code-tagname':
|
|
204
|
-
case 'code-attribute':
|
|
205
|
-
return `<span class="${token.type}">${token.text}</span>`;
|
|
206
47
|
}
|
|
207
48
|
};
|
|
208
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Parses Markdown into HTML, extended with Pacem-specific inline embeds (`{tweet}(id)`, `{yt}(id)`).
|
|
51
|
+
* Fenced code blocks are highlighted by the language-agnostic `Compile.Scanner`, for every language registered in
|
|
52
|
+
* `Compile.Syntaxes` (built-in: javascript/typescript, html/xml, c#, c/c++, json; more can be registered at runtime).
|
|
53
|
+
*/
|
|
209
54
|
export class MarkdownService {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
];
|
|
215
|
-
for (let lang of ['c-sharp', 'c', 'c#', 'csharp', 'c++', 'cpp']) {
|
|
216
|
-
const c_like_rules = C_LIKE_RULES.map(rule => { return { rule, lang, type: 'code' }; });
|
|
217
|
-
Array.prototype.push.apply(grammar, c_like_rules);
|
|
218
|
-
}
|
|
219
|
-
for (let lang of ['ts', 'js', 'typescript', 'javascript']) {
|
|
220
|
-
const script_rules = SCRIPT_RULES.map(rule => { return { rule, lang, type: 'code' }; });
|
|
221
|
-
Array.prototype.push.apply(grammar, script_rules);
|
|
222
|
-
}
|
|
223
|
-
for (let lang of ['xml', 'html']) {
|
|
224
|
-
const markup_rules = MARKUP_RULES.map(rule => { return { rule, lang, type: 'code' }; });
|
|
225
|
-
Array.prototype.push.apply(grammar, markup_rules);
|
|
226
|
-
}
|
|
227
|
-
this.#grammar = grammar;
|
|
228
|
-
}
|
|
229
|
-
#grammar;
|
|
55
|
+
#grammar = [
|
|
56
|
+
TWITTER_RULE,
|
|
57
|
+
YOUTUBE_RULE
|
|
58
|
+
];
|
|
230
59
|
#md = new Compile.Markdown.Parser();
|
|
231
60
|
_escape(md) {
|
|
232
61
|
// no html allowed
|
|
@@ -234,10 +63,12 @@ export class MarkdownService {
|
|
|
234
63
|
}
|
|
235
64
|
/** Converts the given Markdown source into an HTML string. */
|
|
236
65
|
toHtml(md) {
|
|
237
|
-
|
|
66
|
+
const escaped = this._escape(md);
|
|
67
|
+
return this.#md.toHtml(escaped, this.#grammar, RULES_TO_HTML);
|
|
238
68
|
}
|
|
239
69
|
/** Tokenizes the given Markdown source, without rendering it to HTML. */
|
|
240
70
|
tokenize(md) {
|
|
241
|
-
|
|
71
|
+
const escaped = this._escape(md);
|
|
72
|
+
return this.#md.tokenize(escaped, this.#grammar);
|
|
242
73
|
}
|
|
243
74
|
}
|
package/dist/esm/markdown.js
CHANGED
package/dist/esm/marquee.js
CHANGED
package/dist/esm/media-query.js
CHANGED
package/dist/esm/menu.js
CHANGED
package/dist/esm/pager.js
CHANGED
package/dist/esm/picture.js
CHANGED
package/dist/esm/progressbar.js
CHANGED
package/dist/esm/sidebar.js
CHANGED
package/dist/esm/slideshow.js
CHANGED
package/dist/esm/tabs.js
CHANGED
package/dist/esm/ticker.js
CHANGED
package/dist/esm/toast.js
CHANGED
package/dist/esm/toc.js
CHANGED
package/dist/esm/tuner.js
CHANGED
package/dist/esm/types.js
CHANGED
package/dist/esm/vibration.js
CHANGED
package/dist/esm/view.js
CHANGED
package/dist/esm/window.js
CHANGED