@design.estate/dees-catalog 3.91.0 → 3.92.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 (228) hide show
  1. package/dist_bundle/bundle.js +10381 -4788
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-appui/dees-appui/dees-appui.js +5 -4
  4. package/dist_ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.js +6 -7
  5. package/dist_ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.js +4 -6
  6. package/dist_ts_web/elements/00group-button/dees-button/dees-button.d.ts +6 -0
  7. package/dist_ts_web/elements/00group-button/dees-button/dees-button.demo.js +14 -1
  8. package/dist_ts_web/elements/00group-button/dees-button/dees-button.js +49 -24
  9. package/dist_ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.js +1 -1
  10. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.d.ts +69 -0
  11. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.js +342 -0
  12. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.d.ts +48 -3
  13. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.js +128 -39
  14. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.js +663 -190
  15. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/index.d.ts +1 -0
  16. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/index.js +2 -1
  17. package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.d.ts +3 -0
  18. package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.js +48 -30
  19. package/dist_ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.js +1 -1
  20. package/dist_ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.js +1 -2
  21. package/dist_ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.js +1 -1
  22. package/dist_ts_web/elements/00group-dataview/dees-table/styles.js +1 -1
  23. package/dist_ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.js +9 -9
  24. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +55 -0
  25. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.d.ts +1 -0
  26. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +183 -0
  27. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +412 -0
  28. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.d.ts +1 -0
  29. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.js +2 -0
  30. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts +65 -0
  31. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.d.ts +1 -0
  32. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.js +55 -0
  33. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.js +589 -0
  34. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.d.ts +1 -0
  35. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.js +2 -0
  36. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.d.ts +21 -0
  37. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.d.ts +1 -0
  38. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.js +41 -0
  39. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.js +215 -0
  40. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.d.ts +1 -0
  41. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.js +2 -0
  42. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +58 -0
  43. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.d.ts +1 -0
  44. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.js +126 -0
  45. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +551 -0
  46. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.d.ts +1 -0
  47. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.js +2 -0
  48. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +50 -0
  49. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.d.ts +1 -0
  50. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.js +101 -0
  51. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +424 -0
  52. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.d.ts +1 -0
  53. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.js +2 -0
  54. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.d.ts +27 -0
  55. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.d.ts +1 -0
  56. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.js +46 -0
  57. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.js +282 -0
  58. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.d.ts +1 -0
  59. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.js +2 -0
  60. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts +24 -0
  61. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.d.ts +1 -0
  62. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.js +32 -0
  63. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +241 -0
  64. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.d.ts +1 -0
  65. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.js +2 -0
  66. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +28 -0
  67. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.d.ts +1 -0
  68. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +56 -0
  69. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +279 -0
  70. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.d.ts +1 -0
  71. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.js +2 -0
  72. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.d.ts +30 -0
  73. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.d.ts +1 -0
  74. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.js +35 -0
  75. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.js +235 -0
  76. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.d.ts +1 -0
  77. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.js +2 -0
  78. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.d.ts +27 -0
  79. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.d.ts +1 -0
  80. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.js +41 -0
  81. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.js +258 -0
  82. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.d.ts +1 -0
  83. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.js +2 -0
  84. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +35 -0
  85. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.d.ts +1 -0
  86. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.js +162 -0
  87. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +368 -0
  88. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.d.ts +2 -0
  89. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.js +3 -0
  90. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.d.ts +5 -0
  91. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.js +183 -0
  92. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.d.ts +19 -0
  93. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.d.ts +1 -0
  94. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.js +25 -0
  95. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.js +148 -0
  96. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.d.ts +1 -0
  97. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.js +2 -0
  98. package/dist_ts_web/elements/00group-harness/harness.demodata.d.ts +22 -0
  99. package/dist_ts_web/elements/00group-harness/harness.demodata.js +94 -0
  100. package/dist_ts_web/elements/00group-harness/harness.helpers.d.ts +37 -0
  101. package/dist_ts_web/elements/00group-harness/harness.helpers.js +221 -0
  102. package/dist_ts_web/elements/00group-harness/harness.markdown.d.ts +25 -0
  103. package/dist_ts_web/elements/00group-harness/harness.markdown.js +147 -0
  104. package/dist_ts_web/elements/00group-harness/harness.styles.d.ts +9 -0
  105. package/dist_ts_web/elements/00group-harness/harness.styles.js +94 -0
  106. package/dist_ts_web/elements/00group-harness/index.d.ts +18 -0
  107. package/dist_ts_web/elements/00group-harness/index.js +22 -0
  108. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +210 -0
  109. package/dist_ts_web/elements/00group-harness/interfaces.js +11 -0
  110. package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +76 -0
  111. package/dist_ts_web/elements/00group-harness/toolregistry.js +210 -0
  112. package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.js +30 -18
  113. package/dist_ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.js +73 -46
  114. package/dist_ts_web/elements/00group-input/dees-input-datepicker/styles.js +15 -16
  115. package/dist_ts_web/elements/00group-input/dees-input-list/dees-input-list.js +2 -4
  116. package/dist_ts_web/elements/00group-input/dees-input-tags/dees-input-tags.js +36 -15
  117. package/dist_ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.js +5 -4
  118. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.js +10 -89
  119. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js +12 -8
  120. package/dist_ts_web/elements/00group-layout/dees-chips/dees-chips.js +1 -1
  121. package/dist_ts_web/elements/00group-layout/dees-pagination/dees-pagination.js +27 -12
  122. package/dist_ts_web/elements/00group-layout/dees-settings/dees-settings.js +1 -1
  123. package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.js +14 -18
  124. package/dist_ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js +6 -7
  125. package/dist_ts_web/elements/00group-overlay/dees-modal/dees-modal.js +6 -21
  126. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.d.ts +2 -1
  127. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.js +10 -4
  128. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.js +1 -1
  129. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +9 -8
  130. package/dist_ts_web/elements/00group-workspace/dees-workspace/dees-workspace.js +1 -1
  131. package/dist_ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.js +3 -4
  132. package/dist_ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.js +8 -78
  133. package/dist_ts_web/elements/00syntax.d.ts +28 -0
  134. package/dist_ts_web/elements/00syntax.js +98 -0
  135. package/dist_ts_web/elements/00theme.js +26 -14
  136. package/dist_ts_web/elements/index.d.ts +1 -0
  137. package/dist_ts_web/elements/index.js +2 -1
  138. package/dist_watch/bundle.js +233948 -0
  139. package/dist_watch/bundle.js.map +7 -0
  140. package/dist_watch/index.html +28 -0
  141. package/package.json +1 -1
  142. package/readme.hints.md +7 -1
  143. package/readme.md +110 -0
  144. package/readme.playbook.md +10 -0
  145. package/ts_web/00_commitinfo_data.ts +1 -1
  146. package/ts_web/elements/00group-appui/dees-appui/dees-appui.ts +4 -3
  147. package/ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.ts +5 -6
  148. package/ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.ts +3 -5
  149. package/ts_web/elements/00group-button/dees-button/dees-button.demo.ts +13 -0
  150. package/ts_web/elements/00group-button/dees-button/dees-button.ts +42 -22
  151. package/ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.ts +1 -1
  152. package/ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.ts +401 -0
  153. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.ts +132 -38
  154. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.ts +649 -187
  155. package/ts_web/elements/00group-dataview/dees-dataview-codebox/index.ts +1 -0
  156. package/ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.ts +45 -30
  157. package/ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.ts +1 -1
  158. package/ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.ts +0 -1
  159. package/ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.ts +1 -1
  160. package/ts_web/elements/00group-dataview/dees-table/styles.ts +1 -1
  161. package/ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.ts +9 -9
  162. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +193 -0
  163. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +301 -0
  164. package/ts_web/elements/00group-harness/dees-harness-chat/index.ts +1 -0
  165. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.ts +56 -0
  166. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.ts +514 -0
  167. package/ts_web/elements/00group-harness/dees-harness-composer/index.ts +1 -0
  168. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.ts +44 -0
  169. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.ts +172 -0
  170. package/ts_web/elements/00group-harness/dees-harness-content-blocks/index.ts +1 -0
  171. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.ts +129 -0
  172. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +498 -0
  173. package/ts_web/elements/00group-harness/dees-harness-message/index.ts +1 -0
  174. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.ts +105 -0
  175. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +342 -0
  176. package/ts_web/elements/00group-harness/dees-harness-message-list/index.ts +1 -0
  177. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.ts +47 -0
  178. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.ts +225 -0
  179. package/ts_web/elements/00group-harness/dees-harness-permission-card/index.ts +1 -0
  180. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.ts +32 -0
  181. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +195 -0
  182. package/ts_web/elements/00group-harness/dees-harness-reasoning/index.ts +1 -0
  183. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +59 -0
  184. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +222 -0
  185. package/ts_web/elements/00group-harness/dees-harness-session-list/index.ts +1 -0
  186. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.ts +35 -0
  187. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.ts +187 -0
  188. package/ts_web/elements/00group-harness/dees-harness-status/index.ts +1 -0
  189. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.ts +43 -0
  190. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.ts +206 -0
  191. package/ts_web/elements/00group-harness/dees-harness-todos/index.ts +1 -0
  192. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.ts +166 -0
  193. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +315 -0
  194. package/ts_web/elements/00group-harness/dees-harness-tool-card/index.ts +2 -0
  195. package/ts_web/elements/00group-harness/dees-harness-tool-card/renderers.ts +205 -0
  196. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.ts +25 -0
  197. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.ts +96 -0
  198. package/ts_web/elements/00group-harness/dees-harness-usage/index.ts +1 -0
  199. package/ts_web/elements/00group-harness/harness.demodata.ts +113 -0
  200. package/ts_web/elements/00group-harness/harness.helpers.ts +227 -0
  201. package/ts_web/elements/00group-harness/harness.markdown.ts +151 -0
  202. package/ts_web/elements/00group-harness/harness.styles.ts +96 -0
  203. package/ts_web/elements/00group-harness/index.ts +22 -0
  204. package/ts_web/elements/00group-harness/interfaces.ts +203 -0
  205. package/ts_web/elements/00group-harness/toolregistry.ts +264 -0
  206. package/ts_web/elements/00group-input/dees-input-code/dees-input-code.ts +29 -17
  207. package/ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.ts +72 -45
  208. package/ts_web/elements/00group-input/dees-input-datepicker/styles.ts +14 -15
  209. package/ts_web/elements/00group-input/dees-input-list/dees-input-list.ts +1 -3
  210. package/ts_web/elements/00group-input/dees-input-tags/dees-input-tags.ts +35 -14
  211. package/ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.ts +4 -3
  212. package/ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.ts +9 -88
  213. package/ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.ts +11 -7
  214. package/ts_web/elements/00group-layout/dees-chips/dees-chips.ts +1 -1
  215. package/ts_web/elements/00group-layout/dees-pagination/dees-pagination.ts +26 -11
  216. package/ts_web/elements/00group-layout/dees-settings/dees-settings.ts +1 -1
  217. package/ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts +13 -17
  218. package/ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.ts +5 -6
  219. package/ts_web/elements/00group-overlay/dees-modal/dees-modal.ts +5 -20
  220. package/ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.ts +10 -3
  221. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.ts +1 -1
  222. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +8 -7
  223. package/ts_web/elements/00group-workspace/dees-workspace/dees-workspace.ts +1 -1
  224. package/ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.ts +2 -3
  225. package/ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.ts +7 -77
  226. package/ts_web/elements/00syntax.ts +124 -0
  227. package/ts_web/elements/00theme.ts +25 -13
  228. package/ts_web/elements/index.ts +1 -0
@@ -33,14 +33,15 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
33
33
  return useValue ? value : void 0;
34
34
  };
35
35
  import { demoFunc } from './dees-dataview-codebox.demo.js';
36
- import { DeesElement, html, css, customElement, property, state, cssManager, } from '@design.estate/dees-element';
37
- import { cssGeistFontFamily, cssMonoFontFamily } from '../../00fonts.js';
36
+ import { DeesElement, html, css, customElement, property, state, cssManager, unsafeHTML, } from '@design.estate/dees-element';
38
37
  import { themeDefaultStyles } from '../../00theme.js';
38
+ import { syntaxPaletteStyles, syntaxScopeStyles } from '../../00syntax.js';
39
39
  import * as smartstring from '@push.rocks/smartstring';
40
- import * as domtools from '@design.estate/dees-domtools';
41
40
  import { DeesContextmenu } from '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
42
41
  import { DeesServiceLibLoader } from '../../../services/index.js';
43
42
  import '../../00group-layout/dees-tile/dees-tile.js';
43
+ import '../../00group-utility/dees-icon/dees-icon.js';
44
+ import { buildSplitRows, computeLineDiff, diffStats, foldContextRows, parseUnifiedDiff, toUnifiedDiff, } from './codebox.diff.js';
44
45
  let DeesDataviewCodebox = (() => {
45
46
  let _classDecorators = [customElement('dees-dataview-codebox')];
46
47
  let _classDescriptor;
@@ -50,20 +51,57 @@ let DeesDataviewCodebox = (() => {
50
51
  let _progLang_decorators;
51
52
  let _progLang_initializers = [];
52
53
  let _progLang_extraInitializers = [];
54
+ let _filename_decorators;
55
+ let _filename_initializers = [];
56
+ let _filename_extraInitializers = [];
53
57
  let _codeToDisplay_decorators;
54
58
  let _codeToDisplay_initializers = [];
55
59
  let _codeToDisplay_extraInitializers = [];
60
+ let _codeBefore_decorators;
61
+ let _codeBefore_initializers = [];
62
+ let _codeBefore_extraInitializers = [];
63
+ let _unifiedDiff_decorators;
64
+ let _unifiedDiff_initializers = [];
65
+ let _unifiedDiff_extraInitializers = [];
66
+ let _diffView_decorators;
67
+ let _diffView_initializers = [];
68
+ let _diffView_extraInitializers = [];
69
+ let _highlightedCode_decorators;
70
+ let _highlightedCode_initializers = [];
71
+ let _highlightedCode_extraInitializers = [];
72
+ let _copied_decorators;
73
+ let _copied_initializers = [];
74
+ let _copied_extraInitializers = [];
75
+ let _expandedFolds_decorators;
76
+ let _expandedFolds_initializers = [];
77
+ let _expandedFolds_extraInitializers = [];
78
+ let _highlightVersion_decorators;
79
+ let _highlightVersion_initializers = [];
80
+ let _highlightVersion_extraInitializers = [];
56
81
  var DeesDataviewCodebox = class extends _classSuper {
57
82
  static { _classThis = this; }
58
83
  static {
59
84
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
60
85
  _progLang_decorators = [property()];
61
- _codeToDisplay_decorators = [property({
62
- type: String,
63
- reflect: true,
64
- })];
86
+ _filename_decorators = [property()];
87
+ _codeToDisplay_decorators = [property({ type: String })];
88
+ _codeBefore_decorators = [property({ type: String })];
89
+ _unifiedDiff_decorators = [property({ type: String })];
90
+ _diffView_decorators = [property({ type: String })];
91
+ _highlightedCode_decorators = [state()];
92
+ _copied_decorators = [state()];
93
+ _expandedFolds_decorators = [state()];
94
+ _highlightVersion_decorators = [state()];
65
95
  __esDecorate(this, null, _progLang_decorators, { kind: "accessor", name: "progLang", static: false, private: false, access: { has: obj => "progLang" in obj, get: obj => obj.progLang, set: (obj, value) => { obj.progLang = value; } }, metadata: _metadata }, _progLang_initializers, _progLang_extraInitializers);
96
+ __esDecorate(this, null, _filename_decorators, { kind: "accessor", name: "filename", static: false, private: false, access: { has: obj => "filename" in obj, get: obj => obj.filename, set: (obj, value) => { obj.filename = value; } }, metadata: _metadata }, _filename_initializers, _filename_extraInitializers);
66
97
  __esDecorate(this, null, _codeToDisplay_decorators, { kind: "accessor", name: "codeToDisplay", static: false, private: false, access: { has: obj => "codeToDisplay" in obj, get: obj => obj.codeToDisplay, set: (obj, value) => { obj.codeToDisplay = value; } }, metadata: _metadata }, _codeToDisplay_initializers, _codeToDisplay_extraInitializers);
98
+ __esDecorate(this, null, _codeBefore_decorators, { kind: "accessor", name: "codeBefore", static: false, private: false, access: { has: obj => "codeBefore" in obj, get: obj => obj.codeBefore, set: (obj, value) => { obj.codeBefore = value; } }, metadata: _metadata }, _codeBefore_initializers, _codeBefore_extraInitializers);
99
+ __esDecorate(this, null, _unifiedDiff_decorators, { kind: "accessor", name: "unifiedDiff", static: false, private: false, access: { has: obj => "unifiedDiff" in obj, get: obj => obj.unifiedDiff, set: (obj, value) => { obj.unifiedDiff = value; } }, metadata: _metadata }, _unifiedDiff_initializers, _unifiedDiff_extraInitializers);
100
+ __esDecorate(this, null, _diffView_decorators, { kind: "accessor", name: "diffView", static: false, private: false, access: { has: obj => "diffView" in obj, get: obj => obj.diffView, set: (obj, value) => { obj.diffView = value; } }, metadata: _metadata }, _diffView_initializers, _diffView_extraInitializers);
101
+ __esDecorate(this, null, _highlightedCode_decorators, { kind: "accessor", name: "highlightedCode", static: false, private: false, access: { has: obj => "highlightedCode" in obj, get: obj => obj.highlightedCode, set: (obj, value) => { obj.highlightedCode = value; } }, metadata: _metadata }, _highlightedCode_initializers, _highlightedCode_extraInitializers);
102
+ __esDecorate(this, null, _copied_decorators, { kind: "accessor", name: "copied", static: false, private: false, access: { has: obj => "copied" in obj, get: obj => obj.copied, set: (obj, value) => { obj.copied = value; } }, metadata: _metadata }, _copied_initializers, _copied_extraInitializers);
103
+ __esDecorate(this, null, _expandedFolds_decorators, { kind: "accessor", name: "expandedFolds", static: false, private: false, access: { has: obj => "expandedFolds" in obj, get: obj => obj.expandedFolds, set: (obj, value) => { obj.expandedFolds = value; } }, metadata: _metadata }, _expandedFolds_initializers, _expandedFolds_extraInitializers);
104
+ __esDecorate(this, null, _highlightVersion_decorators, { kind: "accessor", name: "highlightVersion", static: false, private: false, access: { has: obj => "highlightVersion" in obj, get: obj => obj.highlightVersion, set: (obj, value) => { obj.highlightVersion = value; } }, metadata: _metadata }, _highlightVersion_initializers, _highlightVersion_extraInitializers);
67
105
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
68
106
  DeesDataviewCodebox = _classThis = _classDescriptor.value;
69
107
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -73,236 +111,671 @@ let DeesDataviewCodebox = (() => {
73
111
  #progLang_accessor_storage = __runInitializers(this, _progLang_initializers, 'typescript');
74
112
  get progLang() { return this.#progLang_accessor_storage; }
75
113
  set progLang(value) { this.#progLang_accessor_storage = value; }
76
- #codeToDisplay_accessor_storage = (__runInitializers(this, _progLang_extraInitializers), __runInitializers(this, _codeToDisplay_initializers, ''));
114
+ #filename_accessor_storage = (__runInitializers(this, _progLang_extraInitializers), __runInitializers(this, _filename_initializers, ''));
115
+ /** Shown centered in the title bar; empty hides the title. */
116
+ get filename() { return this.#filename_accessor_storage; }
117
+ set filename(value) { this.#filename_accessor_storage = value; }
118
+ #codeToDisplay_accessor_storage = (__runInitializers(this, _filename_extraInitializers), __runInitializers(this, _codeToDisplay_initializers, ''));
77
119
  get codeToDisplay() { return this.#codeToDisplay_accessor_storage; }
78
120
  set codeToDisplay(value) { this.#codeToDisplay_accessor_storage = value; }
121
+ #codeBefore_accessor_storage = (__runInitializers(this, _codeToDisplay_extraInitializers), __runInitializers(this, _codeBefore_initializers, ''));
122
+ /**
123
+ * Diff mode inputs: set `codeBefore` (compared against `codeToDisplay` as
124
+ * the after state) OR a pre-computed `unifiedDiff` patch. Either activates
125
+ * diff rendering; `diffView` picks the layout and can force diff mode on
126
+ * its own (e.g. new-file diffs where `codeBefore` is empty).
127
+ */
128
+ get codeBefore() { return this.#codeBefore_accessor_storage; }
129
+ set codeBefore(value) { this.#codeBefore_accessor_storage = value; }
130
+ #unifiedDiff_accessor_storage = (__runInitializers(this, _codeBefore_extraInitializers), __runInitializers(this, _unifiedDiff_initializers, ''));
131
+ get unifiedDiff() { return this.#unifiedDiff_accessor_storage; }
132
+ set unifiedDiff(value) { this.#unifiedDiff_accessor_storage = value; }
133
+ #diffView_accessor_storage = (__runInitializers(this, _unifiedDiff_extraInitializers), __runInitializers(this, _diffView_initializers, ''));
134
+ /** '' = regular code view; 'inline' = unified rows; 'split' = side by side */
135
+ get diffView() { return this.#diffView_accessor_storage; }
136
+ set diffView(value) { this.#diffView_accessor_storage = value; }
137
+ #highlightedCode_accessor_storage = (__runInitializers(this, _diffView_extraInitializers), __runInitializers(this, _highlightedCode_initializers, ''));
138
+ get highlightedCode() { return this.#highlightedCode_accessor_storage; }
139
+ set highlightedCode(value) { this.#highlightedCode_accessor_storage = value; }
140
+ #copied_accessor_storage = (__runInitializers(this, _highlightedCode_extraInitializers), __runInitializers(this, _copied_initializers, false));
141
+ get copied() { return this.#copied_accessor_storage; }
142
+ set copied(value) { this.#copied_accessor_storage = value; }
143
+ #expandedFolds_accessor_storage = (__runInitializers(this, _copied_extraInitializers), __runInitializers(this, _expandedFolds_initializers, new Set()));
144
+ get expandedFolds() { return this.#expandedFolds_accessor_storage; }
145
+ set expandedFolds(value) { this.#expandedFolds_accessor_storage = value; }
146
+ #highlightVersion_accessor_storage = (__runInitializers(this, _expandedFolds_extraInitializers), __runInitializers(this, _highlightVersion_initializers, 0));
147
+ get highlightVersion() { return this.#highlightVersion_accessor_storage; }
148
+ set highlightVersion(value) { this.#highlightVersion_accessor_storage = value; }
79
149
  static styles = [
80
150
  themeDefaultStyles,
81
151
  cssManager.defaultStyles,
82
- ];
83
- constructor() {
84
- super();
85
- }
86
- render() {
87
- return html `
88
- ${domtools.elementBasic.styles}
89
- <style>
90
- :host {
91
- position: relative;
92
- display: block;
93
- text-align: left;
94
- font-size: 16px;
95
- /* syntax palette (dark defaults, gobright overrides below) */
96
- --codebox-syntax-green: #10b981;
97
- --codebox-syntax-purple: #a78bfa;
98
- --codebox-syntax-cyan: #06b6d4;
99
- --codebox-syntax-orange: #fb923c;
100
- font-family: ${cssGeistFontFamily};
101
- box-sizing: border-box;
102
- }
152
+ css `
153
+ :host {
154
+ position: relative;
155
+ display: block;
156
+ text-align: left;
157
+ font-family: var(--dees-font-family);
158
+ box-sizing: border-box;
159
+ }
103
160
 
104
- :host([gobright]) {
105
- --codebox-syntax-green: #059669;
106
- --codebox-syntax-purple: #8b5cf6;
107
- --codebox-syntax-cyan: #0891b2;
108
- --codebox-syntax-orange: #ea580c;
109
- }
110
- dees-tile {
111
- color: var(--dees-color-text-primary);
112
- }
161
+ dees-tile {
162
+ height: 100%;
163
+ color: var(--dees-color-text-primary);
164
+ }
113
165
 
114
- .appbar {
115
- color: var(--dees-color-text-muted);
116
- height: 32px;
117
- display: flex;
118
- font-size: 13px;
119
- line-height: 32px;
120
- justify-content: center;
121
- align-items: center;
122
- padding: 0 16px;
123
- }
166
+ /* --- Title bar --- */
167
+ .appbar {
168
+ height: var(--dees-control-height-sm);
169
+ display: grid;
170
+ grid-template-columns: 1fr auto 1fr;
171
+ align-items: center;
172
+ padding: 0 var(--dees-spacing-sm) 0 var(--dees-spacing-lg);
173
+ }
124
174
 
125
- .appbar .fileName {
126
- line-height: inherit;
127
- position: relative;
128
- flex: 1;
129
- text-align: center;
130
- }
175
+ .appbar .fileName {
176
+ grid-column: 2;
177
+ font-size: var(--dees-font-control-size-sm);
178
+ font-weight: 500;
179
+ letter-spacing: -0.01em;
180
+ color: var(--dees-color-text-secondary);
181
+ white-space: nowrap;
182
+ overflow: hidden;
183
+ text-overflow: ellipsis;
184
+ }
131
185
 
132
- .bottomBar {
133
- color: var(--dees-color-text-muted);
134
- height: 28px;
135
- font-size: 11px;
136
- line-height: 28px;
137
- display: flex;
138
- justify-content: flex-end;
139
- align-items: center;
140
- padding: 0 16px;
141
- width: 100%;
142
- box-sizing: border-box;
143
- }
186
+ .appbar .actions {
187
+ grid-column: 3;
188
+ display: flex;
189
+ justify-content: flex-end;
190
+ }
144
191
 
145
- .spacesLabel {
146
- padding: 0 16px;
147
- display: flex;
148
- align-items: center;
149
- }
192
+ .copyButton {
193
+ display: flex;
194
+ align-items: center;
195
+ justify-content: center;
196
+ width: 24px;
197
+ height: 24px;
198
+ border-radius: var(--dees-radius-sm);
199
+ color: var(--dees-color-text-muted);
200
+ cursor: pointer;
201
+ transition:
202
+ background-color var(--dees-transition-fast) var(--dees-ease-standard),
203
+ color var(--dees-transition-fast) var(--dees-ease-standard);
204
+ }
150
205
 
151
- .languageLabel {
152
- color: var(--dees-color-accent-primary);
153
- font-size: 12px;
154
- line-height: 28px;
155
- background: color-mix(in srgb, var(--dees-color-accent-primary) 10%, transparent);
156
- padding: 0px 16px;
157
- font-weight: 500;
158
- display: flex;
159
- align-items: center;
160
- }
206
+ .copyButton:hover {
207
+ background: var(--dees-color-hover);
208
+ color: var(--dees-color-text-secondary);
209
+ }
161
210
 
162
- .hljs-keyword {
163
- color: var(--dees-color-text-error);
164
- }
211
+ .copyButton:active {
212
+ background: var(--dees-color-active);
213
+ }
165
214
 
166
- .codegrid {
167
- display: grid;
168
- grid-template-columns: 50px auto;
169
- overflow: auto;
170
- }
215
+ .copyButton.copied {
216
+ color: var(--dees-color-text-success);
217
+ }
171
218
 
172
- .lineNumbers {
173
- color: var(--dees-color-text-muted);
174
- padding: 24px 16px 0px 0px;
175
- text-align: right;
176
- border-right: 1px solid var(--dees-color-border-default);
177
- }
219
+ /* --- Code area --- */
220
+ .codegrid {
221
+ display: grid;
222
+ grid-template-columns: auto minmax(0, 1fr);
223
+ }
178
224
 
179
- .lineCounter:last-child {
180
- opacity: 50%;
181
- }
225
+ .lineNumbers {
226
+ padding: var(--dees-spacing-lg) var(--dees-spacing-md) var(--dees-spacing-lg) var(--dees-spacing-lg);
227
+ text-align: right;
228
+ color: var(--dees-color-text-muted);
229
+ border-right: 1px solid var(--dees-color-border-subtle);
230
+ user-select: none;
231
+ min-width: 24px;
232
+ }
182
233
 
183
- pre {
184
- overflow-x: auto;
185
- margin: 0px;
186
- padding: 24px 24px;
187
- }
234
+ pre {
235
+ margin: 0;
236
+ padding: var(--dees-spacing-lg) var(--dees-spacing-xl);
237
+ overflow-x: auto;
238
+ scrollbar-width: thin;
239
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
240
+ }
188
241
 
189
- code {
190
- font-weight: 400;
191
- padding: 0px;
192
- margin: 0px;
193
- }
242
+ code {
243
+ padding: 0;
244
+ margin: 0;
245
+ color: var(--dees-color-text-primary);
246
+ }
194
247
 
195
- code,
196
- code *,
197
- .lineNumbers {
198
- line-height: 1.4em;
199
- font-weight: 200;
200
- font-family: ${cssMonoFontFamily};
201
- }
248
+ code,
249
+ code *,
250
+ .lineNumbers {
251
+ font-family: var(--dees-font-family-mono);
252
+ font-size: var(--dees-font-control-size-sm);
253
+ font-weight: 400;
254
+ line-height: 1.6;
255
+ }
202
256
 
203
- .hljs-string {
204
- color: var(--codebox-syntax-green);
205
- }
257
+ /* --- Bottom bar --- */
258
+ .bottomBar {
259
+ height: 28px;
260
+ display: flex;
261
+ align-items: center;
262
+ gap: var(--dees-spacing-sm);
263
+ padding: 0 var(--dees-spacing-md) 0 var(--dees-spacing-lg);
264
+ font-size: var(--dees-font-caption2-size);
265
+ color: var(--dees-color-text-muted);
266
+ box-sizing: border-box;
267
+ }
206
268
 
207
- .hljs-built_in {
208
- color: var(--codebox-syntax-purple);
209
- }
269
+ .lineCount {
270
+ margin-right: auto;
271
+ font-weight: 500;
272
+ }
210
273
 
211
- .hljs-function {
212
- color: var(--dees-color-link);
213
- }
274
+ .languageLabel {
275
+ font-size: var(--dees-font-caption2-size);
276
+ font-weight: 500;
277
+ color: var(--dees-color-accent-primary);
278
+ background: color-mix(in srgb, var(--dees-color-accent-primary) 12%, transparent);
279
+ padding: 2px 8px;
280
+ border-radius: var(--dees-radius-full);
281
+ }
214
282
 
215
- .hljs-params {
216
- color: var(--codebox-syntax-cyan);
217
- }
283
+ `,
284
+ /* Shared system syntax palette + highlight.js scope mapping */
285
+ syntaxPaletteStyles,
286
+ syntaxScopeStyles,
287
+ // --- Diff rendering ---
288
+ css `
289
+ :host {
290
+ --codebox-diff-add-bg: color-mix(in srgb, var(--dees-color-accent-success) 14%, transparent);
291
+ --codebox-diff-add-intra: color-mix(in srgb, var(--dees-color-accent-success) 34%, transparent);
292
+ --codebox-diff-remove-bg: color-mix(in srgb, var(--dees-color-accent-error) 13%, transparent);
293
+ --codebox-diff-remove-intra: color-mix(in srgb, var(--dees-color-accent-error) 32%, transparent);
294
+ }
218
295
 
219
- .hljs-comment {
220
- color: var(--dees-color-text-muted);
221
- }
296
+ .diffScroll {
297
+ overflow-x: auto;
298
+ scrollbar-width: thin;
299
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
300
+ padding: var(--dees-spacing-sm) 0;
301
+ }
222
302
 
223
- .hljs-number {
224
- color: var(--codebox-syntax-orange);
225
- }
303
+ .diffGrid {
304
+ display: grid;
305
+ min-width: max-content;
306
+ width: 100%;
307
+ }
226
308
 
227
- .hljs-literal {
228
- color: var(--dees-color-text-error);
229
- }
309
+ .diffGrid.inline {
310
+ grid-template-columns: minmax(3ch, auto) minmax(3ch, auto) 2ch minmax(0, 1fr);
311
+ }
230
312
 
231
- .hljs-attr {
232
- color: var(--codebox-syntax-purple);
233
- }
313
+ .diffGrid.split {
314
+ grid-template-columns: minmax(3ch, auto) 2ch minmax(24ch, 1fr) minmax(3ch, auto) 2ch minmax(24ch, 1fr);
315
+ }
234
316
 
235
- .hljs-variable {
236
- color: var(--dees-color-text-primary);
237
- }
238
- </style>
317
+ .diffGrid > div {
318
+ font-family: var(--dees-font-family-mono);
319
+ font-size: var(--dees-font-control-size-sm);
320
+ line-height: 1.6;
321
+ white-space: pre;
322
+ }
323
+
324
+ .diffNum {
325
+ padding: 0 var(--dees-spacing-sm);
326
+ text-align: right;
327
+ color: var(--dees-color-text-muted);
328
+ user-select: none;
329
+ }
330
+
331
+ .diffSign {
332
+ text-align: center;
333
+ user-select: none;
334
+ color: var(--dees-color-text-muted);
335
+ }
336
+
337
+ .diffText {
338
+ padding-right: var(--dees-spacing-lg);
339
+ }
340
+
341
+ .diffGrid .row-add {
342
+ background: var(--codebox-diff-add-bg);
343
+ }
344
+
345
+ .diffGrid .row-add.diffSign {
346
+ color: var(--dees-color-accent-success);
347
+ font-weight: 600;
348
+ }
349
+
350
+ .diffGrid .row-remove {
351
+ background: var(--codebox-diff-remove-bg);
352
+ }
353
+
354
+ .diffGrid .row-remove.diffSign {
355
+ color: var(--dees-color-accent-error);
356
+ font-weight: 600;
357
+ }
358
+
359
+ .diffGrid .row-filler {
360
+ background: color-mix(in srgb, var(--dees-color-text-muted) 5%, transparent);
361
+ }
362
+
363
+ .intra-add {
364
+ background: var(--codebox-diff-add-intra);
365
+ border-radius: 2px;
366
+ }
367
+
368
+ .intra-remove {
369
+ background: var(--codebox-diff-remove-intra);
370
+ border-radius: 2px;
371
+ }
372
+
373
+ .diffHunk {
374
+ grid-column: 1 / -1;
375
+ padding: 2px var(--dees-spacing-lg);
376
+ background: var(--dees-color-bg-tertiary);
377
+ color: var(--dees-color-text-secondary);
378
+ font-size: var(--dees-font-caption2-size);
379
+ user-select: none;
380
+ }
381
+
382
+ .diffFold {
383
+ grid-column: 1 / -1;
384
+ display: flex;
385
+ align-items: center;
386
+ gap: var(--dees-spacing-sm);
387
+ padding: 2px var(--dees-spacing-lg);
388
+ border: 0;
389
+ background: color-mix(in srgb, var(--dees-color-accent-primary) 7%, transparent);
390
+ color: var(--dees-color-link);
391
+ cursor: pointer;
392
+ font-family: var(--dees-font-family-mono);
393
+ font-size: var(--dees-font-caption1-size, 11px);
394
+ text-align: left;
395
+ }
396
+
397
+ .diffFold:hover {
398
+ background: color-mix(in srgb, var(--dees-color-accent-primary) 13%, transparent);
399
+ color: var(--dees-color-link-hover);
400
+ }
401
+
402
+ .diffSplitSep {
403
+ border-left: 1px solid var(--dees-color-border-subtle);
404
+ }
405
+
406
+ .diffStat {
407
+ font-weight: 600;
408
+ }
409
+
410
+ .diffStat.added {
411
+ color: var(--dees-color-accent-success);
412
+ }
413
+
414
+ .diffStat.removed {
415
+ color: var(--dees-color-accent-error);
416
+ }
417
+ `,
418
+ ];
419
+ render() {
420
+ const contextMenuOptions = [
421
+ {
422
+ name: 'Copy Code',
423
+ iconName: 'lucide:Copy',
424
+ action: async () => {
425
+ await this.copyCode();
426
+ },
427
+ },
428
+ ...(this.isDiffActive
429
+ ? [{
430
+ name: 'Copy Unified Diff',
431
+ iconName: 'lucide:GitCompareArrows',
432
+ action: async () => {
433
+ await this.copyUnifiedDiff();
434
+ },
435
+ }]
436
+ : []),
437
+ ];
438
+ return html `
239
439
  <dees-tile
240
440
  @contextmenu="${(eventArg) => {
241
- DeesContextmenu.openContextMenuWithOptions(eventArg, [
242
- {
243
- name: 'About',
244
- iconName: 'circleInfo',
245
- action: async () => {
246
- return null;
247
- },
248
- },
249
- ]);
441
+ DeesContextmenu.openContextMenuWithOptions(eventArg, contextMenuOptions);
250
442
  }}"
251
443
  >
252
444
  <div slot="header" class="appbar">
253
- <div class="fileName">index.ts</div>
254
- </div>
255
- <div class="codegrid">
256
- <div class="lineNumbers">
257
- ${(() => {
258
- let lineCounter = 0;
259
- return this.codeToDisplay.split('\n').map((lineArg) => {
260
- lineCounter++;
261
- return html `<div class="lineCounter">${lineCounter}</div>`;
262
- });
263
- })()}
445
+ <div class="fileName">${this.filename}</div>
446
+ <div class="actions">
447
+ <div
448
+ class="copyButton ${this.copied ? 'copied' : ''}"
449
+ title="Copy code"
450
+ @click=${this.copyCode}
451
+ >
452
+ <dees-icon .icon=${this.copied ? 'lucide:Check' : 'lucide:Copy'} iconSize="14"></dees-icon>
453
+ </div>
264
454
  </div>
265
- <pre><code></code></pre>
266
455
  </div>
456
+ ${this.isDiffActive ? this.renderDiff() : this.renderCode()}
267
457
  <div slot="footer" class="bottomBar">
268
- <div class="spacesLabel">Spaces: 2</div>
458
+ ${this.isDiffActive ? this.renderDiffFooter() : this.renderCodeFooter()}
269
459
  <div class="languageLabel">${this.progLang}</div>
270
460
  </div>
271
461
  </dees-tile>
272
462
  `;
273
463
  }
274
- codeToDisplayStore = (__runInitializers(this, _codeToDisplay_extraInitializers), '');
464
+ renderCode() {
465
+ const codeLines = this.processedCode ? this.processedCode.split('\n') : [];
466
+ return html `
467
+ <div class="codegrid">
468
+ <div class="lineNumbers">
469
+ ${codeLines.map((_, index) => html `<div class="lineCounter">${index + 1}</div>`)}
470
+ </div>
471
+ <pre><code>${this.highlightedCode
472
+ ? unsafeHTML(this.highlightedCode)
473
+ : this.processedCode}</code></pre>
474
+ </div>
475
+ `;
476
+ }
477
+ renderCodeFooter() {
478
+ const codeLines = this.processedCode ? this.processedCode.split('\n') : [];
479
+ return html `<div class="lineCount">${codeLines.length} ${codeLines.length === 1 ? 'line' : 'lines'}</div>`;
480
+ }
481
+ renderDiffFooter() {
482
+ const stats = diffStats(this.diffRows);
483
+ return html `
484
+ <div class="lineCount">
485
+ <span class="diffStat added">+${stats.added}</span>
486
+ <span class="diffStat removed">−${stats.removed}</span>
487
+ </div>
488
+ `;
489
+ }
490
+ renderDiff() {
491
+ const displayRows = this.displayRowsWithFolds();
492
+ return html `
493
+ <div class="diffScroll">
494
+ ${this.effectiveDiffView === 'split'
495
+ ? this.renderSplitGrid(displayRows)
496
+ : this.renderInlineGrid(displayRows)}
497
+ </div>
498
+ `;
499
+ }
500
+ renderInlineGrid(displayRows) {
501
+ return html `
502
+ <div class="diffGrid inline">
503
+ ${displayRows.map((displayRow) => {
504
+ if (displayRow.kind === 'fold') {
505
+ return this.renderFoldRow(displayRow.rows.length, displayRow.ordinal ?? 0);
506
+ }
507
+ if (displayRow.kind === 'hunk') {
508
+ return html `<div class="diffHunk">${displayRow.text}</div>`;
509
+ }
510
+ const rowClass = displayRow.kind === 'add' ? 'row-add' : displayRow.kind === 'remove' ? 'row-remove' : '';
511
+ return html `
512
+ <div class="diffNum ${rowClass}">${displayRow.oldLine ?? ''}</div>
513
+ <div class="diffNum ${rowClass}">${displayRow.newLine ?? ''}</div>
514
+ <div class="diffSign ${rowClass}">${displayRow.kind === 'add' ? '+' : displayRow.kind === 'remove' ? '−' : ''}</div>
515
+ <div class="diffText ${rowClass}">${this.renderDiffLine(displayRow.text, displayRow.segments, displayRow.kind)}</div>
516
+ `;
517
+ })}
518
+ </div>
519
+ `;
520
+ }
521
+ renderSplitGrid(displayRows) {
522
+ // pair each contiguous non-fold run; folds render as full-width rows
523
+ const rendered = [];
524
+ let run = [];
525
+ const flushRun = () => {
526
+ for (const splitRow of buildSplitRows(run)) {
527
+ if (splitRow.kind === 'hunk') {
528
+ rendered.push(html `<div class="diffHunk">${splitRow.text}</div>`);
529
+ }
530
+ else {
531
+ rendered.push(html `
532
+ ${this.renderSplitCell(splitRow.left, 'left')}
533
+ ${this.renderSplitCell(splitRow.right, 'right')}
534
+ `);
535
+ }
536
+ }
537
+ run = [];
538
+ };
539
+ for (const displayRow of displayRows) {
540
+ if (displayRow.kind === 'fold') {
541
+ flushRun();
542
+ rendered.push(this.renderFoldRow(displayRow.rows.length, displayRow.ordinal ?? 0));
543
+ }
544
+ else {
545
+ run.push(displayRow);
546
+ }
547
+ }
548
+ flushRun();
549
+ return html `<div class="diffGrid split">${rendered}</div>`;
550
+ }
551
+ renderSplitCell(cell, side) {
552
+ const separatorClass = side === 'right' ? 'diffSplitSep' : '';
553
+ if (!cell) {
554
+ return html `
555
+ <div class="diffNum row-filler ${separatorClass}"></div>
556
+ <div class="diffSign row-filler"></div>
557
+ <div class="diffText row-filler"></div>
558
+ `;
559
+ }
560
+ const rowClass = cell.kind === 'add' ? 'row-add' : cell.kind === 'remove' ? 'row-remove' : '';
561
+ return html `
562
+ <div class="diffNum ${rowClass} ${separatorClass}">${cell.line || ''}</div>
563
+ <div class="diffSign ${rowClass}">${cell.kind === 'add' ? '+' : cell.kind === 'remove' ? '−' : ''}</div>
564
+ <div class="diffText ${rowClass}">${this.renderDiffLine(cell.text, cell.segments, cell.kind)}</div>
565
+ `;
566
+ }
567
+ renderFoldRow(hiddenCount, foldOrdinal) {
568
+ return html `
569
+ <button
570
+ class="diffFold"
571
+ type="button"
572
+ @click=${() => {
573
+ const expanded = new Set(this.expandedFolds);
574
+ expanded.add(foldOrdinal);
575
+ this.expandedFolds = expanded;
576
+ }}
577
+ >
578
+ <dees-icon icon="lucide:UnfoldVertical" iconSize="12"></dees-icon>
579
+ ${hiddenCount} unchanged ${hiddenCount === 1 ? 'line' : 'lines'}
580
+ </button>
581
+ `;
582
+ }
583
+ renderDiffLine(text, segments, kind) {
584
+ if (segments?.length) {
585
+ const intraClass = kind === 'add' ? 'intra-add' : 'intra-remove';
586
+ return html `${segments.map((segment) => segment.changed ? html `<span class=${intraClass}>${segment.text}</span>` : segment.text)}`;
587
+ }
588
+ const highlighted = this.diffHighlightCache.get(text);
589
+ return highlighted ? html `${unsafeHTML(highlighted)}` : html `${text || ' '}`;
590
+ }
591
+ processedCode = (__runInitializers(this, _highlightVersion_extraInitializers), '');
275
592
  highlightJs = null;
276
- async updated(_changedProperties) {
277
- super.updated(_changedProperties);
278
- console.log('highlighting now');
279
- console.log(this.childNodes);
280
- const slottedCodeNodes = [];
281
- this.childNodes.forEach((childNode) => {
282
- if (childNode.nodeName === '#text') {
283
- slottedCodeNodes.push(childNode);
593
+ highlightToken = 0;
594
+ copiedResetTimeout = null;
595
+ diffRows = [];
596
+ diffHighlightCache = new Map();
597
+ /** Diff mode is active when a diff input or an explicit diffView is set. */
598
+ get isDiffActive() {
599
+ return Boolean(this.unifiedDiff || this.codeBefore || this.diffView);
600
+ }
601
+ get effectiveDiffView() {
602
+ return this.diffView === 'split' ? 'split' : 'inline';
603
+ }
604
+ willUpdate(changedProperties) {
605
+ super.willUpdate(changedProperties);
606
+ if (changedProperties.has('codeToDisplay')) {
607
+ this.processedCode = this.codeToDisplay
608
+ ? smartstring.indent.normalize(this.codeToDisplay).trim()
609
+ : '';
610
+ // drop the stale highlight so the new code renders plain until re-highlighted
611
+ this.highlightedCode = '';
612
+ }
613
+ if (changedProperties.has('codeToDisplay')
614
+ || changedProperties.has('codeBefore')
615
+ || changedProperties.has('unifiedDiff')
616
+ || changedProperties.has('diffView')) {
617
+ if (this.isDiffActive) {
618
+ this.diffRows = this.unifiedDiff
619
+ ? parseUnifiedDiff(this.unifiedDiff)
620
+ : computeLineDiff(this.codeBefore, this.codeToDisplay);
284
621
  }
285
- });
286
- if (this.codeToDisplay && this.codeToDisplay !== this.codeToDisplayStore) {
287
- this.codeToDisplayStore = smartstring.indent.normalize(this.codeToDisplay).trimStart();
622
+ else {
623
+ this.diffRows = [];
624
+ }
625
+ this.diffHighlightCache.clear();
626
+ this.expandedFolds = new Set();
288
627
  }
289
- if (slottedCodeNodes[0] && slottedCodeNodes[0].wholeText && !this.codeToDisplay) {
290
- this.codeToDisplayStore = smartstring.indent
291
- .normalize(slottedCodeNodes[0].wholeText)
292
- .trimStart();
293
- this.codeToDisplay = this.codeToDisplayStore;
628
+ // language switch invalidates cached per-line highlights
629
+ if (changedProperties.has('progLang')) {
630
+ this.diffHighlightCache.clear();
294
631
  }
295
- await domtools.plugins.smartdelay.delayFor(0);
296
- // Load highlight.js from CDN if not already loaded
632
+ }
633
+ displayRowsWithFolds() {
634
+ const folded = foldContextRows(this.diffRows);
635
+ const result = [];
636
+ let foldOrdinal = 0;
637
+ for (const row of folded) {
638
+ if (row.kind === 'fold') {
639
+ if (this.expandedFolds.has(foldOrdinal)) {
640
+ result.push(...row.rows);
641
+ }
642
+ else {
643
+ result.push({ ...row, ordinal: foldOrdinal });
644
+ }
645
+ foldOrdinal++;
646
+ }
647
+ else {
648
+ result.push(row);
649
+ }
650
+ }
651
+ return result;
652
+ }
653
+ async updated(changedProperties) {
654
+ super.updated(changedProperties);
655
+ // adopt slotted text content as code source once (regular mode only)
656
+ if (!this.codeToDisplay && !this.isDiffActive) {
657
+ const slottedText = Array.from(this.childNodes).find((childNode) => childNode.nodeName === '#text' && childNode.wholeText.trim());
658
+ if (slottedText) {
659
+ this.codeToDisplay = slottedText.wholeText;
660
+ return;
661
+ }
662
+ }
663
+ if (this.isDiffActive) {
664
+ if (changedProperties.has('codeToDisplay')
665
+ || changedProperties.has('codeBefore')
666
+ || changedProperties.has('unifiedDiff')
667
+ || changedProperties.has('diffView')
668
+ || changedProperties.has('expandedFolds')
669
+ || changedProperties.has('progLang')) {
670
+ await this.highlightDiffLines();
671
+ }
672
+ return;
673
+ }
674
+ if (changedProperties.has('codeToDisplay') || changedProperties.has('progLang')) {
675
+ await this.highlightCode();
676
+ }
677
+ }
678
+ /**
679
+ * Highlights visible diff lines per-line (full-text highlighting cannot be
680
+ * split across rows because hljs spans may cross line boundaries). Results
681
+ * are cached by line text; intraline-segmented rows skip highlighting —
682
+ * their change tint carries the information.
683
+ */
684
+ async highlightDiffLines() {
685
+ const token = ++this.highlightToken;
297
686
  if (!this.highlightJs) {
298
687
  this.highlightJs = await DeesServiceLibLoader.getInstance().loadHighlightJs();
299
688
  }
300
- const localCodeNode = this.shadowRoot.querySelector('code');
301
- const highlightedHtml = this.highlightJs.highlight(this.codeToDisplayStore, {
302
- language: this.progLang,
303
- ignoreIllegals: true,
689
+ if (token !== this.highlightToken)
690
+ return;
691
+ const pendingLines = new Set();
692
+ for (const displayRow of this.displayRowsWithFolds()) {
693
+ if (displayRow.kind === 'fold' || displayRow.kind === 'hunk')
694
+ continue;
695
+ if (displayRow.segments?.length)
696
+ continue;
697
+ if (displayRow.text && !this.diffHighlightCache.has(displayRow.text)) {
698
+ pendingLines.add(displayRow.text);
699
+ }
700
+ }
701
+ if (!pendingLines.size)
702
+ return;
703
+ for (const line of pendingLines) {
704
+ try {
705
+ this.diffHighlightCache.set(line, this.highlightJs.highlight(line, { language: this.progLang, ignoreIllegals: true }).value);
706
+ }
707
+ catch {
708
+ this.diffHighlightCache.set(line, '');
709
+ }
710
+ }
711
+ if (token === this.highlightToken) {
712
+ this.highlightVersion++;
713
+ }
714
+ }
715
+ async highlightCode() {
716
+ if (!this.processedCode) {
717
+ return;
718
+ }
719
+ const token = ++this.highlightToken;
720
+ if (!this.highlightJs) {
721
+ this.highlightJs = await DeesServiceLibLoader.getInstance().loadHighlightJs();
722
+ }
723
+ if (token !== this.highlightToken) {
724
+ return;
725
+ }
726
+ try {
727
+ this.highlightedCode = this.highlightJs.highlight(this.processedCode, {
728
+ language: this.progLang,
729
+ ignoreIllegals: true,
730
+ }).value;
731
+ }
732
+ catch (error) {
733
+ // unknown language — keep the plain-text rendering
734
+ console.warn(`dees-dataview-codebox: could not highlight as '${this.progLang}'`, error);
735
+ }
736
+ }
737
+ copyCode = async () => {
738
+ // in diff mode the copy button yields the after-state text
739
+ const textToCopy = this.isDiffActive
740
+ ? this.diffRows
741
+ .filter((row) => row.kind === 'context' || row.kind === 'add')
742
+ .map((row) => row.text)
743
+ .join('\n')
744
+ : this.processedCode;
745
+ try {
746
+ await navigator.clipboard.writeText(textToCopy);
747
+ }
748
+ catch (error) {
749
+ console.error('dees-dataview-codebox: copy failed', error);
750
+ return;
751
+ }
752
+ this.copied = true;
753
+ if (this.copiedResetTimeout) {
754
+ clearTimeout(this.copiedResetTimeout);
755
+ }
756
+ this.copiedResetTimeout = setTimeout(() => {
757
+ this.copied = false;
758
+ this.copiedResetTimeout = null;
759
+ }, 1500);
760
+ };
761
+ copyUnifiedDiff = async () => {
762
+ const patch = this.unifiedDiff || toUnifiedDiff(this.diffRows, {
763
+ fileNameBefore: this.filename ? `a/${this.filename}` : undefined,
764
+ fileNameAfter: this.filename ? `b/${this.filename}` : undefined,
304
765
  });
305
- localCodeNode.innerHTML = highlightedHtml.value;
766
+ try {
767
+ await navigator.clipboard.writeText(patch);
768
+ }
769
+ catch (error) {
770
+ console.error('dees-dataview-codebox: copy unified diff failed', error);
771
+ }
772
+ };
773
+ async disconnectedCallback() {
774
+ if (this.copiedResetTimeout) {
775
+ clearTimeout(this.copiedResetTimeout);
776
+ this.copiedResetTimeout = null;
777
+ }
778
+ await super.disconnectedCallback();
306
779
  }
307
780
  static {
308
781
  __runInitializers(_classThis, _classExtraInitializers);
@@ -311,4 +784,4 @@ let DeesDataviewCodebox = (() => {
311
784
  return DeesDataviewCodebox = _classThis;
312
785
  })();
313
786
  export { DeesDataviewCodebox };
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1kYXRhdmlldy1jb2RlYm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtZGF0YXZpZXcvZGVlcy1kYXRhdmlldy1jb2RlYm94L2RlZXMtZGF0YXZpZXctY29kZWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLEdBQUcsRUFDSCxhQUFhLEVBRWIsUUFBUSxFQUNSLEtBQUssRUFDTCxVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUl0RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sS0FBSyxRQUFRLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sNkNBQTZDLENBQUM7SUFTeEMsbUJBQW1COzRCQUQvQixhQUFhLENBQUMsdUJBQXVCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7OzttQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUlqRCxRQUFRLEVBQUU7eUNBR1YsUUFBUSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO29CQUNaLE9BQU8sRUFBRSxJQUFJO2lCQUNkLENBQUM7WUFMRiw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQXdCO1lBTXpDLDRMQUFTLGFBQWEsNkJBQWIsYUFBYSxxR0FBYztZQVh0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
787
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1kYXRhdmlldy1jb2RlYm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtZGF0YXZpZXcvZGVlcy1kYXRhdmlldy1jb2RlYm94L2RlZXMtZGF0YXZpZXctY29kZWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLEdBQUcsRUFDSCxhQUFhLEVBRWIsUUFBUSxFQUNSLEtBQUssRUFDTCxVQUFVLEVBQ1YsVUFBVSxHQUNYLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJM0UsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDN0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFNBQVMsRUFDVCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGFBQWEsR0FLZCxNQUFNLG1CQUFtQixDQUFDO0lBU2QsbUJBQW1COzRCQUQvQixhQUFhLENBQUMsdUJBQXVCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUlqRCxRQUFRLEVBQUU7b0NBSVYsUUFBUSxFQUFFO3lDQUdWLFFBQVEs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