@limetech/lime-crm-building-blocks 1.129.0 → 1.131.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 (331) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/filter-group-logic-Bwk6B784.js +136 -0
  3. package/dist/cjs/{index-C_OnxXhP.js → index-dBY184XR.js} +12 -0
  4. package/dist/cjs/{index.esm-g8gOl7RV.js → index.esm-DcWSoSRE.js} +2 -2
  5. package/dist/cjs/lime-crm-building-blocks.cjs.js +2 -2
  6. package/dist/cjs/lime-query-operators-Ci-RNshi.js +65 -0
  7. package/dist/cjs/{lime-query-validation-DTurSvtv.js → lime-query-validation-nql4N6Z8.js} +1 -1
  8. package/dist/cjs/limebb-alert-dialog.cjs.entry.js +2 -2
  9. package/dist/cjs/limebb-browser.cjs.entry.js +4 -4
  10. package/dist/cjs/limebb-chat-icon-list_3.cjs.entry.js +6 -6
  11. package/dist/cjs/limebb-chat-list.cjs.entry.js +3 -3
  12. package/dist/cjs/limebb-color-palette-picker.cjs.entry.js +2 -2
  13. package/dist/cjs/limebb-color-palette-swatches.cjs.entry.js +2 -2
  14. package/dist/cjs/limebb-component-config.cjs.entry.js +3 -3
  15. package/dist/cjs/limebb-component-picker.cjs.entry.js +2 -2
  16. package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +4 -4
  17. package/dist/cjs/limebb-currency-picker.cjs.entry.js +3 -3
  18. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +2 -2
  19. package/dist/cjs/limebb-data-cells.cjs.entry.js +2 -2
  20. package/dist/cjs/limebb-date-picker.cjs.entry.js +3 -3
  21. package/dist/cjs/limebb-date-range.cjs.entry.js +2 -2
  22. package/dist/cjs/limebb-document-chips.cjs.entry.js +2 -2
  23. package/dist/cjs/limebb-document-item.cjs.entry.js +3 -3
  24. package/dist/cjs/limebb-document-picker.cjs.entry.js +2 -2
  25. package/dist/cjs/limebb-empty-state.cjs.entry.js +1 -1
  26. package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +2 -2
  27. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +3 -3
  28. package/dist/cjs/limebb-feed.cjs.entry.js +3 -3
  29. package/dist/cjs/limebb-icon-picker.cjs.entry.js +2 -2
  30. package/dist/cjs/limebb-info-tile-currency-format.cjs.entry.js +1 -1
  31. package/dist/cjs/limebb-info-tile-date-format.cjs.entry.js +1 -1
  32. package/dist/cjs/limebb-info-tile-decimal-format.cjs.entry.js +1 -1
  33. package/dist/cjs/limebb-info-tile-format.cjs.entry.js +2 -2
  34. package/dist/cjs/limebb-info-tile-relative-date-format.cjs.entry.js +1 -1
  35. package/dist/cjs/limebb-info-tile-unit-format.cjs.entry.js +1 -1
  36. package/dist/cjs/limebb-info-tile.cjs.entry.js +4 -4
  37. package/dist/cjs/limebb-kanban-group.cjs.entry.js +3 -3
  38. package/dist/cjs/limebb-kanban-item.cjs.entry.js +3 -3
  39. package/dist/cjs/limebb-kanban.cjs.entry.js +1 -1
  40. package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +4 -4
  41. package/dist/cjs/limebb-lime-query-filter-builder.cjs.entry.js +4 -8
  42. package/dist/cjs/{limebb-lime-query-filter-group_3.cjs.entry.js → limebb-lime-query-filter-comparison-editor_4.cjs.entry.js} +158 -187
  43. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +83 -121
  44. package/dist/cjs/limebb-lime-query-order-by-editor_2.cjs.entry.js +5 -5
  45. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +3 -3
  46. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +4 -4
  47. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +2 -2
  48. package/dist/cjs/limebb-limeobject-file-viewer.cjs.entry.js +2 -2
  49. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +3 -3
  50. package/dist/cjs/limebb-loader.cjs.entry.js +2 -2
  51. package/dist/cjs/limebb-locale-picker.cjs.entry.js +3 -3
  52. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +3 -3
  53. package/dist/cjs/limebb-mention.cjs.entry.js +2 -2
  54. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +3 -3
  55. package/dist/cjs/limebb-notification-item.cjs.entry.js +3 -3
  56. package/dist/cjs/limebb-notification-list.cjs.entry.js +2 -2
  57. package/dist/cjs/limebb-object-chip.cjs.entry.js +3 -3
  58. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +4 -4
  59. package/dist/cjs/limebb-property-selector.cjs.entry.js +42 -19
  60. package/dist/cjs/limebb-rule-arg-filter-editor.cjs.entry.js +2 -2
  61. package/dist/cjs/limebb-rule-chip-popover.cjs.entry.js +4 -4
  62. package/dist/cjs/limebb-rule-editor.cjs.entry.js +104 -12
  63. package/dist/cjs/limebb-rule-gate.cjs.entry.js +3 -3
  64. package/dist/cjs/limebb-text-editor-picker.cjs.entry.js +1 -1
  65. package/dist/cjs/limebb-text-editor.cjs.entry.js +4 -4
  66. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +3 -3
  67. package/dist/cjs/{limetype-DJNXULgk.js → limetype-CNjUGemK.js} +1 -1
  68. package/dist/cjs/loader.cjs.js +2 -2
  69. package/dist/cjs/{web-component-template-BWCutZB6.js → web-component-template-CZ0lPHIg.js} +1 -1
  70. package/dist/collection/collection-manifest.json +1 -0
  71. package/dist/collection/components/alert-dialog/alert-dialog.js +1 -1
  72. package/dist/collection/components/browser/browser.js +2 -2
  73. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.js +1 -1
  74. package/dist/collection/components/chat-list/chat-item/chat-item.js +2 -2
  75. package/dist/collection/components/chat-list/chat-list.js +1 -1
  76. package/dist/collection/components/chat-list/typing-indicator/typing-indicator.js +1 -1
  77. package/dist/collection/components/color-palette-picker/color-palette-picker.js +1 -1
  78. package/dist/collection/components/color-palette-picker/color-palette-swatches/color-palette-swatches.js +1 -1
  79. package/dist/collection/components/composer-toolbar/composer-toolbar.js +2 -2
  80. package/dist/collection/components/currency-picker/currency-picker.js +1 -1
  81. package/dist/collection/components/dashboard-widget/dashboard-widget.js +1 -1
  82. package/dist/collection/components/date-picker/date-picker.js +1 -1
  83. package/dist/collection/components/date-range/date-range.js +1 -1
  84. package/dist/collection/components/document-chips/document-chips.js +1 -1
  85. package/dist/collection/components/document-picker/document-item/document-item.js +2 -2
  86. package/dist/collection/components/document-picker/document-picker.js +1 -1
  87. package/dist/collection/components/feed/feed-item/feed-timeline-item.js +1 -1
  88. package/dist/collection/components/feed/feed-item-thumbnail-file-info/feed-item-thumbnail-file-info.js +1 -1
  89. package/dist/collection/components/feed/feed.js +1 -1
  90. package/dist/collection/components/icon-picker/icon-picker.js +1 -1
  91. package/dist/collection/components/info-tile/format/config/info-tile-format.js +1 -1
  92. package/dist/collection/components/info-tile/info-tile.js +1 -1
  93. package/dist/collection/components/kanban/kanban-group/kanban-group.js +1 -1
  94. package/dist/collection/components/kanban/kanban-item/kanban-item.js +1 -1
  95. package/dist/collection/components/lime-query-builder/expressions/filter-group-logic.js +75 -72
  96. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-builder.js +2 -6
  97. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.css +12 -0
  98. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.js +231 -0
  99. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.css +2 -17
  100. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +91 -118
  101. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-expression.js +9 -14
  102. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.css +105 -179
  103. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +93 -94
  104. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
  105. package/dist/collection/components/lime-query-builder/expressions/lime-query-operators.js +60 -0
  106. package/dist/collection/components/lime-query-builder/lime-query-builder.js +1 -1
  107. package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.js +1 -1
  108. package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.js +1 -1
  109. package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +1 -1
  110. package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +2 -2
  111. package/dist/collection/components/lime-query-builder/property-selector/property-selector.js +39 -16
  112. package/dist/collection/components/lime-query-builder/response-format/response-format-item.js +1 -1
  113. package/dist/collection/components/limeobject/file-viewer/live-docs-info.js +2 -2
  114. package/dist/collection/components/locale-picker/locale-picker.js +1 -1
  115. package/dist/collection/components/notification-list/notification-item/notification-item.js +1 -1
  116. package/dist/collection/components/percentage-visualizer/percentage-visualizer.js +2 -2
  117. package/dist/collection/components/rule-editor/chip-picker-view.js +2 -2
  118. package/dist/collection/components/rule-editor/rule-chip-popover/rule-chip-popover.js +1 -1
  119. package/dist/collection/components/rule-editor/rule-editor.css +1 -0
  120. package/dist/collection/components/rule-editor/rule-editor.js +102 -10
  121. package/dist/collection/components/rule-editor/view-helpers.js +9 -0
  122. package/dist/collection/components/rule-gate/rule-gate.js +1 -1
  123. package/dist/collection/components/summary-popover/summary-popover.js +2 -2
  124. package/dist/collection/components/text-editor/mention-group-counter.js +2 -2
  125. package/dist/collection/components/text-editor/text-editor.js +1 -1
  126. package/dist/collection/components/trend-indicator/trend-indicator.js +1 -1
  127. package/dist/components/chat-icon-list.js +1 -1
  128. package/dist/components/chat-item.js +1 -1
  129. package/dist/components/currency-picker.js +1 -1
  130. package/dist/components/date-picker.js +1 -1
  131. package/dist/components/document-item.js +1 -1
  132. package/dist/components/feed-item-thumbnail-file-info.js +1 -1
  133. package/dist/components/feed-timeline-item.js +1 -1
  134. package/dist/components/kanban-group.js +1 -1
  135. package/dist/components/kanban-item.js +1 -1
  136. package/dist/components/lime-query-filter-builder.js +1 -1
  137. package/dist/components/lime-query-filter-comparison-editor.js +1 -0
  138. package/dist/components/lime-query-filter-comparison.js +1 -1
  139. package/dist/components/lime-query-filter-expression.js +1 -1
  140. package/dist/components/limebb-alert-dialog.js +1 -1
  141. package/dist/components/limebb-browser.js +1 -1
  142. package/dist/components/limebb-chat-list.js +1 -1
  143. package/dist/components/limebb-color-palette-picker.js +1 -1
  144. package/dist/components/limebb-color-palette-swatches.js +1 -1
  145. package/dist/components/limebb-composer-toolbar.js +1 -1
  146. package/dist/components/limebb-dashboard-widget.js +1 -1
  147. package/dist/components/limebb-date-range.js +1 -1
  148. package/dist/components/limebb-document-chips.js +1 -1
  149. package/dist/components/limebb-document-picker.js +1 -1
  150. package/dist/components/limebb-feed.js +1 -1
  151. package/dist/components/limebb-icon-picker.js +1 -1
  152. package/dist/components/limebb-info-tile-format.js +1 -1
  153. package/dist/components/limebb-info-tile.js +1 -1
  154. package/dist/components/limebb-lime-query-builder.js +1 -1
  155. package/dist/components/limebb-lime-query-filter-comparison-editor.d.ts +11 -0
  156. package/dist/components/limebb-lime-query-filter-comparison-editor.js +1 -0
  157. package/dist/components/limebb-lime-query-response-format-builder.js +1 -1
  158. package/dist/components/limebb-locale-picker.js +1 -1
  159. package/dist/components/limebb-mention-group-counter.js +1 -1
  160. package/dist/components/limebb-rule-arg-filter-editor.js +1 -1
  161. package/dist/components/limebb-rule-editor.js +1 -1
  162. package/dist/components/limebb-rule-gate.js +1 -1
  163. package/dist/components/limebb-text-editor.js +1 -1
  164. package/dist/components/limebb-trend-indicator.js +1 -1
  165. package/dist/components/limetype-field.js +1 -1
  166. package/dist/components/live-docs-info.js +1 -1
  167. package/dist/components/notification-item.js +1 -1
  168. package/dist/components/order-by-editor.js +1 -1
  169. package/dist/components/order-by-item.js +1 -1
  170. package/dist/components/percentage-visualizer.js +1 -1
  171. package/dist/components/property-selector.js +1 -1
  172. package/dist/components/response-format-item.js +1 -1
  173. package/dist/components/rule-chip-popover.js +1 -1
  174. package/dist/components/summary-popover.js +1 -1
  175. package/dist/components/typing-indicator.js +1 -1
  176. package/dist/esm/filter-group-logic-RXn-GGk1.js +126 -0
  177. package/dist/esm/{index-BIwHMk6j.js → index-DYpn0EkA.js} +12 -0
  178. package/dist/esm/{index.esm-CJU4N9K8.js → index.esm-DAe4_MLR.js} +1 -1
  179. package/dist/esm/lime-crm-building-blocks.js +3 -3
  180. package/dist/esm/lime-query-operators-DYlN1dAt.js +63 -0
  181. package/dist/esm/{lime-query-validation-COGfPUFN.js → lime-query-validation-DXxPZ2CH.js} +1 -1
  182. package/dist/esm/limebb-alert-dialog.entry.js +2 -2
  183. package/dist/esm/limebb-browser.entry.js +4 -4
  184. package/dist/esm/limebb-chat-icon-list_3.entry.js +6 -6
  185. package/dist/esm/limebb-chat-list.entry.js +3 -3
  186. package/dist/esm/limebb-color-palette-picker.entry.js +2 -2
  187. package/dist/esm/limebb-color-palette-swatches.entry.js +2 -2
  188. package/dist/esm/limebb-component-config.entry.js +3 -3
  189. package/dist/esm/limebb-component-picker.entry.js +2 -2
  190. package/dist/esm/limebb-composer-toolbar.entry.js +4 -4
  191. package/dist/esm/limebb-currency-picker.entry.js +3 -3
  192. package/dist/esm/limebb-dashboard-widget.entry.js +2 -2
  193. package/dist/esm/limebb-data-cells.entry.js +2 -2
  194. package/dist/esm/limebb-date-picker.entry.js +3 -3
  195. package/dist/esm/limebb-date-range.entry.js +2 -2
  196. package/dist/esm/limebb-document-chips.entry.js +2 -2
  197. package/dist/esm/limebb-document-item.entry.js +3 -3
  198. package/dist/esm/limebb-document-picker.entry.js +2 -2
  199. package/dist/esm/limebb-empty-state.entry.js +1 -1
  200. package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +2 -2
  201. package/dist/esm/limebb-feed-timeline-item.entry.js +3 -3
  202. package/dist/esm/limebb-feed.entry.js +3 -3
  203. package/dist/esm/limebb-icon-picker.entry.js +2 -2
  204. package/dist/esm/limebb-info-tile-currency-format.entry.js +1 -1
  205. package/dist/esm/limebb-info-tile-date-format.entry.js +1 -1
  206. package/dist/esm/limebb-info-tile-decimal-format.entry.js +1 -1
  207. package/dist/esm/limebb-info-tile-format.entry.js +2 -2
  208. package/dist/esm/limebb-info-tile-relative-date-format.entry.js +1 -1
  209. package/dist/esm/limebb-info-tile-unit-format.entry.js +1 -1
  210. package/dist/esm/limebb-info-tile.entry.js +4 -4
  211. package/dist/esm/limebb-kanban-group.entry.js +3 -3
  212. package/dist/esm/limebb-kanban-item.entry.js +3 -3
  213. package/dist/esm/limebb-kanban.entry.js +1 -1
  214. package/dist/esm/limebb-lime-query-builder.entry.js +4 -4
  215. package/dist/esm/limebb-lime-query-filter-builder.entry.js +4 -8
  216. package/dist/esm/{limebb-lime-query-filter-group_3.entry.js → limebb-lime-query-filter-comparison-editor_4.entry.js} +158 -188
  217. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +83 -121
  218. package/dist/esm/limebb-lime-query-order-by-editor_2.entry.js +5 -5
  219. package/dist/esm/limebb-lime-query-order-by-item.entry.js +3 -3
  220. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +4 -4
  221. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +2 -2
  222. package/dist/esm/limebb-limeobject-file-viewer.entry.js +2 -2
  223. package/dist/esm/limebb-live-docs-info.entry.js +3 -3
  224. package/dist/esm/limebb-loader.entry.js +2 -2
  225. package/dist/esm/limebb-locale-picker.entry.js +3 -3
  226. package/dist/esm/limebb-mention-group-counter.entry.js +3 -3
  227. package/dist/esm/limebb-mention.entry.js +2 -2
  228. package/dist/esm/limebb-navigation-button_2.entry.js +3 -3
  229. package/dist/esm/limebb-notification-item.entry.js +3 -3
  230. package/dist/esm/limebb-notification-list.entry.js +2 -2
  231. package/dist/esm/limebb-object-chip.entry.js +3 -3
  232. package/dist/esm/limebb-percentage-visualizer.entry.js +4 -4
  233. package/dist/esm/limebb-property-selector.entry.js +42 -19
  234. package/dist/esm/limebb-rule-arg-filter-editor.entry.js +2 -2
  235. package/dist/esm/limebb-rule-chip-popover.entry.js +4 -4
  236. package/dist/esm/limebb-rule-editor.entry.js +104 -12
  237. package/dist/esm/limebb-rule-gate.entry.js +3 -3
  238. package/dist/esm/limebb-text-editor-picker.entry.js +1 -1
  239. package/dist/esm/limebb-text-editor.entry.js +4 -4
  240. package/dist/esm/limebb-trend-indicator.entry.js +3 -3
  241. package/dist/esm/{limetype-Dc4uQPMG.js → limetype-C1wEJnPI.js} +1 -1
  242. package/dist/esm/loader.js +3 -3
  243. package/dist/esm/{web-component-template-6zRYia86.js → web-component-template-D6zkEjKN.js} +1 -1
  244. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  245. package/dist/lime-crm-building-blocks/{p-34eb61da.entry.js → p-00d00277.entry.js} +1 -1
  246. package/dist/lime-crm-building-blocks/p-072756ea.entry.js +1 -0
  247. package/dist/lime-crm-building-blocks/{p-32c3789e.entry.js → p-07ef2fd0.entry.js} +1 -1
  248. package/dist/lime-crm-building-blocks/{p-c609b5ec.entry.js → p-0ba1294a.entry.js} +1 -1
  249. package/dist/lime-crm-building-blocks/{p-7fee7ef3.entry.js → p-0fac2307.entry.js} +1 -1
  250. package/dist/lime-crm-building-blocks/{p-97e6712f.entry.js → p-16fa6f3e.entry.js} +1 -1
  251. package/dist/lime-crm-building-blocks/{p-0c572fe9.entry.js → p-18ce3ce5.entry.js} +1 -1
  252. package/dist/lime-crm-building-blocks/p-1dfdf045.entry.js +1 -0
  253. package/dist/lime-crm-building-blocks/{p-20206710.entry.js → p-22296e19.entry.js} +1 -1
  254. package/dist/lime-crm-building-blocks/{p-1747221f.entry.js → p-24337de2.entry.js} +1 -1
  255. package/dist/lime-crm-building-blocks/{p-de6f4670.entry.js → p-3996a598.entry.js} +1 -1
  256. package/dist/lime-crm-building-blocks/{p-d2a01f51.entry.js → p-3bff70d2.entry.js} +1 -1
  257. package/dist/lime-crm-building-blocks/{p-7c96b265.entry.js → p-3c437049.entry.js} +1 -1
  258. package/dist/lime-crm-building-blocks/{p-3a112b17.entry.js → p-43af24b5.entry.js} +1 -1
  259. package/dist/lime-crm-building-blocks/{p-2cb31064.entry.js → p-464b02c2.entry.js} +1 -1
  260. package/dist/lime-crm-building-blocks/{p-02565865.entry.js → p-47a7b3fd.entry.js} +1 -1
  261. package/dist/lime-crm-building-blocks/{p-e6083593.entry.js → p-4c10bea0.entry.js} +1 -1
  262. package/dist/lime-crm-building-blocks/{p-e7a10082.entry.js → p-4e0d077b.entry.js} +1 -1
  263. package/dist/lime-crm-building-blocks/{p-25d8a718.entry.js → p-5006c5ea.entry.js} +1 -1
  264. package/dist/lime-crm-building-blocks/{p-c678f22f.entry.js → p-52c07130.entry.js} +1 -1
  265. package/dist/lime-crm-building-blocks/{p-492b1b0c.entry.js → p-55692241.entry.js} +1 -1
  266. package/dist/lime-crm-building-blocks/{p-b2383e7f.entry.js → p-5573a867.entry.js} +1 -1
  267. package/dist/lime-crm-building-blocks/{p-bec4231f.entry.js → p-563d69ff.entry.js} +1 -1
  268. package/dist/lime-crm-building-blocks/{p-32f8477f.entry.js → p-571777c3.entry.js} +1 -1
  269. package/dist/lime-crm-building-blocks/{p-4446f170.entry.js → p-58e63c29.entry.js} +1 -1
  270. package/dist/lime-crm-building-blocks/{p-31d8f414.entry.js → p-5a718d20.entry.js} +1 -1
  271. package/dist/lime-crm-building-blocks/{p-9c27e558.entry.js → p-5eef1781.entry.js} +1 -1
  272. package/dist/lime-crm-building-blocks/{p-861ac606.entry.js → p-603ab702.entry.js} +1 -1
  273. package/dist/lime-crm-building-blocks/{p-3252e153.entry.js → p-661e4700.entry.js} +1 -1
  274. package/dist/lime-crm-building-blocks/{p-184ae23d.entry.js → p-68a951f5.entry.js} +1 -1
  275. package/dist/lime-crm-building-blocks/{p-ed1e7e34.entry.js → p-692084d2.entry.js} +1 -1
  276. package/dist/lime-crm-building-blocks/{p-1428aa13.entry.js → p-6ee28dfc.entry.js} +1 -1
  277. package/dist/lime-crm-building-blocks/{p-fdd236ff.entry.js → p-725e6748.entry.js} +1 -1
  278. package/dist/lime-crm-building-blocks/{p-c394c1f6.entry.js → p-7a4704dc.entry.js} +1 -1
  279. package/dist/lime-crm-building-blocks/{p-48c2b617.entry.js → p-7b9359cc.entry.js} +1 -1
  280. package/dist/lime-crm-building-blocks/{p-6ff38954.entry.js → p-7d969bbe.entry.js} +1 -1
  281. package/dist/lime-crm-building-blocks/{p-eb8d58ab.entry.js → p-7f5c97fe.entry.js} +1 -1
  282. package/dist/lime-crm-building-blocks/{p-6cceabf1.entry.js → p-81655182.entry.js} +1 -1
  283. package/dist/lime-crm-building-blocks/p-8238723b.entry.js +1 -0
  284. package/dist/lime-crm-building-blocks/{p-2a3098a7.entry.js → p-898b097e.entry.js} +1 -1
  285. package/dist/lime-crm-building-blocks/{p-46c00a4b.entry.js → p-8d14a58a.entry.js} +1 -1
  286. package/dist/lime-crm-building-blocks/{p-48deac2a.entry.js → p-8d5311e4.entry.js} +1 -1
  287. package/dist/lime-crm-building-blocks/{p-08eb070d.entry.js → p-8ed7b025.entry.js} +1 -1
  288. package/dist/lime-crm-building-blocks/p-99464fa7.entry.js +1 -0
  289. package/dist/lime-crm-building-blocks/{p-C_tMNOSt.js → p-BKtEmDNs.js} +1 -1
  290. package/dist/lime-crm-building-blocks/{p-BV8CPdbi.js → p-BbFGcMnU.js} +1 -1
  291. package/dist/lime-crm-building-blocks/{p-C84z8BwL.js → p-CqRNpSRV.js} +1 -1
  292. package/dist/lime-crm-building-blocks/p-D3UYWGdn.js +1 -0
  293. package/dist/lime-crm-building-blocks/p-DYpn0EkA.js +2 -0
  294. package/dist/lime-crm-building-blocks/{p-BsNp-hBU.js → p-DzXJyKRS.js} +1 -1
  295. package/dist/lime-crm-building-blocks/{p-d910699a.entry.js → p-a5850f04.entry.js} +1 -1
  296. package/dist/lime-crm-building-blocks/{p-8d3fa274.entry.js → p-a6103d04.entry.js} +1 -1
  297. package/dist/lime-crm-building-blocks/{p-b24b7338.entry.js → p-b01f2045.entry.js} +1 -1
  298. package/dist/lime-crm-building-blocks/{p-731820f0.entry.js → p-b16bbda2.entry.js} +1 -1
  299. package/dist/lime-crm-building-blocks/{p-dabb227b.entry.js → p-b424f55f.entry.js} +1 -1
  300. package/dist/lime-crm-building-blocks/p-b95b94b6.entry.js +1 -0
  301. package/dist/lime-crm-building-blocks/{p-2a46f4be.entry.js → p-bd264cfa.entry.js} +1 -1
  302. package/dist/lime-crm-building-blocks/{p-9e5862de.entry.js → p-c7c5991f.entry.js} +1 -1
  303. package/dist/lime-crm-building-blocks/{p-c9003b76.entry.js → p-dc1d543d.entry.js} +1 -1
  304. package/dist/lime-crm-building-blocks/{p-e4fe45d3.entry.js → p-dc3a86f3.entry.js} +1 -1
  305. package/dist/lime-crm-building-blocks/p-ec335be5.entry.js +1 -0
  306. package/dist/lime-crm-building-blocks/{p-5743a74e.entry.js → p-ecd0280d.entry.js} +1 -1
  307. package/dist/lime-crm-building-blocks/p-efab4f7e.entry.js +1 -0
  308. package/dist/lime-crm-building-blocks/{p-9f7992b0.entry.js → p-efb70fbb.entry.js} +1 -1
  309. package/dist/lime-crm-building-blocks/{p-3263f8d5.entry.js → p-f011673a.entry.js} +1 -1
  310. package/dist/lime-crm-building-blocks/p-y_s8hZmV.js +1 -0
  311. package/dist/types/components/lime-query-builder/expressions/filter-group-logic.d.ts +56 -54
  312. package/dist/types/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.d.ts +29 -0
  313. package/dist/types/components/lime-query-builder/expressions/lime-query-filter-comparison.d.ts +12 -9
  314. package/dist/types/components/lime-query-builder/expressions/lime-query-filter-expression.d.ts +4 -0
  315. package/dist/types/components/lime-query-builder/expressions/lime-query-filter-group.d.ts +14 -30
  316. package/dist/types/components/lime-query-builder/expressions/lime-query-operators.d.ts +12 -0
  317. package/dist/types/components/lime-query-builder/property-selector/property-selector.d.ts +1 -0
  318. package/dist/types/components/rule-editor/rule-editor-views.d.ts +2 -1
  319. package/dist/types/components/rule-editor/rule-editor.d.ts +54 -3
  320. package/dist/types/components/rule-editor/view-helpers.d.ts +8 -1
  321. package/dist/types/components.d.ts +136 -49
  322. package/package.json +2 -2
  323. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-expression.css +0 -137
  324. package/dist/lime-crm-building-blocks/p-6002654f.entry.js +0 -1
  325. package/dist/lime-crm-building-blocks/p-7acd06eb.entry.js +0 -1
  326. package/dist/lime-crm-building-blocks/p-89b43ac5.entry.js +0 -1
  327. package/dist/lime-crm-building-blocks/p-BIwHMk6j.js +0 -2
  328. package/dist/lime-crm-building-blocks/p-a3556715.entry.js +0 -1
  329. package/dist/lime-crm-building-blocks/p-bd6e12e6.entry.js +0 -1
  330. package/dist/lime-crm-building-blocks/p-c6a913af.entry.js +0 -1
  331. package/dist/lime-crm-building-blocks/p-c6fee2bd.entry.js +0 -1
@@ -38,9 +38,9 @@ export class OrderByItemComponent {
38
38
  render() {
39
39
  const propertyPath = Object.keys(this.item)[0] || '';
40
40
  const direction = this.item[propertyPath] || 'ASC';
41
- return (h(Host, { key: 'f8b1d7505feec325eae8668672afe3768a4892aa' }, h("limebb-property-selector", { key: '03f71edd8692c6a46612f87a9df21aabd2bf71eb', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: propertyPath, required: true, onChange: this.handlePathChange }), h("div", { key: 'a1a6db7060f8dc862d7acfb5750861293e2411d3', class: "control-buttons" }, h("limel-icon-button", { key: '76703911899c38d71f116dc8256d00cb7c937971', icon: direction === 'ASC'
41
+ return (h(Host, { key: '8d91628467c6ec1912d1f87a7922464e5341c8e1' }, h("limebb-property-selector", { key: '26e7729c7c43f91e02446ad45aa59c56922b377c', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: propertyPath, required: true, onChange: this.handlePathChange }), h("div", { key: '1926ad94ddb9d4c2112007068ab4cbf38057622b', class: "control-buttons" }, h("limel-icon-button", { key: '96e4595c737c68ccb30d90295ba6115ec2c7a014', icon: direction === 'ASC'
42
42
  ? 'sort_ascending'
43
- : 'sort_descending', label: direction === 'ASC' ? 'Ascending' : 'Descending', onClick: this.handleToggleDirection }), h("limel-icon-button", { key: '91a3370d5c6151370b96e7b67d59f226ad526f21', icon: "trash", label: "Remove", onClick: this.handleRemove }))));
43
+ : 'sort_descending', label: direction === 'ASC' ? 'Ascending' : 'Descending', onClick: this.handleToggleDirection }), h("limel-icon-button", { key: 'eee7957506516cc344007ae12a94381a33f9171b', icon: "trash", label: "Remove", onClick: this.handleRemove }))));
44
44
  }
45
45
  static get is() { return "limebb-lime-query-order-by-item"; }
46
46
  static get encapsulation() { return "shadow"; }
@@ -56,6 +56,23 @@ export class PropertySelector {
56
56
  this.isOpen = true;
57
57
  }
58
58
  };
59
+ this.handleChipSetBlur = () => {
60
+ var _a;
61
+ // Ignore blurs caused by `limel-menu` auto-focusing its list/items
62
+ // for keyboard navigation when it opens. That focus shift moves into
63
+ // *our* menu surface (portal-rendered, so `document.activeElement`
64
+ // reports it as `LIMEL-MENU-LIST`) — the user hasn't navigated away.
65
+ const active = document.activeElement;
66
+ if ((_a = active === null || active === void 0 ? void 0 : active.tagName) === null || _a === void 0 ? void 0 : _a.startsWith('LIMEL-MENU')) {
67
+ return;
68
+ }
69
+ // When focus genuinely leaves the chip-set (user clicked Value,
70
+ // closed the popover, etc.), close the menu so the next focus can
71
+ // re-open it cleanly. Without this, `isOpen` stays stuck `true` and
72
+ // subsequent focus events short-circuit on the `!this.isOpen` guard.
73
+ this.isOpen = false;
74
+ this.navigationPath = '';
75
+ };
59
76
  this.handleSelect = (event) => {
60
77
  event.stopPropagation();
61
78
  const selectedPath = event.detail.value;
@@ -128,7 +145,7 @@ export class PropertySelector {
128
145
  return null;
129
146
  }
130
147
  const chips = this.getChipsForPath(this.navigationPath || this.value || '');
131
- return (h("limel-menu", { items: this.menuItems, open: this.isOpen, emptyResultMessage: "No available properties", surfaceWidth: "inherit-from-trigger", openDirection: "bottom-end", onSelect: this.handleSelect, onNavigateMenu: this.handleNavigateMenu, onCancel: this.handleCancel }, h("div", { slot: "trigger" }, h("div", { onClick: this.handleChipSetWrapperClick }, h("limel-chip-set", { type: "input", label: this.label, value: chips, required: this.required, helperText: this.helperText, delimiter: "\u203A", maxItems: 1, onChange: this.handleChipSetChange, onFocus: this.handleChipSetFocus })))));
148
+ return (h("limel-menu", { items: this.menuItems, open: this.isOpen, emptyResultMessage: "No available properties", surfaceWidth: "inherit-from-trigger", openDirection: "bottom-end", onSelect: this.handleSelect, onNavigateMenu: this.handleNavigateMenu, onCancel: this.handleCancel }, h("div", { slot: "trigger" }, h("div", { onClick: this.handleChipSetWrapperClick }, h("limel-chip-set", { type: "input", label: this.label, value: chips, required: this.required, helperText: this.helperText, delimiter: "\u203A", maxItems: 1, onChange: this.handleChipSetChange, onFocus: this.handleChipSetFocus, onStopEdit: this.handleChipSetBlur })))));
132
149
  }
133
150
  loadMenuItems() {
134
151
  // Get the limetype we're currently navigating in
@@ -219,30 +236,36 @@ export class PropertySelector {
219
236
  return [];
220
237
  }
221
238
  const parts = path.split('.');
222
- const chips = [];
239
+ const labels = [];
240
+ let leafIcon;
223
241
  let currentLimetype = this.limetypes[this.limetype];
224
- let currentPath = '';
225
242
  for (const part of parts) {
226
- currentPath = currentPath ? `${currentPath}.${part}` : part;
227
- // Use getNormalizedProperties to include _id and _timestamp
228
243
  const normalizedProperties = getNormalizedProperties(currentLimetype);
229
244
  const property = normalizedProperties[part];
230
- if (property) {
231
- chips.push({
232
- id: currentPath,
233
- text: property.localname || part,
234
- icon: this.getIconForProperty(property),
235
- value: currentPath,
236
- });
237
- if (property.relation) {
238
- currentLimetype = property.relation.getLimetype();
239
- }
245
+ if (!property) {
246
+ continue;
247
+ }
248
+ labels.push(property.localname || part);
249
+ leafIcon = this.getIconForProperty(property);
250
+ if (property.relation) {
251
+ currentLimetype = property.relation.getLimetype();
240
252
  }
241
253
  }
242
- return chips;
254
+ if (labels.length === 0) {
255
+ return [];
256
+ }
257
+ return [
258
+ {
259
+ id: path,
260
+ text: labels.join('.'),
261
+ icon: leafIcon,
262
+ value: path,
263
+ },
264
+ ];
243
265
  }
244
266
  static get is() { return "limebb-property-selector"; }
245
267
  static get encapsulation() { return "shadow"; }
268
+ static get delegatesFocus() { return true; }
246
269
  static get originalStyleUrls() {
247
270
  return {
248
271
  "$": ["property-selector.scss"]
@@ -66,7 +66,7 @@ export class ResponseFormatItem {
66
66
  }
67
67
  render() {
68
68
  return [
69
- h("div", { key: '1fc4a0dbdaa2b362e56a53a82483ca3afe21f6bf', class: "property-controls" }, h("div", { key: '5269250030c559943d4f610734d1ac490a8355ad', class: "property-path" }, h("limebb-property-selector", { key: '2602b66035849922fc413cbc0c82b8163a928ecd', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: this.item.path, required: true, onChange: this.handlePathChange }), h("div", { key: '4974a2c7ff30c527b0328d0fbed3b8bac519fdcd', class: "input-grid" }, this.renderAliasInput()), h("div", { key: 'fb058b3a5d5599c387b852e409bd5ac8e8afbc30', class: "input-grid" }, this.renderDescriptionInput()), h("div", { key: '97a5e7e2ed68fdbac160bdd60498541f3a16371d', class: "button-group" }, this.renderAliasButton(), this.renderDescriptionButton())), h("limel-icon-button", { key: '42ab29e5e8e5fc08e90bc4afe6c6d504e434d33e', icon: "trash", label: "Remove property", onClick: this.handleRemove })),
69
+ h("div", { key: '98518fb21bacceef31e398faf0e7d66d92152a9f', class: "property-controls" }, h("div", { key: '1d636436ce63b930abdfb40600106d0d8f643663', class: "property-path" }, h("limebb-property-selector", { key: '3e0fa6a5c5c414c70e38b52f7157a806be8358df', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: this.item.path, required: true, onChange: this.handlePathChange }), h("div", { key: '03bc814455e46812ad7365ddf893431e97b255df', class: "input-grid" }, this.renderAliasInput()), h("div", { key: '8d6b47ff44a01288e9875494b1fea5a57649205f', class: "input-grid" }, this.renderDescriptionInput()), h("div", { key: 'e2e4741bc80c0fef0741f153c7183b8a12da7aa9', class: "button-group" }, this.renderAliasButton(), this.renderDescriptionButton())), h("limel-icon-button", { key: '7f204e6331dbcd0e8e62a5e9a61676f62b14a045', icon: "trash", label: "Remove property", onClick: this.handleRemove })),
70
70
  ];
71
71
  }
72
72
  renderAliasButton() {
@@ -5,8 +5,8 @@ import { h } from "@stencil/core";
5
5
  export class LiveDocsInfo {
6
6
  render() {
7
7
  return [
8
- h("div", { key: 'ace2c3e78a926a405e6bb9a15db259953820ca1a', class: "header" }, h("limel-icon", { key: 'd1d94917a24d4b066ee2a389082a48c3b3ab29af', name: "not_showing_video_frames" }), h("h2", { key: '3d164cdece408fef99df8a0c18b03a33118f6737' }, "Viewing this file type requires ", h("em", { key: '3f46b83b55eb9474df36b18c71cd02a12696a41f' }, "Live Docs"))),
9
- h("p", { key: 'e691f783583a0a3d421a033087accf825981e935' }, h("em", { key: '9bd0d29362de47d35cdc1e765c85dfd2c459b5d6' }, "Live Docs"), " not only enables you to view many file formats such as Microsoft Office documents, but it also empowers you to edit them right in the CRM. No need to download anything on your device!", h("a", { key: 'e4a575a382890c7c52e78dd363e695f2b97b9a9f', target: "_blank", href: "https://www.lime-technologies.com/en/lime-crm/live-docs/" }, "Learn more")),
8
+ h("div", { key: '36018d23b4f56d1ef1cba8aaf6d24c9e1913fc51', class: "header" }, h("limel-icon", { key: 'e262d9b9b22f4ab604f8786ae20964da908c5179', name: "not_showing_video_frames" }), h("h2", { key: '283107fa6651f1de7308d805b3aa48c479c1b281' }, "Viewing this file type requires ", h("em", { key: '4bb7d2d83e4ae2c073f35038827b5b606448af2d' }, "Live Docs"))),
9
+ h("p", { key: '8f5a3fd0b9958f4bdaa11c0f3b82990706100c65' }, h("em", { key: '23aed14b3a3b54c82f63f2fa4aa6016290aebf26' }, "Live Docs"), " not only enables you to view many file formats such as Microsoft Office documents, but it also empowers you to edit them right in the CRM. No need to download anything on your device!", h("a", { key: 'a018062eefaa0c9b3fff92504e330700979cc407', target: "_blank", href: "https://www.lime-technologies.com/en/lime-crm/live-docs/" }, "Learn more")),
10
10
  ];
11
11
  }
12
12
  static get is() { return "limebb-live-docs-info"; }
@@ -53,7 +53,7 @@ export class LocalePicker {
53
53
  const value = this.value;
54
54
  selectedOptions = options.find((option) => option.value === value);
55
55
  }
56
- return (h("limel-select", { key: 'b5aad60b10237826f58f096a343beb7fcbfe2b9b', value: selectedOptions, options: sortBy(options, 'text'), helperText: this.helperText, label: this.label, required: this.required, disabled: this.disabled, readonly: this.readonly, onChange: this.handleChange, multiple: this.multipleChoice }));
56
+ return (h("limel-select", { key: 'b42d403250d57155547eaa97731bfc471596c224', value: selectedOptions, options: sortBy(options, 'text'), helperText: this.helperText, label: this.label, required: this.required, disabled: this.disabled, readonly: this.readonly, onChange: this.handleChange, multiple: this.multipleChoice }));
57
57
  }
58
58
  static get is() { return "limebb-locale-picker"; }
59
59
  static get encapsulation() { return "shadow"; }
@@ -56,7 +56,7 @@ export class NotificationListItem {
56
56
  }
57
57
  render() {
58
58
  var _a, _b;
59
- return (h(Host, { key: '951b650d804bfe49133743bc461e344d9dd0324b', id: this.item.id, class: {
59
+ return (h(Host, { key: 'dff09ced1e8ae05c746912e249f2557de6fce96e', id: this.item.id, class: {
60
60
  'is-clickable': this.isItemClickable(),
61
61
  'is-read': !!((_a = this.item) === null || _a === void 0 ? void 0 : _a.read),
62
62
  'is-selected': !!((_b = this.item) === null || _b === void 0 ? void 0 : _b.selected),
@@ -108,11 +108,11 @@ export class PercentageVisualizer {
108
108
  render() {
109
109
  const normalizedValue = this.getNormalizedValue();
110
110
  const zeroPoint = this.getZeroPointPosition();
111
- return (h(Host, { key: 'c57fbde9785115a91c28db17ccebee42a335a80f', class: this.getContainerClassList(), style: {
111
+ return (h(Host, { key: 'ea0690be403aa9c1e4e1fc82b788ad159a8a4cc3', class: this.getContainerClassList(), style: {
112
112
  '--limebb-percentage-visualizer-zero-point-position': `${zeroPoint}%`,
113
113
  '--limebb-percentage-visualizer-width': `${Math.abs(normalizedValue)}%`,
114
114
  '--limebb-percentage-visualizer-rotate': `${normalizedValue >= 0 ? '0deg' : '180deg'}`,
115
- } }, h("limel-notched-outline", { key: '27d6dada52041ce9ebec9d987bae303afacfff89', tabIndex: 0, role: "meter", "aria-valuemin": this.rangeMin, "aria-valuemax": this.rangeMax, "aria-valuenow": this.numValue, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-controls": this.helperTextId }, h("div", { key: '2afd6d0ff95eace6fac444fd3e2732d22ab97728', slot: "content" }, this.renderVisualization())), this.renderHelperLine()));
115
+ } }, h("limel-notched-outline", { key: '77b09269ca09806a33b6297692ca7cf79ee68a53', tabIndex: 0, role: "meter", "aria-valuemin": this.rangeMin, "aria-valuemax": this.rangeMax, "aria-valuenow": this.numValue, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-controls": this.helperTextId }, h("div", { key: '7b3905e69e8d5b372f7736a9ec40576a23b10385', slot: "content" }, this.renderVisualization())), this.renderHelperLine()));
116
116
  }
117
117
  renderVisualization() {
118
118
  if (this.reducePresence && (this.numValue === 0 || !this.hasValue())) {
@@ -36,10 +36,10 @@ export const GroupChipsView = ({ groupNode, groupPath, chipChildren, ctx }) => {
36
36
  const value = chipChildren.map((entry) => {
37
37
  const token = chipTokenFor(entry.index);
38
38
  chipsByToken.set(token, entry);
39
- const base = resolveItem(ctx.primitiveOptions, entry.ref.id);
39
+ const base = resolveItem(ctx.allPrimitiveOptions, entry.ref.id);
40
40
  return Object.assign(Object.assign({}, base), { text: entry.isNegated ? `¬ ${base.text}` : base.text, value: token });
41
41
  });
42
- const searcher = createSearcher(ctx.primitiveOptions);
42
+ const searcher = createSearcher(ctx.availablePrimitiveOptions);
43
43
  const openChip = findOpenChip(chipChildren, groupPath, ctx.openChipPath);
44
44
  const delimiter = groupNode.type === 'all' ? '&' : '|';
45
45
  return (h("limel-popover", { class: "rule-node__chips-popover", open: openChip !== null, openDirection: "bottom-start", onClose: ctx.onPopoverClose }, h("div", { slot: "trigger", class: "rule-node__chips" }, h("limel-picker", { multiple: true, label: ctx.translator.get('webclient.rule-editor.rules-label'), value: value, searcher: searcher, delimiter: delimiter, readonly: ctx.readonly, disabled: ctx.disabled, onChange: chipsChangeHandler(groupNode, groupPath, chipsByToken, ctx), onInteract: chipInteractHandler(groupPath, chipsByToken, ctx) })), h("div", null, renderChipPopoverContent(openChip, groupPath, ctx))));
@@ -37,7 +37,7 @@ export class RuleChipPopover {
37
37
  };
38
38
  }
39
39
  render() {
40
- return (h("div", { key: '14ab805ec2930bb31fa1aeb4a987b97a9c816f3c', class: "popover" }, this.renderHeader(), this.renderBody()));
40
+ return (h("div", { key: 'ca7901be2a99590faddea0c678d149b13b5d564f', class: "popover" }, this.renderHeader(), this.renderBody()));
41
41
  }
42
42
  renderHeader() {
43
43
  var _a, _b, _c, _d;
@@ -67,6 +67,7 @@
67
67
 
68
68
  limel-popover.rule-node__chips-popover {
69
69
  display: contents;
70
+ --popover-surface-width: min(calc(100vw - 4rem), 50rem);
70
71
  }
71
72
 
72
73
  .rule-node__chips {
@@ -2,7 +2,7 @@ import { h, } from "@stencil/core";
2
2
  import { PlatformServiceName, } from "@limetech/lime-web-components";
3
3
  import { deleteNode, replaceNode, updateArgs, } from "./rule-operations";
4
4
  import { extractGroup, RuleNodeView, } from "./rule-editor-views";
5
- import { createPrimitiveOptions } from "./view-helpers";
5
+ import { createPrimitiveOptions, primitiveReadsCovered } from "./view-helpers";
6
6
  /**
7
7
  * Tree editor for {@link Rule}.
8
8
  *
@@ -19,6 +19,14 @@ import { createPrimitiveOptions } from "./view-helpers";
19
19
  * forwards it to `RuleRegistry.validate` so `missing-slot` diagnostics
20
20
  * surface inline on the offending nodes.
21
21
  *
22
+ * The palette is surface-aware. When the editor is mounted in the DOM,
23
+ * it walks its host's ancestors through the context registry and unions
24
+ * the result with `availableContexts` to determine which context slots
25
+ * are reachable where the rule runs. Primitives whose `reads` slots
26
+ * aren't all reachable are hidden from the add palette, so an author
27
+ * can't pick a primitive that would silently fail closed at evaluation
28
+ * time.
29
+ *
22
30
  * @exampleComponent limebb-example-rule-editor
23
31
  *
24
32
  * @alpha
@@ -29,8 +37,11 @@ export class RuleEditor {
29
37
  this.issues = [];
30
38
  this.openChipPath = null;
31
39
  this.metadataById = new Map();
32
- this.primitiveOptions = [];
40
+ this.allPrimitiveOptions = [];
41
+ this.availablePrimitiveOptions = [];
42
+ this.reachableSlots = new Set();
33
43
  this.normalizedCache = null;
44
+ this.hasLoaded = false;
34
45
  this.handleDelete = (path) => {
35
46
  this.openChipPath = null;
36
47
  this.emitIfChanged(deleteNode(this.normalizedValue, path));
@@ -49,10 +60,30 @@ export class RuleEditor {
49
60
  };
50
61
  }
51
62
  componentWillLoad() {
63
+ this.rebuildFromRegistries();
64
+ }
65
+ rebuildFromRegistries() {
66
+ this.computeReachableSlots();
52
67
  this.indexMetadata();
68
+ this.rebuildAvailableOptions();
69
+ this.runValidation();
70
+ }
71
+ /**
72
+ * Re-walk reachable slots when the editor is re-attached to the DOM,
73
+ * e.g. moved between surfaces. The reachable set depends on the host's
74
+ * ancestors, so a move can change which primitives the palette offers.
75
+ * Skipped on the first connect — `componentWillLoad` covers that.
76
+ */
77
+ connectedCallback() {
78
+ if (!this.hasLoaded) {
79
+ return;
80
+ }
81
+ this.computeReachableSlots();
82
+ this.rebuildAvailableOptions();
53
83
  this.runValidation();
54
84
  }
55
85
  componentDidLoad() {
86
+ this.hasLoaded = true;
56
87
  this.emitNormalization();
57
88
  }
58
89
  onValueChange() {
@@ -62,14 +93,14 @@ export class RuleEditor {
62
93
  this.runValidation();
63
94
  }
64
95
  onAvailableContextsChange() {
65
- this.runValidation();
96
+ this.rebuildFromRegistries();
66
97
  }
67
98
  render() {
68
99
  const containerClasses = {
69
100
  'rule-editor': true,
70
101
  'rule-editor--disabled': this.disabled,
71
102
  };
72
- return (h("div", { key: '8e0da39f6544c86de0143e91a6c48c9f2654315f', class: containerClasses }, this.renderLabel(), h(RuleNodeView, { key: 'cd093f5dc5a9b747036f581e6230f1205cf834e6', node: this.normalizedValue, path: [], ctx: this.createRenderContext() }), this.renderHelperText()));
103
+ return (h("div", { key: 'f1479b58e37918312e4e47031e6fd3e7d6129449', class: containerClasses }, this.renderLabel(), h(RuleNodeView, { key: '3c49ff3c08a6f0b51a4ab6608521d571a2ec1625', node: this.normalizedValue, path: [], ctx: this.createRenderContext() }), this.renderHelperText()));
73
104
  }
74
105
  renderLabel() {
75
106
  if (!this.label) {
@@ -87,13 +118,14 @@ export class RuleEditor {
87
118
  return {
88
119
  issues: this.issues,
89
120
  metadataById: this.metadataById,
90
- primitiveOptions: this.primitiveOptions,
121
+ allPrimitiveOptions: this.allPrimitiveOptions,
122
+ availablePrimitiveOptions: this.availablePrimitiveOptions,
91
123
  isMutable: !this.readonly && !this.disabled,
92
124
  readonly: this.readonly,
93
125
  disabled: this.disabled,
94
126
  platform: this.platform,
95
127
  context: this.context,
96
- translator: this.platform.get(PlatformServiceName.Translate),
128
+ translator: this.translator,
97
129
  openChipPath: this.openChipPath,
98
130
  onDelete: this.handleDelete,
99
131
  onUpdateArgs: this.handleUpdateArgs,
@@ -106,14 +138,66 @@ export class RuleEditor {
106
138
  var _a, _b, _c;
107
139
  const metadata = (_c = (_b = (_a = this.ruleRegistry).listMetadata) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : [];
108
140
  this.metadataById = new Map(metadata.map((item) => [item.id, item]));
109
- this.primitiveOptions = createPrimitiveOptions(this.metadataById, this.platform.get(PlatformServiceName.Translate));
141
+ this.allPrimitiveOptions = createPrimitiveOptions(this.metadataById, this.translator);
142
+ }
143
+ /**
144
+ * Recompute the cached add-palette options. The inputs — indexed
145
+ * metadata, the reachable slot set, and the translator — only change
146
+ * in `rebuildFromRegistries` and `connectedCallback`, so caching here
147
+ * keeps `render` from rebuilding and sorting the list every pass.
148
+ */
149
+ rebuildAvailableOptions() {
150
+ this.availablePrimitiveOptions = createPrimitiveOptions(this.availablePrimitiveMetadata(), this.translator);
151
+ }
152
+ /**
153
+ * The subset of registered metadata offered for adding in the
154
+ * palette: primitives whose `reads` aren't fully covered by the
155
+ * reachable slots are dropped. Filtering only the palette — not the
156
+ * full `allPrimitiveOptions` — keeps already-placed chips resolving
157
+ * to their proper title even when their read slot isn't reachable.
158
+ */
159
+ availablePrimitiveMetadata() {
160
+ const filtered = new Map();
161
+ for (const [id, meta] of this.metadataById) {
162
+ if (primitiveReadsCovered(meta, this.reachableSlots)) {
163
+ filtered.set(id, meta);
164
+ }
165
+ }
166
+ return filtered;
167
+ }
168
+ /**
169
+ * Recompute the context slots reachable from the editor's mount
170
+ * point, unioning two sources:
171
+ *
172
+ * - the registered keys the resolver answers for — it walks the DOM
173
+ * from the host (and the session-wide fallbacks) the same way the
174
+ * runtime scope does, so a key resolves only when an ancestor
175
+ * actually provides it;
176
+ * - `availableContexts`, a hardcoded hint for keys (notably
177
+ * `limeobject`) that have no session-wide fallback and are provided
178
+ * by a different application than the one hosting the editor, so the
179
+ * DOM walk can't discover them.
180
+ */
181
+ computeReachableSlots() {
182
+ var _a;
183
+ const contextRegistry = this.contextRegistry;
184
+ const resolvable = contextRegistry
185
+ .list()
186
+ .map((metadata) => metadata.id)
187
+ .filter((key) => contextRegistry.get(key, this.host) !== undefined);
188
+ this.reachableSlots = new Set([
189
+ ...resolvable,
190
+ ...((_a = this.availableContexts) !== null && _a !== void 0 ? _a : []),
191
+ ]);
110
192
  }
111
193
  runValidation() {
112
194
  if (!this.value) {
113
195
  this.issues = [];
114
196
  return;
115
197
  }
116
- const result = this.ruleRegistry.validate(this.normalizedValue, this.availableContexts);
198
+ const result = this.ruleRegistry.validate(this.normalizedValue, [
199
+ ...this.reachableSlots,
200
+ ]);
117
201
  this.issues = result.ok ? [] : result.issues;
118
202
  }
119
203
  emitIfChanged(next) {
@@ -164,6 +248,12 @@ export class RuleEditor {
164
248
  get ruleRegistry() {
165
249
  return this.platform.get(PlatformServiceName.RuleRegistry);
166
250
  }
251
+ get translator() {
252
+ return this.platform.get(PlatformServiceName.Translate);
253
+ }
254
+ get contextRegistry() {
255
+ return this.platform.get(PlatformServiceName.ContextRegistry);
256
+ }
167
257
  static get is() { return "limebb-rule-editor"; }
168
258
  static get encapsulation() { return "shadow"; }
169
259
  static get originalStyleUrls() {
@@ -272,7 +362,7 @@ export class RuleEditor {
272
362
  "optional": true,
273
363
  "docs": {
274
364
  "tags": [],
275
- "text": "Context keys the caller knows will be available where the rule\nruns. Forwarded to the rule registry's `validate` method so\n`missing-slot` issues surface inline. Leave unset when the\nevaluation context is not known (typical for editors that target\nthe saved-rule library)."
365
+ "text": "Context keys the caller knows will be available where the rule\nruns. Forwarded to the rule registry's `validate` method so\n`missing-slot` issues surface inline. Leave unset when the\nevaluation context is not known \u2014 typical for editors that target\nthe saved-rule library."
276
366
  },
277
367
  "getter": false,
278
368
  "setter": false
@@ -392,7 +482,8 @@ export class RuleEditor {
392
482
  static get states() {
393
483
  return {
394
484
  "issues": {},
395
- "openChipPath": {}
485
+ "openChipPath": {},
486
+ "availablePrimitiveOptions": {}
396
487
  };
397
488
  }
398
489
  static get events() {
@@ -420,6 +511,7 @@ export class RuleEditor {
420
511
  }
421
512
  }];
422
513
  }
514
+ static get elementRef() { return "host"; }
423
515
  static get watchers() {
424
516
  return [{
425
517
  "propName": "value",
@@ -36,6 +36,15 @@ export function createPrimitiveOptions(metadataById, translator) {
36
36
  }))
37
37
  .sort((a, b) => a.text.localeCompare(b.text));
38
38
  }
39
+ /**
40
+ * Whether every context key a primitive reads is in the reachable set.
41
+ * A primitive that reads nothing is always covered.
42
+ * @param meta
43
+ * @param reachable
44
+ */
45
+ export function primitiveReadsCovered(meta, reachable) {
46
+ return meta.reads.every((key) => reachable.has(key));
47
+ }
39
48
  /**
40
49
  * Find the picker item for `id`, falling back to a placeholder marked
41
50
  * with the unknown-primitive icon when the id isn't in the registry.
@@ -26,7 +26,7 @@ export class RuleGate {
26
26
  this.compileAndEvaluate();
27
27
  }
28
28
  render() {
29
- return (h(Host, { key: '365df6908301371b8b964671382ad936971b6624', hidden: !this.shouldRender }, h("slot", { key: 'ca7c2a9febf0189dfae882a2ae894d1d0262a213' })));
29
+ return (h(Host, { key: '8fe8b9fad90211b80b4672563f6d599ce1cb11c3', hidden: !this.shouldRender }, h("slot", { key: 'f434d25308b85fd084d369ccf2b0e22bd3513210' })));
30
30
  }
31
31
  get ruleRegistry() {
32
32
  return this.platform.get(PlatformServiceName.RuleRegistry);
@@ -128,9 +128,9 @@ export class SummaryPopover {
128
128
  top: '0.125rem',
129
129
  right: '0.125rem',
130
130
  };
131
- return (h("limel-popover", { key: '901e726d37719331f2b30df6e35f2375951c161f', style: {
131
+ return (h("limel-popover", { key: '7e4e777539c58689faf6a0e69c5f2cf8ed771641', style: {
132
132
  '--limebb-summary-popover-timeout': `${this.triggerDelay}ms`,
133
- }, open: this.isPopoverOpen, onClose: this.onPopoverClose, openDirection: this.openDirection }, h("div", { key: 'a9a73b0a0f16cf12aaa6fa3434071c56a26a1038', slot: "trigger", onMouseEnter: this.openPopoverWithDelay, onMouseLeave: this.resetTimeout, onFocusin: this.openPopoverWithDelay }, h("slot", { key: '594bcc9e419e33ef97fd6ca863cf44a67617fa48', name: "trigger" }), h("div", { key: 'a6f548eeb737f4392e2c938682a1c9a509523658', class: "opening-countdown-indicator" })), this.renderCard(closeButtonStyle)));
133
+ }, open: this.isPopoverOpen, onClose: this.onPopoverClose, openDirection: this.openDirection }, h("div", { key: '21e0e2569a1abdb404c0c6dbd80714f7ff794ca1', slot: "trigger", onMouseEnter: this.openPopoverWithDelay, onMouseLeave: this.resetTimeout, onFocusin: this.openPopoverWithDelay }, h("slot", { key: 'c771e4d9aa10acd6a0a044be4d01d611e22bcc13', name: "trigger" }), h("div", { key: '0c25b9418a311fdf7b700f76a8dbadeea5fb8010', class: "opening-countdown-indicator" })), this.renderCard(closeButtonStyle)));
134
134
  }
135
135
  renderCard(closeButtonStyle) {
136
136
  return (h("limel-card", { style: {
@@ -13,8 +13,8 @@ export class MentionGroupCounter {
13
13
  render() {
14
14
  const label = this.getLabel();
15
15
  return [
16
- h("span", { key: 'b2dca0d50a70b8c7bf187ef2f6c29960c4caf563', id: this.tooltipId }, label),
17
- h("limel-tooltip", { key: '97adc0a2b91b830a6fe040712cbdfc1d9839c8f8', elementId: this.tooltipId, label: label, helperLabel: this.helperLabel }),
16
+ h("span", { key: '24bc1b7b14ada4e19a4f560455cbb26bfd0b83b7', id: this.tooltipId }, label),
17
+ h("limel-tooltip", { key: '81a8ce747eea55013b9968a2f3eceb652257355f', elementId: this.tooltipId, label: label, helperLabel: this.helperLabel }),
18
18
  ];
19
19
  }
20
20
  getLabel() {
@@ -391,7 +391,7 @@ export class LimeBBTextEditor {
391
391
  }
392
392
  render() {
393
393
  return [
394
- h("limel-text-editor", { key: '3ef0538b3df2cfbd3e363868add7dad46559e035', ref: (el) => (this.textEditor = el), tabindex: this.disabled ? -1 : 0, value: this.value, contentType: this.contentType, customElements: this.registeredCustomElements, "aria-disabled": this.disabled, language: this.language, triggers: this.registeredTriggers, onTriggerStart: this.handleTriggerStart, onTriggerStop: this.handleTriggerStop, onTriggerChange: this.handleTriggerChange, onImagePasted: this.handleImagePasted, onMetadataChange: this.handleMetadataChange, ui: this.ui, allowResize: this.allowResize, required: this.required, disabled: this.disabled, readonly: this.readonly, helperText: this.helperText, placeholder: this.placeholder, label: this.label, invalid: this.invalid }),
394
+ h("limel-text-editor", { key: '58b3a06b62159010bab0d99fe48ae3d9ebc0bc5e', ref: (el) => (this.textEditor = el), tabindex: this.disabled ? -1 : 0, value: this.value, contentType: this.contentType, customElements: this.registeredCustomElements, "aria-disabled": this.disabled, language: this.language, triggers: this.registeredTriggers, onTriggerStart: this.handleTriggerStart, onTriggerStop: this.handleTriggerStop, onTriggerChange: this.handleTriggerChange, onImagePasted: this.handleImagePasted, onMetadataChange: this.handleMetadataChange, ui: this.ui, allowResize: this.allowResize, required: this.required, disabled: this.disabled, readonly: this.readonly, helperText: this.helperText, placeholder: this.placeholder, label: this.label, invalid: this.invalid }),
395
395
  this.renderPicker(),
396
396
  ];
397
397
  }
@@ -69,7 +69,7 @@ export class TrendIndicator {
69
69
  this.numValue = this.parseValue(this.value);
70
70
  }
71
71
  render() {
72
- return (h(Host, { key: 'fd3bce29b7cd49a4642904fa630616b10e7d55b8', class: this.getContainerClassList() }, h("limel-notched-outline", { key: '3502f060569abb0e12c5b6bca84fdf9b190e840f', id: this.tooltipId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, "aria-controls": this.helperTextId }, h("div", { key: '4f007fec33a71fe2205c1fbb861b45b8d41f440e', slot: "content", tabIndex: 0 }, this.renderVisualization())), this.renderHelperLine(), this.renderTooltip()));
72
+ return (h(Host, { key: 'ea5709dccccd0ca07684bd221e7f5fe79b76dae4', class: this.getContainerClassList() }, h("limel-notched-outline", { key: '952a07d4e934d589460a8848a52bad130f351cdf', id: this.tooltipId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, "aria-controls": this.helperTextId }, h("div", { key: 'a620318b3edea23636d656654da65c9532b4a5f0', slot: "content", tabIndex: 0 }, this.renderVisualization())), this.renderHelperLine(), this.renderTooltip()));
73
73
  }
74
74
  renderVisualization() {
75
75
  if (this.reducePresence && (this.numValue === 0 || !this.hasValue())) {
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as i,h as n,Host as t,transformTag as o}from"@stencil/core/internal/client";const r=e(class extends i{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}render(){return n(t,{key:"efe87c0a35ebc87ae04a61422d3b7410189c8f7e",id:this.item.id},this.renderLabel(),n("div",{key:"d0bdaf7023492f926f96449a0d5bc49aa800ecac",class:"icons"},this.item.icons.map(((e,i)=>this.renderIcon(e,i)))))}renderLabel(){if(this.item.label)return n("span",{class:"label"},this.item.label)}renderIcon(e,i){const t=`icon-${this.item.id}-${i}`;return[n("limel-icon",{tabIndex:0,key:i,id:t,badge:!0,name:e.name,class:{"is-pending":!!e.pending},style:{color:e.color,"background-color":e.backgroundColor}}),this.renderTooltip(e,t)]}renderTooltip(e,i){if(e.title)return n("limel-tooltip",{label:e.title,elementId:i})}static get style(){return'@charset "UTF-8";*,*:before,*:after{box-sizing:border-box}:host(limebb-chat-icon-list){display:flex;align-items:center;gap:0.5rem;margin-right:auto;max-width:calc(100% - 2rem);padding:0 0.25rem}.label{font-size:0.75rem;color:rgb(var(--contrast-900))}.icons{display:flex;align-items:center;gap:0.25rem}.icons:hover limel-icon,.icons:focus-within limel-icon{margin-left:0 !important}limel-icon{--icon-background-color:rgb(var(--contrast-500), 0.5);transition:margin-left 0.2s cubic-bezier(0.075, 0.82, 0.165, 1), opacity 0.2s ease, box-shadow 0.2s ease;position:relative;width:1.75rem;padding:0.375rem;flex-shrink:0}limel-icon:focus{outline:none}limel-icon:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}limel-icon:not(.is-pending):not(:first-child){margin-left:-0.75rem}limel-icon.is-pending{animation:pending 3s linear infinite;padding:0.5rem}limel-icon.is-pending:after{content:"";position:absolute;inset:0;width:1.75rem;height:1.75rem;border-radius:50%;pointer-events:none;border-radius:50%;border:0.125rem solid rgb(var(--color-white), 0.5);border-top-color:rgb(var(--color-black), 0.8);mix-blend-mode:color-dodge;animation:spin 1s cubic-bezier(0.4, 0, 0.2, 1) infinite}@keyframes pending{0%,20%,80%,100%{filter:grayscale(0%)}45%,55%{filter:grayscale(100%)}}@keyframes spin{to{transform:rotate(360deg)}}'}},[1,"limebb-chat-icon-list",{item:[16]}]);function s(){"undefined"!=typeof customElements&&["limebb-chat-icon-list"].forEach((e=>{"limebb-chat-icon-list"===e&&(customElements.get(o(e))||customElements.define(o(e),r))}))}export{r as C,s as d}
1
+ import{proxyCustomElement as e,HTMLElement as i,h as n,Host as t,transformTag as o}from"@stencil/core/internal/client";const r=e(class extends i{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}render(){return n(t,{key:"024fd30bb3420ed1de16013a85bee1c5c5f46b78",id:this.item.id},this.renderLabel(),n("div",{key:"1359fa6708829a4c65cd0c742ab321b05bb824a3",class:"icons"},this.item.icons.map(((e,i)=>this.renderIcon(e,i)))))}renderLabel(){if(this.item.label)return n("span",{class:"label"},this.item.label)}renderIcon(e,i){const t=`icon-${this.item.id}-${i}`;return[n("limel-icon",{tabIndex:0,key:i,id:t,badge:!0,name:e.name,class:{"is-pending":!!e.pending},style:{color:e.color,"background-color":e.backgroundColor}}),this.renderTooltip(e,t)]}renderTooltip(e,i){if(e.title)return n("limel-tooltip",{label:e.title,elementId:i})}static get style(){return'@charset "UTF-8";*,*:before,*:after{box-sizing:border-box}:host(limebb-chat-icon-list){display:flex;align-items:center;gap:0.5rem;margin-right:auto;max-width:calc(100% - 2rem);padding:0 0.25rem}.label{font-size:0.75rem;color:rgb(var(--contrast-900))}.icons{display:flex;align-items:center;gap:0.25rem}.icons:hover limel-icon,.icons:focus-within limel-icon{margin-left:0 !important}limel-icon{--icon-background-color:rgb(var(--contrast-500), 0.5);transition:margin-left 0.2s cubic-bezier(0.075, 0.82, 0.165, 1), opacity 0.2s ease, box-shadow 0.2s ease;position:relative;width:1.75rem;padding:0.375rem;flex-shrink:0}limel-icon:focus{outline:none}limel-icon:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}limel-icon:not(.is-pending):not(:first-child){margin-left:-0.75rem}limel-icon.is-pending{animation:pending 3s linear infinite;padding:0.5rem}limel-icon.is-pending:after{content:"";position:absolute;inset:0;width:1.75rem;height:1.75rem;border-radius:50%;pointer-events:none;border-radius:50%;border:0.125rem solid rgb(var(--color-white), 0.5);border-top-color:rgb(var(--color-black), 0.8);mix-blend-mode:color-dodge;animation:spin 1s cubic-bezier(0.4, 0, 0.2, 1) infinite}@keyframes pending{0%,20%,80%,100%{filter:grayscale(0%)}45%,55%{filter:grayscale(100%)}}@keyframes spin{to{transform:rotate(360deg)}}'}},[1,"limebb-chat-icon-list",{item:[16]}]);function s(){"undefined"!=typeof customElements&&["limebb-chat-icon-list"].forEach((e=>{"limebb-chat-icon-list"===e&&(customElements.get(o(e))||customElements.define(o(e),r))}))}export{r as C,s as d}
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as e,h as i,Host as r,transformTag as o}from"@stencil/core/internal/client";import{b as a}from"./index.esm.js";const s=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.hasError=!1,this.createActionBarItem=t=>{var e,i;if("separator"in t)return t;let r={value:t,text:null!==(e=t.label)&&void 0!==e?e:"",secondaryText:t.description,disabled:t.disabled};return!t.label&&t.icon?r=Object.assign(Object.assign({},r),{icon:t.icon,text:null!==(i=t.description)&&void 0!==i?i:r.text,iconOnly:!0}):t.icon&&(r=Object.assign(Object.assign({},r),{icon:t.icon})),r},this.handleActionBarItemSelect=t=>{var e;t.stopPropagation();const i=null===(e=t.detail.value)||void 0===e?void 0:e.command;i&&this.commandbus.handle(i)},this.createMenuItem=t=>{var e,i;return"separator"in t?t:{value:t,text:null!==(e=t.label)&&void 0!==e?e:"",secondaryText:t.description,disabled:t.disabled,icon:null!==(i=t.icon)&&void 0!==i?i:""}},this.handleMenuItemSelect=t=>{var e;t.stopPropagation();const i=null===(e=t.detail.value)||void 0===e?void 0:e.command;i&&this.commandbus.handle(i)}}render(){const t=`helper-text-${this.item.id}`;return i(r,{key:"971b486298a8f88790178592c174561bdc3b7b13",id:this.item.id,"aria-describedby":this.helperText?t:void 0,"aria-live":this.hasError?"assertive":"off",class:{[`${this.item.ui}`]:!0}},i("div",{key:"b5cde4080a9c6e4d30d89b8d9a323e41d913d00b",class:"bubble-content"},i("div",{key:"1d674bfb86bd0356bbbb1244848f7f9fe2f04916",class:"icon-picture"},this.renderIcon(),this.renderAuthorPicture()),this.renderErrorSign(),i("div",{key:"b4c34568322082230de44312c42b98d86b5a28fc",class:"item"},this.renderHeader(),this.renderValue(),i("footer",{key:"b9a5026726ac13dfe01e02263ace3817c3d71ad4"},this.renderHelperText(t),this.renderTimestamp()))),this.renderPromotedAction())}renderErrorSign(){if(this.hasError)return i("limel-icon",{class:"error-sign",name:"brake_warning"})}renderHeader(){var t;if(null===(t=this.item.author)||void 0===t?void 0:t.name)return i("header",null,this.renderAuthorName(),i("div",{class:"action-buttons"},this.renderUnpromotedActionsMenu()))}renderIcon(){var t,e,r,o;if(this.item.icon)return i("limel-icon",{class:"icon",badge:!0,name:null!==(e=null===(t=this.item.icon)||void 0===t?void 0:t.name)&&void 0!==e?e:"dot_circle",style:{color:`${null===(r=this.item.icon)||void 0===r?void 0:r.color}`,"background-color":`${null===(o=this.item.icon)||void 0===o?void 0:o.backgroundColor}`}})}renderHelperText(t){if(this.helperText)return i("span",{class:"helper-text",id:t},this.helperText)}renderValue(){if(this.item.value)return i("limel-markdown",{class:"body-text reset-img-height",value:this.item.value})}renderAuthorName(){var t,e;if("string"==typeof(null===(t=this.item.author)||void 0===t?void 0:t.name))return i("span",{class:"author"},this.item.author.name);if("object"==typeof(null===(e=this.item.author)||void 0===e?void 0:e.name)){const{href:t,title:e,text:r}=this.item.author.name;return i("a",{class:"author",href:t,title:e},r)}}renderAuthorPicture(){var t;if(null===(t=this.item.author)||void 0===t?void 0:t.picture)return"limel-ai-avatar"===this.item.author.picture?i("limel-ai-avatar",{class:"author-avatar"}):i("img",{class:"author-avatar",loading:"lazy",src:this.item.author.picture})}renderUnpromotedActionsMenu(){var t,e;if(!(null===(t=this.item.unpromotedActions)||void 0===t?void 0:t.length))return;const r=this.item.unpromotedActions.map(this.createMenuItem);return i("limel-menu",{class:"unpromoted-actions-menu",items:r,openDirection:"bottom-end",onSelect:this.handleMenuItemSelect},i("limel-icon-button",{icon:"menu_2",slot:"trigger",label:null===(e=this.translator)||void 0===e?void 0:e.get("webclient.more-actions")}))}renderPromotedAction(){if(!this.item.promotedActions)return;const t=this.item.promotedActions.map(this.createActionBarItem);return i("div",{class:"action-bar"},i("div",{class:"action-bar-hider"},i("limel-action-bar",{accessibleLabel:"Action bar",actions:t,layout:"fullWidth",onItemSelected:this.handleActionBarItemSelect})))}renderTimestamp(){const t=this.item.timestamp;if(t)return i("span",{class:"timestamp"},this.dateTimeFormatter.format(t,"timeofday"))}get dateTimeFormatter(){return this.platform.get(a.DateTimeFormatter)}get translator(){var t;return null===(t=this.platform)||void 0===t?void 0:t.get(a.Translate)}get commandbus(){var t;return null===(t=this.platform)||void 0===t?void 0:t.get(a.CommandBus)}static get style(){return'@charset "UTF-8";*{box-sizing:border-box}:host(limebb-chat-item){display:flex;flex-direction:column;gap:0.25rem;min-width:0;min-height:0;max-width:calc(100% - 2rem)}.bubble-content{display:flex;gap:0.25rem;min-width:0;min-height:0}:host(limebb-chat-item:hover) .helper-text,:host(limebb-chat-item:hover) .timestamp,:host(limebb-chat-item:focus-within) .helper-text,:host(limebb-chat-item:focus-within) .timestamp{opacity:1}:host(limebb-chat-item.mine){margin-left:auto}:host(limebb-chat-item.mine) .item{border-bottom-right-radius:0.125rem;background-color:rgb(var(--color-sky-default), 0.2)}:host(limebb-chat-item.mine) .bubble-content{justify-content:end}:host(limebb-chat-item.mine) .icon-picture{order:2}:host(limebb-chat-item.theirs){margin-right:auto}:host(limebb-chat-item.theirs) .item{border-bottom-left-radius:0.125rem;background-color:rgb(var(--contrast-300), 0.7)}.item{display:flex;flex-direction:column;min-width:0;border-radius:1.25rem;padding:0 0.25rem 0.25rem 0.25rem;backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}.icon-picture{display:flex;flex-direction:column;gap:0.5rem;align-items:center;justify-content:flex-end}.icon-picture:has(.author-avatar) limel-icon{width:1.25rem;padding:0.125rem}.icon{--icon-background-color:rgb(var(--contrast-500), 0.5);flex-shrink:0;padding:0.375rem;width:2.25rem;backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}limel-ai-avatar.author-avatar{background-color:rgb(var(--color-glaucous-darker))}header{display:flex;justify-content:space-between;align-items:center;min-height:2rem;padding-left:0.5rem}header:not(:has(.unpromoted-actions-menu)){padding-right:0.5rem}.body-text{padding:0.25rem 0.5rem}footer{display:flex;justify-content:space-between;align-items:end;gap:0.5rem;font-size:x-small}footer:not(:empty){padding:0 0.25rem 0.125rem 0.5rem}footer *{transition:opacity 0.2s ease;opacity:0.4}.timestamp{margin-left:auto}.author-avatar{border-radius:50%;width:2rem;height:2rem;object-fit:cover;box-shadow:0 0 0 1px rgb(var(--contrast-600))}.author{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:500;text-decoration:none}a.author{position:relative;cursor:pointer;transition:color 0.2s ease;color:var(--mdc-theme-primary)}a.author:before{transition:opacity 0.2s ease, transform 0.3s ease-out;content:"";position:absolute;inset:auto 0 0 0;width:calc(100% - 0.5rem);margin:auto;height:0.125rem;border-radius:1rem;background-color:currentColor;opacity:0;transform:scale(0.6)}a.author:hover{color:rgb(var(--color-teal-light))}a.author:hover:before{opacity:0.3;transform:scale(1)}limel-action-bar{--action-bar-item-height:1.75rem;transition:opacity 0.2s ease;justify-content:flex-start;opacity:0.8}.action-bar{display:grid;transition:grid-template-rows var(--limebb-promoted-action-bar-grid-template-rows-transition-speed, 0.2s) cubic-bezier(1, 0.09, 0, 0.89) var(--limebb-promoted-action-bar-grid-template-rows-transition-delay, 0s);grid-template-rows:var(--limebb-promoted-action-bar-grid-template-rows, 1fr)}.action-bar-hider{overflow:hidden}limel-action-bar{transition:padding var(--limebb-promoted-action-bar-grid-template-rows-transition-speed) cubic-bezier(1, 0.09, 0, 0.89) var(--limebb-promoted-action-bar-grid-template-rows-transition-delay);padding-top:0;padding-bottom:0.75rem}:host(limebb-chat-item:hover) .action-bar,:host(limebb-chat-item:focus-within) .action-bar,:host(limebb-chat-item:focus-visible) .action-bar{--limebb-promoted-action-bar-grid-template-rows:1fr;will-change:grid-template-rows}:host(limebb-chat-item:hover) limel-action-bar,:host(limebb-chat-item:focus-within) limel-action-bar,:host(limebb-chat-item:focus-visible) limel-action-bar{will-change:opacity;opacity:1}:host(limebb-chat-item:hover),:host(limebb-chat-item:focus-within){--limebb-promoted-action-bar-grid-template-rows-transition-speed:0.46s;--limebb-promoted-action-bar-grid-template-rows-transition-delay:0.7s}.action-bar{min-width:0;width:calc(100% - calc(2rem + 0.25rem))}:host(limebb-chat-item.theirs) .action-bar{margin-left:calc(2rem + 0.25rem)}:host(limebb-chat-item[has-error]:not([has-error=false])) .bubble-content{cursor:help}:host(limebb-chat-item[has-error]:not([has-error=false])) .item{border:1px solid rgb(var(--color-red-default))}:host(limebb-chat-item[has-error]:not([has-error=false])) .error-sign{color:rgb(var(--color-red-default));flex-shrink:0;width:1.25rem;align-self:center}:host(limebb-chat-item.mine[has-error]:not([has-error=false])) .action-bar{padding-left:1.25rem}:host(limebb-chat-item.mine[has-error]:not([has-error=false])) .helper-text{opacity:1;color:rgb(var(--color-red-default))}'}},[1,"limebb-chat-item",{platform:[16],context:[16],item:[16],helperText:[1,"helper-text"],hasError:[516,"has-error"]}]);function n(){"undefined"!=typeof customElements&&["limebb-chat-item"].forEach((t=>{"limebb-chat-item"===t&&(customElements.get(o(t))||customElements.define(o(t),s))}))}export{s as C,n as d}
1
+ import{proxyCustomElement as e,HTMLElement as t,h as i,Host as r,transformTag as o}from"@stencil/core/internal/client";import{b as a}from"./index.esm.js";const s=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.hasError=!1,this.createActionBarItem=e=>{var t,i;if("separator"in e)return e;let r={value:e,text:null!==(t=e.label)&&void 0!==t?t:"",secondaryText:e.description,disabled:e.disabled};return!e.label&&e.icon?r=Object.assign(Object.assign({},r),{icon:e.icon,text:null!==(i=e.description)&&void 0!==i?i:r.text,iconOnly:!0}):e.icon&&(r=Object.assign(Object.assign({},r),{icon:e.icon})),r},this.handleActionBarItemSelect=e=>{var t;e.stopPropagation();const i=null===(t=e.detail.value)||void 0===t?void 0:t.command;i&&this.commandbus.handle(i)},this.createMenuItem=e=>{var t,i;return"separator"in e?e:{value:e,text:null!==(t=e.label)&&void 0!==t?t:"",secondaryText:e.description,disabled:e.disabled,icon:null!==(i=e.icon)&&void 0!==i?i:""}},this.handleMenuItemSelect=e=>{var t;e.stopPropagation();const i=null===(t=e.detail.value)||void 0===t?void 0:t.command;i&&this.commandbus.handle(i)}}render(){const e=`helper-text-${this.item.id}`;return i(r,{key:"1c51ff5a54feec865eb17d4077bef880486e5a26",id:this.item.id,"aria-describedby":this.helperText?e:void 0,"aria-live":this.hasError?"assertive":"off",class:{[`${this.item.ui}`]:!0}},i("div",{key:"f8d37fa94833f9685308610387871752d4368d8e",class:"bubble-content"},i("div",{key:"8b76262f95c3200257727bc451976cd5bfa7bafc",class:"icon-picture"},this.renderIcon(),this.renderAuthorPicture()),this.renderErrorSign(),i("div",{key:"63b4f7f4acee9cf8eaa7b1c7cfe56c055b284df0",class:"item"},this.renderHeader(),this.renderValue(),i("footer",{key:"0e614fd79439c77db0678dca46616d87619e3a4e"},this.renderHelperText(e),this.renderTimestamp()))),this.renderPromotedAction())}renderErrorSign(){if(this.hasError)return i("limel-icon",{class:"error-sign",name:"brake_warning"})}renderHeader(){var e;if(null===(e=this.item.author)||void 0===e?void 0:e.name)return i("header",null,this.renderAuthorName(),i("div",{class:"action-buttons"},this.renderUnpromotedActionsMenu()))}renderIcon(){var e,t,r,o;if(this.item.icon)return i("limel-icon",{class:"icon",badge:!0,name:null!==(t=null===(e=this.item.icon)||void 0===e?void 0:e.name)&&void 0!==t?t:"dot_circle",style:{color:`${null===(r=this.item.icon)||void 0===r?void 0:r.color}`,"background-color":`${null===(o=this.item.icon)||void 0===o?void 0:o.backgroundColor}`}})}renderHelperText(e){if(this.helperText)return i("span",{class:"helper-text",id:e},this.helperText)}renderValue(){if(this.item.value)return i("limel-markdown",{class:"body-text reset-img-height",value:this.item.value})}renderAuthorName(){var e,t;if("string"==typeof(null===(e=this.item.author)||void 0===e?void 0:e.name))return i("span",{class:"author"},this.item.author.name);if("object"==typeof(null===(t=this.item.author)||void 0===t?void 0:t.name)){const{href:e,title:t,text:r}=this.item.author.name;return i("a",{class:"author",href:e,title:t},r)}}renderAuthorPicture(){var e;if(null===(e=this.item.author)||void 0===e?void 0:e.picture)return"limel-ai-avatar"===this.item.author.picture?i("limel-ai-avatar",{class:"author-avatar"}):i("img",{class:"author-avatar",loading:"lazy",src:this.item.author.picture})}renderUnpromotedActionsMenu(){var e,t;if(!(null===(e=this.item.unpromotedActions)||void 0===e?void 0:e.length))return;const r=this.item.unpromotedActions.map(this.createMenuItem);return i("limel-menu",{class:"unpromoted-actions-menu",items:r,openDirection:"bottom-end",onSelect:this.handleMenuItemSelect},i("limel-icon-button",{icon:"menu_2",slot:"trigger",label:null===(t=this.translator)||void 0===t?void 0:t.get("webclient.more-actions")}))}renderPromotedAction(){if(!this.item.promotedActions)return;const e=this.item.promotedActions.map(this.createActionBarItem);return i("div",{class:"action-bar"},i("div",{class:"action-bar-hider"},i("limel-action-bar",{accessibleLabel:"Action bar",actions:e,layout:"fullWidth",onItemSelected:this.handleActionBarItemSelect})))}renderTimestamp(){const e=this.item.timestamp;if(e)return i("span",{class:"timestamp"},this.dateTimeFormatter.format(e,"timeofday"))}get dateTimeFormatter(){return this.platform.get(a.DateTimeFormatter)}get translator(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(a.Translate)}get commandbus(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(a.CommandBus)}static get style(){return'@charset "UTF-8";*{box-sizing:border-box}:host(limebb-chat-item){display:flex;flex-direction:column;gap:0.25rem;min-width:0;min-height:0;max-width:calc(100% - 2rem)}.bubble-content{display:flex;gap:0.25rem;min-width:0;min-height:0}:host(limebb-chat-item:hover) .helper-text,:host(limebb-chat-item:hover) .timestamp,:host(limebb-chat-item:focus-within) .helper-text,:host(limebb-chat-item:focus-within) .timestamp{opacity:1}:host(limebb-chat-item.mine){margin-left:auto}:host(limebb-chat-item.mine) .item{border-bottom-right-radius:0.125rem;background-color:rgb(var(--color-sky-default), 0.2)}:host(limebb-chat-item.mine) .bubble-content{justify-content:end}:host(limebb-chat-item.mine) .icon-picture{order:2}:host(limebb-chat-item.theirs){margin-right:auto}:host(limebb-chat-item.theirs) .item{border-bottom-left-radius:0.125rem;background-color:rgb(var(--contrast-300), 0.7)}.item{display:flex;flex-direction:column;min-width:0;border-radius:1.25rem;padding:0 0.25rem 0.25rem 0.25rem;backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}.icon-picture{display:flex;flex-direction:column;gap:0.5rem;align-items:center;justify-content:flex-end}.icon-picture:has(.author-avatar) limel-icon{width:1.25rem;padding:0.125rem}.icon{--icon-background-color:rgb(var(--contrast-500), 0.5);flex-shrink:0;padding:0.375rem;width:2.25rem;backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}limel-ai-avatar.author-avatar{background-color:rgb(var(--color-glaucous-darker))}header{display:flex;justify-content:space-between;align-items:center;min-height:2rem;padding-left:0.5rem}header:not(:has(.unpromoted-actions-menu)){padding-right:0.5rem}.body-text{padding:0.25rem 0.5rem}footer{display:flex;justify-content:space-between;align-items:end;gap:0.5rem;font-size:x-small}footer:not(:empty){padding:0 0.25rem 0.125rem 0.5rem}footer *{transition:opacity 0.2s ease;opacity:0.4}.timestamp{margin-left:auto}.author-avatar{border-radius:50%;width:2rem;height:2rem;object-fit:cover;box-shadow:0 0 0 1px rgb(var(--contrast-600))}.author{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:500;text-decoration:none}a.author{position:relative;cursor:pointer;transition:color 0.2s ease;color:var(--mdc-theme-primary)}a.author:before{transition:opacity 0.2s ease, transform 0.3s ease-out;content:"";position:absolute;inset:auto 0 0 0;width:calc(100% - 0.5rem);margin:auto;height:0.125rem;border-radius:1rem;background-color:currentColor;opacity:0;transform:scale(0.6)}a.author:hover{color:rgb(var(--color-teal-light))}a.author:hover:before{opacity:0.3;transform:scale(1)}limel-action-bar{--action-bar-item-height:1.75rem;transition:opacity 0.2s ease;justify-content:flex-start;opacity:0.8}.action-bar{display:grid;transition:grid-template-rows var(--limebb-promoted-action-bar-grid-template-rows-transition-speed, 0.2s) cubic-bezier(1, 0.09, 0, 0.89) var(--limebb-promoted-action-bar-grid-template-rows-transition-delay, 0s);grid-template-rows:var(--limebb-promoted-action-bar-grid-template-rows, 1fr)}.action-bar-hider{overflow:hidden}limel-action-bar{transition:padding var(--limebb-promoted-action-bar-grid-template-rows-transition-speed) cubic-bezier(1, 0.09, 0, 0.89) var(--limebb-promoted-action-bar-grid-template-rows-transition-delay);padding-top:0;padding-bottom:0.75rem}:host(limebb-chat-item:hover) .action-bar,:host(limebb-chat-item:focus-within) .action-bar,:host(limebb-chat-item:focus-visible) .action-bar{--limebb-promoted-action-bar-grid-template-rows:1fr;will-change:grid-template-rows}:host(limebb-chat-item:hover) limel-action-bar,:host(limebb-chat-item:focus-within) limel-action-bar,:host(limebb-chat-item:focus-visible) limel-action-bar{will-change:opacity;opacity:1}:host(limebb-chat-item:hover),:host(limebb-chat-item:focus-within){--limebb-promoted-action-bar-grid-template-rows-transition-speed:0.46s;--limebb-promoted-action-bar-grid-template-rows-transition-delay:0.7s}.action-bar{min-width:0;width:calc(100% - calc(2rem + 0.25rem))}:host(limebb-chat-item.theirs) .action-bar{margin-left:calc(2rem + 0.25rem)}:host(limebb-chat-item[has-error]:not([has-error=false])) .bubble-content{cursor:help}:host(limebb-chat-item[has-error]:not([has-error=false])) .item{border:1px solid rgb(var(--color-red-default))}:host(limebb-chat-item[has-error]:not([has-error=false])) .error-sign{color:rgb(var(--color-red-default));flex-shrink:0;width:1.25rem;align-self:center}:host(limebb-chat-item.mine[has-error]:not([has-error=false])) .action-bar{padding-left:1.25rem}:host(limebb-chat-item.mine[has-error]:not([has-error=false])) .helper-text{opacity:1;color:rgb(var(--color-red-default))}'}},[1,"limebb-chat-item",{platform:[16],context:[16],item:[16],helperText:[1,"helper-text"],hasError:[516,"has-error"]}]);function n(){"undefined"!=typeof customElements&&["limebb-chat-item"].forEach((e=>{"limebb-chat-item"===e&&(customElements.get(o(e))||customElements.define(o(e),s))}))}export{s as C,n as d}