@design.estate/dees-catalog 3.90.1 → 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 (231) hide show
  1. package/dist_bundle/bundle.js +10399 -4790
  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 +7 -1
  7. package/dist_ts_web/elements/00group-button/dees-button/dees-button.demo.js +16 -2
  8. package/dist_ts_web/elements/00group-button/dees-button/dees-button.js +65 -25
  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-form/dees-form-submit/dees-form-submit.d.ts +1 -1
  25. package/dist_ts_web/elements/00group-form/dees-form-submit/dees-form-submit.js +1 -1
  26. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +55 -0
  27. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.d.ts +1 -0
  28. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +183 -0
  29. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +412 -0
  30. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.d.ts +1 -0
  31. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.js +2 -0
  32. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts +65 -0
  33. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.d.ts +1 -0
  34. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.js +55 -0
  35. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.js +589 -0
  36. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.d.ts +1 -0
  37. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.js +2 -0
  38. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.d.ts +21 -0
  39. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.d.ts +1 -0
  40. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.js +41 -0
  41. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.js +215 -0
  42. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.d.ts +1 -0
  43. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.js +2 -0
  44. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +58 -0
  45. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.d.ts +1 -0
  46. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.js +126 -0
  47. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +551 -0
  48. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.d.ts +1 -0
  49. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.js +2 -0
  50. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +50 -0
  51. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.d.ts +1 -0
  52. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.js +101 -0
  53. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +424 -0
  54. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.d.ts +1 -0
  55. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.js +2 -0
  56. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.d.ts +27 -0
  57. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.d.ts +1 -0
  58. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.js +46 -0
  59. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.js +282 -0
  60. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.d.ts +1 -0
  61. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.js +2 -0
  62. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts +24 -0
  63. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.d.ts +1 -0
  64. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.js +32 -0
  65. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +241 -0
  66. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.d.ts +1 -0
  67. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.js +2 -0
  68. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +28 -0
  69. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.d.ts +1 -0
  70. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +56 -0
  71. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +279 -0
  72. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.d.ts +1 -0
  73. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.js +2 -0
  74. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.d.ts +30 -0
  75. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.d.ts +1 -0
  76. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.js +35 -0
  77. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.js +235 -0
  78. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.d.ts +1 -0
  79. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.js +2 -0
  80. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.d.ts +27 -0
  81. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.d.ts +1 -0
  82. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.js +41 -0
  83. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.js +258 -0
  84. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.d.ts +1 -0
  85. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.js +2 -0
  86. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +35 -0
  87. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.d.ts +1 -0
  88. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.js +162 -0
  89. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +368 -0
  90. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.d.ts +2 -0
  91. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.js +3 -0
  92. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.d.ts +5 -0
  93. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.js +183 -0
  94. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.d.ts +19 -0
  95. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.d.ts +1 -0
  96. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.js +25 -0
  97. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.js +148 -0
  98. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.d.ts +1 -0
  99. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.js +2 -0
  100. package/dist_ts_web/elements/00group-harness/harness.demodata.d.ts +22 -0
  101. package/dist_ts_web/elements/00group-harness/harness.demodata.js +94 -0
  102. package/dist_ts_web/elements/00group-harness/harness.helpers.d.ts +37 -0
  103. package/dist_ts_web/elements/00group-harness/harness.helpers.js +221 -0
  104. package/dist_ts_web/elements/00group-harness/harness.markdown.d.ts +25 -0
  105. package/dist_ts_web/elements/00group-harness/harness.markdown.js +147 -0
  106. package/dist_ts_web/elements/00group-harness/harness.styles.d.ts +9 -0
  107. package/dist_ts_web/elements/00group-harness/harness.styles.js +94 -0
  108. package/dist_ts_web/elements/00group-harness/index.d.ts +18 -0
  109. package/dist_ts_web/elements/00group-harness/index.js +22 -0
  110. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +210 -0
  111. package/dist_ts_web/elements/00group-harness/interfaces.js +11 -0
  112. package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +76 -0
  113. package/dist_ts_web/elements/00group-harness/toolregistry.js +210 -0
  114. package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.js +30 -18
  115. package/dist_ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.js +73 -46
  116. package/dist_ts_web/elements/00group-input/dees-input-datepicker/styles.js +15 -16
  117. package/dist_ts_web/elements/00group-input/dees-input-list/dees-input-list.js +2 -4
  118. package/dist_ts_web/elements/00group-input/dees-input-tags/dees-input-tags.js +36 -15
  119. package/dist_ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.js +5 -4
  120. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.js +10 -89
  121. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js +12 -8
  122. package/dist_ts_web/elements/00group-layout/dees-chips/dees-chips.js +1 -1
  123. package/dist_ts_web/elements/00group-layout/dees-pagination/dees-pagination.js +27 -12
  124. package/dist_ts_web/elements/00group-layout/dees-settings/dees-settings.js +1 -1
  125. package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.js +14 -18
  126. package/dist_ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js +6 -7
  127. package/dist_ts_web/elements/00group-overlay/dees-modal/dees-modal.js +6 -21
  128. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.d.ts +2 -1
  129. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.js +10 -4
  130. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.js +1 -1
  131. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +9 -8
  132. package/dist_ts_web/elements/00group-workspace/dees-workspace/dees-workspace.js +1 -1
  133. package/dist_ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.js +3 -4
  134. package/dist_ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.js +8 -78
  135. package/dist_ts_web/elements/00syntax.d.ts +28 -0
  136. package/dist_ts_web/elements/00syntax.js +98 -0
  137. package/dist_ts_web/elements/00theme.js +26 -14
  138. package/dist_ts_web/elements/index.d.ts +1 -0
  139. package/dist_ts_web/elements/index.js +2 -1
  140. package/dist_watch/bundle.js +233948 -0
  141. package/dist_watch/bundle.js.map +7 -0
  142. package/dist_watch/index.html +28 -0
  143. package/package.json +2 -2
  144. package/readme.hints.md +7 -1
  145. package/readme.md +116 -9
  146. package/readme.playbook.md +10 -0
  147. package/ts_web/00_commitinfo_data.ts +1 -1
  148. package/ts_web/elements/00group-appui/dees-appui/dees-appui.ts +4 -3
  149. package/ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.ts +5 -6
  150. package/ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.ts +3 -5
  151. package/ts_web/elements/00group-button/dees-button/dees-button.demo.ts +15 -1
  152. package/ts_web/elements/00group-button/dees-button/dees-button.ts +59 -24
  153. package/ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.ts +1 -1
  154. package/ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.ts +401 -0
  155. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.ts +132 -38
  156. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.ts +649 -187
  157. package/ts_web/elements/00group-dataview/dees-dataview-codebox/index.ts +1 -0
  158. package/ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.ts +45 -30
  159. package/ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.ts +1 -1
  160. package/ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.ts +0 -1
  161. package/ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.ts +1 -1
  162. package/ts_web/elements/00group-dataview/dees-table/styles.ts +1 -1
  163. package/ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.ts +9 -9
  164. package/ts_web/elements/00group-form/dees-form-submit/dees-form-submit.ts +1 -1
  165. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +193 -0
  166. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +301 -0
  167. package/ts_web/elements/00group-harness/dees-harness-chat/index.ts +1 -0
  168. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.ts +56 -0
  169. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.ts +514 -0
  170. package/ts_web/elements/00group-harness/dees-harness-composer/index.ts +1 -0
  171. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.ts +44 -0
  172. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.ts +172 -0
  173. package/ts_web/elements/00group-harness/dees-harness-content-blocks/index.ts +1 -0
  174. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.ts +129 -0
  175. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +498 -0
  176. package/ts_web/elements/00group-harness/dees-harness-message/index.ts +1 -0
  177. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.ts +105 -0
  178. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +342 -0
  179. package/ts_web/elements/00group-harness/dees-harness-message-list/index.ts +1 -0
  180. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.ts +47 -0
  181. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.ts +225 -0
  182. package/ts_web/elements/00group-harness/dees-harness-permission-card/index.ts +1 -0
  183. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.ts +32 -0
  184. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +195 -0
  185. package/ts_web/elements/00group-harness/dees-harness-reasoning/index.ts +1 -0
  186. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +59 -0
  187. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +222 -0
  188. package/ts_web/elements/00group-harness/dees-harness-session-list/index.ts +1 -0
  189. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.ts +35 -0
  190. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.ts +187 -0
  191. package/ts_web/elements/00group-harness/dees-harness-status/index.ts +1 -0
  192. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.ts +43 -0
  193. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.ts +206 -0
  194. package/ts_web/elements/00group-harness/dees-harness-todos/index.ts +1 -0
  195. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.ts +166 -0
  196. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +315 -0
  197. package/ts_web/elements/00group-harness/dees-harness-tool-card/index.ts +2 -0
  198. package/ts_web/elements/00group-harness/dees-harness-tool-card/renderers.ts +205 -0
  199. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.ts +25 -0
  200. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.ts +96 -0
  201. package/ts_web/elements/00group-harness/dees-harness-usage/index.ts +1 -0
  202. package/ts_web/elements/00group-harness/harness.demodata.ts +113 -0
  203. package/ts_web/elements/00group-harness/harness.helpers.ts +227 -0
  204. package/ts_web/elements/00group-harness/harness.markdown.ts +151 -0
  205. package/ts_web/elements/00group-harness/harness.styles.ts +96 -0
  206. package/ts_web/elements/00group-harness/index.ts +22 -0
  207. package/ts_web/elements/00group-harness/interfaces.ts +203 -0
  208. package/ts_web/elements/00group-harness/toolregistry.ts +264 -0
  209. package/ts_web/elements/00group-input/dees-input-code/dees-input-code.ts +29 -17
  210. package/ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.ts +72 -45
  211. package/ts_web/elements/00group-input/dees-input-datepicker/styles.ts +14 -15
  212. package/ts_web/elements/00group-input/dees-input-list/dees-input-list.ts +1 -3
  213. package/ts_web/elements/00group-input/dees-input-tags/dees-input-tags.ts +35 -14
  214. package/ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.ts +4 -3
  215. package/ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.ts +9 -88
  216. package/ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.ts +11 -7
  217. package/ts_web/elements/00group-layout/dees-chips/dees-chips.ts +1 -1
  218. package/ts_web/elements/00group-layout/dees-pagination/dees-pagination.ts +26 -11
  219. package/ts_web/elements/00group-layout/dees-settings/dees-settings.ts +1 -1
  220. package/ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts +13 -17
  221. package/ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.ts +5 -6
  222. package/ts_web/elements/00group-overlay/dees-modal/dees-modal.ts +5 -20
  223. package/ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.ts +10 -3
  224. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.ts +1 -1
  225. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +8 -7
  226. package/ts_web/elements/00group-workspace/dees-workspace/dees-workspace.ts +1 -1
  227. package/ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.ts +2 -3
  228. package/ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.ts +7 -77
  229. package/ts_web/elements/00syntax.ts +124 -0
  230. package/ts_web/elements/00theme.ts +25 -13
  231. package/ts_web/elements/index.ts +1 -0
@@ -0,0 +1,342 @@
1
+ /**
2
+ * Dependency-free line diffing for dees-dataview-codebox: LCS-based
3
+ * before/after comparison, unified-patch parsing, context folding, split
4
+ * pairing, and intraline (word-level) change detection. Pure data — no DOM.
5
+ */
6
+ const splitLines = (text) => {
7
+ if (!text)
8
+ return [];
9
+ const lines = text.split('\n');
10
+ if (lines.length && lines[lines.length - 1] === '')
11
+ lines.pop();
12
+ return lines;
13
+ };
14
+ /** Cells beyond this budget fall back to a trimmed block-replace diff. */
15
+ const maxLcsCells = 4_000_000;
16
+ /**
17
+ * Line-level diff of two texts. Common prefix/suffix are trimmed first so
18
+ * the O(n*m) LCS table only covers the changed middle; oversized middles
19
+ * degrade gracefully to one remove-block + add-block.
20
+ */
21
+ export const computeLineDiff = (beforeText, afterText) => {
22
+ const beforeLines = splitLines(beforeText);
23
+ const afterLines = splitLines(afterText);
24
+ let prefixLength = 0;
25
+ while (prefixLength < beforeLines.length
26
+ && prefixLength < afterLines.length
27
+ && beforeLines[prefixLength] === afterLines[prefixLength]) {
28
+ prefixLength++;
29
+ }
30
+ let suffixLength = 0;
31
+ while (suffixLength < beforeLines.length - prefixLength
32
+ && suffixLength < afterLines.length - prefixLength
33
+ && beforeLines[beforeLines.length - 1 - suffixLength] === afterLines[afterLines.length - 1 - suffixLength]) {
34
+ suffixLength++;
35
+ }
36
+ const beforeMiddle = beforeLines.slice(prefixLength, beforeLines.length - suffixLength);
37
+ const afterMiddle = afterLines.slice(prefixLength, afterLines.length - suffixLength);
38
+ const rows = [];
39
+ for (let index = 0; index < prefixLength; index++) {
40
+ rows.push({ kind: 'context', text: beforeLines[index], oldLine: index + 1, newLine: index + 1 });
41
+ }
42
+ let oldLine = prefixLength + 1;
43
+ let newLine = prefixLength + 1;
44
+ const pushMiddle = (operations) => {
45
+ for (const operation of operations) {
46
+ if (operation.kind === 'context') {
47
+ rows.push({ kind: 'context', text: operation.text, oldLine: oldLine++, newLine: newLine++ });
48
+ }
49
+ else if (operation.kind === 'remove') {
50
+ rows.push({ kind: 'remove', text: operation.text, oldLine: oldLine++ });
51
+ }
52
+ else {
53
+ rows.push({ kind: 'add', text: operation.text, newLine: newLine++ });
54
+ }
55
+ }
56
+ };
57
+ if (beforeMiddle.length * afterMiddle.length > maxLcsCells) {
58
+ pushMiddle([
59
+ ...beforeMiddle.map((text) => ({ kind: 'remove', text })),
60
+ ...afterMiddle.map((text) => ({ kind: 'add', text })),
61
+ ]);
62
+ }
63
+ else if (beforeMiddle.length || afterMiddle.length) {
64
+ // classic LCS table over the trimmed middle
65
+ const rowCount = beforeMiddle.length;
66
+ const columnCount = afterMiddle.length;
67
+ const table = new Uint32Array((rowCount + 1) * (columnCount + 1));
68
+ const cell = (row, column) => table[row * (columnCount + 1) + column];
69
+ for (let row = rowCount - 1; row >= 0; row--) {
70
+ for (let column = columnCount - 1; column >= 0; column--) {
71
+ table[row * (columnCount + 1) + column] = beforeMiddle[row] === afterMiddle[column]
72
+ ? cell(row + 1, column + 1) + 1
73
+ : Math.max(cell(row + 1, column), cell(row, column + 1));
74
+ }
75
+ }
76
+ const operations = [];
77
+ let row = 0;
78
+ let column = 0;
79
+ while (row < rowCount && column < columnCount) {
80
+ if (beforeMiddle[row] === afterMiddle[column]) {
81
+ operations.push({ kind: 'context', text: beforeMiddle[row] });
82
+ row++;
83
+ column++;
84
+ }
85
+ else if (cell(row + 1, column) >= cell(row, column + 1)) {
86
+ operations.push({ kind: 'remove', text: beforeMiddle[row] });
87
+ row++;
88
+ }
89
+ else {
90
+ operations.push({ kind: 'add', text: afterMiddle[column] });
91
+ column++;
92
+ }
93
+ }
94
+ while (row < rowCount)
95
+ operations.push({ kind: 'remove', text: beforeMiddle[row++] });
96
+ while (column < columnCount)
97
+ operations.push({ kind: 'add', text: afterMiddle[column++] });
98
+ pushMiddle(operations);
99
+ }
100
+ for (let index = 0; index < suffixLength; index++) {
101
+ rows.push({
102
+ kind: 'context',
103
+ text: beforeLines[beforeLines.length - suffixLength + index],
104
+ oldLine: oldLine++,
105
+ newLine: newLine++,
106
+ });
107
+ }
108
+ return annotateIntraline(rows);
109
+ };
110
+ /** Parses a unified diff/patch into rows (file headers skipped, hunks kept). */
111
+ export const parseUnifiedDiff = (patchText) => {
112
+ const rows = [];
113
+ let oldLine = 0;
114
+ let newLine = 0;
115
+ for (const line of patchText.split('\n')) {
116
+ if (line.startsWith('diff ')
117
+ || line.startsWith('index ')
118
+ || line.startsWith('+++')
119
+ || line.startsWith('---')
120
+ || line.startsWith('\\ No newline')) {
121
+ continue;
122
+ }
123
+ const hunkMatch = /^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@(.*)$/.exec(line);
124
+ if (hunkMatch) {
125
+ oldLine = Number(hunkMatch[1]);
126
+ newLine = Number(hunkMatch[2]);
127
+ rows.push({ kind: 'hunk', text: line });
128
+ continue;
129
+ }
130
+ if (!oldLine && !newLine)
131
+ continue; // outside any hunk
132
+ if (line.startsWith('+')) {
133
+ rows.push({ kind: 'add', text: line.slice(1), newLine: newLine++ });
134
+ }
135
+ else if (line.startsWith('-')) {
136
+ rows.push({ kind: 'remove', text: line.slice(1), oldLine: oldLine++ });
137
+ }
138
+ else {
139
+ rows.push({ kind: 'context', text: line.startsWith(' ') ? line.slice(1) : line, oldLine: oldLine++, newLine: newLine++ });
140
+ }
141
+ }
142
+ return annotateIntraline(rows);
143
+ };
144
+ const maxIntralineChars = 400;
145
+ /**
146
+ * Word-level segments for balanced remove/add runs (the GitHub-style
147
+ * intraline tint). Only 1:1 paired lines within a run are annotated.
148
+ */
149
+ const annotateIntraline = (rows) => {
150
+ for (let index = 0; index < rows.length; index++) {
151
+ if (rows[index].kind !== 'remove')
152
+ continue;
153
+ const removeStart = index;
154
+ let removeEnd = index;
155
+ while (removeEnd + 1 < rows.length && rows[removeEnd + 1].kind === 'remove')
156
+ removeEnd++;
157
+ let addEnd = removeEnd;
158
+ while (addEnd + 1 < rows.length && rows[addEnd + 1].kind === 'add')
159
+ addEnd++;
160
+ const removeCount = removeEnd - removeStart + 1;
161
+ const addCount = addEnd - removeEnd;
162
+ if (addCount === removeCount) {
163
+ for (let pairIndex = 0; pairIndex < removeCount; pairIndex++) {
164
+ const removeRow = rows[removeStart + pairIndex];
165
+ const addRow = rows[removeEnd + 1 + pairIndex];
166
+ if (removeRow.text.length <= maxIntralineChars && addRow.text.length <= maxIntralineChars) {
167
+ const [removeSegments, addSegments] = intralineSegments(removeRow.text, addRow.text);
168
+ removeRow.segments = removeSegments;
169
+ addRow.segments = addSegments;
170
+ }
171
+ }
172
+ }
173
+ index = addEnd;
174
+ }
175
+ return rows;
176
+ };
177
+ const tokenizeForIntraline = (text) => {
178
+ return text.match(/(\s+|[A-Za-z0-9_]+|[^\sA-Za-z0-9_]+)/g) ?? [];
179
+ };
180
+ const intralineSegments = (beforeText, afterText) => {
181
+ const beforeTokens = tokenizeForIntraline(beforeText);
182
+ const afterTokens = tokenizeForIntraline(afterText);
183
+ let prefixLength = 0;
184
+ while (prefixLength < beforeTokens.length
185
+ && prefixLength < afterTokens.length
186
+ && beforeTokens[prefixLength] === afterTokens[prefixLength]) {
187
+ prefixLength++;
188
+ }
189
+ let suffixLength = 0;
190
+ while (suffixLength < beforeTokens.length - prefixLength
191
+ && suffixLength < afterTokens.length - prefixLength
192
+ && beforeTokens[beforeTokens.length - 1 - suffixLength] === afterTokens[afterTokens.length - 1 - suffixLength]) {
193
+ suffixLength++;
194
+ }
195
+ const buildSegments = (tokens) => {
196
+ const prefix = tokens.slice(0, prefixLength).join('');
197
+ const middle = tokens.slice(prefixLength, tokens.length - suffixLength).join('');
198
+ const suffix = tokens.slice(tokens.length - suffixLength).join('');
199
+ const segments = [];
200
+ if (prefix)
201
+ segments.push({ text: prefix, changed: false });
202
+ if (middle)
203
+ segments.push({ text: middle, changed: true });
204
+ if (suffix)
205
+ segments.push({ text: suffix, changed: false });
206
+ return segments.length ? segments : [{ text: tokens.join(''), changed: false }];
207
+ };
208
+ return [buildSegments(beforeTokens), buildSegments(afterTokens)];
209
+ };
210
+ /**
211
+ * Folds long unchanged context runs so large files read as a review diff:
212
+ * keeps `contextLines` around changes, folds runs longer than
213
+ * `contextLines * 2 + minFoldSize`.
214
+ */
215
+ export const foldContextRows = (rows, options = {}) => {
216
+ const contextLines = options.contextLines ?? 3;
217
+ const minFoldSize = options.minFoldSize ?? 4;
218
+ const displayRows = [];
219
+ let contextRun = [];
220
+ let seenChange = false;
221
+ const flushRun = (isEnd) => {
222
+ if (!contextRun.length)
223
+ return;
224
+ const keepHead = seenChange ? contextLines : 0;
225
+ const keepTail = isEnd ? 0 : contextLines;
226
+ if (contextRun.length > keepHead + keepTail + minFoldSize) {
227
+ displayRows.push(...contextRun.slice(0, keepHead));
228
+ displayRows.push({ kind: 'fold', rows: contextRun.slice(keepHead, contextRun.length - keepTail) });
229
+ if (keepTail)
230
+ displayRows.push(...contextRun.slice(contextRun.length - keepTail));
231
+ }
232
+ else {
233
+ displayRows.push(...contextRun);
234
+ }
235
+ contextRun = [];
236
+ };
237
+ for (const row of rows) {
238
+ if (row.kind === 'context') {
239
+ contextRun.push(row);
240
+ }
241
+ else {
242
+ flushRun(false);
243
+ seenChange = true;
244
+ displayRows.push(row);
245
+ }
246
+ }
247
+ flushRun(true);
248
+ return displayRows;
249
+ };
250
+ /** Pairs rows into side-by-side cells; balanced remove/add runs align 1:1. */
251
+ export const buildSplitRows = (rows) => {
252
+ const splitRows = [];
253
+ let index = 0;
254
+ while (index < rows.length) {
255
+ const row = rows[index];
256
+ if (row.kind === 'hunk') {
257
+ splitRows.push({ kind: 'hunk', text: row.text });
258
+ index++;
259
+ continue;
260
+ }
261
+ if (row.kind === 'context') {
262
+ splitRows.push({
263
+ kind: 'pair',
264
+ left: { kind: 'context', text: row.text, line: row.oldLine ?? 0 },
265
+ right: { kind: 'context', text: row.text, line: row.newLine ?? 0 },
266
+ });
267
+ index++;
268
+ continue;
269
+ }
270
+ // change block: collect consecutive removes then adds, pair them up
271
+ const removes = [];
272
+ const adds = [];
273
+ while (index < rows.length && rows[index].kind === 'remove')
274
+ removes.push(rows[index++]);
275
+ while (index < rows.length && rows[index].kind === 'add')
276
+ adds.push(rows[index++]);
277
+ const pairCount = Math.max(removes.length, adds.length);
278
+ for (let pairIndex = 0; pairIndex < pairCount; pairIndex++) {
279
+ const removeRow = removes[pairIndex];
280
+ const addRow = adds[pairIndex];
281
+ splitRows.push({
282
+ kind: 'pair',
283
+ left: removeRow
284
+ ? { kind: 'remove', text: removeRow.text, line: removeRow.oldLine ?? 0, segments: removeRow.segments }
285
+ : undefined,
286
+ right: addRow
287
+ ? { kind: 'add', text: addRow.text, line: addRow.newLine ?? 0, segments: addRow.segments }
288
+ : undefined,
289
+ });
290
+ }
291
+ }
292
+ return splitRows;
293
+ };
294
+ export const diffStats = (rows) => {
295
+ let added = 0;
296
+ let removed = 0;
297
+ for (const row of rows) {
298
+ if (row.kind === 'add')
299
+ added++;
300
+ else if (row.kind === 'remove')
301
+ removed++;
302
+ }
303
+ return { added, removed };
304
+ };
305
+ /** Serializes rows back into a unified diff (for copy-to-clipboard). */
306
+ export const toUnifiedDiff = (rows, options = {}) => {
307
+ const contextLines = options.contextLines ?? 3;
308
+ const lines = [];
309
+ if (options.fileNameBefore || options.fileNameAfter) {
310
+ lines.push(`--- ${options.fileNameBefore ?? 'a'}`);
311
+ lines.push(`+++ ${options.fileNameAfter ?? 'b'}`);
312
+ }
313
+ const hunks = [];
314
+ let currentHunk;
315
+ rows.forEach((row, index) => {
316
+ if (row.kind === 'add' || row.kind === 'remove') {
317
+ const startIndex = Math.max(0, index - contextLines);
318
+ if (currentHunk && startIndex <= currentHunk.endIndex + 1) {
319
+ currentHunk.endIndex = Math.min(rows.length - 1, index + contextLines);
320
+ }
321
+ else {
322
+ currentHunk = { startIndex, endIndex: Math.min(rows.length - 1, index + contextLines) };
323
+ hunks.push(currentHunk);
324
+ }
325
+ }
326
+ });
327
+ for (const hunk of hunks) {
328
+ const hunkRows = rows
329
+ .slice(hunk.startIndex, hunk.endIndex + 1)
330
+ .filter((row) => row.kind !== 'hunk');
331
+ const firstOld = hunkRows.find((row) => row.oldLine !== undefined)?.oldLine ?? 0;
332
+ const firstNew = hunkRows.find((row) => row.newLine !== undefined)?.newLine ?? 0;
333
+ const oldCount = hunkRows.filter((row) => row.kind === 'context' || row.kind === 'remove').length;
334
+ const newCount = hunkRows.filter((row) => row.kind === 'context' || row.kind === 'add').length;
335
+ lines.push(`@@ -${firstOld},${oldCount} +${firstNew},${newCount} @@`);
336
+ for (const row of hunkRows) {
337
+ lines.push(`${row.kind === 'add' ? '+' : row.kind === 'remove' ? '-' : ' '}${row.text}`);
338
+ }
339
+ }
340
+ return lines.join('\n');
341
+ };
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWJveC5kaWZmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtZGF0YXZpZXcvZGVlcy1kYXRhdmlldy1jb2RlYm94L2NvZGVib3guZGlmZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBZ0RILE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBWSxFQUFZLEVBQUU7SUFDNUMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFO1FBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2hFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsMEVBQTBFO0FBQzFFLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQztBQUU5Qjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBa0IsRUFBRSxTQUFpQixFQUFjLEVBQUU7SUFDbkYsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV6QyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDckIsT0FDRSxZQUFZLEdBQUcsV0FBVyxDQUFDLE1BQU07V0FDOUIsWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNO1dBQ2hDLFdBQVcsQ0FBQyxZQUFZLENBQUMsS0FBSyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQ3pELENBQUM7UUFDRCxZQUFZLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBQ0QsSUFBSSxZQUFZLEdBQUcsQ0FBQyxD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LEdBQUcsR0FBRyxRQUFRLElBQUksTUFBTSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQzlDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUQsR0FBRyxFQUFFLENBQUM7Z0JBQ04sTUFBTSxFQUFFLENBQUM7WUFDWCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDMUQsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdELEdBQUcsRUFBRSxDQUFDO1lBQ1IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLEVBQUUsQ0FBQztZQUNYLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLEdBQUcsUUFBUTtZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEYsT0FBTyxNQUFNLEdBQUcsV0FBVztZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFD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LE1BQU0sQ0FBQztRQUNsRyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMvRixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sUUFBUSxJQUFJLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLENBQUMsQ0FBQztRQUN0RSxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDIn0=
@@ -1,5 +1,6 @@
1
1
  import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
2
  import '../../00group-layout/dees-tile/dees-tile.js';
3
+ import '../../00group-utility/dees-icon/dees-icon.js';
3
4
  declare global {
4
5
  interface HTMLElementTagNameMap {
5
6
  'dees-dataview-codebox': DeesDataviewCodebox;
@@ -9,11 +10,55 @@ export declare class DeesDataviewCodebox extends DeesElement {
9
10
  static demo: () => TemplateResult<1>;
10
11
  static demoGroups: string[];
11
12
  accessor progLang: string;
13
+ /** Shown centered in the title bar; empty hides the title. */
14
+ accessor filename: string;
12
15
  accessor codeToDisplay: string;
16
+ /**
17
+ * Diff mode inputs: set `codeBefore` (compared against `codeToDisplay` as
18
+ * the after state) OR a pre-computed `unifiedDiff` patch. Either activates
19
+ * diff rendering; `diffView` picks the layout and can force diff mode on
20
+ * its own (e.g. new-file diffs where `codeBefore` is empty).
21
+ */
22
+ accessor codeBefore: string;
23
+ accessor unifiedDiff: string;
24
+ /** '' = regular code view; 'inline' = unified rows; 'split' = side by side */
25
+ accessor diffView: '' | 'inline' | 'split';
26
+ accessor highlightedCode: string;
27
+ accessor copied: boolean;
28
+ accessor expandedFolds: ReadonlySet<number>;
29
+ accessor highlightVersion: number;
13
30
  static styles: import("@design.estate/dees-element").CSSResult[];
14
- constructor();
15
31
  render(): TemplateResult;
16
- private codeToDisplayStore;
32
+ private renderCode;
33
+ private renderCodeFooter;
34
+ private renderDiffFooter;
35
+ private renderDiff;
36
+ private renderInlineGrid;
37
+ private renderSplitGrid;
38
+ private renderSplitCell;
39
+ private renderFoldRow;
40
+ private renderDiffLine;
41
+ private processedCode;
17
42
  private highlightJs;
18
- updated(_changedProperties: Map<string, any>): Promise<void>;
43
+ private highlightToken;
44
+ private copiedResetTimeout;
45
+ private diffRows;
46
+ private diffHighlightCache;
47
+ /** Diff mode is active when a diff input or an explicit diffView is set. */
48
+ get isDiffActive(): boolean;
49
+ get effectiveDiffView(): 'inline' | 'split';
50
+ willUpdate(changedProperties: Map<string, any>): void;
51
+ private displayRowsWithFolds;
52
+ updated(changedProperties: Map<string, any>): Promise<void>;
53
+ /**
54
+ * Highlights visible diff lines per-line (full-text highlighting cannot be
55
+ * split across rows because hljs spans may cross line boundaries). Results
56
+ * are cached by line text; intraline-segmented rows skip highlighting —
57
+ * their change tint carries the information.
58
+ */
59
+ private highlightDiffLines;
60
+ private highlightCode;
61
+ private copyCode;
62
+ private copyUnifiedDiff;
63
+ disconnectedCallback(): Promise<void>;
19
64
  }
@@ -1,4 +1,79 @@
1
1
  import { html, cssManager } from '@design.estate/dees-element';
2
+ // Passed via property binding: slotted text cannot carry generics like
3
+ // Promise<User[]> — the HTML parser reads the angle brackets as a tag and
4
+ // truncates the text node.
5
+ const typescriptSample = `interface User {
6
+ id: number;
7
+ name: string;
8
+ email: string;
9
+ isActive: boolean;
10
+ }
11
+
12
+ class UserService {
13
+ private users: User[] = [];
14
+
15
+ constructor(private apiUrl: string) {
16
+ console.log('UserService initialized');
17
+ }
18
+
19
+ async getUsers(): Promise<User[]> {
20
+ try {
21
+ const response = await fetch(this.apiUrl);
22
+ const data = await response.json();
23
+ return data.users;
24
+ } catch (error) {
25
+ console.error('Failed to fetch users:', error);
26
+ return [];
27
+ }
28
+ }
29
+
30
+ addUser(user: User): void {
31
+ this.users.push(user);
32
+ }
33
+ }
34
+
35
+ // Usage example
36
+ const service = new UserService('https://api.example.com/users');
37
+ const users = await service.getUsers();
38
+ console.log('Found users:', users.length);`;
39
+ const diffBefore = `export const greet = (name: string) => {
40
+ const greeting = 'Hello ' + name;
41
+ console.log(greeting);
42
+ return greeting;
43
+ };
44
+
45
+ export const farewell = (name: string) => {
46
+ return 'Goodbye ' + name;
47
+ };
48
+
49
+ const unusedHelper = () => {
50
+ return 42;
51
+ };`;
52
+ const diffAfter = `export const greet = (name: string, excited = false) => {
53
+ const greeting = \`Hello \${name}\${excited ? '!' : ''}\`;
54
+ console.log(greeting);
55
+ return greeting;
56
+ };
57
+
58
+ export const farewell = (name: string) => {
59
+ return 'Goodbye ' + name;
60
+ };
61
+
62
+ export const wave = () => {
63
+ return '👋';
64
+ };`;
65
+ const longBefore = Array.from({ length: 60 }, (_, i) => `line ${i + 1}: stable content`).join('\n');
66
+ const longAfter = longBefore.replace('line 30: stable content', 'line 30: CHANGED content');
67
+ const unifiedPatchSample = `--- a/src/config.ts
68
+ +++ b/src/config.ts
69
+ @@ -1,6 +1,7 @@
70
+ export const config = {
71
+ - retries: 3,
72
+ + retries: 5,
73
+ + timeoutMs: 30_000,
74
+ verbose: false,
75
+ };
76
+ `;
2
77
  export const demoFunc = () => html `
3
78
  <style>
4
79
  .demoWrapper {
@@ -36,42 +111,11 @@ export const demoFunc = () => html `
36
111
  <div class="section">
37
112
  <div class="section-title">TypeScript Code Example</div>
38
113
  <div class="section-description">A comprehensive TypeScript code example with various syntax highlighting.</div>
39
- <dees-dataview-codebox proglang="typescript">
40
- interface User {
41
- id: number;
42
- name: string;
43
- email: string;
44
- isActive: boolean;
45
- }
46
-
47
- class UserService {
48
- private users: User[] = [];
49
-
50
- constructor(private apiUrl: string) {
51
- console.log('UserService initialized');
52
- }
53
-
54
- async getUsers(): Promise<User[]> {
55
- try {
56
- const response = await fetch(this.apiUrl);
57
- const data = await response.json();
58
- return data.users;
59
- } catch (error) {
60
- console.error('Failed to fetch users:', error);
61
- return [];
62
- }
63
- }
64
-
65
- addUser(user: User): void {
66
- this.users.push(user);
67
- }
68
- }
69
-
70
- // Usage example
71
- const service = new UserService('https://api.example.com/users');
72
- const users = await service.getUsers();
73
- console.log('Found users:', users.length);
74
- </dees-dataview-codebox>
114
+ <dees-dataview-codebox
115
+ proglang="typescript"
116
+ filename="user.service.ts"
117
+ .codeToDisplay=${typescriptSample}
118
+ ></dees-dataview-codebox>
75
119
  </div>
76
120
 
77
121
  <div class="section">
@@ -95,7 +139,7 @@ const fetchData = async (url) => {
95
139
 
96
140
  // Modern syntax
97
141
  const greet = (name = 'World') => \`Hello, \${name}!\`;
98
- console.log(greet('ShadCN'));
142
+ console.log(greet('design.estate'));
99
143
  </dees-dataview-codebox>
100
144
  </div>
101
145
 
@@ -175,7 +219,7 @@ data = await processor.process_data([{'id': 1}, {'id': 2}])
175
219
  <div class="section">
176
220
  <div class="section-title">JSON Example</div>
177
221
  <div class="section-description">JSON configuration with proper formatting.</div>
178
- <dees-dataview-codebox proglang="json">
222
+ <dees-dataview-codebox proglang="json" filename="package.json">
179
223
  {
180
224
  "name": "@design.estate/dees-catalog",
181
225
  "version": "1.10.7",
@@ -194,6 +238,51 @@ data = await processor.process_data([{'id': 1}, {'id': 2}])
194
238
  }
195
239
  </dees-dataview-codebox>
196
240
  </div>
241
+ <div class="section">
242
+ <div class="section-title">Inline Diff</div>
243
+ <div class="section-description">Line diff computed from before/after code with intraline change tint and context folding.</div>
244
+ <dees-dataview-codebox
245
+ proglang="typescript"
246
+ filename="greeter.ts"
247
+ diffView="inline"
248
+ .codeBefore=${diffBefore}
249
+ .codeToDisplay=${diffAfter}
250
+ ></dees-dataview-codebox>
251
+ </div>
252
+
253
+ <div class="section">
254
+ <div class="section-title">Side-by-Side Diff</div>
255
+ <div class="section-description">The same change rendered split: before on the left, after on the right, filler rows keep hunks aligned.</div>
256
+ <dees-dataview-codebox
257
+ proglang="typescript"
258
+ filename="greeter.ts"
259
+ diffView="split"
260
+ .codeBefore=${diffBefore}
261
+ .codeToDisplay=${diffAfter}
262
+ ></dees-dataview-codebox>
263
+ </div>
264
+
265
+ <div class="section">
266
+ <div class="section-title">Diff With Folded Context</div>
267
+ <div class="section-description">Unchanged runs collapse to expandable folds so long files read like a review diff.</div>
268
+ <dees-dataview-codebox
269
+ proglang="plaintext"
270
+ filename="big-file.txt"
271
+ diffView="inline"
272
+ .codeBefore=${longBefore}
273
+ .codeToDisplay=${longAfter}
274
+ ></dees-dataview-codebox>
275
+ </div>
276
+
277
+ <div class="section">
278
+ <div class="section-title">Unified Patch Input</div>
279
+ <div class="section-description">Pre-computed unified diffs render directly, hunk headers included.</div>
280
+ <dees-dataview-codebox
281
+ proglang="typescript"
282
+ filename="config.ts"
283
+ .unifiedDiff=${unifiedPatchSample}
284
+ ></dees-dataview-codebox>
285
+ </div>
197
286
  </div>
198
287
  `;
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1kYXRhdmlldy1jb2RlYm94LmRlbW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1kYXRhdmlldy9kZWVzLWRhdGF2aWV3LWNvZGVib3gvZGVlcy1kYXRhdmlldy1jb2RlYm94LmRlbW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7Ozs7OztvQkFRZCxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFnQjdDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzs7Ozs7ZUFLeEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXVLdEQsQ0FBQSJ9
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1kYXRhdmlldy1jb2RlYm94LmRlbW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1kYXRhdmlldy9kZWVzLWRhdGF2aWV3LWNvZGVib3gvZGVlcy1kYXRhdmlldy1jb2RlYm94LmRlbW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCx1RUFBdUU7QUFDdkUsMEVBQTBFO0FBQzFFLDJCQUEyQjtBQUMzQixNQUFNLGdCQUFnQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkNBaUNrQixDQUFDO0FBRTVDLE1BQU0sVUFBVSxHQUFHOzs7Ozs7Ozs7Ozs7R0FZaEIsQ0FBQztBQUVKLE1BQU0sU0FBUyxHQUFHOzs7Ozs7Ozs7Ozs7R0FZZixDQUFDO0FBRUosTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEcsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0FBRTVGLE1BQU0sa0JBQWtCLEdBQUc7Ozs7Ozs7OztDQVMxQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7b0JBUWQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O2VBZ0I3QyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7Ozs7O2VBS3hDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7eUJBVzlCLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBbUluQixVQUFVO3lCQUNQLFNBQVM7Ozs7Ozs7Ozs7O3NCQVdaLFVBQVU7eUJBQ1AsU0FBUzs7Ozs7Ozs7Ozs7c0JBV1osVUFBVTt5QkFDUCxTQUFTOzs7Ozs7Ozs7O3VCQVVYLGtCQUFrQjs7OztDQUl4QyxDQUFBIn0=