@api-client/ui 0.5.39 → 0.5.40
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/build/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/.aiexclude +0 -3
- package/.cursor/rules/html-and-css-best-practices.mdc +0 -63
- package/.cursor/rules/lit-best-practices.mdc +0 -89
- package/.editorconfig +0 -29
- package/.github/CONTRIBUTING.md +0 -24
- package/.github/instructions/html-and-css-best-practices.instructions.md +0 -70
- package/.github/instructions/lit-best-practices.instructions.md +0 -90
- package/.github/release.yml +0 -14
- package/.github/stale.yml +0 -23
- package/.github/workflows/auto-release.yml +0 -182
- package/.github/workflows/release.yml +0 -82
- package/.prettierrc.js +0 -14
- package/.vscode/settings.json +0 -18
- package/RELEASE.md +0 -163
- package/RELEASE_SETUP.md +0 -235
- package/build/src/demo/DemoPage.d.ts +0 -81
- package/build/src/demo/DemoPage.d.ts.map +0 -1
- package/build/src/demo/DemoPage.js +0 -175
- package/build/src/demo/DemoPage.js.map +0 -1
- package/build/src/demo/DemoStyles.d.ts +0 -3
- package/build/src/demo/DemoStyles.d.ts.map +0 -1
- package/build/src/demo/DemoStyles.js +0 -60
- package/build/src/demo/DemoStyles.js.map +0 -1
- package/build/test/elements/navigation/Navigation.test.d.ts +0 -3
- package/build/test/elements/navigation/Navigation.test.d.ts.map +0 -1
- package/build/test/elements/navigation/Navigation.test.js +0 -113
- package/build/test/elements/navigation/Navigation.test.js.map +0 -1
- package/commitlint.config.cjs +0 -2
- package/demo/elements/authorization/AuthPlugin.js +0 -57
- package/demo/elements/authorization/AuthProxy.js +0 -215
- package/demo/elements/authorization/api-key.html +0 -27
- package/demo/elements/authorization/api-key.ts +0 -44
- package/demo/elements/authorization/basic.html +0 -27
- package/demo/elements/authorization/basic.ts +0 -43
- package/demo/elements/authorization/bearer.html +0 -27
- package/demo/elements/authorization/bearer.ts +0 -43
- package/demo/elements/authorization/env.js +0 -8
- package/demo/elements/authorization/index.html +0 -44
- package/demo/elements/authorization/ntlm.html +0 -27
- package/demo/elements/authorization/ntlm.ts +0 -43
- package/demo/elements/authorization/oauth-authorize.html +0 -75
- package/demo/elements/authorization/oauth-authorize.ts +0 -40
- package/demo/elements/authorization/oauth-error.html +0 -18
- package/demo/elements/authorization/oauth-error.ts +0 -10
- package/demo/elements/authorization/oauth-popup.html +0 -36
- package/demo/elements/authorization/oauth2.html +0 -27
- package/demo/elements/authorization/oauth2.ts +0 -100
- package/demo/elements/authorization/oidc.html +0 -27
- package/demo/elements/authorization/oidc.ts +0 -139
- package/demo/elements/authorization/private.crt +0 -31
- package/demo/elements/authorization/private.csr +0 -28
- package/demo/elements/authorization/private.key +0 -51
- package/demo/elements/authorization/private.pem +0 -31
- package/demo/elements/authorization/redirect.html +0 -20
- package/demo/elements/authorization/ssl-commands.sh +0 -30
- package/demo/elements/authorization/ssl.conf +0 -24
- package/demo/elements/autocomplete/index.html +0 -64
- package/demo/elements/autocomplete/index.ts +0 -171
- package/demo/elements/code-editor/CodeEditorDemo.ts +0 -173
- package/demo/elements/code-editor/index.html +0 -19
- package/demo/elements/context-menu/DemoIcons.ts +0 -21
- package/demo/elements/context-menu/basic.html +0 -25
- package/demo/elements/context-menu/basic.ts +0 -119
- package/demo/elements/context-menu/custom-data.html +0 -25
- package/demo/elements/context-menu/custom-data.ts +0 -62
- package/demo/elements/context-menu/demo.css +0 -28
- package/demo/elements/context-menu/enabled-state.html +0 -25
- package/demo/elements/context-menu/enabled-state.ts +0 -73
- package/demo/elements/context-menu/icons.html +0 -25
- package/demo/elements/context-menu/icons.ts +0 -64
- package/demo/elements/context-menu/index.html +0 -43
- package/demo/elements/context-menu/nested.html +0 -25
- package/demo/elements/context-menu/nestedt.ts +0 -152
- package/demo/elements/context-menu/no-execute.html +0 -25
- package/demo/elements/context-menu/no-execute.ts +0 -134
- package/demo/elements/context-menu/radio-menu.html +0 -25
- package/demo/elements/context-menu/radio-menu.ts +0 -83
- package/demo/elements/context-menu/separators.html +0 -25
- package/demo/elements/context-menu/separators.ts +0 -172
- package/demo/elements/currency/index.html +0 -91
- package/demo/elements/currency/index.ts +0 -352
- package/demo/elements/environment/environment-editor.html +0 -20
- package/demo/elements/environment/environment-editor.ts +0 -49
- package/demo/elements/environment/index.html +0 -33
- package/demo/elements/environment/server-editor.html +0 -20
- package/demo/elements/environment/server-editor.ts +0 -67
- package/demo/elements/environment/variables-editor.html +0 -20
- package/demo/elements/environment/variables-editor.ts +0 -94
- package/demo/elements/har/har-viewer.html +0 -20
- package/demo/elements/har/har-viewer.ts +0 -76
- package/demo/elements/har/har1.har +0 -3044
- package/demo/elements/har/har2.json +0 -439
- package/demo/elements/har/index.html +0 -26
- package/demo/elements/highlight/example.md +0 -27
- package/demo/elements/highlight/index.html +0 -31
- package/demo/elements/highlight/marked-highlight.html +0 -132
- package/demo/elements/highlight/marked-highlight.ts +0 -22
- package/demo/elements/highlight/prism-highlight.html +0 -62
- package/demo/elements/highlight/prism-highlight.ts +0 -17
- package/demo/elements/http/body-editor.html +0 -17
- package/demo/elements/http/body-editor.ts +0 -115
- package/demo/elements/http/headers.html +0 -17
- package/demo/elements/http/headers.ts +0 -59
- package/demo/elements/http/http-assertions.html +0 -20
- package/demo/elements/http/http-assertions.ts +0 -89
- package/demo/elements/http/http-flows.html +0 -23
- package/demo/elements/http/http-flows.ts +0 -89
- package/demo/elements/http/index.html +0 -45
- package/demo/elements/http/request-editor.html +0 -26
- package/demo/elements/http/request-editor.ts +0 -197
- package/demo/elements/http/request-log.html +0 -16
- package/demo/elements/http/request-log.ts +0 -136
- package/demo/elements/http/url-editing.html +0 -17
- package/demo/elements/http/url-editing.ts +0 -112
- package/demo/elements/icons/index.html +0 -81
- package/demo/elements/icons/index.ts +0 -52
- package/demo/elements/index.html +0 -72
- package/demo/elements/mention-textarea/index.html +0 -19
- package/demo/elements/mention-textarea/index.ts +0 -205
- package/demo/elements/navigation/navigation-item.html +0 -49
- package/demo/elements/navigation/navigation-item.ts +0 -131
- package/demo/elements/navigation/navigation.html +0 -20
- package/demo/elements/navigation/navigation.ts +0 -45
- package/demo/elements/project/index.html +0 -29
- package/demo/elements/project/project-run-report.html +0 -20
- package/demo/elements/project/project-run-report.ts +0 -132
- package/demo/elements/project/request-editor.html +0 -23
- package/demo/elements/project/request-editor.ts +0 -232
- package/demo/elements/user/user-avatar.html +0 -17
- package/demo/elements/user/user-avatar.ts +0 -60
- package/demo/env.js +0 -4
- package/demo/index.html +0 -34
- package/demo/layout/index.html +0 -94
- package/demo/layout/index.ts +0 -190
- package/demo/md/DemoStyles.ts +0 -61
- package/demo/md/UiDemoPage.ts +0 -6
- package/demo/md/buttons/button.html +0 -121
- package/demo/md/buttons/button.ts +0 -246
- package/demo/md/buttons/group.html +0 -36
- package/demo/md/buttons/group.ts +0 -171
- package/demo/md/checkbox/index.html +0 -39
- package/demo/md/checkbox/index.ts +0 -220
- package/demo/md/chip/chip.html +0 -70
- package/demo/md/chip/chip.ts +0 -219
- package/demo/md/chip/pawel6c9a.jpg +0 -0
- package/demo/md/collapse/CustomDetail.ts +0 -89
- package/demo/md/collapse/collapse.html +0 -21
- package/demo/md/collapse/collapse.ts +0 -78
- package/demo/md/date-picker/date-picker.ts +0 -336
- package/demo/md/date-picker/index.html +0 -171
- package/demo/md/dialog/confirm-dialog.html +0 -49
- package/demo/md/dialog/confirm-dialog.ts +0 -121
- package/demo/md/dialog/dialog.html +0 -25
- package/demo/md/dialog/dialog.ts +0 -468
- package/demo/md/dropdown-list/index.html +0 -31
- package/demo/md/dropdown-list/index.ts +0 -158
- package/demo/md/icon-button/index.html +0 -122
- package/demo/md/icon-button/index.ts +0 -132
- package/demo/md/index.html +0 -73
- package/demo/md/inputs/input.html +0 -73
- package/demo/md/inputs/input.ts +0 -278
- package/demo/md/inputs/radio.html +0 -39
- package/demo/md/inputs/radio.ts +0 -156
- package/demo/md/inputs/switch.html +0 -45
- package/demo/md/inputs/switch.ts +0 -144
- package/demo/md/list/list.html +0 -65
- package/demo/md/list/list.ts +0 -204
- package/demo/md/listbox/listbox.html +0 -31
- package/demo/md/listbox/listbox.ts +0 -27
- package/demo/md/menu/index.html +0 -19
- package/demo/md/menu/index.ts +0 -514
- package/demo/md/notification/snack.html +0 -21
- package/demo/md/notification/snack.ts +0 -70
- package/demo/md/progress/progress.html +0 -46
- package/demo/md/progress/progress.ts +0 -161
- package/demo/md/segmented-button/index.html +0 -21
- package/demo/md/segmented-button/index.ts +0 -55
- package/demo/md/select/index.html +0 -16
- package/demo/md/select/index.ts +0 -217
- package/demo/md/tabs/tabs.html +0 -40
- package/demo/md/tabs/tabs.ts +0 -214
- package/demo/oauth-popup.html +0 -36
- package/demo/page.css +0 -8
- package/demo/resources/calendar-month.png +0 -0
- package/demo/resources/favorite.png +0 -0
- package/demo/resources/fingerprint.png +0 -0
- package/demo/resources/home-work.png +0 -0
- package/demo/resources/mood.png +0 -0
- package/demo/resources/print.png +0 -0
- package/demo/resources/stars.png +0 -0
- package/demo/resources/theaters.png +0 -0
- package/demo/tsconfig.json +0 -4
- package/eslint.config.js +0 -97
- package/scripts/copy-assets.js +0 -21
- package/scripts/release.js +0 -66
- package/src/demo/DemoPage.ts +0 -169
- package/src/demo/DemoStyles.ts +0 -60
- package/test/README.md +0 -375
- package/test/contextual-menu/ContextMenu.test.ts +0 -760
- package/test/contextual-menu/ContextMenuElement.test.ts +0 -569
- package/test/core/activity.spec.ts +0 -413
- package/test/core/activity_manager.spec.ts +0 -544
- package/test/core/application.spec.ts +0 -218
- package/test/core/fragment.spec.ts +0 -565
- package/test/core/fragment_manager.spec.ts +0 -404
- package/test/core/live_data.spec.ts +0 -558
- package/test/core/renderer.spec.ts +0 -113
- package/test/dom-assertions.test.ts +0 -182
- package/test/elements/MonacoSetup.ts +0 -65
- package/test/elements/authorization/basic-method.test.ts +0 -177
- package/test/elements/authorization/bearer-method.test.ts +0 -143
- package/test/elements/authorization/ntlm-method.test.ts +0 -219
- package/test/elements/authorization/oauth2-client-credentials-method.test.ts +0 -334
- package/test/elements/authorization/oauth2-code-method.test.ts +0 -320
- package/test/elements/authorization/oauth2-custom-grant-method.test.ts +0 -255
- package/test/elements/authorization/oauth2-device-code-method.test.ts +0 -371
- package/test/elements/authorization/oauth2-implicit-method.test.ts +0 -407
- package/test/elements/authorization/oauth2-jwt-method.test.ts +0 -217
- package/test/elements/authorization/oauth2-password-method.test.ts +0 -275
- package/test/elements/authorization/openid-method.test.ts +0 -591
- package/test/elements/autocomplete/autocomplete-input.spec.ts +0 -646
- package/test/elements/code-editor/code-editor.accessibility.test.ts +0 -298
- package/test/elements/code-editor/code-editor.test.ts +0 -574
- package/test/elements/currency/CurrencyPicker.accessibility.test.ts +0 -328
- package/test/elements/currency/CurrencyPicker.core.test.ts +0 -318
- package/test/elements/currency/CurrencyPicker.integration.test.ts +0 -482
- package/test/elements/currency/CurrencyPicker.test.ts +0 -486
- package/test/elements/data-table/DataTable.browser.test.ts +0 -649
- package/test/elements/har/HarUtils.test.ts +0 -45
- package/test/elements/har/HarViewerElement.test.ts +0 -687
- package/test/elements/har/test-data/har1.har +0 -3044
- package/test/elements/highlight/MarkedHighlightElement.test.ts +0 -452
- package/test/elements/highlight/PrismHighlightElement.test.ts +0 -79
- package/test/elements/highlight/PrismHighlighter.test.ts +0 -94
- package/test/elements/highlight/remoteSanitization.md +0 -1
- package/test/elements/highlight/test.md +0 -3
- package/test/elements/highlight/test1.md +0 -3
- package/test/elements/highlight/test2.md +0 -1
- package/test/elements/http/BodyFormdataEditorElement.test.ts +0 -482
- package/test/elements/http/BodyMultipartEditorElement.test.ts +0 -658
- package/test/elements/http/BodyRawEditorElement.test.ts +0 -90
- package/test/elements/http/CertificateAdd.test.ts +0 -457
- package/test/elements/http/HttpAssertions.test.ts +0 -994
- package/test/elements/http/HttpFlows.test.ts +0 -502
- package/test/elements/http/UrlEncodeUtils.test.ts +0 -202
- package/test/elements/layout/SplitItem.test.ts +0 -440
- package/test/elements/layout/SplitLayoutManager.test.ts +0 -1501
- package/test/elements/layout/SplitPanel.test.ts +0 -1109
- package/test/elements/mention-textarea/MentionTextArea.basic.test.ts +0 -114
- package/test/elements/mention-textarea/MentionTextArea.test.ts +0 -613
- package/test/elements/navigation/Navigation.test.ts +0 -120
- package/test/env.ts +0 -15
- package/test/events/EventTypes.test.ts +0 -363
- package/test/events/EventsTestHelpers.ts +0 -16
- package/test/helpers/TestUtils.ts +0 -243
- package/test/helpers/UiMock.ts +0 -185
- package/test/lib/Dom.test.ts +0 -231
- package/test/md/button/UiButton.test.ts +0 -347
- package/test/md/button/UiIconButton.test.ts +0 -155
- package/test/md/chip/UiChip.test.ts +0 -219
- package/test/md/collapse/UiCollapse.test.ts +0 -250
- package/test/md/collapse/flex-layout.test.ts +0 -105
- package/test/md/date-time/DateTime.test.ts +0 -348
- package/test/md/dialog/UiConfirmDialog.test.ts +0 -131
- package/test/md/dialog/UiDialog.test.ts +0 -759
- package/test/md/menu/Menu.test.ts +0 -855
- package/test/md/menu/MenuIntegration.test.ts +0 -426
- package/test/md/menu/MenuItem.test.ts +0 -652
- package/test/md/menu/SubMenu.test.ts +0 -410
- package/test/md/progress/UiCircularProgressElement.test.ts +0 -481
- package/test/md/progress/UiProgressElement.test.ts +0 -117
- package/test/md/progress/UiRangeElement.test.ts +0 -156
- package/test/md/select/Select.test.ts +0 -925
- package/test/plugins/takeScreenshotPlugin.js +0 -35
- package/test/setup.test.ts +0 -217
- package/test/setup.ts +0 -117
- package/test/tsconfig.json +0 -7
- package/web-dev-server.config.js +0 -21
- package/web-test-runner.config.js +0 -90
|
@@ -1,452 +0,0 @@
|
|
|
1
|
-
import { nextFrame, fixture, expect, assert, html, oneEvent } from '@open-wc/testing'
|
|
2
|
-
import sinon from 'sinon'
|
|
3
|
-
import { MarkedHighlightElement } from '../../../src/index.js'
|
|
4
|
-
import '../../../src/elements/highlight/marked-highlight.js'
|
|
5
|
-
import { Tokens } from 'marked'
|
|
6
|
-
|
|
7
|
-
describe('MarkedHighlightElement', () => {
|
|
8
|
-
async function basicFixture(): Promise<MarkedHighlightElement> {
|
|
9
|
-
return fixture(
|
|
10
|
-
html`<marked-highlight>
|
|
11
|
-
<div id="output" slot="markdown-html"></div>
|
|
12
|
-
<script type="text/markdown">
|
|
13
|
-
# Test
|
|
14
|
-
</script>
|
|
15
|
-
</marked-highlight>`
|
|
16
|
-
)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function propertyMarkdownFixture(): Promise<MarkedHighlightElement> {
|
|
20
|
-
return fixture(
|
|
21
|
-
html`<marked-highlight markdown="# Test">
|
|
22
|
-
<div id="output" slot="markdown-html"></div>
|
|
23
|
-
</marked-highlight>`
|
|
24
|
-
)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async function noContentFixture(): Promise<MarkedHighlightElement> {
|
|
28
|
-
return fixture(
|
|
29
|
-
html`<marked-highlight>
|
|
30
|
-
<div id="output" slot="markdown-html"></div>
|
|
31
|
-
<script type="text/markdown"></script>
|
|
32
|
-
</marked-highlight>`
|
|
33
|
-
)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
async function camelCaseHTMLFixture(): Promise<MarkedHighlightElement> {
|
|
37
|
-
return fixture(
|
|
38
|
-
html`<marked-highlight>
|
|
39
|
-
<div id="output" slot="markdown-html"></div>
|
|
40
|
-
<script type="text/markdown">
|
|
41
|
-
\`\`\`html
|
|
42
|
-
<div camelCase></div>
|
|
43
|
-
\`\`\`
|
|
44
|
-
</script>
|
|
45
|
-
</marked-highlight>`
|
|
46
|
-
)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// async function camelCaseHTMLWithoutChildFixture(): Promise<MarkedHighlightElement> {
|
|
50
|
-
// return fixture(
|
|
51
|
-
// html`<marked-highlight>
|
|
52
|
-
// <div id="output" slot="markdown-html"></div>
|
|
53
|
-
// <script type="text/markdown">
|
|
54
|
-
// \`\`\`html
|
|
55
|
-
// <div camelCase></div>
|
|
56
|
-
// \`\`\`
|
|
57
|
-
// </script>
|
|
58
|
-
// </marked-highlight>`
|
|
59
|
-
// )
|
|
60
|
-
// }
|
|
61
|
-
|
|
62
|
-
// async function badHTMLWithoutChildFixture(): Promise<MarkedHighlightElement> {
|
|
63
|
-
// return fixture(
|
|
64
|
-
// html`<marked-highlight>
|
|
65
|
-
// <div id="output" slot="markdown-html"></div>
|
|
66
|
-
// <script type="text/markdown">
|
|
67
|
-
// \`\`\`html
|
|
68
|
-
// <p><div></p></div>
|
|
69
|
-
// \`\`\`
|
|
70
|
-
// </script>
|
|
71
|
-
// </marked-highlight>`
|
|
72
|
-
// )
|
|
73
|
-
// }
|
|
74
|
-
|
|
75
|
-
async function rendererFixture(): Promise<MarkedHighlightElement> {
|
|
76
|
-
return fixture(
|
|
77
|
-
html`<marked-highlight>
|
|
78
|
-
<div id="output" slot="markdown-html"></div>
|
|
79
|
-
<script type="text/markdown">
|
|
80
|
-
[Link](http://url.com)
|
|
81
|
-
</script>
|
|
82
|
-
</marked-highlight>`
|
|
83
|
-
)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// async function sanitizerFixture(): Promise<MarkedHighlightElement> {
|
|
87
|
-
// return fixture(
|
|
88
|
-
// html`<marked-highlight sanitize>
|
|
89
|
-
// <div id="output" slot="markdown-html"></div>
|
|
90
|
-
// <script type="text/markdown">
|
|
91
|
-
// [Link](http://url.com" onclick="alert(1)")
|
|
92
|
-
// <a href="http://url.com" onclick="alert(1)">Link</a>
|
|
93
|
-
|
|
94
|
-
// \`\`\`html
|
|
95
|
-
// <a href="http://url.com" onclick="alert(1)">Link</a>
|
|
96
|
-
// \`\`\`
|
|
97
|
-
// </script>
|
|
98
|
-
// </marked-highlight>`
|
|
99
|
-
// )
|
|
100
|
-
// }
|
|
101
|
-
|
|
102
|
-
async function remoteContentFixture(): Promise<MarkedHighlightElement> {
|
|
103
|
-
return fixture(
|
|
104
|
-
html`<marked-highlight>
|
|
105
|
-
<div id="output" slot="markdown-html"></div>
|
|
106
|
-
<script type="text/markdown" src="test/elements/highlight/test.md">
|
|
107
|
-
# Loading
|
|
108
|
-
Please wait...
|
|
109
|
-
</script>
|
|
110
|
-
</marked-highlight>`
|
|
111
|
-
)
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
async function badRemoteContentFixture(): Promise<MarkedHighlightElement> {
|
|
115
|
-
return fixture(
|
|
116
|
-
html`<marked-highlight>
|
|
117
|
-
<div id="output" slot="markdown-html"></div>
|
|
118
|
-
<script type="text/markdown" src="test/elements/highlight/test3.md"></script>
|
|
119
|
-
</marked-highlight>`
|
|
120
|
-
)
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
async function sanitizedRemoteContentFixture(): Promise<MarkedHighlightElement> {
|
|
124
|
-
return fixture(
|
|
125
|
-
html`<marked-highlight>
|
|
126
|
-
<div id="output" slot="markdown-html"></div>
|
|
127
|
-
<script type="text/markdown" src="test/elements/highlight/remoteSanitization.md"></script>
|
|
128
|
-
</marked-highlight>`
|
|
129
|
-
)
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
async function unsanitizedRemoteContentFixture(): Promise<MarkedHighlightElement> {
|
|
133
|
-
return fixture(
|
|
134
|
-
html`<marked-highlight disableRemoteSanitization>
|
|
135
|
-
<div id="output" slot="markdown-html"></div>
|
|
136
|
-
<script type="text/markdown" src="test/elements/highlight/remoteSanitization.md"></script>
|
|
137
|
-
</marked-highlight>`
|
|
138
|
-
)
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
async function markedOptionsFixture(): Promise<MarkedHighlightElement> {
|
|
142
|
-
return fixture(
|
|
143
|
-
html`<marked-highlight sanitize pedantic breaks>
|
|
144
|
-
<div id="output" slot="markdown-html"></div>
|
|
145
|
-
<script type="text/markdown" src="test/elements/highlight/remoteSanitization.md"></script>
|
|
146
|
-
</marked-highlight>`
|
|
147
|
-
)
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Thanks IE10.
|
|
151
|
-
function isHidden(element: HTMLElement): boolean {
|
|
152
|
-
const rect = element.getBoundingClientRect()
|
|
153
|
-
return rect.width === 0 && rect.height === 0
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// // Replace reserved HTML characters with their character entity equivalents to
|
|
157
|
-
// // match the transform done by Markdown.
|
|
158
|
-
// //
|
|
159
|
-
// // The Marked library itself is not used because it wraps code blocks in
|
|
160
|
-
// // `<code><pre>`, which is superfluous for testing purposes.
|
|
161
|
-
// function escapeHTML(string) {
|
|
162
|
-
// const span = document.createElement('span');
|
|
163
|
-
// span.textContent = string;
|
|
164
|
-
// return span.innerHTML;
|
|
165
|
-
// }
|
|
166
|
-
|
|
167
|
-
describe('Property setters', () => {
|
|
168
|
-
let element: MarkedHighlightElement
|
|
169
|
-
beforeEach(async () => {
|
|
170
|
-
element = await basicFixture()
|
|
171
|
-
})
|
|
172
|
-
|
|
173
|
-
it(`triggers the renderMarkdown() when setting the markdown property`, async () => {
|
|
174
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
175
|
-
element.markdown = 'test'
|
|
176
|
-
await nextFrame()
|
|
177
|
-
assert.isTrue(spy.called)
|
|
178
|
-
})
|
|
179
|
-
|
|
180
|
-
it(`ignores renderMarkdown() when setting the same value for the markdown property`, async () => {
|
|
181
|
-
element.markdown = 'test'
|
|
182
|
-
await nextFrame()
|
|
183
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
184
|
-
element.markdown = 'test'
|
|
185
|
-
await nextFrame()
|
|
186
|
-
assert.isFalse(spy.called)
|
|
187
|
-
})
|
|
188
|
-
|
|
189
|
-
it(`triggers the renderMarkdown() when setting the breaks property`, async () => {
|
|
190
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
191
|
-
element.breaks = true
|
|
192
|
-
await nextFrame()
|
|
193
|
-
assert.isTrue(spy.called)
|
|
194
|
-
})
|
|
195
|
-
|
|
196
|
-
it(`ignores renderMarkdown() when setting the same value for the breaks property`, async () => {
|
|
197
|
-
element.breaks = true
|
|
198
|
-
await nextFrame()
|
|
199
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
200
|
-
element.breaks = true
|
|
201
|
-
await nextFrame()
|
|
202
|
-
assert.isFalse(spy.called)
|
|
203
|
-
})
|
|
204
|
-
|
|
205
|
-
it(`triggers the renderMarkdown() when setting the pedantic property`, async () => {
|
|
206
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
207
|
-
element.pedantic = true
|
|
208
|
-
await nextFrame()
|
|
209
|
-
assert.isTrue(spy.called)
|
|
210
|
-
})
|
|
211
|
-
|
|
212
|
-
it(`ignores renderMarkdown() when setting the same value for the pedantic property`, async () => {
|
|
213
|
-
element.pedantic = true
|
|
214
|
-
await nextFrame()
|
|
215
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
216
|
-
element.pedantic = true
|
|
217
|
-
await nextFrame()
|
|
218
|
-
assert.isFalse(spy.called)
|
|
219
|
-
})
|
|
220
|
-
|
|
221
|
-
it(`triggers the renderMarkdown() when setting the sanitize property`, async () => {
|
|
222
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
223
|
-
element.sanitize = true
|
|
224
|
-
await nextFrame()
|
|
225
|
-
assert.isTrue(spy.called)
|
|
226
|
-
})
|
|
227
|
-
|
|
228
|
-
it(`ignores renderMarkdown() when setting the same value for the sanitize property`, async () => {
|
|
229
|
-
element.sanitize = true
|
|
230
|
-
await nextFrame()
|
|
231
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
232
|
-
element.sanitize = true
|
|
233
|
-
await nextFrame()
|
|
234
|
-
assert.isFalse(spy.called)
|
|
235
|
-
})
|
|
236
|
-
|
|
237
|
-
it(`triggers the renderMarkdown() when setting the renderer property`, async () => {
|
|
238
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
239
|
-
element.renderer = (): void => {
|
|
240
|
-
/* */
|
|
241
|
-
}
|
|
242
|
-
await nextFrame()
|
|
243
|
-
assert.isTrue(spy.called)
|
|
244
|
-
})
|
|
245
|
-
|
|
246
|
-
it(`triggers the renderMarkdown() when setting the sanitizer property`, async () => {
|
|
247
|
-
const spy = sinon.spy(element, 'renderMarkdown')
|
|
248
|
-
element.sanitizer = (): void => {
|
|
249
|
-
/* */
|
|
250
|
-
}
|
|
251
|
-
await nextFrame()
|
|
252
|
-
assert.isTrue(spy.called)
|
|
253
|
-
})
|
|
254
|
-
})
|
|
255
|
-
|
|
256
|
-
describe('renders markdown from property setter', () => {
|
|
257
|
-
let outputElement: HTMLDivElement
|
|
258
|
-
beforeEach(async () => {
|
|
259
|
-
await propertyMarkdownFixture()
|
|
260
|
-
outputElement = document.getElementById('output') as HTMLDivElement
|
|
261
|
-
})
|
|
262
|
-
|
|
263
|
-
it('renders the code', () => {
|
|
264
|
-
assert.equal(outputElement.innerHTML, '<h1>Test</h1>\n')
|
|
265
|
-
})
|
|
266
|
-
})
|
|
267
|
-
|
|
268
|
-
describe('has options of marked library', () => {
|
|
269
|
-
let markedElement: MarkedHighlightElement
|
|
270
|
-
beforeEach(async () => {
|
|
271
|
-
markedElement = await markedOptionsFixture()
|
|
272
|
-
})
|
|
273
|
-
|
|
274
|
-
it('has sanitize', () => {
|
|
275
|
-
expect(markedElement.sanitize).to.equal(true)
|
|
276
|
-
})
|
|
277
|
-
|
|
278
|
-
it('has sanitizer', () => {
|
|
279
|
-
expect(markedElement.sanitizer).to.equal(undefined)
|
|
280
|
-
})
|
|
281
|
-
|
|
282
|
-
it('has pedantic', () => {
|
|
283
|
-
expect(markedElement.pedantic).to.equal(true)
|
|
284
|
-
})
|
|
285
|
-
|
|
286
|
-
it('has breaks', () => {
|
|
287
|
-
expect(markedElement.breaks).to.equal(true)
|
|
288
|
-
})
|
|
289
|
-
})
|
|
290
|
-
|
|
291
|
-
describe('with .markdown-html child', () => {
|
|
292
|
-
describe('ignores no content', () => {
|
|
293
|
-
let markedElement: MarkedHighlightElement
|
|
294
|
-
let outputElement: HTMLDivElement
|
|
295
|
-
let proofElement: HTMLDivElement
|
|
296
|
-
beforeEach(async () => {
|
|
297
|
-
markedElement = await noContentFixture()
|
|
298
|
-
proofElement = document.createElement('div')
|
|
299
|
-
outputElement = document.getElementById('output') as HTMLDivElement
|
|
300
|
-
})
|
|
301
|
-
|
|
302
|
-
it('in code blocks', () => {
|
|
303
|
-
proofElement.innerHTML = ''
|
|
304
|
-
assert.equal(outputElement, markedElement.outputElement)
|
|
305
|
-
assert.isTrue(isHidden(markedElement.shadowRoot!.querySelector('#content')!))
|
|
306
|
-
assert.equal(markedElement.markdown, undefined)
|
|
307
|
-
assert.equal(outputElement.innerHTML, proofElement.innerHTML)
|
|
308
|
-
})
|
|
309
|
-
})
|
|
310
|
-
})
|
|
311
|
-
|
|
312
|
-
describe('with custom renderer', () => {
|
|
313
|
-
let markedElement: MarkedHighlightElement
|
|
314
|
-
let outputElement: HTMLDivElement
|
|
315
|
-
let proofElement: HTMLDivElement
|
|
316
|
-
|
|
317
|
-
beforeEach(async () => {
|
|
318
|
-
markedElement = await rendererFixture()
|
|
319
|
-
outputElement = document.getElementById('output') as HTMLDivElement
|
|
320
|
-
proofElement = document.createElement('div')
|
|
321
|
-
})
|
|
322
|
-
|
|
323
|
-
it('takes custom link renderer', async () => {
|
|
324
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
325
|
-
markedElement.renderer = (renderer: any): void => {
|
|
326
|
-
renderer.link = (link: Tokens.Link): string => {
|
|
327
|
-
return `<a href="${link.href}" target="_blank">${link.text}</a>`
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
await nextFrame()
|
|
331
|
-
proofElement.innerHTML = '<a href="http://url.com" target="_blank">Link</a>'
|
|
332
|
-
expect(outputElement.innerHTML).to.include(proofElement.innerHTML)
|
|
333
|
-
})
|
|
334
|
-
})
|
|
335
|
-
|
|
336
|
-
describe('with remote content', () => {
|
|
337
|
-
let markedElement: MarkedHighlightElement
|
|
338
|
-
let outputElement: HTMLDivElement
|
|
339
|
-
let proofElement: HTMLDivElement
|
|
340
|
-
|
|
341
|
-
describe('successful fetch', () => {
|
|
342
|
-
beforeEach(async () => {
|
|
343
|
-
markedElement = await remoteContentFixture()
|
|
344
|
-
outputElement = document.getElementById('output') as HTMLDivElement
|
|
345
|
-
proofElement = document.createElement('div')
|
|
346
|
-
})
|
|
347
|
-
|
|
348
|
-
it('renders remote content', async () => {
|
|
349
|
-
proofElement.innerHTML = '<h1>Test</h1>\n<p><a href="http://url.com/">Link</a></p>\n'
|
|
350
|
-
await oneEvent(markedElement, 'markedloaded')
|
|
351
|
-
await nextFrame()
|
|
352
|
-
expect(outputElement.innerHTML).to.equal(proofElement.innerHTML)
|
|
353
|
-
})
|
|
354
|
-
|
|
355
|
-
it('renders content while remote content is loading', () => {
|
|
356
|
-
proofElement.innerHTML = '<h1>Loading</h1>\n<p>Please wait...</p>\n'
|
|
357
|
-
expect(outputElement.innerHTML).to.equal(proofElement.innerHTML)
|
|
358
|
-
})
|
|
359
|
-
|
|
360
|
-
it('renders new remote content when src changes', async () => {
|
|
361
|
-
await oneEvent(markedElement, 'markedloaded')
|
|
362
|
-
await nextFrame()
|
|
363
|
-
proofElement.innerHTML = '<h1>Test 2</h1>\n'
|
|
364
|
-
// @ts-expect-error for testing
|
|
365
|
-
markedElement.querySelector('[type="text/markdown"]').src = 'test/elements/highlight/test2.md'
|
|
366
|
-
await oneEvent(markedElement, 'markedloaded')
|
|
367
|
-
await nextFrame()
|
|
368
|
-
expect(outputElement.innerHTML).to.equal(proofElement.innerHTML)
|
|
369
|
-
})
|
|
370
|
-
})
|
|
371
|
-
|
|
372
|
-
describe('fails to load', () => {
|
|
373
|
-
beforeEach(async () => {
|
|
374
|
-
markedElement = await badRemoteContentFixture()
|
|
375
|
-
outputElement = document.getElementById('output') as HTMLDivElement
|
|
376
|
-
proofElement = document.createElement('div')
|
|
377
|
-
})
|
|
378
|
-
|
|
379
|
-
it('renders error message', async () => {
|
|
380
|
-
proofElement.innerHTML = '<p>Failed loading markdown source</p>\n'
|
|
381
|
-
await oneEvent(markedElement, 'markedloaderror')
|
|
382
|
-
await nextFrame()
|
|
383
|
-
expect(outputElement.innerHTML).to.equal(proofElement.innerHTML)
|
|
384
|
-
})
|
|
385
|
-
|
|
386
|
-
it("doesn't render error message when default is prevented", async () => {
|
|
387
|
-
proofElement.innerHTML = ''
|
|
388
|
-
markedElement.addEventListener('markedloaderror', (e) => {
|
|
389
|
-
e.preventDefault()
|
|
390
|
-
})
|
|
391
|
-
await oneEvent(markedElement, 'markedloaderror')
|
|
392
|
-
await nextFrame()
|
|
393
|
-
expect(outputElement.innerHTML).to.equal(proofElement.innerHTML)
|
|
394
|
-
})
|
|
395
|
-
})
|
|
396
|
-
|
|
397
|
-
describe('sanitizing remote content', () => {
|
|
398
|
-
describe('sanitized', () => {
|
|
399
|
-
beforeEach(async () => {
|
|
400
|
-
markedElement = await sanitizedRemoteContentFixture()
|
|
401
|
-
})
|
|
402
|
-
|
|
403
|
-
it('sanitizes remote content', async () => {
|
|
404
|
-
outputElement = markedElement.querySelector('#output')!
|
|
405
|
-
proofElement = document.createElement('div')
|
|
406
|
-
proofElement.innerHTML = '<div></div>\n'
|
|
407
|
-
await oneEvent(markedElement, 'markedloaded')
|
|
408
|
-
await nextFrame()
|
|
409
|
-
assert.isTrue(markedElement.sanitize)
|
|
410
|
-
assert.isNotTrue(markedElement.disableRemoteSanitization)
|
|
411
|
-
expect(outputElement.innerHTML).to.equal(proofElement.innerHTML)
|
|
412
|
-
})
|
|
413
|
-
})
|
|
414
|
-
|
|
415
|
-
describe('unsanitized', () => {
|
|
416
|
-
beforeEach(async () => {
|
|
417
|
-
markedElement = await unsanitizedRemoteContentFixture()
|
|
418
|
-
})
|
|
419
|
-
|
|
420
|
-
it('Does not sanitize remote content', async () => {
|
|
421
|
-
outputElement = markedElement.querySelector('#output')!
|
|
422
|
-
proofElement = document.createElement('div')
|
|
423
|
-
proofElement.innerHTML = '<div></div>\n'
|
|
424
|
-
await oneEvent(markedElement, 'markedloaded')
|
|
425
|
-
await nextFrame()
|
|
426
|
-
|
|
427
|
-
assert.isNotTrue(markedElement.sanitize)
|
|
428
|
-
assert.isTrue(markedElement.disableRemoteSanitization)
|
|
429
|
-
expect(outputElement.innerHTML).to.equal(proofElement.innerHTML)
|
|
430
|
-
})
|
|
431
|
-
})
|
|
432
|
-
})
|
|
433
|
-
})
|
|
434
|
-
|
|
435
|
-
describe('events', () => {
|
|
436
|
-
let markedElement: MarkedHighlightElement
|
|
437
|
-
let outputElement: HTMLDivElement
|
|
438
|
-
beforeEach(async () => {
|
|
439
|
-
markedElement = await camelCaseHTMLFixture()
|
|
440
|
-
outputElement = document.getElementById('output') as HTMLDivElement
|
|
441
|
-
})
|
|
442
|
-
|
|
443
|
-
it('render() fires markedrendercomplete', async () => {
|
|
444
|
-
setTimeout(() => {
|
|
445
|
-
markedElement.renderMarkdown()
|
|
446
|
-
})
|
|
447
|
-
await oneEvent(markedElement, 'markedrendercomplete')
|
|
448
|
-
await nextFrame()
|
|
449
|
-
expect(outputElement.innerHTML).to.not.equal('')
|
|
450
|
-
})
|
|
451
|
-
})
|
|
452
|
-
})
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { fixture, assert, html, oneEvent, nextFrame, aTimeout } from '@open-wc/testing'
|
|
2
|
-
import sinon from 'sinon'
|
|
3
|
-
import PrismHighlight from '../../../src/elements/highlight/PrismHighlight.js'
|
|
4
|
-
import '../../../src/elements/highlight/prism-highlight.js'
|
|
5
|
-
|
|
6
|
-
describe('PrismHighlightElement', () => {
|
|
7
|
-
async function markdownFixture(): Promise<PrismHighlight> {
|
|
8
|
-
return fixture(html`<prism-highlight lang="markdown"></prism-highlight>`)
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
async function rawFixture(): Promise<PrismHighlight> {
|
|
12
|
-
return fixture(html`<prism-highlight raw lang="json" code='{"test": true}'></prism-highlight>`)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
describe('anchors handling', () => {
|
|
16
|
-
let element: PrismHighlight
|
|
17
|
-
let code = '# Test highlight\nHello world!\n'
|
|
18
|
-
code += '[link](https://domain.com/)'
|
|
19
|
-
|
|
20
|
-
beforeEach(async () => {
|
|
21
|
-
element = await markdownFixture()
|
|
22
|
-
element.code = code
|
|
23
|
-
// one for the setter
|
|
24
|
-
await nextFrame()
|
|
25
|
-
// and one for the highlight debouncer (do we still need it?)
|
|
26
|
-
await aTimeout(0)
|
|
27
|
-
await nextFrame()
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
// Not sure why but when executing this file only this works, but in the test run it cannot find the "a" element.
|
|
31
|
-
it.skip('dispatches the link event', async () => {
|
|
32
|
-
const anchor = element.outputElement!.querySelector('a')!
|
|
33
|
-
setTimeout(() => {
|
|
34
|
-
anchor.click()
|
|
35
|
-
})
|
|
36
|
-
const e = await oneEvent(element, 'link')
|
|
37
|
-
assert.equal(e.detail.url, 'https://domain.com/', 'has the URL value')
|
|
38
|
-
assert.equal(e.detail.asNew, false, 'has the asNew property')
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
// auto liner is disabled due to some error with dart syntax language.
|
|
42
|
-
it.skip('dispatches the event when ctrl is set', async () => {
|
|
43
|
-
const spy = sinon.spy()
|
|
44
|
-
element.addEventListener('link', spy)
|
|
45
|
-
const anchor = element.outputElement!.querySelector('a')!
|
|
46
|
-
anchor.dispatchEvent(
|
|
47
|
-
new PointerEvent('click', {
|
|
48
|
-
bubbles: true,
|
|
49
|
-
cancelable: true,
|
|
50
|
-
composed: true,
|
|
51
|
-
ctrlKey: true,
|
|
52
|
-
})
|
|
53
|
-
)
|
|
54
|
-
assert.isTrue(spy.calledOnce)
|
|
55
|
-
const event = spy.args[0][0] as CustomEvent
|
|
56
|
-
assert.equal(event.detail.url, 'https://domain.com/', 'has the URL value')
|
|
57
|
-
assert.equal(event.detail.asNew, true, 'has the asNew property')
|
|
58
|
-
})
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
describe('#raw', () => {
|
|
62
|
-
let element: PrismHighlight
|
|
63
|
-
beforeEach(async () => {
|
|
64
|
-
element = await rawFixture()
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
it('renders the code without highlighting', () => {
|
|
68
|
-
const pre = element.shadowRoot!.querySelector('.raw-content')!
|
|
69
|
-
assert.ok(pre)
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
it('renders back the highlighted document', async () => {
|
|
73
|
-
element.raw = false
|
|
74
|
-
await nextFrame()
|
|
75
|
-
const pre = element.shadowRoot!.querySelector('.parsed-content')
|
|
76
|
-
assert.ok(pre)
|
|
77
|
-
})
|
|
78
|
-
})
|
|
79
|
-
})
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { assert } from '@open-wc/testing'
|
|
2
|
-
import { PrismHighlighter } from '../../../src/index.js'
|
|
3
|
-
|
|
4
|
-
describe('PrismHighlighter', () => {
|
|
5
|
-
describe('detectLang()', () => {
|
|
6
|
-
let instance: PrismHighlighter
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
instance = new PrismHighlighter()
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
it('Returns JS grammar when no lang', () => {
|
|
12
|
-
const result = instance.detectLang('{}')
|
|
13
|
-
// @ts-expect-error for testing
|
|
14
|
-
assert.isTrue(result === Prism.languages.javascript)
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
it('Returns Markup grammar when no lang', () => {
|
|
18
|
-
const result = instance.detectLang('<html>')
|
|
19
|
-
// @ts-expect-error for testing
|
|
20
|
-
assert.isTrue(result === Prism.languages.markup)
|
|
21
|
-
})
|
|
22
|
-
;['js', 'esm', 'mj'].forEach((item) => {
|
|
23
|
-
it(`Returns JS grammar for ${item}`, () => {
|
|
24
|
-
const result = instance.detectLang('{}', item)
|
|
25
|
-
// @ts-expect-error for testing
|
|
26
|
-
assert.isTrue(result === Prism.languages.javascript)
|
|
27
|
-
})
|
|
28
|
-
})
|
|
29
|
-
;['c'].forEach((item) => {
|
|
30
|
-
it(`Returns C grammar for ${item}`, () => {
|
|
31
|
-
const result = instance.detectLang('{}', item)
|
|
32
|
-
// @ts-expect-error for testing
|
|
33
|
-
assert.isTrue(result === Prism.languages.clike)
|
|
34
|
-
})
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
it('Returns default grammar', () => {
|
|
38
|
-
const result = instance.detectLang('<html>', 'test')
|
|
39
|
-
// @ts-expect-error for testing
|
|
40
|
-
assert.isTrue(result === Prism.languages.markup)
|
|
41
|
-
})
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
describe('Parsing', () => {
|
|
45
|
-
let instance: PrismHighlighter
|
|
46
|
-
beforeEach(() => {
|
|
47
|
-
instance = new PrismHighlighter()
|
|
48
|
-
})
|
|
49
|
-
|
|
50
|
-
it('parses XML', () => {
|
|
51
|
-
const code = '<Person>true</Person>'
|
|
52
|
-
const result = instance.tokenize(code, 'xml')
|
|
53
|
-
let compare = '<span class="token tag"><span class="token tag">'
|
|
54
|
-
compare += '<span class="token punctuation"><</span>Person</span>'
|
|
55
|
-
compare += '<span class="token punctuation">></span></span>true'
|
|
56
|
-
compare += '<span class="token tag"><span class="token tag">'
|
|
57
|
-
compare += '<span class="token punctuation"></</span>'
|
|
58
|
-
compare += 'Person</span><span class="token punctuation">></span></span>'
|
|
59
|
-
assert.equal(result, compare)
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
it('renders predefined json', () => {
|
|
63
|
-
const code = '{"test": true}'
|
|
64
|
-
const result = instance.tokenize(code, 'json')
|
|
65
|
-
const c =
|
|
66
|
-
'<span class="token punctuation">{</span><span class="token property">"test"</span>' +
|
|
67
|
-
'<span class="token operator">:</span> <span class="token boolean">true</span>' +
|
|
68
|
-
'<span class="token punctuation">}</span>'
|
|
69
|
-
assert.equal(result, c)
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
it('renders code with no language', async () => {
|
|
73
|
-
const code = '007'
|
|
74
|
-
const result = instance.tokenize(code)
|
|
75
|
-
const c = '<span class="token number">007</span>'
|
|
76
|
-
assert.equal(result, c)
|
|
77
|
-
})
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
describe('debounce()', () => {
|
|
81
|
-
it('eventually returns the parse result', (done) => {
|
|
82
|
-
const code = '{"test": true}'
|
|
83
|
-
const c =
|
|
84
|
-
'<span class="token punctuation">{</span><span class="token property">"test"</span>' +
|
|
85
|
-
'<span class="token operator">:</span> <span class="token boolean">true</span>' +
|
|
86
|
-
'<span class="token punctuation">}</span>'
|
|
87
|
-
const instance = new PrismHighlighter((result) => {
|
|
88
|
-
assert.equal(result, c)
|
|
89
|
-
done()
|
|
90
|
-
})
|
|
91
|
-
instance.debounce(code, 'json')
|
|
92
|
-
})
|
|
93
|
-
})
|
|
94
|
-
})
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# Test 2
|