@api-client/ui 0.5.39 → 0.5.41

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