@threadlabs/looma 0.18.6 → 0.19.0

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 (215) hide show
  1. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +34 -3
  2. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +55 -0
  3. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +7 -2
  4. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +29 -0
  5. package/dist/index.js +1 -1
  6. package/editor/chunks/extensions.js +24 -3
  7. package/editor/extensions/preset.d.ts +2 -0
  8. package/editor/extensions/table-commands.d.ts +1 -1
  9. package/editor/table-overlay.d.ts +8 -3
  10. package/package.json +2 -1
  11. package/styles/ui-editor-table-overlay.css +30 -0
  12. package/styles/ui-editor-table-toolbar.css +7 -2
  13. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  14. package/vanilla/UiEditorTableOverlay.js +9 -3
  15. package/vue/UiEditorTableOverlay.d.ts +8 -0
  16. package/vue/UiEditorTableOverlay.vue +45 -2
  17. package/vue/UiEditorTableToolbar.vue +7 -2
  18. package/vue/chunks/1c.js +106 -0
  19. package/vue/chunks/UiEditorTableOverlay.js +14 -4
  20. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  21. package/vue/chunks/abnf.js +61 -0
  22. package/vue/chunks/accesslog.js +72 -0
  23. package/vue/chunks/actionscript.js +139 -0
  24. package/vue/chunks/ada.js +183 -0
  25. package/vue/chunks/angelscript.js +141 -0
  26. package/vue/chunks/apache.js +88 -0
  27. package/vue/chunks/applescript.js +99 -0
  28. package/vue/chunks/arcade.js +405 -0
  29. package/vue/chunks/arduino.js +871 -0
  30. package/vue/chunks/armasm.js +65 -0
  31. package/vue/chunks/asciidoc.js +181 -0
  32. package/vue/chunks/aspectj.js +202 -0
  33. package/vue/chunks/autohotkey.js +54 -0
  34. package/vue/chunks/autoit.js +132 -0
  35. package/vue/chunks/avrasm.js +46 -0
  36. package/vue/chunks/awk.js +58 -0
  37. package/vue/chunks/axapta.js +167 -0
  38. package/vue/chunks/bash.js +358 -0
  39. package/vue/chunks/basic.js +221 -0
  40. package/vue/chunks/bnf.js +27 -0
  41. package/vue/chunks/brainfuck.js +40 -0
  42. package/vue/chunks/c.js +265 -0
  43. package/vue/chunks/cal.js +136 -0
  44. package/vue/chunks/capnproto.js +86 -0
  45. package/vue/chunks/ceylon.js +125 -0
  46. package/vue/chunks/clean.js +54 -0
  47. package/vue/chunks/clojure-repl.js +17 -0
  48. package/vue/chunks/clojure.js +133 -0
  49. package/vue/chunks/cmake.js +23 -0
  50. package/vue/chunks/coffeescript.js +291 -0
  51. package/vue/chunks/coq.js +436 -0
  52. package/vue/chunks/cos.js +77 -0
  53. package/vue/chunks/cpp.js +492 -0
  54. package/vue/chunks/crmsh.js +80 -0
  55. package/vue/chunks/crystal.js +260 -0
  56. package/vue/chunks/csharp.js +376 -0
  57. package/vue/chunks/csp.js +52 -0
  58. package/vue/chunks/css.js +890 -0
  59. package/vue/chunks/d.js +184 -0
  60. package/vue/chunks/dart.js +226 -0
  61. package/vue/chunks/delphi.js +227 -0
  62. package/vue/chunks/diff.js +40 -0
  63. package/vue/chunks/django.js +43 -0
  64. package/vue/chunks/dns.js +66 -0
  65. package/vue/chunks/dockerfile.js +35 -0
  66. package/vue/chunks/dos.js +147 -0
  67. package/vue/chunks/dsconfig.js +55 -0
  68. package/vue/chunks/dts.js +119 -0
  69. package/vue/chunks/dust.js +33 -0
  70. package/vue/chunks/ebnf.js +40 -0
  71. package/vue/chunks/elixir.js +241 -0
  72. package/vue/chunks/elm.js +103 -0
  73. package/vue/chunks/erb.js +17 -0
  74. package/vue/chunks/erlang-repl.js +41 -0
  75. package/vue/chunks/erlang.js +236 -0
  76. package/vue/chunks/excel.js +562 -0
  77. package/vue/chunks/fix.js +30 -0
  78. package/vue/chunks/flix.js +60 -0
  79. package/vue/chunks/fortran.js +543 -0
  80. package/vue/chunks/fsharp.js +440 -0
  81. package/vue/chunks/gams.js +134 -0
  82. package/vue/chunks/gauss.js +167 -0
  83. package/vue/chunks/gcode.js +131 -0
  84. package/vue/chunks/gherkin.js +41 -0
  85. package/vue/chunks/glsl.js +25 -0
  86. package/vue/chunks/gml.js +3119 -0
  87. package/vue/chunks/go.js +140 -0
  88. package/vue/chunks/golo.js +72 -0
  89. package/vue/chunks/gradle.js +181 -0
  90. package/vue/chunks/graphql.js +68 -0
  91. package/vue/chunks/groovy.js +159 -0
  92. package/vue/chunks/haml.js +96 -0
  93. package/vue/chunks/handlebars.js +191 -0
  94. package/vue/chunks/haskell.js +149 -0
  95. package/vue/chunks/haxe.js +142 -0
  96. package/vue/chunks/hsp.js +45 -0
  97. package/vue/chunks/http.js +77 -0
  98. package/vue/chunks/hy.js +92 -0
  99. package/vue/chunks/inform7.js +45 -0
  100. package/vue/chunks/ini.js +94 -0
  101. package/vue/chunks/irpf90.js +52 -0
  102. package/vue/chunks/isbl.js +112 -0
  103. package/vue/chunks/java.js +237 -0
  104. package/vue/chunks/javascript.js +570 -0
  105. package/vue/chunks/jboss-cli.js +46 -0
  106. package/vue/chunks/json.js +45 -0
  107. package/vue/chunks/julia-repl.js +18 -0
  108. package/vue/chunks/julia.js +353 -0
  109. package/vue/chunks/kotlin.js +216 -0
  110. package/vue/chunks/lasso.js +127 -0
  111. package/vue/chunks/latex.js +206 -0
  112. package/vue/chunks/ldif.js +25 -0
  113. package/vue/chunks/leaf.js +72 -0
  114. package/vue/chunks/less.js +953 -0
  115. package/vue/chunks/lisp.js +119 -0
  116. package/vue/chunks/livecodeserver.js +86 -0
  117. package/vue/chunks/livescript.js +309 -0
  118. package/vue/chunks/llvm.js +77 -0
  119. package/vue/chunks/lsl.js +55 -0
  120. package/vue/chunks/lua.js +49 -0
  121. package/vue/chunks/makefile.js +62 -0
  122. package/vue/chunks/markdown.js +194 -0
  123. package/vue/chunks/mathematica.js +7317 -0
  124. package/vue/chunks/matlab.js +70 -0
  125. package/vue/chunks/maxima.js +38 -0
  126. package/vue/chunks/mel.js +24 -0
  127. package/vue/chunks/mercury.js +62 -0
  128. package/vue/chunks/mipsasm.js +53 -0
  129. package/vue/chunks/mizar.js +10 -0
  130. package/vue/chunks/mojolicious.js +27 -0
  131. package/vue/chunks/monkey.js +158 -0
  132. package/vue/chunks/moonscript.js +102 -0
  133. package/vue/chunks/n1ql.js +346 -0
  134. package/vue/chunks/nestedtext.js +66 -0
  135. package/vue/chunks/nginx.js +127 -0
  136. package/vue/chunks/nim.js +174 -0
  137. package/vue/chunks/nix.js +334 -0
  138. package/vue/chunks/node-repl.js +20 -0
  139. package/vue/chunks/nsis.js +515 -0
  140. package/vue/chunks/objectivec.js +235 -0
  141. package/vue/chunks/ocaml.js +52 -0
  142. package/vue/chunks/openscad.js +66 -0
  143. package/vue/chunks/oxygene.js +58 -0
  144. package/vue/chunks/parser3.js +40 -0
  145. package/vue/chunks/perl.js +454 -0
  146. package/vue/chunks/pf.js +30 -0
  147. package/vue/chunks/pgsql.js +196 -0
  148. package/vue/chunks/php-template.js +43 -0
  149. package/vue/chunks/php.js +527 -0
  150. package/vue/chunks/plaintext.js +10 -0
  151. package/vue/chunks/pony.js +60 -0
  152. package/vue/chunks/powershell.js +208 -0
  153. package/vue/chunks/processing.js +407 -0
  154. package/vue/chunks/profile.js +38 -0
  155. package/vue/chunks/prolog.js +62 -0
  156. package/vue/chunks/properties.js +45 -0
  157. package/vue/chunks/protobuf.js +63 -0
  158. package/vue/chunks/puppet.js +87 -0
  159. package/vue/chunks/purebasic.js +42 -0
  160. package/vue/chunks/python-repl.js +19 -0
  161. package/vue/chunks/python.js +357 -0
  162. package/vue/chunks/q.js +21 -0
  163. package/vue/chunks/qml.js +134 -0
  164. package/vue/chunks/r.js +145 -0
  165. package/vue/chunks/reasonml.js +134 -0
  166. package/vue/chunks/rib.js +16 -0
  167. package/vue/chunks/roboconf.js +54 -0
  168. package/vue/chunks/routeros.js +109 -0
  169. package/vue/chunks/rsl.js +138 -0
  170. package/vue/chunks/ruby.js +322 -0
  171. package/vue/chunks/ruleslanguage.js +26 -0
  172. package/vue/chunks/rust.js +296 -0
  173. package/vue/chunks/sas.js +533 -0
  174. package/vue/chunks/scala.js +173 -0
  175. package/vue/chunks/scheme.js +118 -0
  176. package/vue/chunks/scilab.js +45 -0
  177. package/vue/chunks/scss.js +900 -0
  178. package/vue/chunks/shell.js +18 -0
  179. package/vue/chunks/smali.js +113 -0
  180. package/vue/chunks/smalltalk.js +59 -0
  181. package/vue/chunks/sml.js +49 -0
  182. package/vue/chunks/sqf.js +2599 -0
  183. package/vue/chunks/sql.js +624 -0
  184. package/vue/chunks/stan.js +471 -0
  185. package/vue/chunks/stata.js +33 -0
  186. package/vue/chunks/step21.js +53 -0
  187. package/vue/chunks/stylus.js +925 -0
  188. package/vue/chunks/subunit.js +34 -0
  189. package/vue/chunks/swift.js +699 -0
  190. package/vue/chunks/taggerscript.js +37 -0
  191. package/vue/chunks/tap.js +30 -0
  192. package/vue/chunks/tcl.js +165 -0
  193. package/vue/chunks/thrift.js +65 -0
  194. package/vue/chunks/tp.js +155 -0
  195. package/vue/chunks/twig.js +232 -0
  196. package/vue/chunks/typescript.js +672 -0
  197. package/vue/chunks/vala.js +39 -0
  198. package/vue/chunks/vbnet.js +86 -0
  199. package/vue/chunks/vbscript-html.js +14 -0
  200. package/vue/chunks/vbscript.js +200 -0
  201. package/vue/chunks/verilog.js +534 -0
  202. package/vue/chunks/vhdl.js +190 -0
  203. package/vue/chunks/vim.js +54 -0
  204. package/vue/chunks/wasm.js +111 -0
  205. package/vue/chunks/wren.js +229 -0
  206. package/vue/chunks/x86asm.js +64 -0
  207. package/vue/chunks/xl.js +192 -0
  208. package/vue/chunks/xml.js +175 -0
  209. package/vue/chunks/xquery.js +303 -0
  210. package/vue/chunks/yaml.js +159 -0
  211. package/vue/chunks/zephir.js +74 -0
  212. package/vue/components.css +119 -85
  213. package/vue/editor/LoomaEditor.d.ts +7 -7
  214. package/vue/editor/code-language-catalog.d.ts +196 -0
  215. package/vue/editor/index.js +290 -20
@@ -3319,39 +3319,39 @@ ul[data-v-7603f4ce] {
3319
3319
  display: none;
3320
3320
  }
3321
3321
 
3322
- [data-component~="ui-editor-table-overlay"][data-v-58a8a2b8] {
3322
+ [data-component~="ui-editor-table-overlay"][data-v-914e1f1d] {
3323
3323
  display: block;
3324
3324
  width: 100%;
3325
3325
  height: 100%;
3326
3326
  overflow: visible;
3327
3327
  pointer-events: none;
3328
3328
  }
3329
- [data-component~="ui-editor-table-overlay"][data-v-58a8a2b8] {
3329
+ [data-component~="ui-editor-table-overlay"][data-v-914e1f1d] {
3330
3330
  position: relative;
3331
3331
  width: 100%;
3332
3332
  height: 100%;
3333
3333
  overflow: visible;
3334
3334
  pointer-events: none;
3335
3335
  }
3336
- .rows[data-v-58a8a2b8],
3337
- .cols[data-v-58a8a2b8] {
3336
+ .rows[data-v-914e1f1d],
3337
+ .cols[data-v-914e1f1d] {
3338
3338
  pointer-events: none;
3339
3339
  position: absolute;
3340
3340
  }
3341
- .rows[data-v-58a8a2b8] {
3341
+ .rows[data-v-914e1f1d] {
3342
3342
  inset: 0;
3343
3343
  width: 100%;
3344
3344
  }
3345
- .cols[data-v-58a8a2b8] {
3345
+ .cols[data-v-914e1f1d] {
3346
3346
  inset: 0;
3347
3347
  height: 100%;
3348
3348
  }
3349
- .control[data-v-58a8a2b8] {
3349
+ .control[data-v-914e1f1d] {
3350
3350
  position: absolute;
3351
3351
  z-index: 1;
3352
3352
  pointer-events: none;
3353
3353
  }
3354
- .handle[data-v-58a8a2b8] {
3354
+ .handle[data-v-914e1f1d] {
3355
3355
  position: absolute;
3356
3356
  display: inline-flex;
3357
3357
  align-items: center;
@@ -3378,65 +3378,65 @@ ul[data-v-7603f4ce] {
3378
3378
  pointer-events: auto;
3379
3379
  cursor: pointer;
3380
3380
  }
3381
- .handle[data-v-58a8a2b8] {
3381
+ .handle[data-v-914e1f1d] {
3382
3382
  --_ui-default-icon-size: 14px;
3383
3383
  --_ui-default-icon-stroke-width: 2;
3384
3384
  }
3385
- .handle[data-ui-proximity="near"][data-v-58a8a2b8],
3386
- .control.active .handle[data-v-58a8a2b8],
3387
- .handle[data-v-58a8a2b8]:focus-visible {
3385
+ .handle[data-ui-proximity="near"][data-v-914e1f1d],
3386
+ .control.active .handle[data-v-914e1f1d],
3387
+ .handle[data-v-914e1f1d]:focus-visible {
3388
3388
  opacity: 1;
3389
3389
  scale: 1;
3390
3390
  }
3391
- .control.active .handle[data-v-58a8a2b8],
3392
- .handle[data-v-58a8a2b8]:focus-visible {
3391
+ .control.active .handle[data-v-914e1f1d],
3392
+ .handle[data-v-914e1f1d]:focus-visible {
3393
3393
  border-color: var(--ui-affordance-direct-color, var(--ui-accent-solid));
3394
3394
  background: var(--ui-affordance-direct-color, var(--ui-accent-solid));
3395
3395
  color: var(--ui-text-on-accent);
3396
3396
  box-shadow: var(--ui-shadow-sm, 0 1px 3px rgb(0 0 0 / 0.1));
3397
3397
  }
3398
- .handle[data-v-58a8a2b8]:focus-visible,
3399
- .selector[data-v-58a8a2b8]:focus-visible,
3400
- .cell-menu[data-v-58a8a2b8]:focus-visible {
3398
+ .handle[data-v-914e1f1d]:focus-visible,
3399
+ .selector[data-v-914e1f1d]:focus-visible,
3400
+ .cell-menu[data-v-914e1f1d]:focus-visible {
3401
3401
  outline: 2px solid var(--ui-focus-ring);
3402
3402
  outline-offset: 2px;
3403
3403
  }
3404
- .control.row[data-v-58a8a2b8] {
3404
+ .control.row[data-v-914e1f1d] {
3405
3405
  left: 0;
3406
3406
  width: 100%;
3407
3407
  height: 0;
3408
3408
  }
3409
- .control.row .handle[data-v-58a8a2b8] {
3409
+ .control.row .handle[data-v-914e1f1d] {
3410
3410
  top: -12px;
3411
3411
  left: -30px;
3412
3412
  }
3413
- .control.col[data-v-58a8a2b8] {
3413
+ .control.col[data-v-914e1f1d] {
3414
3414
  top: 0;
3415
3415
  width: 0;
3416
3416
  height: 100%;
3417
3417
  }
3418
- .control.col .handle[data-v-58a8a2b8] {
3418
+ .control.col .handle[data-v-914e1f1d] {
3419
3419
  top: -30px;
3420
3420
  left: -12px;
3421
3421
  }
3422
- .line[data-v-58a8a2b8] {
3422
+ .line[data-v-914e1f1d] {
3423
3423
  position: absolute;
3424
3424
  background: var(--ui-affordance-direct-color, var(--ui-accent-solid));
3425
3425
  opacity: 0;
3426
3426
  transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
3427
3427
  }
3428
- .control.row .line[data-v-58a8a2b8] {
3428
+ .control.row .line[data-v-914e1f1d] {
3429
3429
  inset: -1px 0 auto;
3430
3430
  height: 2px;
3431
3431
  }
3432
- .control.col .line[data-v-58a8a2b8] {
3432
+ .control.col .line[data-v-914e1f1d] {
3433
3433
  inset: 0 auto 0 -1px;
3434
3434
  width: 2px;
3435
3435
  }
3436
- .control.active .line[data-v-58a8a2b8] {
3436
+ .control.active .line[data-v-914e1f1d] {
3437
3437
  opacity: 0.8;
3438
3438
  }
3439
- .guide[data-v-58a8a2b8] {
3439
+ .guide[data-v-914e1f1d] {
3440
3440
  position: absolute;
3441
3441
  width: var(--ui-affordance-guide-size);
3442
3442
  height: var(--ui-affordance-guide-size);
@@ -3445,19 +3445,19 @@ ul[data-v-7603f4ce] {
3445
3445
  opacity: calc(var(--ui-affordance-guide-opacity) * var(--ui-affordance-scope-guide, 1));
3446
3446
  transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
3447
3447
  }
3448
- .control.row .guide[data-v-58a8a2b8] {
3448
+ .control.row .guide[data-v-914e1f1d] {
3449
3449
  left: -10px;
3450
3450
  top: -2px;
3451
3451
  }
3452
- .control.col .guide[data-v-58a8a2b8] {
3452
+ .control.col .guide[data-v-914e1f1d] {
3453
3453
  left: -2px;
3454
3454
  top: -10px;
3455
3455
  }
3456
- .control:has(.handle[data-ui-proximity="near"]) .guide[data-v-58a8a2b8],
3457
- .control.active .guide[data-v-58a8a2b8] {
3456
+ .control:has(.handle[data-ui-proximity="near"]) .guide[data-v-914e1f1d],
3457
+ .control.active .guide[data-v-914e1f1d] {
3458
3458
  opacity: 0;
3459
3459
  }
3460
- .tooltip[data-v-58a8a2b8] {
3460
+ .tooltip[data-v-914e1f1d] {
3461
3461
  position: absolute;
3462
3462
  z-index: 2;
3463
3463
  top: calc(100% + 6px);
@@ -3476,18 +3476,18 @@ ul[data-v-7603f4ce] {
3476
3476
  transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
3477
3477
  pointer-events: none;
3478
3478
  }
3479
- .control.row .tooltip[data-v-58a8a2b8] {
3479
+ .control.row .tooltip[data-v-914e1f1d] {
3480
3480
  top: 50%;
3481
3481
  left: auto;
3482
3482
  right: calc(100% + 8px);
3483
3483
  transform: translateY(-50%);
3484
3484
  }
3485
- .control.active .tooltip[data-v-58a8a2b8],
3486
- .handle:focus-visible .tooltip[data-v-58a8a2b8] {
3485
+ .control.active .tooltip[data-v-914e1f1d],
3486
+ .handle:focus-visible .tooltip[data-v-914e1f1d] {
3487
3487
  opacity: 1;
3488
3488
  }
3489
- .selector[data-v-58a8a2b8],
3490
- .cell-menu[data-v-58a8a2b8] {
3489
+ .selector[data-v-914e1f1d],
3490
+ .cell-menu[data-v-914e1f1d] {
3491
3491
  position: absolute;
3492
3492
  z-index: 2;
3493
3493
  display: inline-flex;
@@ -3506,16 +3506,21 @@ ul[data-v-7603f4ce] {
3506
3506
  border-color var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
3507
3507
  box-shadow var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
3508
3508
  }
3509
- .selector[data-v-58a8a2b8]:hover,
3510
- .cell-menu[data-v-58a8a2b8]:hover {
3509
+ .selector[data-v-914e1f1d]:hover,
3510
+ .cell-menu[data-v-914e1f1d]:hover {
3511
3511
  background: var(--ui-surface-muted);
3512
3512
  color: var(--ui-text-primary);
3513
3513
  box-shadow: var(--ui-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.05));
3514
3514
  }
3515
- .selector[data-v-58a8a2b8] {
3515
+ .selector[data-v-914e1f1d] {
3516
3516
  border-radius: var(--ui-radius-round);
3517
+ touch-action: none;
3518
+ cursor: grab;
3519
+ }
3520
+ .selector[data-v-914e1f1d]:active {
3521
+ cursor: grabbing;
3517
3522
  }
3518
- .selector[data-v-58a8a2b8]::before {
3523
+ .selector[data-v-914e1f1d]::before {
3519
3524
  content: "";
3520
3525
  position: absolute;
3521
3526
  inset: 50% auto auto 50%;
@@ -3526,7 +3531,7 @@ ul[data-v-7603f4ce] {
3526
3531
  transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
3527
3532
  pointer-events: none;
3528
3533
  }
3529
- .selector .glyph[data-v-58a8a2b8] {
3534
+ .selector .glyph[data-v-914e1f1d] {
3530
3535
  display: block;
3531
3536
  width: 14px;
3532
3537
  height: 14px;
@@ -3538,59 +3543,79 @@ ul[data-v-7603f4ce] {
3538
3543
  opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
3539
3544
  transform var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
3540
3545
  }
3541
- .selector[data-v-58a8a2b8]:hover::before,
3542
- .selector[data-v-58a8a2b8]:focus-visible::before {
3546
+ .selector[data-v-914e1f1d]:hover::before,
3547
+ .selector[data-v-914e1f1d]:focus-visible::before {
3543
3548
  opacity: 0;
3544
3549
  }
3545
- .selector:hover .glyph[data-v-58a8a2b8],
3546
- .selector:focus-visible .glyph[data-v-58a8a2b8] {
3550
+ .selector:hover .glyph[data-v-914e1f1d],
3551
+ .selector:focus-visible .glyph[data-v-914e1f1d] {
3547
3552
  opacity: 1;
3548
3553
  transform: scale(1);
3549
3554
  }
3550
- .selector.row[data-v-58a8a2b8] {
3555
+ .selector.row[data-v-914e1f1d] {
3551
3556
  left: -9px;
3552
3557
  width: 18px;
3553
3558
  height: 32px;
3554
3559
  transform: translateY(-50%);
3555
3560
  }
3556
- .selector.row[data-v-58a8a2b8]::before {
3561
+ .selector.row[data-v-914e1f1d]::before {
3557
3562
  width: 2px;
3558
3563
  height: 16px;
3559
3564
  }
3560
- .selector.column[data-v-58a8a2b8] {
3565
+ .selector.column[data-v-914e1f1d] {
3561
3566
  top: -9px;
3562
3567
  width: 32px;
3563
3568
  height: 18px;
3564
3569
  transform: translateX(-50%);
3565
3570
  }
3566
- .selector.column[data-v-58a8a2b8]::before {
3571
+ .selector.column[data-v-914e1f1d]::before {
3567
3572
  width: 16px;
3568
3573
  height: 2px;
3569
3574
  }
3570
3575
  @media (hover: none), (pointer: coarse) {
3571
- .selector[data-v-58a8a2b8]::before {
3576
+ .selector[data-v-914e1f1d]::before {
3572
3577
  opacity: 0;
3573
3578
  }
3574
- .selector .glyph[data-v-58a8a2b8] {
3579
+ .selector .glyph[data-v-914e1f1d] {
3575
3580
  opacity: 1;
3576
3581
  transform: none;
3577
3582
  }
3578
3583
  }
3579
- .cell-menu[data-v-58a8a2b8] {
3584
+ .cell-menu[data-v-914e1f1d] {
3580
3585
  width: 24px;
3581
3586
  height: 24px;
3582
3587
  border-radius: var(--ui-radius-sm);
3583
3588
  background: color-mix(in srgb, var(--ui-surface-muted) 78%, transparent);
3584
3589
  }
3585
- .cell-menu[data-v-58a8a2b8] {
3590
+ .cell-menu[data-v-914e1f1d] {
3586
3591
  --_ui-default-icon-size: 15px;
3587
3592
  --_ui-default-icon-stroke-width: 2;
3588
3593
  }
3589
- [data-component~="ui-editor-table-overlay"][hidden][data-v-58a8a2b8] {
3594
+ .drop-indicator[data-v-914e1f1d] {
3595
+ position: absolute;
3596
+ z-index: 3;
3597
+ background: var(--ui-accent-solid);
3598
+ box-shadow: 0 0 0 2px var(--ui-surface);
3599
+ pointer-events: none;
3600
+ }
3601
+ .drop-indicator.row[data-v-914e1f1d] {
3602
+ left: 0;
3603
+ width: 100%;
3604
+ height: 2px;
3605
+ }
3606
+ .drop-indicator.column[data-v-914e1f1d] {
3607
+ top: 0;
3608
+ width: 2px;
3609
+ height: 100%;
3610
+ }
3611
+ .drop-indicator[hidden][data-v-914e1f1d] {
3612
+ display: none;
3613
+ }
3614
+ [data-component~="ui-editor-table-overlay"][hidden][data-v-914e1f1d] {
3590
3615
  display: none;
3591
3616
  }
3592
3617
 
3593
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"][data-v-26c35c0d] {
3618
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"][data-v-3c04b848] {
3594
3619
  min-width: max-content;
3595
3620
  min-height: 100%;
3596
3621
  padding: 0;
@@ -3600,15 +3625,15 @@ ul[data-v-7603f4ce] {
3600
3625
  box-shadow: none;
3601
3626
  backdrop-filter: none;
3602
3627
  }
3603
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button[data-v-26c35c0d] {
3628
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button[data-v-3c04b848] {
3604
3629
  min-height: 44px;
3605
3630
  background: transparent;
3606
3631
  }
3607
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.active[data-v-26c35c0d],
3608
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.selected[data-v-26c35c0d] {
3632
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.active[data-v-3c04b848],
3633
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.selected[data-v-3c04b848] {
3609
3634
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
3610
3635
  }
3611
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] .menu[data-v-26c35c0d] {
3636
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] .menu[data-v-3c04b848] {
3612
3637
  top: auto;
3613
3638
  right: 0;
3614
3639
  bottom: calc(100% + var(--ui-space-2));
@@ -3616,7 +3641,7 @@ ul[data-v-7603f4ce] {
3616
3641
  overflow-y: auto;
3617
3642
  overscroll-behavior: contain;
3618
3643
  }
3619
- [data-component~="ui-editor-table-toolbar"][data-v-26c35c0d] {
3644
+ [data-component~="ui-editor-table-toolbar"][data-v-3c04b848] {
3620
3645
  display: inline-flex;
3621
3646
  align-items: center;
3622
3647
  gap: var(--ui-space-1);
@@ -3627,21 +3652,21 @@ ul[data-v-7603f4ce] {
3627
3652
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
3628
3653
  backdrop-filter: blur(10px);
3629
3654
  }
3630
- .group[data-v-26c35c0d] {
3655
+ .group[data-v-3c04b848] {
3631
3656
  display: inline-flex;
3632
3657
  align-items: center;
3633
3658
  gap: 2px;
3634
3659
  overflow: hidden;
3635
3660
  }
3636
- .sep[data-v-26c35c0d] {
3661
+ .sep[data-v-3c04b848] {
3637
3662
  width: 1px;
3638
3663
  align-self: stretch;
3639
3664
  background: var(--ui-border-divider);
3640
3665
  }
3641
- .overflow[data-v-26c35c0d] {
3666
+ .overflow[data-v-3c04b848] {
3642
3667
  position: relative;
3643
3668
  }
3644
- [data-component~="ui-editor-table-toolbar"] button[data-v-26c35c0d] {
3669
+ [data-component~="ui-editor-table-toolbar"] button[data-v-3c04b848] {
3645
3670
  display: inline-flex;
3646
3671
  align-items: center;
3647
3672
  justify-content: center;
@@ -3658,43 +3683,45 @@ ul[data-v-7603f4ce] {
3658
3683
  padding: var(--ui-space-2) var(--ui-space-2);
3659
3684
  white-space: nowrap;
3660
3685
  }
3661
- [data-component~="ui-editor-table-toolbar"] button[data-v-26c35c0d]:hover {
3686
+ [data-component~="ui-editor-table-toolbar"] button[data-v-3c04b848]:hover {
3662
3687
  background: var(--ui-surface-hover);
3663
3688
  }
3664
- [data-component~="ui-editor-table-toolbar"] button.active[data-v-26c35c0d] {
3689
+ [data-component~="ui-editor-table-toolbar"] button.active[data-v-3c04b848] {
3665
3690
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
3666
3691
  color: var(--ui-accent-active);
3667
3692
  }
3668
- .group button[data-v-26c35c0d] {
3693
+ .group button[data-v-3c04b848] {
3669
3694
  border-radius: var(--ui-radius-sm);
3670
3695
  }
3671
- .group button + button[data-v-26c35c0d] {
3696
+ .group button + button[data-v-3c04b848] {
3672
3697
  border-left: 0;
3673
3698
  }
3674
- [data-component~="ui-editor-table-toolbar"] .more[data-v-26c35c0d] {
3699
+ [data-component~="ui-editor-table-toolbar"] .more[data-v-3c04b848] {
3675
3700
  border: 0;
3676
3701
  border-radius: var(--ui-radius-sm);
3677
3702
  }
3678
- [data-component~="ui-editor-table-toolbar"] button.danger[data-v-26c35c0d] {
3703
+ [data-component~="ui-editor-table-toolbar"] button.danger[data-v-3c04b848] {
3679
3704
  color: var(--ui-danger);
3680
3705
  }
3681
- [data-component~="ui-editor-table-toolbar"][data-v-26c35c0d] {
3706
+ [data-component~="ui-editor-table-toolbar"][data-v-3c04b848] {
3682
3707
  --_ui-default-icon-size: var(--ui-editor-toolbar-icon-size, 1rem);
3683
3708
  --_ui-default-icon-stroke-width: var(--ui-editor-toolbar-icon-stroke-width, 1.75);
3684
3709
  }
3685
- .chevron[data-v-26c35c0d] {
3710
+ .chevron[data-v-3c04b848] {
3686
3711
  display: inline-flex;
3687
3712
  --_ui-default-icon-size: 0.875rem;
3688
3713
  }
3689
- [data-component~="ui-editor-table-toolbar"] .icon-button[data-v-26c35c0d] {
3714
+ [data-component~="ui-editor-table-toolbar"] .icon-button[data-v-3c04b848] {
3690
3715
  width: 32px;
3691
3716
  padding-inline: 0;
3692
3717
  }
3693
- .menu[data-v-26c35c0d] {
3718
+ .menu[data-v-3c04b848] {
3719
+ box-sizing: border-box;
3694
3720
  position: absolute;
3695
3721
  top: calc(100% + var(--ui-space-2));
3696
3722
  right: 0;
3697
3723
  min-width: 12rem;
3724
+ max-width: min(17rem, calc(100vw - 24px));
3698
3725
  padding: var(--ui-space-1);
3699
3726
  background: var(--ui-surface);
3700
3727
  border: 1px solid var(--ui-border-strong);
@@ -3704,13 +3731,16 @@ ul[data-v-7603f4ce] {
3704
3731
  flex-direction: column;
3705
3732
  gap: 2px;
3706
3733
  z-index: 2;
3734
+ overflow-y: auto;
3735
+ overscroll-behavior: contain;
3736
+ scrollbar-width: thin;
3707
3737
  }
3708
- .menu-section + .menu-section[data-v-26c35c0d] {
3738
+ .menu-section + .menu-section[data-v-3c04b848] {
3709
3739
  margin-top: var(--ui-space-1);
3710
3740
  padding-top: var(--ui-space-1);
3711
3741
  border-top: 1px solid var(--ui-border-divider);
3712
3742
  }
3713
- .menu-heading[data-v-26c35c0d] {
3743
+ .menu-heading[data-v-3c04b848] {
3714
3744
  padding: var(--ui-space-1) var(--ui-space-2);
3715
3745
  font-size: var(--ui-font-size-2xs);
3716
3746
  font-weight: 700;
@@ -3718,38 +3748,38 @@ ul[data-v-7603f4ce] {
3718
3748
  text-transform: uppercase;
3719
3749
  color: var(--ui-text-muted);
3720
3750
  }
3721
- .menu button[data-v-26c35c0d] {
3751
+ .menu button[data-v-3c04b848] {
3722
3752
  display: flex;
3723
3753
  justify-content: flex-start;
3724
3754
  width: 100%;
3725
3755
  text-align: left;
3726
3756
  }
3727
- .swatches[data-v-26c35c0d] {
3757
+ .swatches[data-v-3c04b848] {
3728
3758
  display: grid;
3729
- grid-template-columns: repeat(3, minmax(0, 1fr));
3759
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3730
3760
  gap: 2px;
3731
3761
  }
3732
- [data-component~="ui-editor-table-toolbar"] .swatch-button[data-v-26c35c0d] {
3762
+ [data-component~="ui-editor-table-toolbar"] .swatch-button[data-v-3c04b848] {
3733
3763
  gap: var(--ui-space-1);
3734
3764
  justify-content: flex-start;
3735
3765
  }
3736
- .swatch[data-v-26c35c0d] {
3766
+ .swatch[data-v-3c04b848] {
3737
3767
  width: 14px;
3738
3768
  height: 14px;
3739
3769
  flex: 0 0 14px;
3740
3770
  border: 1px solid color-mix(in srgb, var(--ui-border) 80%, #000);
3741
- border-radius: 3px;
3771
+ border-radius: var(--ui-radius-round);
3742
3772
  background: var(--_swatch);
3743
3773
  }
3744
- .swatch.default[data-v-26c35c0d] {
3774
+ .swatch.default[data-v-3c04b848] {
3745
3775
  background:
3746
3776
  linear-gradient(135deg, transparent 44%, var(--ui-danger) 46% 54%, transparent 56%),
3747
3777
  var(--ui-surface);
3748
3778
  }
3749
- .swatch-button.selected[data-v-26c35c0d] {
3779
+ .swatch-button.selected[data-v-3c04b848] {
3750
3780
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
3751
3781
  }
3752
- [data-component~="ui-editor-table-toolbar"][hidden][data-v-26c35c0d] {
3782
+ [data-component~="ui-editor-table-toolbar"][hidden][data-v-3c04b848] {
3753
3783
  display: none;
3754
3784
  }
3755
3785
 
@@ -9214,6 +9244,10 @@ html[data-ui-input-modality="touch"]
9214
9244
  -webkit-overflow-scrolling: touch;
9215
9245
  }
9216
9246
 
9247
+ .looma-editor .ProseMirror .tableWrapper + p {
9248
+ margin-top: var(--ui-editor-table-following-gap, var(--ui-space-4));
9249
+ }
9250
+
9217
9251
  /* ProseMirror table (for when Looma editor content is rendered) */
9218
9252
  .ProseMirror:focus-visible {
9219
9253
  outline: none;
@@ -71,10 +71,10 @@ export declare const LoomaEditor: import("vue").DefineComponent<import("vue").Ex
71
71
  type: PropType<AnyExtension[]>;
72
72
  default: () => never[];
73
73
  };
74
- /** Code block grammars to register when this editor is created. */
74
+ /** Override the lazy built-in catalog with application-owned code grammars. An empty object disables highlighting. */
75
75
  codeLanguages: {
76
- type: PropType<LoomaCodeLanguages>;
77
- default: () => {};
76
+ type: PropType<LoomaCodeLanguages | null>;
77
+ default: null;
78
78
  };
79
79
  mentionItems: {
80
80
  type: PropType<LoomaMentionItem[]>;
@@ -164,10 +164,10 @@ export declare const LoomaEditor: import("vue").DefineComponent<import("vue").Ex
164
164
  type: PropType<AnyExtension[]>;
165
165
  default: () => never[];
166
166
  };
167
- /** Code block grammars to register when this editor is created. */
167
+ /** Override the lazy built-in catalog with application-owned code grammars. An empty object disables highlighting. */
168
168
  codeLanguages: {
169
- type: PropType<LoomaCodeLanguages>;
170
- default: () => {};
169
+ type: PropType<LoomaCodeLanguages | null>;
170
+ default: null;
171
171
  };
172
172
  mentionItems: {
173
173
  type: PropType<LoomaMentionItem[]>;
@@ -226,7 +226,7 @@ export declare const LoomaEditor: import("vue").DefineComponent<import("vue").Ex
226
226
  label: string;
227
227
  placeholder: string;
228
228
  disableHighlight: boolean;
229
- codeLanguages: Readonly<Record<string, import("highlight.js").LanguageFn>>;
229
+ codeLanguages: Readonly<Record<string, import("highlight.js").LanguageFn>> | null;
230
230
  modelValue: JSONContent;
231
231
  editable: boolean;
232
232
  extensions: AnyExtension[];