@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.
Files changed (281) hide show
  1. package/build/tsconfig.tsbuildinfo +1 -0
  2. package/package.json +1 -1
  3. package/.aiexclude +0 -3
  4. package/.cursor/rules/html-and-css-best-practices.mdc +0 -63
  5. package/.cursor/rules/lit-best-practices.mdc +0 -89
  6. package/.editorconfig +0 -29
  7. package/.github/CONTRIBUTING.md +0 -24
  8. package/.github/instructions/html-and-css-best-practices.instructions.md +0 -70
  9. package/.github/instructions/lit-best-practices.instructions.md +0 -90
  10. package/.github/release.yml +0 -14
  11. package/.github/stale.yml +0 -23
  12. package/.github/workflows/auto-release.yml +0 -182
  13. package/.github/workflows/release.yml +0 -82
  14. package/.prettierrc.js +0 -14
  15. package/.vscode/settings.json +0 -18
  16. package/RELEASE.md +0 -163
  17. package/RELEASE_SETUP.md +0 -235
  18. package/build/src/demo/DemoPage.d.ts +0 -81
  19. package/build/src/demo/DemoPage.d.ts.map +0 -1
  20. package/build/src/demo/DemoPage.js +0 -175
  21. package/build/src/demo/DemoPage.js.map +0 -1
  22. package/build/src/demo/DemoStyles.d.ts +0 -3
  23. package/build/src/demo/DemoStyles.d.ts.map +0 -1
  24. package/build/src/demo/DemoStyles.js +0 -60
  25. package/build/src/demo/DemoStyles.js.map +0 -1
  26. package/build/test/elements/navigation/Navigation.test.d.ts +0 -3
  27. package/build/test/elements/navigation/Navigation.test.d.ts.map +0 -1
  28. package/build/test/elements/navigation/Navigation.test.js +0 -113
  29. package/build/test/elements/navigation/Navigation.test.js.map +0 -1
  30. package/commitlint.config.cjs +0 -2
  31. package/demo/elements/authorization/AuthPlugin.js +0 -57
  32. package/demo/elements/authorization/AuthProxy.js +0 -215
  33. package/demo/elements/authorization/api-key.html +0 -27
  34. package/demo/elements/authorization/api-key.ts +0 -44
  35. package/demo/elements/authorization/basic.html +0 -27
  36. package/demo/elements/authorization/basic.ts +0 -43
  37. package/demo/elements/authorization/bearer.html +0 -27
  38. package/demo/elements/authorization/bearer.ts +0 -43
  39. package/demo/elements/authorization/env.js +0 -8
  40. package/demo/elements/authorization/index.html +0 -44
  41. package/demo/elements/authorization/ntlm.html +0 -27
  42. package/demo/elements/authorization/ntlm.ts +0 -43
  43. package/demo/elements/authorization/oauth-authorize.html +0 -75
  44. package/demo/elements/authorization/oauth-authorize.ts +0 -40
  45. package/demo/elements/authorization/oauth-error.html +0 -18
  46. package/demo/elements/authorization/oauth-error.ts +0 -10
  47. package/demo/elements/authorization/oauth-popup.html +0 -36
  48. package/demo/elements/authorization/oauth2.html +0 -27
  49. package/demo/elements/authorization/oauth2.ts +0 -100
  50. package/demo/elements/authorization/oidc.html +0 -27
  51. package/demo/elements/authorization/oidc.ts +0 -139
  52. package/demo/elements/authorization/private.crt +0 -31
  53. package/demo/elements/authorization/private.csr +0 -28
  54. package/demo/elements/authorization/private.key +0 -51
  55. package/demo/elements/authorization/private.pem +0 -31
  56. package/demo/elements/authorization/redirect.html +0 -20
  57. package/demo/elements/authorization/ssl-commands.sh +0 -30
  58. package/demo/elements/authorization/ssl.conf +0 -24
  59. package/demo/elements/autocomplete/index.html +0 -64
  60. package/demo/elements/autocomplete/index.ts +0 -171
  61. package/demo/elements/code-editor/CodeEditorDemo.ts +0 -173
  62. package/demo/elements/code-editor/index.html +0 -19
  63. package/demo/elements/context-menu/DemoIcons.ts +0 -21
  64. package/demo/elements/context-menu/basic.html +0 -25
  65. package/demo/elements/context-menu/basic.ts +0 -119
  66. package/demo/elements/context-menu/custom-data.html +0 -25
  67. package/demo/elements/context-menu/custom-data.ts +0 -62
  68. package/demo/elements/context-menu/demo.css +0 -28
  69. package/demo/elements/context-menu/enabled-state.html +0 -25
  70. package/demo/elements/context-menu/enabled-state.ts +0 -73
  71. package/demo/elements/context-menu/icons.html +0 -25
  72. package/demo/elements/context-menu/icons.ts +0 -64
  73. package/demo/elements/context-menu/index.html +0 -43
  74. package/demo/elements/context-menu/nested.html +0 -25
  75. package/demo/elements/context-menu/nestedt.ts +0 -152
  76. package/demo/elements/context-menu/no-execute.html +0 -25
  77. package/demo/elements/context-menu/no-execute.ts +0 -134
  78. package/demo/elements/context-menu/radio-menu.html +0 -25
  79. package/demo/elements/context-menu/radio-menu.ts +0 -83
  80. package/demo/elements/context-menu/separators.html +0 -25
  81. package/demo/elements/context-menu/separators.ts +0 -172
  82. package/demo/elements/currency/index.html +0 -91
  83. package/demo/elements/currency/index.ts +0 -352
  84. package/demo/elements/environment/environment-editor.html +0 -20
  85. package/demo/elements/environment/environment-editor.ts +0 -49
  86. package/demo/elements/environment/index.html +0 -33
  87. package/demo/elements/environment/server-editor.html +0 -20
  88. package/demo/elements/environment/server-editor.ts +0 -67
  89. package/demo/elements/environment/variables-editor.html +0 -20
  90. package/demo/elements/environment/variables-editor.ts +0 -94
  91. package/demo/elements/har/har-viewer.html +0 -20
  92. package/demo/elements/har/har-viewer.ts +0 -76
  93. package/demo/elements/har/har1.har +0 -3044
  94. package/demo/elements/har/har2.json +0 -439
  95. package/demo/elements/har/index.html +0 -26
  96. package/demo/elements/highlight/example.md +0 -27
  97. package/demo/elements/highlight/index.html +0 -31
  98. package/demo/elements/highlight/marked-highlight.html +0 -132
  99. package/demo/elements/highlight/marked-highlight.ts +0 -22
  100. package/demo/elements/highlight/prism-highlight.html +0 -62
  101. package/demo/elements/highlight/prism-highlight.ts +0 -17
  102. package/demo/elements/http/body-editor.html +0 -17
  103. package/demo/elements/http/body-editor.ts +0 -115
  104. package/demo/elements/http/headers.html +0 -17
  105. package/demo/elements/http/headers.ts +0 -59
  106. package/demo/elements/http/http-assertions.html +0 -20
  107. package/demo/elements/http/http-assertions.ts +0 -89
  108. package/demo/elements/http/http-flows.html +0 -23
  109. package/demo/elements/http/http-flows.ts +0 -89
  110. package/demo/elements/http/index.html +0 -45
  111. package/demo/elements/http/request-editor.html +0 -26
  112. package/demo/elements/http/request-editor.ts +0 -197
  113. package/demo/elements/http/request-log.html +0 -16
  114. package/demo/elements/http/request-log.ts +0 -136
  115. package/demo/elements/http/url-editing.html +0 -17
  116. package/demo/elements/http/url-editing.ts +0 -112
  117. package/demo/elements/icons/index.html +0 -81
  118. package/demo/elements/icons/index.ts +0 -52
  119. package/demo/elements/index.html +0 -72
  120. package/demo/elements/mention-textarea/index.html +0 -19
  121. package/demo/elements/mention-textarea/index.ts +0 -205
  122. package/demo/elements/navigation/navigation-item.html +0 -49
  123. package/demo/elements/navigation/navigation-item.ts +0 -131
  124. package/demo/elements/navigation/navigation.html +0 -20
  125. package/demo/elements/navigation/navigation.ts +0 -45
  126. package/demo/elements/project/index.html +0 -29
  127. package/demo/elements/project/project-run-report.html +0 -20
  128. package/demo/elements/project/project-run-report.ts +0 -132
  129. package/demo/elements/project/request-editor.html +0 -23
  130. package/demo/elements/project/request-editor.ts +0 -232
  131. package/demo/elements/user/user-avatar.html +0 -17
  132. package/demo/elements/user/user-avatar.ts +0 -60
  133. package/demo/env.js +0 -4
  134. package/demo/index.html +0 -34
  135. package/demo/layout/index.html +0 -94
  136. package/demo/layout/index.ts +0 -190
  137. package/demo/md/DemoStyles.ts +0 -61
  138. package/demo/md/UiDemoPage.ts +0 -6
  139. package/demo/md/buttons/button.html +0 -121
  140. package/demo/md/buttons/button.ts +0 -246
  141. package/demo/md/buttons/group.html +0 -36
  142. package/demo/md/buttons/group.ts +0 -171
  143. package/demo/md/checkbox/index.html +0 -39
  144. package/demo/md/checkbox/index.ts +0 -220
  145. package/demo/md/chip/chip.html +0 -70
  146. package/demo/md/chip/chip.ts +0 -219
  147. package/demo/md/chip/pawel6c9a.jpg +0 -0
  148. package/demo/md/collapse/CustomDetail.ts +0 -89
  149. package/demo/md/collapse/collapse.html +0 -21
  150. package/demo/md/collapse/collapse.ts +0 -78
  151. package/demo/md/date-picker/date-picker.ts +0 -336
  152. package/demo/md/date-picker/index.html +0 -171
  153. package/demo/md/dialog/confirm-dialog.html +0 -49
  154. package/demo/md/dialog/confirm-dialog.ts +0 -121
  155. package/demo/md/dialog/dialog.html +0 -25
  156. package/demo/md/dialog/dialog.ts +0 -468
  157. package/demo/md/dropdown-list/index.html +0 -31
  158. package/demo/md/dropdown-list/index.ts +0 -158
  159. package/demo/md/icon-button/index.html +0 -122
  160. package/demo/md/icon-button/index.ts +0 -132
  161. package/demo/md/index.html +0 -73
  162. package/demo/md/inputs/input.html +0 -73
  163. package/demo/md/inputs/input.ts +0 -278
  164. package/demo/md/inputs/radio.html +0 -39
  165. package/demo/md/inputs/radio.ts +0 -156
  166. package/demo/md/inputs/switch.html +0 -45
  167. package/demo/md/inputs/switch.ts +0 -144
  168. package/demo/md/list/list.html +0 -65
  169. package/demo/md/list/list.ts +0 -204
  170. package/demo/md/listbox/listbox.html +0 -31
  171. package/demo/md/listbox/listbox.ts +0 -27
  172. package/demo/md/menu/index.html +0 -19
  173. package/demo/md/menu/index.ts +0 -514
  174. package/demo/md/notification/snack.html +0 -21
  175. package/demo/md/notification/snack.ts +0 -70
  176. package/demo/md/progress/progress.html +0 -46
  177. package/demo/md/progress/progress.ts +0 -161
  178. package/demo/md/segmented-button/index.html +0 -21
  179. package/demo/md/segmented-button/index.ts +0 -55
  180. package/demo/md/select/index.html +0 -16
  181. package/demo/md/select/index.ts +0 -217
  182. package/demo/md/tabs/tabs.html +0 -40
  183. package/demo/md/tabs/tabs.ts +0 -214
  184. package/demo/oauth-popup.html +0 -36
  185. package/demo/page.css +0 -8
  186. package/demo/resources/calendar-month.png +0 -0
  187. package/demo/resources/favorite.png +0 -0
  188. package/demo/resources/fingerprint.png +0 -0
  189. package/demo/resources/home-work.png +0 -0
  190. package/demo/resources/mood.png +0 -0
  191. package/demo/resources/print.png +0 -0
  192. package/demo/resources/stars.png +0 -0
  193. package/demo/resources/theaters.png +0 -0
  194. package/demo/tsconfig.json +0 -4
  195. package/eslint.config.js +0 -97
  196. package/scripts/copy-assets.js +0 -21
  197. package/scripts/release.js +0 -66
  198. package/src/demo/DemoPage.ts +0 -169
  199. package/src/demo/DemoStyles.ts +0 -60
  200. package/test/README.md +0 -375
  201. package/test/contextual-menu/ContextMenu.test.ts +0 -760
  202. package/test/contextual-menu/ContextMenuElement.test.ts +0 -569
  203. package/test/core/activity.spec.ts +0 -413
  204. package/test/core/activity_manager.spec.ts +0 -544
  205. package/test/core/application.spec.ts +0 -218
  206. package/test/core/fragment.spec.ts +0 -565
  207. package/test/core/fragment_manager.spec.ts +0 -404
  208. package/test/core/live_data.spec.ts +0 -558
  209. package/test/core/renderer.spec.ts +0 -113
  210. package/test/dom-assertions.test.ts +0 -182
  211. package/test/elements/MonacoSetup.ts +0 -65
  212. package/test/elements/authorization/basic-method.test.ts +0 -177
  213. package/test/elements/authorization/bearer-method.test.ts +0 -143
  214. package/test/elements/authorization/ntlm-method.test.ts +0 -219
  215. package/test/elements/authorization/oauth2-client-credentials-method.test.ts +0 -334
  216. package/test/elements/authorization/oauth2-code-method.test.ts +0 -320
  217. package/test/elements/authorization/oauth2-custom-grant-method.test.ts +0 -255
  218. package/test/elements/authorization/oauth2-device-code-method.test.ts +0 -371
  219. package/test/elements/authorization/oauth2-implicit-method.test.ts +0 -407
  220. package/test/elements/authorization/oauth2-jwt-method.test.ts +0 -217
  221. package/test/elements/authorization/oauth2-password-method.test.ts +0 -275
  222. package/test/elements/authorization/openid-method.test.ts +0 -591
  223. package/test/elements/autocomplete/autocomplete-input.spec.ts +0 -646
  224. package/test/elements/code-editor/code-editor.accessibility.test.ts +0 -298
  225. package/test/elements/code-editor/code-editor.test.ts +0 -574
  226. package/test/elements/currency/CurrencyPicker.accessibility.test.ts +0 -328
  227. package/test/elements/currency/CurrencyPicker.core.test.ts +0 -318
  228. package/test/elements/currency/CurrencyPicker.integration.test.ts +0 -482
  229. package/test/elements/currency/CurrencyPicker.test.ts +0 -486
  230. package/test/elements/data-table/DataTable.browser.test.ts +0 -649
  231. package/test/elements/har/HarUtils.test.ts +0 -45
  232. package/test/elements/har/HarViewerElement.test.ts +0 -687
  233. package/test/elements/har/test-data/har1.har +0 -3044
  234. package/test/elements/highlight/MarkedHighlightElement.test.ts +0 -452
  235. package/test/elements/highlight/PrismHighlightElement.test.ts +0 -79
  236. package/test/elements/highlight/PrismHighlighter.test.ts +0 -94
  237. package/test/elements/highlight/remoteSanitization.md +0 -1
  238. package/test/elements/highlight/test.md +0 -3
  239. package/test/elements/highlight/test1.md +0 -3
  240. package/test/elements/highlight/test2.md +0 -1
  241. package/test/elements/http/BodyFormdataEditorElement.test.ts +0 -482
  242. package/test/elements/http/BodyMultipartEditorElement.test.ts +0 -658
  243. package/test/elements/http/BodyRawEditorElement.test.ts +0 -90
  244. package/test/elements/http/CertificateAdd.test.ts +0 -457
  245. package/test/elements/http/HttpAssertions.test.ts +0 -994
  246. package/test/elements/http/HttpFlows.test.ts +0 -502
  247. package/test/elements/http/UrlEncodeUtils.test.ts +0 -202
  248. package/test/elements/layout/SplitItem.test.ts +0 -440
  249. package/test/elements/layout/SplitLayoutManager.test.ts +0 -1501
  250. package/test/elements/layout/SplitPanel.test.ts +0 -1109
  251. package/test/elements/mention-textarea/MentionTextArea.basic.test.ts +0 -114
  252. package/test/elements/mention-textarea/MentionTextArea.test.ts +0 -613
  253. package/test/elements/navigation/Navigation.test.ts +0 -120
  254. package/test/env.ts +0 -15
  255. package/test/events/EventTypes.test.ts +0 -363
  256. package/test/events/EventsTestHelpers.ts +0 -16
  257. package/test/helpers/TestUtils.ts +0 -243
  258. package/test/helpers/UiMock.ts +0 -185
  259. package/test/lib/Dom.test.ts +0 -231
  260. package/test/md/button/UiButton.test.ts +0 -347
  261. package/test/md/button/UiIconButton.test.ts +0 -155
  262. package/test/md/chip/UiChip.test.ts +0 -219
  263. package/test/md/collapse/UiCollapse.test.ts +0 -250
  264. package/test/md/collapse/flex-layout.test.ts +0 -105
  265. package/test/md/date-time/DateTime.test.ts +0 -348
  266. package/test/md/dialog/UiConfirmDialog.test.ts +0 -131
  267. package/test/md/dialog/UiDialog.test.ts +0 -759
  268. package/test/md/menu/Menu.test.ts +0 -855
  269. package/test/md/menu/MenuIntegration.test.ts +0 -426
  270. package/test/md/menu/MenuItem.test.ts +0 -652
  271. package/test/md/menu/SubMenu.test.ts +0 -410
  272. package/test/md/progress/UiCircularProgressElement.test.ts +0 -481
  273. package/test/md/progress/UiProgressElement.test.ts +0 -117
  274. package/test/md/progress/UiRangeElement.test.ts +0 -156
  275. package/test/md/select/Select.test.ts +0 -925
  276. package/test/plugins/takeScreenshotPlugin.js +0 -35
  277. package/test/setup.test.ts +0 -217
  278. package/test/setup.ts +0 -117
  279. package/test/tsconfig.json +0 -7
  280. package/web-dev-server.config.js +0 -21
  281. 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">&lt;</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">&lt;/</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,3 +0,0 @@
1
- # Test
2
-
3
- [Link](http://url.com/)
@@ -1,3 +0,0 @@
1
- # Test Another
2
-
3
- [Link](http://url.com/)
@@ -1 +0,0 @@
1
- # Test 2