@gitlab/duo-ui 15.3.0 → 15.4.1

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 (46) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/agentic_chat/agentic_duo_chat.js +1 -1
  3. package/dist/components/agentic_chat/web_agentic_duo_chat.js +1 -1
  4. package/dist/components/chat/components/duo_chat_message/duo_chat_message.js +21 -28
  5. package/dist/components/chat/components/duo_chat_message/markdown_renderer.js +102 -0
  6. package/dist/components/chat/components/duo_chat_message/message_types/message_agent.js +5 -6
  7. package/dist/components/chat/components/duo_chat_message/message_types/message_base.js +27 -14
  8. package/dist/components/chat/components/duo_chat_message/message_types/message_tool_kv_section.js +1 -1
  9. package/dist/components/chat/components/duo_chat_message_tool_approval/components/base_tool_params.js +1 -1
  10. package/dist/components/chat/components/duo_chat_message_tool_approval/components/create_commit_tool_params.js +9 -3
  11. package/dist/components/chat/components/duo_chat_message_tool_approval/components/pre_block.js +11 -6
  12. package/dist/components/chat/components/duo_chat_message_tool_approval/components/tool_params_json_view.js +1 -1
  13. package/dist/components/chat/components/duo_chat_threads/duo_chat_threads.js +1 -1
  14. package/dist/components/chat/components/duo_chat_threads/{duo_chat_threads_skeleton.js → duo_chat_threads_skeleton_loader.js} +4 -2
  15. package/dist/components/chat/duo_chat.js +1 -1
  16. package/dist/components/chat/markdown_renderer.js +31 -5
  17. package/dist/components/chat/mock_data.js +28 -2
  18. package/dist/components/chat/web_duo_chat.js +1 -1
  19. package/dist/components/ui/duo_layout/duo_layout.js +1 -1
  20. package/dist/components.css +1 -1
  21. package/dist/components.css.map +1 -1
  22. package/dist/utils/highlight.js +483 -0
  23. package/package.json +3 -2
  24. package/src/components/agentic_chat/agentic_duo_chat.scss +2 -1
  25. package/src/components/agentic_chat/agentic_duo_chat.vue +1 -1
  26. package/src/components/agentic_chat/web_agentic_duo_chat.vue +1 -1
  27. package/src/components/chat/components/duo_chat_message/duo_chat_message.scss +15 -19
  28. package/src/components/chat/components/duo_chat_message/duo_chat_message.vue +30 -28
  29. package/src/components/chat/components/duo_chat_message/markdown_renderer.vue +71 -0
  30. package/src/components/chat/components/duo_chat_message/message_types/message_agent.vue +8 -8
  31. package/src/components/chat/components/duo_chat_message/message_types/message_base.vue +24 -14
  32. package/src/components/chat/components/duo_chat_message/message_types/message_tool_kv_section.vue +1 -1
  33. package/src/components/chat/components/duo_chat_message_tool_approval/components/base_tool_params.vue +1 -1
  34. package/src/components/chat/components/duo_chat_message_tool_approval/components/create_commit_tool_params.vue +7 -2
  35. package/src/components/chat/components/duo_chat_message_tool_approval/components/pre_block.vue +11 -6
  36. package/src/components/chat/components/duo_chat_message_tool_approval/components/tool_params_json_view.vue +1 -1
  37. package/src/components/chat/components/duo_chat_threads/duo_chat_threads.vue +1 -1
  38. package/src/components/chat/components/duo_chat_threads/{duo_chat_threads_skeleton.vue → duo_chat_threads_skeleton_loader.vue} +4 -4
  39. package/src/components/chat/duo_chat.vue +1 -1
  40. package/src/components/chat/markdown_renderer.js +37 -6
  41. package/src/components/chat/mock_data.js +30 -1
  42. package/src/components/chat/web_duo_chat.vue +1 -1
  43. package/src/components/ui/duo_layout/duo_layout.vue +1 -1
  44. package/src/utils/highlight.js +562 -0
  45. package/dist/components/chat/components/duo_chat_message_tool_approval/services/highlight.js +0 -21
  46. package/src/components/chat/components/duo_chat_message_tool_approval/services/highlight.js +0 -18
@@ -0,0 +1,562 @@
1
+ import highlightjs from 'highlight.js/lib/core';
2
+
3
+ export const languageLoaders = {
4
+ '1c': () => import('highlight.js/lib/languages/1c'),
5
+ abnf: () => import('highlight.js/lib/languages/abnf'),
6
+ accesslog: () => import('highlight.js/lib/languages/accesslog'),
7
+ actionscript: () => import('highlight.js/lib/languages/actionscript'),
8
+ ada: () => import('highlight.js/lib/languages/ada'),
9
+ angelscript: () => import('highlight.js/lib/languages/angelscript'),
10
+ apache: () => import('highlight.js/lib/languages/apache'),
11
+ applescript: () => import('highlight.js/lib/languages/applescript'),
12
+ arcade: () => import('highlight.js/lib/languages/arcade'),
13
+ arduino: () => import('highlight.js/lib/languages/arduino'),
14
+ armasm: () => import('highlight.js/lib/languages/armasm'),
15
+ asciidoc: () => import('highlight.js/lib/languages/asciidoc'),
16
+ aspectj: () => import('highlight.js/lib/languages/aspectj'),
17
+ autohotkey: () => import('highlight.js/lib/languages/autohotkey'),
18
+ autoit: () => import('highlight.js/lib/languages/autoit'),
19
+ avrasm: () => import('highlight.js/lib/languages/avrasm'),
20
+ awk: () => import('highlight.js/lib/languages/awk'),
21
+ axapta: () => import('highlight.js/lib/languages/axapta'),
22
+ bash: () => import('highlight.js/lib/languages/bash'),
23
+ basic: () => import('highlight.js/lib/languages/basic'),
24
+ bnf: () => import('highlight.js/lib/languages/bnf'),
25
+ brainfuck: () => import('highlight.js/lib/languages/brainfuck'),
26
+ c: () => import('highlight.js/lib/languages/c'),
27
+ cal: () => import('highlight.js/lib/languages/cal'),
28
+ capnproto: () => import('highlight.js/lib/languages/capnproto'),
29
+ ceylon: () => import('highlight.js/lib/languages/ceylon'),
30
+ clean: () => import('highlight.js/lib/languages/clean'),
31
+ 'clojure-repl': () => import('highlight.js/lib/languages/clojure-repl'),
32
+ clojure: () => import('highlight.js/lib/languages/clojure'),
33
+ cmake: () => import('highlight.js/lib/languages/cmake'),
34
+ coffeescript: () => import('highlight.js/lib/languages/coffeescript'),
35
+ coq: () => import('highlight.js/lib/languages/coq'),
36
+ cos: () => import('highlight.js/lib/languages/cos'),
37
+ cpp: () => import('highlight.js/lib/languages/cpp'),
38
+ crmsh: () => import('highlight.js/lib/languages/crmsh'),
39
+ crystal: () => import('highlight.js/lib/languages/crystal'),
40
+ csharp: () => import('highlight.js/lib/languages/csharp'),
41
+ csp: () => import('highlight.js/lib/languages/csp'),
42
+ css: () => import('highlight.js/lib/languages/css'),
43
+ d: () => import('highlight.js/lib/languages/d'),
44
+ dart: () => import('highlight.js/lib/languages/dart'),
45
+ delphi: () => import('highlight.js/lib/languages/delphi'),
46
+ diff: () => import('highlight.js/lib/languages/diff'),
47
+ django: () => import('highlight.js/lib/languages/django'),
48
+ dns: () => import('highlight.js/lib/languages/dns'),
49
+ dockerfile: () => import('highlight.js/lib/languages/dockerfile'),
50
+ dos: () => import('highlight.js/lib/languages/dos'),
51
+ dsconfig: () => import('highlight.js/lib/languages/dsconfig'),
52
+ dts: () => import('highlight.js/lib/languages/dts'),
53
+ dust: () => import('highlight.js/lib/languages/dust'),
54
+ ebnf: () => import('highlight.js/lib/languages/ebnf'),
55
+ elixir: () => import('highlight.js/lib/languages/elixir'),
56
+ elm: () => import('highlight.js/lib/languages/elm'),
57
+ erb: () => import('highlight.js/lib/languages/erb'),
58
+ 'erlang-repl': () => import('highlight.js/lib/languages/erlang-repl'),
59
+ erlang: () => import('highlight.js/lib/languages/erlang'),
60
+ excel: () => import('highlight.js/lib/languages/excel'),
61
+ fix: () => import('highlight.js/lib/languages/fix'),
62
+ flix: () => import('highlight.js/lib/languages/flix'),
63
+ fortran: () => import('highlight.js/lib/languages/fortran'),
64
+ fsharp: () => import('highlight.js/lib/languages/fsharp'),
65
+ gams: () => import('highlight.js/lib/languages/gams'),
66
+ gauss: () => import('highlight.js/lib/languages/gauss'),
67
+ gcode: () => import('highlight.js/lib/languages/gcode'),
68
+ gherkin: () => import('highlight.js/lib/languages/gherkin'),
69
+ glsl: () => import('highlight.js/lib/languages/glsl'),
70
+ gml: () => import('highlight.js/lib/languages/gml'),
71
+ go: () => import('highlight.js/lib/languages/go'),
72
+ golo: () => import('highlight.js/lib/languages/golo'),
73
+ gradle: () => import('highlight.js/lib/languages/gradle'),
74
+ graphql: () => import('highlight.js/lib/languages/graphql'),
75
+ groovy: () => import('highlight.js/lib/languages/groovy'),
76
+ haml: () => import('highlight.js/lib/languages/haml'),
77
+ handlebars: () => import('highlight.js/lib/languages/handlebars'),
78
+ haskell: () => import('highlight.js/lib/languages/haskell'),
79
+ haxe: () => import('highlight.js/lib/languages/haxe'),
80
+ hsp: () => import('highlight.js/lib/languages/hsp'),
81
+ html: () => import('highlight.js/lib/languages/xml'),
82
+ http: () => import('highlight.js/lib/languages/http'),
83
+ hy: () => import('highlight.js/lib/languages/hy'),
84
+ inform7: () => import('highlight.js/lib/languages/inform7'),
85
+ ini: () => import('highlight.js/lib/languages/ini'),
86
+ irpf90: () => import('highlight.js/lib/languages/irpf90'),
87
+ isbl: () => import('highlight.js/lib/languages/isbl'),
88
+ java: () => import('highlight.js/lib/languages/java'),
89
+ javascript: () => import('highlight.js/lib/languages/javascript'),
90
+ 'jboss-cli': () => import('highlight.js/lib/languages/jboss-cli'),
91
+ json: () => import('highlight.js/lib/languages/json'),
92
+ 'julia-repl': () => import('highlight.js/lib/languages/julia-repl'),
93
+ julia: () => import('highlight.js/lib/languages/julia'),
94
+ kotlin: () => import('highlight.js/lib/languages/kotlin'),
95
+ lasso: () => import('highlight.js/lib/languages/lasso'),
96
+ latex: () => import('highlight.js/lib/languages/latex'),
97
+ ldif: () => import('highlight.js/lib/languages/ldif'),
98
+ leaf: () => import('highlight.js/lib/languages/leaf'),
99
+ less: () => import('highlight.js/lib/languages/less'),
100
+ lisp: () => import('highlight.js/lib/languages/lisp'),
101
+ livecodeserver: () => import('highlight.js/lib/languages/livecodeserver'),
102
+ livescript: () => import('highlight.js/lib/languages/livescript'),
103
+ llvm: () => import('highlight.js/lib/languages/llvm'),
104
+ lsl: () => import('highlight.js/lib/languages/lsl'),
105
+ lua: () => import('highlight.js/lib/languages/lua'),
106
+ makefile: () => import('highlight.js/lib/languages/makefile'),
107
+ markdown: () => import('highlight.js/lib/languages/markdown'),
108
+ mathematica: () => import('highlight.js/lib/languages/mathematica'),
109
+ matlab: () => import('highlight.js/lib/languages/matlab'),
110
+ maxima: () => import('highlight.js/lib/languages/maxima'),
111
+ mel: () => import('highlight.js/lib/languages/mel'),
112
+ mercury: () => import('highlight.js/lib/languages/mercury'),
113
+ mipsasm: () => import('highlight.js/lib/languages/mipsasm'),
114
+ mizar: () => import('highlight.js/lib/languages/mizar'),
115
+ mojolicious: () => import('highlight.js/lib/languages/mojolicious'),
116
+ monkey: () => import('highlight.js/lib/languages/monkey'),
117
+ moonscript: () => import('highlight.js/lib/languages/moonscript'),
118
+ n1ql: () => import('highlight.js/lib/languages/n1ql'),
119
+ nestedtext: () => import('highlight.js/lib/languages/nestedtext'),
120
+ nginx: () => import('highlight.js/lib/languages/nginx'),
121
+ nim: () => import('highlight.js/lib/languages/nim'),
122
+ nix: () => import('highlight.js/lib/languages/nix'),
123
+ 'node-repl': () => import('highlight.js/lib/languages/node-repl'),
124
+ nsis: () => import('highlight.js/lib/languages/nsis'),
125
+ objectivec: () => import('highlight.js/lib/languages/objectivec'),
126
+ ocaml: () => import('highlight.js/lib/languages/ocaml'),
127
+ openscad: () => import('highlight.js/lib/languages/openscad'),
128
+ oxygene: () => import('highlight.js/lib/languages/oxygene'),
129
+ parser3: () => import('highlight.js/lib/languages/parser3'),
130
+ perl: () => import('highlight.js/lib/languages/perl'),
131
+ pf: () => import('highlight.js/lib/languages/pf'),
132
+ pgsql: () => import('highlight.js/lib/languages/pgsql'),
133
+ 'php-template': () => import('highlight.js/lib/languages/php-template'),
134
+ php: () => import('highlight.js/lib/languages/php'),
135
+ plaintext: () => import('highlight.js/lib/languages/plaintext'),
136
+ pony: () => import('highlight.js/lib/languages/pony'),
137
+ powershell: () => import('highlight.js/lib/languages/powershell'),
138
+ processing: () => import('highlight.js/lib/languages/processing'),
139
+ profile: () => import('highlight.js/lib/languages/profile'),
140
+ prolog: () => import('highlight.js/lib/languages/prolog'),
141
+ properties: () => import('highlight.js/lib/languages/properties'),
142
+ protobuf: () => import('highlight.js/lib/languages/protobuf'),
143
+ puppet: () => import('highlight.js/lib/languages/puppet'),
144
+ purebasic: () => import('highlight.js/lib/languages/purebasic'),
145
+ 'python-repl': () => import('highlight.js/lib/languages/python-repl'),
146
+ python: () => import('highlight.js/lib/languages/python'),
147
+ q: () => import('highlight.js/lib/languages/q'),
148
+ qml: () => import('highlight.js/lib/languages/qml'),
149
+ r: () => import('highlight.js/lib/languages/r'),
150
+ reasonml: () => import('highlight.js/lib/languages/reasonml'),
151
+ rib: () => import('highlight.js/lib/languages/rib'),
152
+ roboconf: () => import('highlight.js/lib/languages/roboconf'),
153
+ routeros: () => import('highlight.js/lib/languages/routeros'),
154
+ rsl: () => import('highlight.js/lib/languages/rsl'),
155
+ ruby: () => import('highlight.js/lib/languages/ruby'),
156
+ ruleslanguage: () => import('highlight.js/lib/languages/ruleslanguage'),
157
+ rust: () => import('highlight.js/lib/languages/rust'),
158
+ sas: () => import('highlight.js/lib/languages/sas'),
159
+ scala: () => import('highlight.js/lib/languages/scala'),
160
+ scheme: () => import('highlight.js/lib/languages/scheme'),
161
+ scilab: () => import('highlight.js/lib/languages/scilab'),
162
+ scss: () => import('highlight.js/lib/languages/scss'),
163
+ shell: () => import('highlight.js/lib/languages/shell'),
164
+ smali: () => import('highlight.js/lib/languages/smali'),
165
+ smalltalk: () => import('highlight.js/lib/languages/smalltalk'),
166
+ sml: () => import('highlight.js/lib/languages/sml'),
167
+ sqf: () => import('highlight.js/lib/languages/sqf'),
168
+ sql: () => import('highlight.js/lib/languages/sql'),
169
+ stan: () => import('highlight.js/lib/languages/stan'),
170
+ stata: () => import('highlight.js/lib/languages/stata'),
171
+ step21: () => import('highlight.js/lib/languages/step21'),
172
+ stylus: () => import('highlight.js/lib/languages/stylus'),
173
+ subunit: () => import('highlight.js/lib/languages/subunit'),
174
+ swift: () => import('highlight.js/lib/languages/swift'),
175
+ taggerscript: () => import('highlight.js/lib/languages/taggerscript'),
176
+ tap: () => import('highlight.js/lib/languages/tap'),
177
+ tcl: () => import('highlight.js/lib/languages/tcl'),
178
+ thrift: () => import('highlight.js/lib/languages/thrift'),
179
+ tp: () => import('highlight.js/lib/languages/tp'),
180
+ twig: () => import('highlight.js/lib/languages/twig'),
181
+ typescript: () => import('highlight.js/lib/languages/typescript'),
182
+ vala: () => import('highlight.js/lib/languages/vala'),
183
+ vbnet: () => import('highlight.js/lib/languages/vbnet'),
184
+ 'vbscript-html': () => import('highlight.js/lib/languages/vbscript-html'),
185
+ vbscript: () => import('highlight.js/lib/languages/vbscript'),
186
+ verilog: () => import('highlight.js/lib/languages/verilog'),
187
+ vhdl: () => import('highlight.js/lib/languages/vhdl'),
188
+ vim: () => import('highlight.js/lib/languages/vim'),
189
+ wasm: () => import('highlight.js/lib/languages/wasm'),
190
+ wren: () => import('highlight.js/lib/languages/wren'),
191
+ x86asm: () => import('highlight.js/lib/languages/x86asm'),
192
+ xl: () => import('highlight.js/lib/languages/xl'),
193
+ xml: () => import('highlight.js/lib/languages/xml'),
194
+ xquery: () => import('highlight.js/lib/languages/xquery'),
195
+ yaml: () => import('highlight.js/lib/languages/yaml'),
196
+ zephir: () => import('highlight.js/lib/languages/zephir'),
197
+ };
198
+
199
+ export const fileExtensionToLanguage = {
200
+ // JavaScript/TypeScript
201
+ js: 'javascript',
202
+ mjs: 'javascript',
203
+ cjs: 'javascript',
204
+ jsx: 'javascript',
205
+ ts: 'typescript',
206
+ tsx: 'typescript',
207
+ mts: 'typescript',
208
+ cts: 'typescript',
209
+
210
+ // Web
211
+ html: 'html',
212
+ htm: 'html',
213
+ xml: 'xml',
214
+ svg: 'xml',
215
+ css: 'css',
216
+ scss: 'scss',
217
+ sass: 'scss',
218
+ less: 'less',
219
+
220
+ // Python
221
+ py: 'python',
222
+ pyw: 'python',
223
+ pyi: 'python',
224
+
225
+ // Java/JVM
226
+ java: 'java',
227
+ kt: 'kotlin',
228
+ kts: 'kotlin',
229
+ scala: 'scala',
230
+ groovy: 'groovy',
231
+ gradle: 'gradle',
232
+
233
+ // C/C++
234
+ c: 'c',
235
+ h: 'c',
236
+ cpp: 'cpp',
237
+ cc: 'cpp',
238
+ cxx: 'cpp',
239
+ hpp: 'cpp',
240
+ hh: 'cpp',
241
+ hxx: 'cpp',
242
+
243
+ // C#
244
+ cs: 'csharp',
245
+ csx: 'csharp',
246
+
247
+ // PHP
248
+ php: 'php',
249
+ phtml: 'php',
250
+ php3: 'php',
251
+ php4: 'php',
252
+ php5: 'php',
253
+ phps: 'php',
254
+
255
+ // Ruby
256
+ rb: 'ruby',
257
+ rake: 'ruby',
258
+ gemspec: 'ruby',
259
+
260
+ // Go
261
+ go: 'go',
262
+
263
+ // Rust
264
+ rs: 'rust',
265
+
266
+ // Swift
267
+ swift: 'swift',
268
+
269
+ // Shell
270
+ sh: 'bash',
271
+ bash: 'bash',
272
+ zsh: 'bash',
273
+ fish: 'shell',
274
+ bat: 'dos',
275
+ cmd: 'dos',
276
+ ps1: 'powershell',
277
+
278
+ // Config/Data
279
+ json: 'json',
280
+ yaml: 'yaml',
281
+ yml: 'yaml',
282
+ toml: 'ini',
283
+ ini: 'ini',
284
+ cfg: 'ini',
285
+ conf: 'ini',
286
+ properties: 'properties',
287
+
288
+ // Markdown/Docs
289
+ md: 'markdown',
290
+ markdown: 'markdown',
291
+ adoc: 'asciidoc',
292
+ asciidoc: 'asciidoc',
293
+ rst: 'plaintext',
294
+ tex: 'latex',
295
+
296
+ // SQL
297
+ sql: 'sql',
298
+
299
+ // Perl
300
+ pl: 'perl',
301
+ pm: 'perl',
302
+
303
+ // R
304
+ r: 'r',
305
+ R: 'r',
306
+
307
+ // Lua
308
+ lua: 'lua',
309
+
310
+ // Vim
311
+ vim: 'vim',
312
+
313
+ // Dockerfile
314
+ Dockerfile: 'dockerfile',
315
+ dockerfile: 'dockerfile',
316
+
317
+ // Makefile
318
+ Makefile: 'makefile',
319
+ mk: 'makefile',
320
+
321
+ // Diff/Patch
322
+ diff: 'diff',
323
+ patch: 'diff',
324
+
325
+ // Elixir
326
+ ex: 'elixir',
327
+ exs: 'elixir',
328
+
329
+ // Erlang
330
+ erl: 'erlang',
331
+ hrl: 'erlang',
332
+
333
+ // Haskell
334
+ hs: 'haskell',
335
+ lhs: 'haskell',
336
+
337
+ // Clojure
338
+ clj: 'clojure',
339
+ cljs: 'clojure',
340
+ cljc: 'clojure',
341
+
342
+ // Dart
343
+ dart: 'dart',
344
+
345
+ // F#
346
+ fs: 'fsharp',
347
+ fsi: 'fsharp',
348
+ fsx: 'fsharp',
349
+
350
+ // OCaml
351
+ ml: 'ocaml',
352
+ mli: 'ocaml',
353
+
354
+ // Lisp
355
+ lisp: 'lisp',
356
+ lsp: 'lisp',
357
+
358
+ // Scheme
359
+ scm: 'scheme',
360
+ ss: 'scheme',
361
+
362
+ // Julia
363
+ jl: 'julia',
364
+
365
+ // Nim
366
+ nim: 'nim',
367
+
368
+ // Crystal
369
+ cr: 'crystal',
370
+
371
+ // D
372
+ d: 'd',
373
+
374
+ // Fortran
375
+ f: 'fortran',
376
+ f90: 'fortran',
377
+ f95: 'fortran',
378
+
379
+ // Pascal/Delphi
380
+ pas: 'delphi',
381
+ dpr: 'delphi',
382
+
383
+ // Ada
384
+ ada: 'ada',
385
+ adb: 'ada',
386
+ ads: 'ada',
387
+
388
+ // COBOL
389
+ cob: 'coq',
390
+ cbl: 'coq',
391
+
392
+ // Assembly
393
+ asm: 'x86asm',
394
+ s: 'armasm',
395
+
396
+ // Verilog/VHDL
397
+ v: 'verilog',
398
+ vh: 'verilog',
399
+ vhd: 'vhdl',
400
+ vhdl: 'vhdl',
401
+
402
+ // GraphQL
403
+ graphql: 'graphql',
404
+ gql: 'graphql',
405
+
406
+ // Protobuf
407
+ proto: 'protobuf',
408
+
409
+ // Nginx
410
+ nginx: 'nginx',
411
+
412
+ // Apache
413
+ htaccess: 'apache',
414
+
415
+ // CMake
416
+ 'CMakeLists.txt': 'cmake',
417
+ cmake: 'cmake',
418
+
419
+ // Handlebars
420
+ hbs: 'handlebars',
421
+ handlebars: 'handlebars',
422
+
423
+ // Django
424
+ djhtml: 'django',
425
+
426
+ // ERB
427
+ erb: 'erb',
428
+
429
+ // Haml
430
+ haml: 'haml',
431
+
432
+ // Pug
433
+ pug: 'plaintext',
434
+ jade: 'plaintext',
435
+
436
+ // CoffeeScript
437
+ coffee: 'coffeescript',
438
+
439
+ // Elm
440
+ elm: 'elm',
441
+
442
+ // ReasonML
443
+ re: 'reasonml',
444
+ rei: 'reasonml',
445
+
446
+ // Haxe
447
+ hx: 'haxe',
448
+
449
+ // ActionScript
450
+ as: 'actionscript',
451
+
452
+ // VB.NET
453
+ vb: 'vbnet',
454
+
455
+ // VBScript
456
+ vbs: 'vbscript',
457
+
458
+ // AutoHotkey
459
+ ahk: 'autohotkey',
460
+
461
+ // PowerShell
462
+ psm1: 'powershell',
463
+ psd1: 'powershell',
464
+
465
+ // Puppet
466
+ pp: 'puppet',
467
+
468
+ // Terraform
469
+ tf: 'plaintext',
470
+ tfvars: 'plaintext',
471
+
472
+ // Nix
473
+ nix: 'nix',
474
+
475
+ // Awk
476
+ awk: 'awk',
477
+
478
+ // Tcl
479
+ tcl: 'tcl',
480
+
481
+ // Prolog
482
+ pro: 'prolog',
483
+
484
+ // MATLAB
485
+ m: 'matlab',
486
+
487
+ // Mathematica
488
+ nb: 'mathematica',
489
+ wl: 'mathematica',
490
+
491
+ // SAS
492
+ sas: 'sas',
493
+
494
+ // Stata
495
+ do: 'stata',
496
+ ado: 'stata',
497
+
498
+ // GLSL
499
+ glsl: 'glsl',
500
+ vert: 'glsl',
501
+ frag: 'glsl',
502
+
503
+ // WebAssembly
504
+ wasm: 'wasm',
505
+ wat: 'wasm',
506
+
507
+ // Thrift
508
+ thrift: 'thrift',
509
+
510
+ // Stylus
511
+ styl: 'stylus',
512
+
513
+ // Twig
514
+ twig: 'twig',
515
+
516
+ // Smarty
517
+ tpl: 'plaintext',
518
+
519
+ // Dust
520
+ dust: 'dust',
521
+ };
522
+
523
+ const loadLanguagePackages = async (languages = []) => {
524
+ try {
525
+ await Promise.all(
526
+ languages.map(async (language) => {
527
+ // Check if language is a file extension and map it to the actual language
528
+ const actualLanguage = fileExtensionToLanguage[language] || language;
529
+
530
+ const loader = languageLoaders[actualLanguage];
531
+ if (!highlightjs.listLanguages().includes(actualLanguage) && loader) {
532
+ const languageModule = await loader();
533
+ highlightjs.registerLanguage(actualLanguage, languageModule.default);
534
+ highlightjs.registerAliases([language], { languageName: actualLanguage });
535
+ }
536
+ })
537
+ );
538
+ } catch (e) {
539
+ throw Error('Could not load highlight.js languages for duo chat syntax highlighting');
540
+ }
541
+ };
542
+
543
+ export const highlightElement = async (element, languages) => {
544
+ // eslint-disable-next-line no-console
545
+ await loadLanguagePackages(languages);
546
+
547
+ if (typeof window.requestIdleCallback === 'function') {
548
+ window.requestIdleCallback(() => highlightjs.highlightElement(element), { timeout: 500 });
549
+ } else {
550
+ window.requestAnimationFrame(() => highlightjs.highlightElement(element));
551
+ }
552
+ };
553
+
554
+ export const highlightCode = async (code, languages) => {
555
+ await loadLanguagePackages(languages);
556
+
557
+ const language = languages.pop();
558
+
559
+ return highlightjs.listLanguages().includes(language)
560
+ ? highlightjs.highlight(code, { language }).value
561
+ : code;
562
+ };
@@ -1,21 +0,0 @@
1
- import highlightjs from 'highlight.js/lib/core';
2
- import json from 'highlight.js/lib/languages/json';
3
- import diff from 'highlight.js/lib/languages/diff';
4
- import markdown from 'highlight.js/lib/languages/markdown';
5
-
6
- const highlightElement = element => {
7
- if (!highlightjs.listLanguages().includes('json')) {
8
- highlightjs.registerLanguage('json', json);
9
- highlightjs.registerLanguage('diff', diff);
10
- highlightjs.registerLanguage('markdown', markdown);
11
- }
12
- if (typeof window.requestIdleCallback === 'function') {
13
- window.requestIdleCallback(() => highlightjs.highlightElement(element), {
14
- timeout: 500
15
- });
16
- } else {
17
- window.requestAnimationFrame(() => highlightjs.highlightElement(element));
18
- }
19
- };
20
-
21
- export { highlightElement };
@@ -1,18 +0,0 @@
1
- import highlightjs from 'highlight.js/lib/core';
2
- import json from 'highlight.js/lib/languages/json';
3
- import diff from 'highlight.js/lib/languages/diff';
4
- import markdown from 'highlight.js/lib/languages/markdown';
5
-
6
- export const highlightElement = (element) => {
7
- if (!highlightjs.listLanguages().includes('json')) {
8
- highlightjs.registerLanguage('json', json);
9
- highlightjs.registerLanguage('diff', diff);
10
- highlightjs.registerLanguage('markdown', markdown);
11
- }
12
-
13
- if (typeof window.requestIdleCallback === 'function') {
14
- window.requestIdleCallback(() => highlightjs.highlightElement(element), { timeout: 500 });
15
- } else {
16
- window.requestAnimationFrame(() => highlightjs.highlightElement(element));
17
- }
18
- };