@limetech/lime-crm-building-blocks 1.133.0 → 1.135.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 (294) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/{filter-group-logic-Bwk6B784.js → filter-group-logic-Dp9o1iOJ.js} +1 -1
  3. package/dist/cjs/{index.esm-DcWSoSRE.js → index.esm-Dgkx-Syd.js} +2 -2
  4. package/dist/cjs/lime-crm-building-blocks.cjs.js +1 -1
  5. package/dist/cjs/{lime-query-operators-Ci-RNshi.js → lime-query-operators-B6PujuTH.js} +1 -1
  6. package/dist/cjs/{lime-query-validation-nql4N6Z8.js → lime-query-validation-BszGOirf.js} +1 -1
  7. package/dist/cjs/limebb-alert-dialog.cjs.entry.js +1 -1
  8. package/dist/cjs/limebb-browser.cjs.entry.js +3 -3
  9. package/dist/cjs/limebb-chat-icon-list_3.cjs.entry.js +5 -5
  10. package/dist/cjs/limebb-chat-list.cjs.entry.js +2 -2
  11. package/dist/cjs/limebb-color-palette-picker.cjs.entry.js +1 -1
  12. package/dist/cjs/limebb-color-palette-swatches.cjs.entry.js +1 -1
  13. package/dist/cjs/limebb-component-config.cjs.entry.js +1 -1
  14. package/dist/cjs/limebb-component-picker.cjs.entry.js +1 -1
  15. package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +3 -3
  16. package/dist/cjs/limebb-currency-picker.cjs.entry.js +2 -2
  17. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +1 -1
  18. package/dist/cjs/limebb-data-cells.cjs.entry.js +1 -1
  19. package/dist/cjs/limebb-date-picker.cjs.entry.js +2 -2
  20. package/dist/cjs/limebb-date-range.cjs.entry.js +1 -1
  21. package/dist/cjs/limebb-document-chips.cjs.entry.js +1 -1
  22. package/dist/cjs/limebb-document-item.cjs.entry.js +2 -2
  23. package/dist/cjs/limebb-document-picker.cjs.entry.js +1 -1
  24. package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +1 -1
  25. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +2 -2
  26. package/dist/cjs/limebb-feed.cjs.entry.js +2 -2
  27. package/dist/cjs/limebb-icon-picker.cjs.entry.js +1 -1
  28. package/dist/cjs/limebb-info-tile-format.cjs.entry.js +1 -1
  29. package/dist/cjs/limebb-info-tile.cjs.entry.js +44 -9
  30. package/dist/cjs/limebb-kanban-group.cjs.entry.js +2 -2
  31. package/dist/cjs/limebb-kanban-item.cjs.entry.js +2 -2
  32. package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +3 -3
  33. package/dist/cjs/limebb-lime-query-filter-builder.cjs.entry.js +2 -2
  34. package/dist/cjs/limebb-lime-query-filter-comparison-editor_4.cjs.entry.js +7 -7
  35. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +4 -4
  36. package/dist/cjs/limebb-lime-query-order-by-editor_2.cjs.entry.js +4 -4
  37. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +2 -2
  38. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +3 -3
  39. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +1 -1
  40. package/dist/cjs/limebb-limeobject-file-viewer.cjs.entry.js +1 -1
  41. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +2 -2
  42. package/dist/cjs/limebb-loader.cjs.entry.js +28 -1
  43. package/dist/cjs/limebb-locale-picker.cjs.entry.js +2 -2
  44. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +2 -2
  45. package/dist/cjs/limebb-mention.cjs.entry.js +1 -1
  46. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +2 -2
  47. package/dist/cjs/limebb-notification-item.cjs.entry.js +2 -2
  48. package/dist/cjs/limebb-notification-list.cjs.entry.js +1 -1
  49. package/dist/cjs/limebb-object-chip.cjs.entry.js +2 -2
  50. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +3 -3
  51. package/dist/cjs/limebb-property-selector.cjs.entry.js +2 -2
  52. package/dist/cjs/limebb-rule-arg-filter-editor.cjs.entry.js +1 -1
  53. package/dist/cjs/limebb-rule-chip-popover.cjs.entry.js +11 -3
  54. package/dist/cjs/limebb-rule-editor.cjs.entry.js +74 -4
  55. package/dist/cjs/limebb-rule-gate.cjs.entry.js +2 -2
  56. package/dist/cjs/limebb-text-editor.cjs.entry.js +3 -3
  57. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +2 -2
  58. package/dist/cjs/limebb-value-comparison-editor.cjs.entry.js +75 -0
  59. package/dist/cjs/{limetype-CNjUGemK.js → limetype-BayDf-QY.js} +1 -1
  60. package/dist/cjs/loader.cjs.js +1 -1
  61. package/dist/collection/collection-manifest.json +1 -0
  62. package/dist/collection/components/alert-dialog/alert-dialog.js +1 -1
  63. package/dist/collection/components/browser/browser.js +2 -2
  64. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.js +1 -1
  65. package/dist/collection/components/chat-list/chat-item/chat-item.js +2 -2
  66. package/dist/collection/components/chat-list/chat-list.js +1 -1
  67. package/dist/collection/components/chat-list/typing-indicator/typing-indicator.js +1 -1
  68. package/dist/collection/components/color-palette-picker/color-palette-picker.js +1 -1
  69. package/dist/collection/components/color-palette-picker/color-palette-swatches/color-palette-swatches.js +1 -1
  70. package/dist/collection/components/composer-toolbar/composer-toolbar.js +2 -2
  71. package/dist/collection/components/currency-picker/currency-picker.js +1 -1
  72. package/dist/collection/components/dashboard-widget/dashboard-widget.js +1 -1
  73. package/dist/collection/components/date-picker/date-picker.js +1 -1
  74. package/dist/collection/components/date-range/date-range.js +1 -1
  75. package/dist/collection/components/document-chips/document-chips.js +1 -1
  76. package/dist/collection/components/document-picker/document-item/document-item.js +2 -2
  77. package/dist/collection/components/document-picker/document-picker.js +1 -1
  78. package/dist/collection/components/feed/feed-item/feed-timeline-item.js +1 -1
  79. package/dist/collection/components/feed/feed-item-thumbnail-file-info/feed-item-thumbnail-file-info.js +1 -1
  80. package/dist/collection/components/feed/feed.js +1 -1
  81. package/dist/collection/components/icon-picker/icon-picker.js +1 -1
  82. package/dist/collection/components/info-tile/format/config/info-tile-format.js +1 -1
  83. package/dist/collection/components/info-tile/info-tile.js +86 -7
  84. package/dist/collection/components/kanban/kanban-group/kanban-group.js +1 -1
  85. package/dist/collection/components/kanban/kanban-item/kanban-item.js +1 -1
  86. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.js +1 -1
  87. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +1 -1
  88. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +2 -2
  89. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
  90. package/dist/collection/components/lime-query-builder/lime-query-builder.js +1 -1
  91. package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.js +1 -1
  92. package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.js +1 -1
  93. package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +1 -1
  94. package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +2 -2
  95. package/dist/collection/components/lime-query-builder/response-format/response-format-item.js +1 -1
  96. package/dist/collection/components/limeobject/file-viewer/live-docs-info.js +2 -2
  97. package/dist/collection/components/loader/loader.js +2 -0
  98. package/dist/collection/components/locale-picker/locale-picker.js +1 -1
  99. package/dist/collection/components/notification-list/notification-item/notification-item.js +1 -1
  100. package/dist/collection/components/percentage-visualizer/percentage-visualizer.js +2 -2
  101. package/dist/collection/components/rule-editor/chip-picker-view.js +9 -2
  102. package/dist/collection/components/rule-editor/rule-arg-filter-editor/rule-arg-filter-editor-metadata.js +10 -0
  103. package/dist/collection/components/rule-editor/rule-chip-popover/rule-chip-popover.js +30 -2
  104. package/dist/collection/components/rule-editor/rule-editor.js +53 -2
  105. package/dist/collection/components/rule-editor/rule-operations.js +15 -2
  106. package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor-metadata.js +15 -0
  107. package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.css +9 -0
  108. package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.js +149 -0
  109. package/dist/collection/components/rule-gate/rule-gate.js +1 -1
  110. package/dist/collection/components/summary-popover/summary-popover.js +2 -2
  111. package/dist/collection/components/text-editor/mention-group-counter.js +2 -2
  112. package/dist/collection/components/text-editor/text-editor.js +1 -1
  113. package/dist/collection/components/trend-indicator/trend-indicator.js +1 -1
  114. package/dist/components/chat-icon-list.js +1 -1
  115. package/dist/components/chat-item.js +1 -1
  116. package/dist/components/currency-picker.js +1 -1
  117. package/dist/components/date-picker.js +1 -1
  118. package/dist/components/document-item.js +1 -1
  119. package/dist/components/feed-item-thumbnail-file-info.js +1 -1
  120. package/dist/components/feed-timeline-item.js +1 -1
  121. package/dist/components/kanban-group.js +1 -1
  122. package/dist/components/kanban-item.js +1 -1
  123. package/dist/components/lime-query-filter-comparison-editor.js +1 -1
  124. package/dist/components/lime-query-filter-comparison.js +1 -1
  125. package/dist/components/lime-query-filter-expression.js +1 -1
  126. package/dist/components/limebb-alert-dialog.js +1 -1
  127. package/dist/components/limebb-browser.js +1 -1
  128. package/dist/components/limebb-chat-list.js +1 -1
  129. package/dist/components/limebb-color-palette-picker.js +1 -1
  130. package/dist/components/limebb-color-palette-swatches.js +1 -1
  131. package/dist/components/limebb-composer-toolbar.js +1 -1
  132. package/dist/components/limebb-dashboard-widget.js +1 -1
  133. package/dist/components/limebb-date-range.js +1 -1
  134. package/dist/components/limebb-document-chips.js +1 -1
  135. package/dist/components/limebb-document-picker.js +1 -1
  136. package/dist/components/limebb-feed.js +1 -1
  137. package/dist/components/limebb-icon-picker.js +1 -1
  138. package/dist/components/limebb-info-tile-format.js +1 -1
  139. package/dist/components/limebb-info-tile.js +1 -1
  140. package/dist/components/limebb-lime-query-builder.js +1 -1
  141. package/dist/components/limebb-lime-query-response-format-builder.js +1 -1
  142. package/dist/components/limebb-loader.js +1 -1
  143. package/dist/components/limebb-locale-picker.js +1 -1
  144. package/dist/components/limebb-mention-group-counter.js +1 -1
  145. package/dist/components/limebb-rule-editor.js +1 -1
  146. package/dist/components/limebb-rule-gate.js +1 -1
  147. package/dist/components/limebb-text-editor.js +1 -1
  148. package/dist/components/limebb-trend-indicator.js +1 -1
  149. package/dist/components/limebb-value-comparison-editor.d.ts +11 -0
  150. package/dist/components/limebb-value-comparison-editor.js +1 -0
  151. package/dist/components/limetype-field.js +1 -1
  152. package/dist/components/live-docs-info.js +1 -1
  153. package/dist/components/notification-item.js +1 -1
  154. package/dist/components/order-by-editor.js +1 -1
  155. package/dist/components/order-by-item.js +1 -1
  156. package/dist/components/percentage-visualizer.js +1 -1
  157. package/dist/components/response-format-item.js +1 -1
  158. package/dist/components/rule-chip-popover.js +1 -1
  159. package/dist/components/summary-popover.js +1 -1
  160. package/dist/components/typing-indicator.js +1 -1
  161. package/dist/esm/{filter-group-logic-RXn-GGk1.js → filter-group-logic-1aucZQgy.js} +1 -1
  162. package/dist/esm/{index.esm-DAe4_MLR.js → index.esm-B1KM7sH7.js} +1 -1
  163. package/dist/esm/lime-crm-building-blocks.js +1 -1
  164. package/dist/esm/{lime-query-operators-DYlN1dAt.js → lime-query-operators-DvI2OyJI.js} +1 -1
  165. package/dist/esm/{lime-query-validation-DXxPZ2CH.js → lime-query-validation-CiIEITCJ.js} +1 -1
  166. package/dist/esm/limebb-alert-dialog.entry.js +1 -1
  167. package/dist/esm/limebb-browser.entry.js +3 -3
  168. package/dist/esm/limebb-chat-icon-list_3.entry.js +5 -5
  169. package/dist/esm/limebb-chat-list.entry.js +2 -2
  170. package/dist/esm/limebb-color-palette-picker.entry.js +1 -1
  171. package/dist/esm/limebb-color-palette-swatches.entry.js +1 -1
  172. package/dist/esm/limebb-component-config.entry.js +1 -1
  173. package/dist/esm/limebb-component-picker.entry.js +1 -1
  174. package/dist/esm/limebb-composer-toolbar.entry.js +3 -3
  175. package/dist/esm/limebb-currency-picker.entry.js +2 -2
  176. package/dist/esm/limebb-dashboard-widget.entry.js +1 -1
  177. package/dist/esm/limebb-data-cells.entry.js +1 -1
  178. package/dist/esm/limebb-date-picker.entry.js +2 -2
  179. package/dist/esm/limebb-date-range.entry.js +1 -1
  180. package/dist/esm/limebb-document-chips.entry.js +1 -1
  181. package/dist/esm/limebb-document-item.entry.js +2 -2
  182. package/dist/esm/limebb-document-picker.entry.js +1 -1
  183. package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +1 -1
  184. package/dist/esm/limebb-feed-timeline-item.entry.js +2 -2
  185. package/dist/esm/limebb-feed.entry.js +2 -2
  186. package/dist/esm/limebb-icon-picker.entry.js +1 -1
  187. package/dist/esm/limebb-info-tile-format.entry.js +1 -1
  188. package/dist/esm/limebb-info-tile.entry.js +44 -9
  189. package/dist/esm/limebb-kanban-group.entry.js +2 -2
  190. package/dist/esm/limebb-kanban-item.entry.js +2 -2
  191. package/dist/esm/limebb-lime-query-builder.entry.js +3 -3
  192. package/dist/esm/limebb-lime-query-filter-builder.entry.js +2 -2
  193. package/dist/esm/limebb-lime-query-filter-comparison-editor_4.entry.js +7 -7
  194. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +4 -4
  195. package/dist/esm/limebb-lime-query-order-by-editor_2.entry.js +4 -4
  196. package/dist/esm/limebb-lime-query-order-by-item.entry.js +2 -2
  197. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +3 -3
  198. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +1 -1
  199. package/dist/esm/limebb-limeobject-file-viewer.entry.js +1 -1
  200. package/dist/esm/limebb-live-docs-info.entry.js +2 -2
  201. package/dist/esm/limebb-loader.entry.js +28 -1
  202. package/dist/esm/limebb-locale-picker.entry.js +2 -2
  203. package/dist/esm/limebb-mention-group-counter.entry.js +2 -2
  204. package/dist/esm/limebb-mention.entry.js +1 -1
  205. package/dist/esm/limebb-navigation-button_2.entry.js +2 -2
  206. package/dist/esm/limebb-notification-item.entry.js +2 -2
  207. package/dist/esm/limebb-notification-list.entry.js +1 -1
  208. package/dist/esm/limebb-object-chip.entry.js +2 -2
  209. package/dist/esm/limebb-percentage-visualizer.entry.js +3 -3
  210. package/dist/esm/limebb-property-selector.entry.js +2 -2
  211. package/dist/esm/limebb-rule-arg-filter-editor.entry.js +1 -1
  212. package/dist/esm/limebb-rule-chip-popover.entry.js +11 -3
  213. package/dist/esm/limebb-rule-editor.entry.js +74 -4
  214. package/dist/esm/limebb-rule-gate.entry.js +2 -2
  215. package/dist/esm/limebb-text-editor.entry.js +3 -3
  216. package/dist/esm/limebb-trend-indicator.entry.js +2 -2
  217. package/dist/esm/limebb-value-comparison-editor.entry.js +73 -0
  218. package/dist/esm/{limetype-C1wEJnPI.js → limetype-CIkoDD1B.js} +1 -1
  219. package/dist/esm/loader.js +1 -1
  220. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  221. package/dist/lime-crm-building-blocks/{p-692084d2.entry.js → p-041f1094.entry.js} +1 -1
  222. package/dist/lime-crm-building-blocks/{p-3c437049.entry.js → p-096ea04d.entry.js} +1 -1
  223. package/dist/lime-crm-building-blocks/{p-7f5c97fe.entry.js → p-0d6d8b72.entry.js} +1 -1
  224. package/dist/lime-crm-building-blocks/{p-dc1d543d.entry.js → p-16fad0a8.entry.js} +1 -1
  225. package/dist/lime-crm-building-blocks/{p-56bb13b2.entry.js → p-191e4dcd.entry.js} +1 -1
  226. package/dist/lime-crm-building-blocks/{p-8ed7b025.entry.js → p-1a076d37.entry.js} +1 -1
  227. package/dist/lime-crm-building-blocks/{p-efab4f7e.entry.js → p-1b5f48c2.entry.js} +1 -1
  228. package/dist/lime-crm-building-blocks/{p-81655182.entry.js → p-201498a9.entry.js} +1 -1
  229. package/dist/lime-crm-building-blocks/{p-c7c5991f.entry.js → p-26e25dbd.entry.js} +1 -1
  230. package/dist/lime-crm-building-blocks/{p-24337de2.entry.js → p-29dd2424.entry.js} +1 -1
  231. package/dist/lime-crm-building-blocks/{p-563d69ff.entry.js → p-30f6d7ea.entry.js} +1 -1
  232. package/dist/lime-crm-building-blocks/{p-99464fa7.entry.js → p-340250da.entry.js} +1 -1
  233. package/dist/lime-crm-building-blocks/{p-18ce3ce5.entry.js → p-3f2f1826.entry.js} +1 -1
  234. package/dist/lime-crm-building-blocks/{p-4c10bea0.entry.js → p-46225433.entry.js} +1 -1
  235. package/dist/lime-crm-building-blocks/{p-68a951f5.entry.js → p-4cd99453.entry.js} +1 -1
  236. package/dist/lime-crm-building-blocks/{p-464b02c2.entry.js → p-52d8f7c2.entry.js} +1 -1
  237. package/dist/lime-crm-building-blocks/p-555da984.entry.js +1 -0
  238. package/dist/lime-crm-building-blocks/{p-efb70fbb.entry.js → p-6299c46b.entry.js} +1 -1
  239. package/dist/lime-crm-building-blocks/{p-b16bbda2.entry.js → p-69cf07ba.entry.js} +1 -1
  240. package/dist/lime-crm-building-blocks/{p-47a7b3fd.entry.js → p-6c4521a0.entry.js} +1 -1
  241. package/dist/lime-crm-building-blocks/{p-8d5311e4.entry.js → p-6f0a5401.entry.js} +1 -1
  242. package/dist/lime-crm-building-blocks/{p-7d969bbe.entry.js → p-71e1c5f0.entry.js} +1 -1
  243. package/dist/lime-crm-building-blocks/p-759d0fc2.entry.js +1 -0
  244. package/dist/lime-crm-building-blocks/{p-5eef1781.entry.js → p-7aaf805d.entry.js} +1 -1
  245. package/dist/lime-crm-building-blocks/{p-8d14a58a.entry.js → p-8c3970ed.entry.js} +1 -1
  246. package/dist/lime-crm-building-blocks/{p-a5850f04.entry.js → p-9909b0bf.entry.js} +1 -1
  247. package/dist/lime-crm-building-blocks/p-991783f8.entry.js +1 -0
  248. package/dist/lime-crm-building-blocks/{p-DzXJyKRS.js → p-B5QzrGTX.js} +1 -1
  249. package/dist/lime-crm-building-blocks/{p-D3UYWGdn.js → p-BneXZK-Q.js} +1 -1
  250. package/dist/lime-crm-building-blocks/{p-BbFGcMnU.js → p-DK4A47Sj.js} +1 -1
  251. package/dist/lime-crm-building-blocks/{p-y_s8hZmV.js → p-DjwVpKf5.js} +1 -1
  252. package/dist/lime-crm-building-blocks/{p-5a718d20.entry.js → p-a21d6f7e.entry.js} +1 -1
  253. package/dist/lime-crm-building-blocks/{p-43af24b5.entry.js → p-a2c8e1af.entry.js} +1 -1
  254. package/dist/lime-crm-building-blocks/p-a8684418.entry.js +1 -0
  255. package/dist/lime-crm-building-blocks/{p-0ba1294a.entry.js → p-b264b37d.entry.js} +1 -1
  256. package/dist/lime-crm-building-blocks/{p-ecd0280d.entry.js → p-b431df3c.entry.js} +1 -1
  257. package/dist/lime-crm-building-blocks/{p-22296e19.entry.js → p-b4b103c1.entry.js} +1 -1
  258. package/dist/lime-crm-building-blocks/{p-0fac2307.entry.js → p-b7d917ed.entry.js} +1 -1
  259. package/dist/lime-crm-building-blocks/p-c0d39ae4.entry.js +1 -0
  260. package/dist/lime-crm-building-blocks/{p-8238723b.entry.js → p-c4c3f054.entry.js} +1 -1
  261. package/dist/lime-crm-building-blocks/{p-072756ea.entry.js → p-c6cc1438.entry.js} +1 -1
  262. package/dist/lime-crm-building-blocks/{p-bd264cfa.entry.js → p-c72d3231.entry.js} +1 -1
  263. package/dist/lime-crm-building-blocks/{p-a6103d04.entry.js → p-c7dbd961.entry.js} +1 -1
  264. package/dist/lime-crm-building-blocks/{p-b01f2045.entry.js → p-c8cf6e4d.entry.js} +1 -1
  265. package/dist/lime-crm-building-blocks/{p-1dfdf045.entry.js → p-cea4fe16.entry.js} +1 -1
  266. package/dist/lime-crm-building-blocks/p-d6ac6cd3.entry.js +1 -0
  267. package/dist/lime-crm-building-blocks/{p-7a4704dc.entry.js → p-d8835b8c.entry.js} +1 -1
  268. package/dist/lime-crm-building-blocks/{p-603ab702.entry.js → p-e1223704.entry.js} +1 -1
  269. package/dist/lime-crm-building-blocks/p-e174dccd.entry.js +1 -0
  270. package/dist/lime-crm-building-blocks/{p-725e6748.entry.js → p-ec22438d.entry.js} +1 -1
  271. package/dist/lime-crm-building-blocks/{p-dc3a86f3.entry.js → p-efd62913.entry.js} +1 -1
  272. package/dist/lime-crm-building-blocks/{p-9639c6ee.entry.js → p-f22e2539.entry.js} +1 -1
  273. package/dist/lime-crm-building-blocks/{p-3996a598.entry.js → p-f58d25e5.entry.js} +1 -1
  274. package/dist/lime-crm-building-blocks/{p-16fa6f3e.entry.js → p-fac7ff61.entry.js} +1 -1
  275. package/dist/lime-crm-building-blocks/{p-5006c5ea.entry.js → p-fb23df8e.entry.js} +1 -1
  276. package/dist/lime-crm-building-blocks/{p-7b9359cc.entry.js → p-ff686a4e.entry.js} +1 -1
  277. package/dist/types/components/info-tile/info-tile.d.ts +50 -1
  278. package/dist/types/components/rule-editor/chip-picker-view.d.ts +8 -0
  279. package/dist/types/components/rule-editor/rule-arg-filter-editor/rule-arg-filter-editor-metadata.d.ts +4 -0
  280. package/dist/types/components/rule-editor/rule-chip-popover/rule-chip-popover.d.ts +8 -0
  281. package/dist/types/components/rule-editor/rule-editor-views.d.ts +6 -0
  282. package/dist/types/components/rule-editor/rule-editor.d.ts +14 -0
  283. package/dist/types/components/rule-editor/rule-operations.d.ts +8 -0
  284. package/dist/types/components/rule-editor/value-comparison-editor/value-comparison-editor-metadata.d.ts +12 -0
  285. package/dist/types/components/rule-editor/value-comparison-editor/value-comparison-editor.d.ts +45 -0
  286. package/dist/types/components.d.ts +127 -0
  287. package/package.json +4 -4
  288. package/dist/lime-crm-building-blocks/p-07ef2fd0.entry.js +0 -1
  289. package/dist/lime-crm-building-blocks/p-4e0d077b.entry.js +0 -1
  290. package/dist/lime-crm-building-blocks/p-55692241.entry.js +0 -1
  291. package/dist/lime-crm-building-blocks/p-898b097e.entry.js +0 -1
  292. package/dist/lime-crm-building-blocks/p-95a3cf87.entry.js +0 -1
  293. package/dist/lime-crm-building-blocks/p-ec335be5.entry.js +0 -1
  294. /package/dist/lime-crm-building-blocks/{p-CqRNpSRV.js → p-BVxuJgRM.js} +0 -0
@@ -1 +1 @@
1
- import{r as t,h as e,g as i}from"./p-DYpn0EkA.js";import{b as r,n as s,l as o,d as n,L as a,r as l}from"./p-CqRNpSRV.js";import{a as h}from"./p-BbFGcMnU.js";class c{constructor(t){this.getState=t,this.contextType="info-tile"}getContext(){const{limetype:t,filterId:e,filterName:i,aggregateOperator:r,propertyName:s,value:o,label:n}=this.getState();if(!t||!e)return console.debug("InfoTileContextProvider: No limetype or filterId available"),null;const a={widgetType:"info-tile",limetype:t,filterId:e};return i&&(a.filterName=i),a.aggregateOperator=r,s&&(a.propertyName=s),void 0!==o&&(a.value=o),n&&(a.label=n),{data:a,purpose:"Shows an aggregated value from a filter. Clicking navigates to the explorer with that filter applied."}}}class u{constructor(t,e=[]){this.platform=t,this.filters=e}async load(t,e){let i;return i=this.isObjectIdentifier(e)?await this.loadLimeObjectInfoTile(t,e):await this.loadBasicInfoTile(t),i}async loadBasicInfoTile(t){const e=this.getFilter(t.filter);if(!e)throw new Error(`Filter "${t.filter}" not found`);return(await this.query.execute({limetype:e.limetype,responseFormat:{aggregates:{infotiles:{value:{op:t.operator,key:t.name}}}},filter:e.filter})).aggregates.infotiles[0].value}async loadLimeObjectInfoTile(t,e){await this.objectRepository.loadObject(e.limetype,e.id,{properties:[t]});const i=this.objectRepository.getObject(e.limetype,e.id);return null==i?void 0:i.getValue([t.name,t.key].join("."))}isObjectIdentifier(t){return Boolean((null==t?void 0:t.limetype)&&(null==t?void 0:t.id))}getFilter(t){return this.filters.find((e=>e.id===t))}get query(){return this.platform.get(r.Query)}get objectRepository(){return this.platform.get(r.LimeObjectRepository)}}function f(t,e){return t&&(t[e]||t.en||t.en_us)||""}function d(t,e=[]){const{path:i,query:r}=function(t,e=[]){if(!t)return{path:"#"};const i=["explorer",t.limetype,t.id].join("/"),r=function(t,e){const i=[...e,t].filter((t=>void 0!==t));if(0!==i.length)return 1===i.length?i[0]:{op:s.AND,exp:i}}(t.filter,e);return r?{path:i,query:{filter:r}}:{path:i}}(t,e);return r?`${i}?${Object.entries(r).map((([t,e])=>`${t}=${encodeURIComponent(JSON.stringify(e))}`)).join("&")}`:i}class p{constructor(t){this.locale=t}format(t){let e=String(t);return"number"==typeof t?e=new Intl.NumberFormat(this.locale).format(t):new Date(t).getTime()&&(e=new Intl.DateTimeFormat(this.locale).format(new Date(t))),{value:e}}}class v{constructor(t){this.locale=t}format(t,e){const i=new Date(t);return{prefix:this.formatAffix("prefix",i,e),value:this.formatValue(i,e),suffix:this.formatAffix("suffix",i,e)}}formatValue(t,e){const i=Object.assign({},e.options);if(e.prefix)for(const t of e.prefix)delete i[t];if(e.suffix)for(const t of e.suffix)delete i[t];return new Intl.DateTimeFormat(this.locale,i).format(t)}formatAffix(t,e,i){const r=Object.assign({},i.options);for(const e of Object.keys(r))"hour12"!==e&&((i[t]||[]).includes(e)||delete r[e]);if(0!==Object.values(r).filter(Boolean).length)return new Intl.DateTimeFormat(this.locale,r).format(e)}}class g{constructor(t){this.locale=t}format(t,e){var i,r;const s=new Intl.NumberFormat(this.locale,e.options),o=s.formatToParts(t);let n="",a="",l="";for(const t of o)(null===(i=e.prefix)||void 0===i?void 0:i.includes(t.type))?n+=t.value:(null===(r=e.suffix)||void 0===r?void 0:r.includes(t.type))?l+=t.value:a+=t.value;return a||(a=s.format(t),n="",l=""),{prefix:n,value:a,suffix:l}}}class m{constructor(t){this.locale=t}format(t,e){const i=new Intl.RelativeTimeFormat(this.locale,e.options),{value:r,unit:s}=this.getRelativeTime(t),o=i.formatToParts(r,s);let n="",a="",l="";for(const t of o)"literal"!==t.type||a?"literal"===t.type&&a?l+=t.value:a+=t.value:n+=t.value;return a||(a=n||l,n="",l=""),{prefix:n,value:a,suffix:l}}getRelativeTime(t){const e=new Date(t),i=new Date,r=e.getTime()-i.getTime(),s=[{unit:"year",value:31536e6},{unit:"month",value:2592e6},{unit:"week",value:6048e5},{unit:"day",value:864e5},{unit:"hour",value:36e5},{unit:"minute",value:6e4},{unit:"second",value:1e3}];for(const t of s){const e=r/t.value;if(Math.abs(e)>=1)return{value:Math.round(e),unit:t.unit}}return{value:0,unit:"second"}}}class b{constructor(t){this.locale=t}createFormatter(t,e){return"number"===(null==t?void 0:t.type)&&"number"==typeof e?new g(this.locale):"date"===(null==t?void 0:t.type)&&"string"==typeof e?new v(this.locale):"relative-date"===(null==t?void 0:t.type)&&"string"==typeof e?new m(this.locale):new p(this.locale)}}var y=function(t,e,i,r){var s,o=arguments.length,n=o<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,r);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(n=(o<3?s(n):o>3?s(e,i,n):s(e,i))||n);return o>3&&n&&Object.defineProperty(e,i,n),n};const w=class{constructor(e){t(this,e),this.aggregateOperator=l.Count,this.loading=!1,this.error=!1}connectedCallback(){this.registerContextProvider()}disconnectedCallback(){var t;null===(t=this.unregisterContextProvider)||void 0===t||t.call(this)}componentWillLoad(){this.loadInfoTileValue()}watchFilterId(){this.loadInfoTileValue()}watchPropertyName(){this.loadInfoTileValue()}watchAggregateOperator(){this.loadInfoTileValue()}async loadInfoTileValue(){if(this.loading=!0,this.error=!1,this.getFilter()){try{const t={key:this.getKey(),name:this.propertyName,operator:this.aggregateOperator,filter:this.filterId};this.value=await this.loader.load(t,this.context)}catch(t){console.error(t),this.error=!0}this.loading=!1}else this.error=!0}getKey(){return Math.random().toString(36).slice(2)}render(){var t,i;const r=this.getFilter(),s=this.getFormattedValue(),o={disabled:this.disabled,icon:this.icon,prefix:(null===(t=null==s?void 0:s.prefix)||void 0===t?void 0:t.trim())||this.prefix,suffix:(null===(i=null==s?void 0:s.suffix)||void 0===i?void 0:i.trim())||this.suffix},n=Object.assign(Object.assign({},o),{icon:"error",prefix:"ERROR",loading:!0,label:this.getLabel(r)}),a=Object.assign(Object.assign({},o),{label:this.getLabel(r),link:this.getLink(r),loading:this.loading,value:null==s?void 0:s.value.trim()});return e("limel-info-tile",Object.assign({key:"0b1ada2299bec6b79e903f3612e3c1cfbbf31827",class:{error:!r||this.error}},!r||this.error?n:a))}getFormattedValue(){if(!this.value&&0!==this.value)return{value:""};try{return this.getFormatter(this.value).format(this.value,this.format)}catch(t){return new p(this.language).format(this.value)}}getLabel(t){return t?"string"==typeof this.label?this.translator.get(this.label):f(this.label&&"object"==typeof this.label?this.label:t.name,this.language):"No filter set is selected"}getLink(t){const e=h({targetLimetype:t?this.limetypes[t.limetype]:void 0,currentLimetype:this.context.limetype?this.limetypes[this.context.limetype]:void 0,contextLimetypeName:this.context.limetype,contextId:this.context.id,propertyName:this.propertyName});return{href:d(t,e&&this.context.id?[{key:e,op:s.EQUALS,exp:this.context.id}]:[])}}getFilter(){return function(t,e){if(t&&e)return t.find((t=>t.id===e))}(this.filters,this.filterId)}getFormatter(t){return new b(this.language).createFormatter(this.format,t)}get translator(){return this.platform.get(r.Translate)}get language(){return this.platform.get(r.Application).getLanguage()}get loader(){return new u(this.platform,this.filters)}registerContextProvider(){const t=this.platform.get(r.AIContextRegistry);if(!(null==t?void 0:t.register))return;const e=new c((()=>{const t=this.getFilter();return{limetype:null==t?void 0:t.limetype,filterId:this.filterId,filterName:t?f(t.name,this.language):void 0,aggregateOperator:this.aggregateOperator,propertyName:this.propertyName,value:this.value,label:this.getLabel(t)}}));this.unregisterContextProvider=t.register(e,this.host)}get host(){return i(this)}static get watchers(){return{filterId:[{watchFilterId:0}],propertyName:[{watchPropertyName:0}],aggregateOperator:[{watchAggregateOperator:0}]}}};y([o({})],w.prototype,"config",void 0),y([n()],w.prototype,"filters",void 0),y([a()],w.prototype,"limetypes",void 0),w.style=":host(limebb-info-tile){display:block;overflow:visible !important;background-color:transparent !important}limel-info-tile.error{--info-tile-icon-color:rgb(var(--color-red-dark));border:1px dashed rgb(var(--contrast-500));border-radius:var(--info-tile-border-radius, 1rem)}";export{w as limebb_info_tile}
1
+ import{r as t,h as e,g as i}from"./p-DYpn0EkA.js";import{b as r,n as s,l as o,d as n,L as a,r as l}from"./p-BVxuJgRM.js";import{a as h}from"./p-DK4A47Sj.js";class u{constructor(t){this.getState=t,this.contextType="info-tile"}getContext(){const{limetype:t,filterId:e,filterName:i,aggregateOperator:r,propertyName:s,value:o,label:n}=this.getState();if(!t||!e)return console.debug("InfoTileContextProvider: No limetype or filterId available"),null;const a={widgetType:"info-tile",limetype:t,filterId:e};return i&&(a.filterName=i),a.aggregateOperator=r,s&&(a.propertyName=s),void 0!==o&&(a.value=o),n&&(a.label=n),{data:a,purpose:"Shows an aggregated value from a filter. Clicking navigates to the explorer with that filter applied."}}}class c{constructor(t,e=[]){this.platform=t,this.filters=e}async load(t,e){let i;return i=this.isObjectIdentifier(e)?await this.loadLimeObjectInfoTile(t,e):await this.loadBasicInfoTile(t),i}async loadBasicInfoTile(t){const e=this.getFilter(t.filter);if(!e)throw new Error(`Filter "${t.filter}" not found`);return(await this.query.execute({limetype:e.limetype,responseFormat:{aggregates:{infotiles:{value:{op:t.operator,key:t.name}}}},filter:e.filter})).aggregates.infotiles[0].value}async loadLimeObjectInfoTile(t,e){await this.objectRepository.loadObject(e.limetype,e.id,{properties:[t]});const i=this.objectRepository.getObject(e.limetype,e.id);return null==i?void 0:i.getValue([t.name,t.key].join("."))}isObjectIdentifier(t){return Boolean((null==t?void 0:t.limetype)&&(null==t?void 0:t.id))}getFilter(t){return this.filters.find((e=>e.id===t))}get query(){return this.platform.get(r.Query)}get objectRepository(){return this.platform.get(r.LimeObjectRepository)}}function f(t,e){return t&&(t[e]||t.en||t.en_us)||""}function d(t,e=[]){const{path:i,query:r}=function(t,e=[]){if(!t)return{path:"#"};const i=["explorer",t.limetype,t.id].join("/"),r=function(t,e){const i=[...e,t].filter((t=>void 0!==t));if(0!==i.length)return 1===i.length?i[0]:{op:s.AND,exp:i}}(t.filter,e);return r?{path:i,query:{filter:r}}:{path:i}}(t,e);return r?`${i}?${Object.entries(r).map((([t,e])=>`${t}=${encodeURIComponent(JSON.stringify(e))}`)).join("&")}`:i}class p{constructor(t){this.locale=t}format(t){let e=String(t);return"number"==typeof t?e=new Intl.NumberFormat(this.locale).format(t):new Date(t).getTime()&&(e=new Intl.DateTimeFormat(this.locale).format(new Date(t))),{value:e}}}class v{constructor(t){this.locale=t}format(t,e){const i=new Date(t);return{prefix:this.formatAffix("prefix",i,e),value:this.formatValue(i,e),suffix:this.formatAffix("suffix",i,e)}}formatValue(t,e){const i=Object.assign({},e.options);if(e.prefix)for(const t of e.prefix)delete i[t];if(e.suffix)for(const t of e.suffix)delete i[t];return new Intl.DateTimeFormat(this.locale,i).format(t)}formatAffix(t,e,i){const r=Object.assign({},i.options);for(const e of Object.keys(r))"hour12"!==e&&((i[t]||[]).includes(e)||delete r[e]);if(0!==Object.values(r).filter(Boolean).length)return new Intl.DateTimeFormat(this.locale,r).format(e)}}class g{constructor(t){this.locale=t}format(t,e){var i,r;const s=new Intl.NumberFormat(this.locale,e.options),o=s.formatToParts(t);let n="",a="",l="";for(const t of o)(null===(i=e.prefix)||void 0===i?void 0:i.includes(t.type))?n+=t.value:(null===(r=e.suffix)||void 0===r?void 0:r.includes(t.type))?l+=t.value:a+=t.value;return a||(a=s.format(t),n="",l=""),{prefix:n,value:a,suffix:l}}}class m{constructor(t){this.locale=t}format(t,e){const i=new Intl.RelativeTimeFormat(this.locale,e.options),{value:r,unit:s}=this.getRelativeTime(t),o=i.formatToParts(r,s);let n="",a="",l="";for(const t of o)"literal"!==t.type||a?"literal"===t.type&&a?l+=t.value:a+=t.value:n+=t.value;return a||(a=n||l,n="",l=""),{prefix:n,value:a,suffix:l}}getRelativeTime(t){const e=new Date(t),i=new Date,r=e.getTime()-i.getTime(),s=[{unit:"year",value:31536e6},{unit:"month",value:2592e6},{unit:"week",value:6048e5},{unit:"day",value:864e5},{unit:"hour",value:36e5},{unit:"minute",value:6e4},{unit:"second",value:1e3}];for(const t of s){const e=r/t.value;if(Math.abs(e)>=1)return{value:Math.round(e),unit:t.unit}}return{value:0,unit:"second"}}}class b{constructor(t){this.locale=t}createFormatter(t,e){return"number"===(null==t?void 0:t.type)&&"number"==typeof e?new g(this.locale):"date"===(null==t?void 0:t.type)&&"string"==typeof e?new v(this.locale):"relative-date"===(null==t?void 0:t.type)&&"string"==typeof e?new m(this.locale):new p(this.locale)}}var y=function(t,e,i,r){var s,o=arguments.length,n=o<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,r);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(n=(o<3?s(n):o>3?s(e,i,n):s(e,i))||n);return o>3&&n&&Object.defineProperty(e,i,n),n};const w=class{constructor(e){t(this,e),this.aggregateOperator=l.Count,this.loading=!1,this.error=!1}get hostElement(){return this.host}connectedCallback(){this.registerContextProvider()}disconnectedCallback(){var t;null===(t=this.unregisterContextProvider)||void 0===t||t.call(this)}componentWillLoad(){this.loadInfoTileValue()}watchFilterId(){this.loadInfoTileValue()}watchPropertyName(){this.loadInfoTileValue()}watchAggregateOperator(){this.loadInfoTileValue()}async loadInfoTileValue(){if(this.loading=!0,this.error=!1,this.getFilter()){try{const t={key:this.getKey(),name:this.propertyName,operator:this.aggregateOperator,filter:this.filterId};this.value=await this.loader.load(t,this.context)}catch(t){console.error(t),this.error=!0}this.loading=!1}else this.error=!0}getKey(){return Math.random().toString(36).slice(2)}render(){var t,i;const r=this.getFilter(),s=this.getFormattedValue(),o={disabled:this.disabled,icon:this.icon,prefix:(null===(t=null==s?void 0:s.prefix)||void 0===t?void 0:t.trim())||this.prefix,suffix:(null===(i=null==s?void 0:s.suffix)||void 0===i?void 0:i.trim())||this.suffix,reducedPresence:this.shouldReducePresence()},n=Object.assign(Object.assign({},o),{icon:"error",prefix:"ERROR",loading:!0,label:this.getLabel(r)}),a=Object.assign(Object.assign({},o),{label:this.getLabel(r),link:this.getLink(r),loading:this.loading,value:null==s?void 0:s.value.trim()});return e("limel-info-tile",Object.assign({key:"f5680e93f15afe32e8abdcd05b89f12708b8edf5",class:{error:!r||this.error}},!r||this.error?n:a))}shouldReducePresence(){if(this.reducedPresence)return!0;if(!this.reducedPresenceRule||this.loading)return!1;try{return this.ruleRegistry.compile(this.reducedPresenceRule)(this.ruleRegistry.scope({host:this.hostElement,with:{scalarValue:this.value}}))}catch(t){return!1}}getFormattedValue(){if(!this.value&&0!==this.value)return{value:""};try{return this.getFormatter(this.value).format(this.value,this.format)}catch(t){return new p(this.language).format(this.value)}}getLabel(t){return t?"string"==typeof this.label?this.translator.get(this.label):f(this.label&&"object"==typeof this.label?this.label:t.name,this.language):"No filter set is selected"}getLink(t){const e=h({targetLimetype:t?this.limetypes[t.limetype]:void 0,currentLimetype:this.context.limetype?this.limetypes[this.context.limetype]:void 0,contextLimetypeName:this.context.limetype,contextId:this.context.id,propertyName:this.propertyName});return{href:d(t,e&&this.context.id?[{key:e,op:s.EQUALS,exp:this.context.id}]:[])}}getFilter(){return function(t,e){if(t&&e)return t.find((t=>t.id===e))}(this.filters,this.filterId)}getFormatter(t){return new b(this.language).createFormatter(this.format,t)}get translator(){return this.platform.get(r.Translate)}get ruleRegistry(){return this.platform.get(r.RuleRegistry)}get language(){return this.platform.get(r.Application).getLanguage()}get loader(){return new c(this.platform,this.filters)}registerContextProvider(){const t=this.platform.get(r.AIContextRegistry);if(!(null==t?void 0:t.register))return;const e=new u((()=>{const t=this.getFilter();return{limetype:null==t?void 0:t.limetype,filterId:this.filterId,filterName:t?f(t.name,this.language):void 0,aggregateOperator:this.aggregateOperator,propertyName:this.propertyName,value:this.value,label:this.getLabel(t)}}));this.unregisterContextProvider=t.register(e,this.hostElement)}get host(){return i(this)}static get watchers(){return{filterId:[{watchFilterId:0}],propertyName:[{watchPropertyName:0}],aggregateOperator:[{watchAggregateOperator:0}]}}};y([o({})],w.prototype,"config",void 0),y([n()],w.prototype,"filters",void 0),y([a()],w.prototype,"limetypes",void 0),w.style=":host(limebb-info-tile){display:block;overflow:visible !important;background-color:transparent !important}limel-info-tile.error{--info-tile-icon-color:rgb(var(--color-red-dark));border:1px dashed rgb(var(--contrast-500));border-radius:var(--info-tile-border-radius, 1rem)}";export{w as limebb_info_tile}
@@ -1,4 +1,4 @@
1
- import { LimeWebComponent, LimeWebComponentContext, LimeWebComponentPlatform, AggregateOperator } from '@limetech/lime-web-components';
1
+ import { LimeWebComponent, LimeWebComponentContext, LimeWebComponentPlatform, AggregateOperator, Rule } from '@limetech/lime-web-components';
2
2
  import { IconName } from '@limetech/lime-elements';
3
3
  import { DateTimeFormat, NumberFormat, RelativeDateTimeFormat } from './format';
4
4
  /**
@@ -14,12 +14,22 @@ import { DateTimeFormat, NumberFormat, RelativeDateTimeFormat } from './format';
14
14
  * @exampleComponent limebb-example-info-tile-unit-format
15
15
  * @exampleComponent limebb-example-info-tile-date-format
16
16
  * @exampleComponent limebb-example-info-tile-relative-date-format
17
+ * @exampleComponent limebb-example-info-tile-reduce-presence
17
18
  * @beta
18
19
  */
19
20
  export declare class InfoTile implements LimeWebComponent {
20
21
  platform: LimeWebComponentPlatform;
21
22
  context: LimeWebComponentContext;
22
23
  private host;
24
+ /**
25
+ * The host cast to a plain `HTMLElement` (intersected with
26
+ * `LimeWebComponent` for the context registry). The cast is needed
27
+ * because this component declares a `prefix` prop, which collides with
28
+ * the native `HTMLElement.prefix` attribute (`string | undefined` vs
29
+ * `string | null`), leaving `HTMLLimebbInfoTileElement` and `HTMLElement`
30
+ * mutually unassignable.
31
+ */
32
+ private get hostElement();
23
33
  /**
24
34
  * ID of the filter set to use
25
35
  */
@@ -53,6 +63,35 @@ export declare class InfoTile implements LimeWebComponent {
53
63
  */
54
64
  aggregateOperator: AggregateOperator;
55
65
  format?: NumberFormat | DateTimeFormat | RelativeDateTimeFormat;
66
+ /**
67
+ * When `true`, the info tile is rendered with a reduced visual
68
+ * presence (lower saturation and opacity) so it draws less
69
+ * attention. Use this for tiles whose values are not currently
70
+ * noteworthy — for example, a counter that is zero or a metric that
71
+ * sits within an expected range — so the user is not overwhelmed by
72
+ * a dashboard full of equally-loud tiles.
73
+ *
74
+ * The actual styling lives on `limel-info-tile`; this component
75
+ * just forwards the boolean. Set this directly when the consumer
76
+ * already knows the answer. When the answer depends on the tile's
77
+ * value, set {@link reducedPresenceRule} instead and the tile
78
+ * will compute the boolean itself.
79
+ */
80
+ reducedPresence?: boolean;
81
+ /**
82
+ * Rule that drives `reducedPresence` from the tile's loaded value.
83
+ * When set, the tile evaluates it against its `value` after each load
84
+ * and dims itself when the rule is `true`. The {@link reducedPresence}
85
+ * prop still takes effect on top — if either says "dim", the tile dims.
86
+ *
87
+ * Any rule the `RuleRegistry` can compile works. The tile evaluates
88
+ * it against a scope anchored on its host, with the tile's loaded
89
+ * value supplied as `scalarValue`. So primitives reading
90
+ * `scalarValue` — such as `limetech.value-comparison` — see the
91
+ * figure on screen, while any other context the primitive reads
92
+ * resolves from the DOM.
93
+ */
94
+ reducedPresenceRule?: Rule;
56
95
  /**
57
96
  * Only used to trigger a re-render when a config is saved in Lime Admin
58
97
  */
@@ -72,12 +111,22 @@ export declare class InfoTile implements LimeWebComponent {
72
111
  private loadInfoTileValue;
73
112
  private getKey;
74
113
  render(): any;
114
+ /**
115
+ * Effective `reducedPresence` for this render. The boolean prop
116
+ * wins if it's set; otherwise the rule is evaluated against the
117
+ * current value. The rule is skipped while loading so the tile
118
+ * doesn't flicker between dimmed and full-presence on its first
119
+ * paint — the load completes within a frame or two and the next
120
+ * render picks up the real value.
121
+ */
122
+ private shouldReducePresence;
75
123
  private getFormattedValue;
76
124
  private getLabel;
77
125
  private getLink;
78
126
  private getFilter;
79
127
  private getFormatter;
80
128
  private get translator();
129
+ private get ruleRegistry();
81
130
  private get language();
82
131
  private get loader();
83
132
  private registerContextProvider;
@@ -7,6 +7,14 @@ export interface ChipChild {
7
7
  isNegated: boolean;
8
8
  index: number;
9
9
  }
10
+ /**
11
+ * Address of the chip at `index` inside a group: the group's path plus
12
+ * the `['rules', index]` suffix. Built here so the picker and popover
13
+ * address chips the same way.
14
+ * @param groupPath
15
+ * @param index
16
+ */
17
+ export declare function buildChipPath(groupPath: RulePath, index: number): RulePath;
10
18
  /**
11
19
  * If `node` is a `ref` or a `not(ref)`, return the underlying ref
12
20
  * together with its negation flag. Used to decide whether a child of a
@@ -4,6 +4,10 @@ import { RuleRegistry } from '@limetech/lime-web-components';
4
4
  * `limeobject-matches-filter` primitive, so the rule editor renders the
5
5
  * filter builder instead of a raw JSON field.
6
6
  *
7
+ * No-op when the primitive is not registered. `attachMetadata` throws
8
+ * for an unknown id, and this runs at loader time on every surface, so
9
+ * a missing primitive would otherwise block the whole app from loading.
10
+ *
7
11
  * @param registry - the platform's rule registry.
8
12
  */
9
13
  export declare const attachRuleArgFilterEditorMetadata: (registry: RuleRegistry) => void;
@@ -20,6 +20,14 @@ export declare class RuleChipPopover {
20
20
  readonly: boolean;
21
21
  disabled: boolean;
22
22
  isMutable: boolean;
23
+ /**
24
+ * Forwarded to the embedded config component so it can pull focus
25
+ * when this popover opens. The rule editor sets it only when the chip
26
+ * was just added via the picker, so clicking an existing chip does
27
+ * not steal focus. The component decides when it is ready to receive
28
+ * focus (e.g. after loading its own data).
29
+ */
30
+ focusOnOpen: boolean;
23
31
  negate: EventEmitter<boolean>;
24
32
  updateArgs: EventEmitter<JsonValue>;
25
33
  deleteChip: EventEmitter<void>;
@@ -19,6 +19,12 @@ export interface RuleNodeRenderContext {
19
19
  context: LimeWebComponentContext;
20
20
  translator: Translator;
21
21
  openChipPath: RulePath | null;
22
+ /**
23
+ * True when the open chip's popover should pull focus into its
24
+ * config component — set only when the chip was just added via the
25
+ * picker (auto-open), not when an existing chip is clicked.
26
+ */
27
+ focusOnOpen: boolean;
22
28
  onDelete: (path: RulePath) => void;
23
29
  onUpdateArgs: (path: RulePath, args: JsonValue) => void;
24
30
  onReplaceNode: (path: RulePath, replacement: Rule) => void;
@@ -94,6 +94,7 @@ export declare class RuleEditor implements LimeWebComponent, FormComponent<Rule
94
94
  private resolvedContext?;
95
95
  private issues;
96
96
  private openChipPath;
97
+ private focusOnOpen;
97
98
  private metadataById;
98
99
  private allPrimitiveOptions;
99
100
  private availablePrimitiveOptions;
@@ -119,6 +120,19 @@ export declare class RuleEditor implements LimeWebComponent, FormComponent<Rule
119
120
  private handleDelete;
120
121
  private handleUpdateArgs;
121
122
  private handleReplaceNode;
123
+ /**
124
+ * Path of a newly added chip whose primitive declares a config
125
+ * component, so its args editor opens immediately on add. The new
126
+ * ref is found by object identity — the picker reuses existing ref
127
+ * objects and only the added chip is a fresh node — so adding a
128
+ * second instance of a primitive already in the group is still
129
+ * detected. Returns `null` unless exactly one ref was added and it
130
+ * has an editor, leaving the open chip untouched for removals,
131
+ * multi-adds, and negation.
132
+ * @param path
133
+ * @param replacement
134
+ */
135
+ private autoOpenPathFor;
122
136
  private handleChipInteract;
123
137
  private handlePopoverClose;
124
138
  private indexMetadata;
@@ -59,4 +59,12 @@ export declare function pathsEqual(a: RulePath, b: RulePath): boolean;
59
59
  * @param path
60
60
  */
61
61
  export declare function issuesAt(issues: RuleValidationIssue[], path: RulePath): RuleValidationIssue[];
62
+ /**
63
+ * Resolve the node at `path` by walking each segment from the root.
64
+ * Returns `undefined` when a segment indexes past the end of a
65
+ * combinator's `rules`, so callers must guard the result.
66
+ * @param rule
67
+ * @param path
68
+ */
69
+ export declare function getNode(rule: Rule, path: RulePath): Rule | undefined;
62
70
  //# sourceMappingURL=rule-operations.d.ts.map
@@ -0,0 +1,12 @@
1
+ import { RuleRegistry } from '@limetech/lime-web-components';
2
+ /**
3
+ * Attach `limebb-value-comparison-editor` as the args editor for the
4
+ * `limetech.value-comparison` primitive, so the rule editor renders an
5
+ * operator and operand instead of a raw JSON field. The primitive itself
6
+ * is defined in limeclient.js; this only fills in the `configComponent`
7
+ * that a non-component library cannot reference.
8
+ *
9
+ * @param registry - the platform's rule registry.
10
+ */
11
+ export declare const attachValueComparisonEditorMetadata: (registry: RuleRegistry) => void;
12
+ //# sourceMappingURL=value-comparison-editor-metadata.d.ts.map
@@ -0,0 +1,45 @@
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
2
+ import { Operator } from '@limetech/lime-web-components';
3
+ import { FormComponent } from '@limetech/lime-elements';
4
+ /**
5
+ * The scalar types the editor emits. A wider set is accepted by the
6
+ * `limetech.value-comparison` primitive, but the editor only needs to
7
+ * distinguish numeric ordering from the case-insensitive string ordering
8
+ * that also sorts ISO date strings correctly.
9
+ */
10
+ export type ValueComparisonValueType = 'number' | 'string';
11
+ export interface ValueComparisonEditorValue {
12
+ operator?: Operator;
13
+ operand?: string | number;
14
+ valueType?: ValueComparisonValueType;
15
+ }
16
+ /**
17
+ * Args editor for the `limetech.value-comparison` rule primitive: an
18
+ * operator from the match-filter {@link Operator} vocabulary plus the value
19
+ * to compare against. The operand is emitted as a number when it parses as
20
+ * one and as a string otherwise; the `valueType` follows from it so the
21
+ * primitive orders numerically for numbers and lexically for strings (ISO
22
+ * date strings sort correctly that way).
23
+ *
24
+ * Emptiness is a separate concern handled by the `limetech.value-is-empty`
25
+ * primitive, so this editor offers comparison operators only.
26
+ *
27
+ * @alpha
28
+ * @private
29
+ */
30
+ export declare class ValueComparisonEditor implements FormComponent<ValueComparisonEditorValue> {
31
+ /**
32
+ * @inheritdoc
33
+ */
34
+ value: ValueComparisonEditorValue;
35
+ /**
36
+ * @inheritdoc
37
+ */
38
+ change: EventEmitter<ValueComparisonEditorValue>;
39
+ render(): any;
40
+ private renderOperandInput;
41
+ private handleOperatorChange;
42
+ private handleOperandChange;
43
+ private withOperand;
44
+ }
45
+ //# sourceMappingURL=value-comparison-editor.d.ts.map
@@ -33,6 +33,7 @@ import { NotificationItem } from "./components/notification-list/notification-it
33
33
  import { RuleArgFilterEditorValue } from "./components/rule-editor/rule-arg-filter-editor/rule-arg-filter-editor";
34
34
  import { TriggerMap } from "./components/text-editor/text-editor.types";
35
35
  import { EnhancedEditorMetadata } from "./components/text-editor/uploader/building-blocks-upload-handler";
36
+ import { ValueComparisonEditorValue } from "./components/rule-editor/value-comparison-editor/value-comparison-editor";
36
37
  export { AlertType } from "./components/alert-dialog/alert-dialog.types";
37
38
  export { AggregateOperator, ContextMap, ContextScope, Expression, JsonValue, LimeFileUrlType, LimeType, LimeWebComponentContext, LimeWebComponentPlatform, NotExpression, Operator, PrimitiveMetadata, Rule, RuleRef } from "@limetech/lime-web-components";
38
39
  export { BrowserItem } from "./components/browser/browser-item.types";
@@ -61,6 +62,7 @@ export { NotificationItem } from "./components/notification-list/notification-it
61
62
  export { RuleArgFilterEditorValue } from "./components/rule-editor/rule-arg-filter-editor/rule-arg-filter-editor";
62
63
  export { TriggerMap } from "./components/text-editor/text-editor.types";
63
64
  export { EnhancedEditorMetadata } from "./components/text-editor/uploader/building-blocks-upload-handler";
65
+ export { ValueComparisonEditorValue } from "./components/rule-editor/value-comparison-editor/value-comparison-editor";
64
66
  export namespace Components {
65
67
  /**
66
68
  * An alert dialog interrupts the user flow. It can be used when an explicit
@@ -1069,6 +1071,7 @@ export namespace Components {
1069
1071
  * @exampleComponent limebb-example-info-tile-unit-format
1070
1072
  * @exampleComponent limebb-example-info-tile-date-format
1071
1073
  * @exampleComponent limebb-example-info-tile-relative-date-format
1074
+ * @exampleComponent limebb-example-info-tile-reduce-presence
1072
1075
  * @beta
1073
1076
  */
1074
1077
  interface LimebbInfoTile {
@@ -1110,6 +1113,14 @@ export namespace Components {
1110
1113
  * Name of the property to use when aggregating
1111
1114
  */
1112
1115
  "propertyName": string;
1116
+ /**
1117
+ * When `true`, the info tile is rendered with a reduced visual presence (lower saturation and opacity) so it draws less attention. Use this for tiles whose values are not currently noteworthy — for example, a counter that is zero or a metric that sits within an expected range — so the user is not overwhelmed by a dashboard full of equally-loud tiles. The actual styling lives on `limel-info-tile`; this component just forwards the boolean. Set this directly when the consumer already knows the answer. When the answer depends on the tile's value, set {@link reducedPresenceRule} instead and the tile will compute the boolean itself.
1118
+ */
1119
+ "reducedPresence"?: boolean;
1120
+ /**
1121
+ * Rule that drives `reducedPresence` from the tile's loaded value. When set, the tile evaluates it against its `value` after each load and dims itself when the rule is `true`. The {@link reducedPresence} prop still takes effect on top — if either says "dim", the tile dims. Any rule the `RuleRegistry` can compile works. The tile evaluates it against a scope anchored on its host, with the tile's loaded value supplied as `scalarValue`. So primitives reading `scalarValue` — such as `limetech.value-comparison` — see the figure on screen, while any other context the primitive reads resolves from the DOM.
1122
+ */
1123
+ "reducedPresenceRule"?: Rule;
1113
1124
  /**
1114
1125
  * A string of text that is visually placed after the value.
1115
1126
  */
@@ -2258,6 +2269,11 @@ export namespace Components {
2258
2269
  * @default false
2259
2270
  */
2260
2271
  "disabled": boolean;
2272
+ /**
2273
+ * Forwarded to the embedded config component so it can pull focus when this popover opens. The rule editor sets it only when the chip was just added via the picker, so clicking an existing chip does not steal focus. The component decides when it is ready to receive focus (e.g. after loading its own data).
2274
+ * @default false
2275
+ */
2276
+ "focusOnOpen": boolean;
2261
2277
  /**
2262
2278
  * @default true
2263
2279
  */
@@ -2684,6 +2700,26 @@ export namespace Components {
2684
2700
  */
2685
2701
  interface LimebbTypingIndicator {
2686
2702
  }
2703
+ /**
2704
+ * Args editor for the `limetech.value-comparison` rule primitive: an
2705
+ * operator from the match-filter {@link Operator} vocabulary plus the value
2706
+ * to compare against. The operand is emitted as a number when it parses as
2707
+ * one and as a string otherwise; the `valueType` follows from it so the
2708
+ * primitive orders numerically for numbers and lexically for strings (ISO
2709
+ * date strings sort correctly that way).
2710
+ * Emptiness is a separate concern handled by the `limetech.value-is-empty`
2711
+ * primitive, so this editor offers comparison operators only.
2712
+ * @alpha
2713
+ * @private
2714
+ */
2715
+ interface LimebbValueComparisonEditor {
2716
+ /**
2717
+ * The value of the current property
2718
+ * @inheritdoc
2719
+ * @default {}
2720
+ */
2721
+ "value": ValueComparisonEditorValue;
2722
+ }
2687
2723
  }
2688
2724
  export interface LimebbAlertDialogCustomEvent<T> extends CustomEvent<T> {
2689
2725
  detail: T;
@@ -2877,6 +2913,10 @@ export interface LimebbTextEditorPickerCustomEvent<T> extends CustomEvent<T> {
2877
2913
  detail: T;
2878
2914
  target: HTMLLimebbTextEditorPickerElement;
2879
2915
  }
2916
+ export interface LimebbValueComparisonEditorCustomEvent<T> extends CustomEvent<T> {
2917
+ detail: T;
2918
+ target: HTMLLimebbValueComparisonEditorElement;
2919
+ }
2880
2920
  declare global {
2881
2921
  interface HTMLLimebbAlertDialogElementEventMap {
2882
2922
  "dismiss": void;
@@ -3499,6 +3539,7 @@ declare global {
3499
3539
  * @exampleComponent limebb-example-info-tile-unit-format
3500
3540
  * @exampleComponent limebb-example-info-tile-date-format
3501
3541
  * @exampleComponent limebb-example-info-tile-relative-date-format
3542
+ * @exampleComponent limebb-example-info-tile-reduce-presence
3502
3543
  * @beta
3503
3544
  */
3504
3545
  interface HTMLLimebbInfoTileElement extends Components.LimebbInfoTile, HTMLStencilElement {
@@ -4665,6 +4706,35 @@ declare global {
4665
4706
  prototype: HTMLLimebbTypingIndicatorElement;
4666
4707
  new (): HTMLLimebbTypingIndicatorElement;
4667
4708
  };
4709
+ interface HTMLLimebbValueComparisonEditorElementEventMap {
4710
+ "change": ValueComparisonEditorValue;
4711
+ }
4712
+ /**
4713
+ * Args editor for the `limetech.value-comparison` rule primitive: an
4714
+ * operator from the match-filter {@link Operator} vocabulary plus the value
4715
+ * to compare against. The operand is emitted as a number when it parses as
4716
+ * one and as a string otherwise; the `valueType` follows from it so the
4717
+ * primitive orders numerically for numbers and lexically for strings (ISO
4718
+ * date strings sort correctly that way).
4719
+ * Emptiness is a separate concern handled by the `limetech.value-is-empty`
4720
+ * primitive, so this editor offers comparison operators only.
4721
+ * @alpha
4722
+ * @private
4723
+ */
4724
+ interface HTMLLimebbValueComparisonEditorElement extends Components.LimebbValueComparisonEditor, HTMLStencilElement {
4725
+ addEventListener<K extends keyof HTMLLimebbValueComparisonEditorElementEventMap>(type: K, listener: (this: HTMLLimebbValueComparisonEditorElement, ev: LimebbValueComparisonEditorCustomEvent<HTMLLimebbValueComparisonEditorElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
4726
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4727
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4728
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4729
+ removeEventListener<K extends keyof HTMLLimebbValueComparisonEditorElementEventMap>(type: K, listener: (this: HTMLLimebbValueComparisonEditorElement, ev: LimebbValueComparisonEditorCustomEvent<HTMLLimebbValueComparisonEditorElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
4730
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4731
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4732
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4733
+ }
4734
+ var HTMLLimebbValueComparisonEditorElement: {
4735
+ prototype: HTMLLimebbValueComparisonEditorElement;
4736
+ new (): HTMLLimebbValueComparisonEditorElement;
4737
+ };
4668
4738
  interface HTMLElementTagNameMap {
4669
4739
  "limebb-alert-dialog": HTMLLimebbAlertDialogElement;
4670
4740
  "limebb-browser": HTMLLimebbBrowserElement;
@@ -4734,6 +4804,7 @@ declare global {
4734
4804
  "limebb-text-editor-picker": HTMLLimebbTextEditorPickerElement;
4735
4805
  "limebb-trend-indicator": HTMLLimebbTrendIndicatorElement;
4736
4806
  "limebb-typing-indicator": HTMLLimebbTypingIndicatorElement;
4807
+ "limebb-value-comparison-editor": HTMLLimebbValueComparisonEditorElement;
4737
4808
  }
4738
4809
  }
4739
4810
  declare namespace LocalJSX {
@@ -5818,6 +5889,7 @@ declare namespace LocalJSX {
5818
5889
  * @exampleComponent limebb-example-info-tile-unit-format
5819
5890
  * @exampleComponent limebb-example-info-tile-date-format
5820
5891
  * @exampleComponent limebb-example-info-tile-relative-date-format
5892
+ * @exampleComponent limebb-example-info-tile-reduce-presence
5821
5893
  * @beta
5822
5894
  */
5823
5895
  interface LimebbInfoTile {
@@ -5859,6 +5931,14 @@ declare namespace LocalJSX {
5859
5931
  * Name of the property to use when aggregating
5860
5932
  */
5861
5933
  "propertyName"?: string;
5934
+ /**
5935
+ * When `true`, the info tile is rendered with a reduced visual presence (lower saturation and opacity) so it draws less attention. Use this for tiles whose values are not currently noteworthy — for example, a counter that is zero or a metric that sits within an expected range — so the user is not overwhelmed by a dashboard full of equally-loud tiles. The actual styling lives on `limel-info-tile`; this component just forwards the boolean. Set this directly when the consumer already knows the answer. When the answer depends on the tile's value, set {@link reducedPresenceRule} instead and the tile will compute the boolean itself.
5936
+ */
5937
+ "reducedPresence"?: boolean;
5938
+ /**
5939
+ * Rule that drives `reducedPresence` from the tile's loaded value. When set, the tile evaluates it against its `value` after each load and dims itself when the rule is `true`. The {@link reducedPresence} prop still takes effect on top — if either says "dim", the tile dims. Any rule the `RuleRegistry` can compile works. The tile evaluates it against a scope anchored on its host, with the tile's loaded value supplied as `scalarValue`. So primitives reading `scalarValue` — such as `limetech.value-comparison` — see the figure on screen, while any other context the primitive reads resolves from the DOM.
5940
+ */
5941
+ "reducedPresenceRule"?: Rule;
5862
5942
  /**
5863
5943
  * A string of text that is visually placed after the value.
5864
5944
  */
@@ -7127,6 +7207,11 @@ declare namespace LocalJSX {
7127
7207
  * @default false
7128
7208
  */
7129
7209
  "disabled"?: boolean;
7210
+ /**
7211
+ * Forwarded to the embedded config component so it can pull focus when this popover opens. The rule editor sets it only when the chip was just added via the picker, so clicking an existing chip does not steal focus. The component decides when it is ready to receive focus (e.g. after loading its own data).
7212
+ * @default false
7213
+ */
7214
+ "focusOnOpen"?: boolean;
7130
7215
  /**
7131
7216
  * @default true
7132
7217
  */
@@ -7577,6 +7662,31 @@ declare namespace LocalJSX {
7577
7662
  */
7578
7663
  interface LimebbTypingIndicator {
7579
7664
  }
7665
+ /**
7666
+ * Args editor for the `limetech.value-comparison` rule primitive: an
7667
+ * operator from the match-filter {@link Operator} vocabulary plus the value
7668
+ * to compare against. The operand is emitted as a number when it parses as
7669
+ * one and as a string otherwise; the `valueType` follows from it so the
7670
+ * primitive orders numerically for numbers and lexically for strings (ISO
7671
+ * date strings sort correctly that way).
7672
+ * Emptiness is a separate concern handled by the `limetech.value-is-empty`
7673
+ * primitive, so this editor offers comparison operators only.
7674
+ * @alpha
7675
+ * @private
7676
+ */
7677
+ interface LimebbValueComparisonEditor {
7678
+ /**
7679
+ * The event to emit when the value of the current property has changed
7680
+ * @inheritdoc
7681
+ */
7682
+ "onChange"?: (event: LimebbValueComparisonEditorCustomEvent<ValueComparisonEditorValue>) => void;
7683
+ /**
7684
+ * The value of the current property
7685
+ * @inheritdoc
7686
+ * @default {}
7687
+ */
7688
+ "value"?: ValueComparisonEditorValue;
7689
+ }
7580
7690
 
7581
7691
  interface LimebbAlertDialogAttributes {
7582
7692
  "type": AlertType;
@@ -7724,6 +7834,7 @@ declare namespace LocalJSX {
7724
7834
  "suffix": string;
7725
7835
  "propertyName": string;
7726
7836
  "aggregateOperator": AggregateOperator;
7837
+ "reducedPresence": boolean;
7727
7838
  }
7728
7839
  interface LimebbInfoTileFormatAttributes {
7729
7840
  "type": 'number' | 'date' | 'none';
@@ -7863,6 +7974,7 @@ declare namespace LocalJSX {
7863
7974
  "readonly": boolean;
7864
7975
  "disabled": boolean;
7865
7976
  "isMutable": boolean;
7977
+ "focusOnOpen": boolean;
7866
7978
  }
7867
7979
  interface LimebbRuleEditorAttributes {
7868
7980
  "required": boolean;
@@ -7983,6 +8095,7 @@ declare namespace LocalJSX {
7983
8095
  "limebb-text-editor-picker": Omit<LimebbTextEditorPicker, keyof LimebbTextEditorPickerAttributes> & { [K in keyof LimebbTextEditorPicker & keyof LimebbTextEditorPickerAttributes]?: LimebbTextEditorPicker[K] } & { [K in keyof LimebbTextEditorPicker & keyof LimebbTextEditorPickerAttributes as `attr:${K}`]?: LimebbTextEditorPickerAttributes[K] } & { [K in keyof LimebbTextEditorPicker & keyof LimebbTextEditorPickerAttributes as `prop:${K}`]?: LimebbTextEditorPicker[K] };
7984
8096
  "limebb-trend-indicator": Omit<LimebbTrendIndicator, keyof LimebbTrendIndicatorAttributes> & { [K in keyof LimebbTrendIndicator & keyof LimebbTrendIndicatorAttributes]?: LimebbTrendIndicator[K] } & { [K in keyof LimebbTrendIndicator & keyof LimebbTrendIndicatorAttributes as `attr:${K}`]?: LimebbTrendIndicatorAttributes[K] } & { [K in keyof LimebbTrendIndicator & keyof LimebbTrendIndicatorAttributes as `prop:${K}`]?: LimebbTrendIndicator[K] };
7985
8097
  "limebb-typing-indicator": LimebbTypingIndicator;
8098
+ "limebb-value-comparison-editor": LimebbValueComparisonEditor;
7986
8099
  }
7987
8100
  }
7988
8101
  export { LocalJSX as JSX };
@@ -8337,6 +8450,7 @@ declare module "@stencil/core" {
8337
8450
  * @exampleComponent limebb-example-info-tile-unit-format
8338
8451
  * @exampleComponent limebb-example-info-tile-date-format
8339
8452
  * @exampleComponent limebb-example-info-tile-relative-date-format
8453
+ * @exampleComponent limebb-example-info-tile-reduce-presence
8340
8454
  * @beta
8341
8455
  */
8342
8456
  "limebb-info-tile": LocalJSX.IntrinsicElements["limebb-info-tile"] & JSXBase.HTMLAttributes<HTMLLimebbInfoTileElement>;
@@ -8899,6 +9013,19 @@ declare module "@stencil/core" {
8899
9013
  * @private
8900
9014
  */
8901
9015
  "limebb-typing-indicator": LocalJSX.IntrinsicElements["limebb-typing-indicator"] & JSXBase.HTMLAttributes<HTMLLimebbTypingIndicatorElement>;
9016
+ /**
9017
+ * Args editor for the `limetech.value-comparison` rule primitive: an
9018
+ * operator from the match-filter {@link Operator} vocabulary plus the value
9019
+ * to compare against. The operand is emitted as a number when it parses as
9020
+ * one and as a string otherwise; the `valueType` follows from it so the
9021
+ * primitive orders numerically for numbers and lexically for strings (ISO
9022
+ * date strings sort correctly that way).
9023
+ * Emptiness is a separate concern handled by the `limetech.value-is-empty`
9024
+ * primitive, so this editor offers comparison operators only.
9025
+ * @alpha
9026
+ * @private
9027
+ */
9028
+ "limebb-value-comparison-editor": LocalJSX.IntrinsicElements["limebb-value-comparison-editor"] & JSXBase.HTMLAttributes<HTMLLimebbValueComparisonEditorElement>;
8902
9029
  }
8903
9030
  }
8904
9031
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limetech/lime-crm-building-blocks",
3
- "version": "1.133.0",
3
+ "version": "1.135.0",
4
4
  "description": "A home for shared components meant for use with Lime CRM",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -35,10 +35,10 @@
35
35
  },
36
36
  "devDependencies": {
37
37
  "@limetech/eslint-config": "^4.0.1",
38
- "@limetech/lime-elements": "^39.30.0",
39
- "@limetech/lime-web-components": "^6.24.0",
38
+ "@limetech/lime-elements": "^39.33.1",
39
+ "@limetech/lime-web-components": "^6.25.0",
40
40
  "@lundalogik/lime-icons8": "^2.41.0",
41
- "@lundalogik/limeclient.js": "^1.105.1",
41
+ "@lundalogik/limeclient.js": "^1.107.0",
42
42
  "@stencil/core": "^4.43.4",
43
43
  "@stencil/sass": "^3.1.9",
44
44
  "@types/jest": "^29.5.14",
@@ -1 +0,0 @@
1
- import{r as t,c as i,h as e}from"./p-DYpn0EkA.js";import{b as s}from"./p-CqRNpSRV.js";const h=class{constructor(e){t(this,e),this.change=i(this,"change"),this.disabled=!1,this.readonly=!1,this.invalid=!1,this.required=!1,this.type="datetime",this.shouldEmitValueAsString=!0,this.handleChange=t=>{if(!t.detail)return;t.stopPropagation();const i=(e=t.detail,"datetime"===(s=this.type)||"time"===s?e:new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())));var e,s;this.change.emit(this.shouldEmitValueAsString?i.toISOString():i)},this.formatter=t=>this.dateTimeFormatter.format(t,r[this.type]||this.type)}render(){return this.language||(this.language=this.getAppLanguage()),this.value&&(this.shouldEmitValueAsString="string"==typeof this.value),e("limel-date-picker",{key:"03fcd4817bc780ed9869e07351b2fc20008af09d",disabled:this.disabled,readonly:this.readonly,invalid:this.invalid,label:this.label,placeholder:this.placeholder,helperText:this.helperText,required:this.required,value:this.parseDateValue(),type:this.type,language:this.language,formatter:this.formatter,onChange:this.handleChange})}parseDateValue(){const t=this.value;if(t)return this.dateTimeFormatter.parse(t,r[this.type]||this.type)}get dateTimeFormatter(){return this.platform.get(s.DateTimeFormatter)}getAppLanguage(){const t=this.platform.get(s.Translate),i=this.platform.get(s.Application);let e;var h;return e="function"==typeof(null==(h=t)?void 0:h.getLanguage)?t.getLanguage():i.getLanguage(),n(e)?e:"en"}},r={datetime:"time",time:"timeofday"},a=new Set(["da","de","en","fi","fr","nb","no","nl","sv"]),n=t=>a.has(t);export{h as limebb_date_picker}
@@ -1 +0,0 @@
1
- import{r as e,c as t,h as o}from"./p-DYpn0EkA.js";import{T as r,b as i}from"./p-CqRNpSRV.js";import{L as s}from"./p-BKtEmDNs.js";const a=class{constructor(o){e(this,o),this.negate=t(this,"negate"),this.updateArgs=t(this,"updateArgs"),this.deleteChip=t(this,"deleteChip"),this.isNegated=!1,this.readonly=!1,this.disabled=!1,this.isMutable=!0,this.handleNegateChange=e=>{e.stopPropagation(),this.negate.emit(e.detail)},this.handleArgsChange=e=>{e.stopPropagation(),this.updateArgs.emit(e.detail)},this.handleDelete=()=>{this.deleteChip.emit()}}render(){return o("div",{key:"ca7901be2a99590faddea0c678d149b13b5d564f",class:"popover"},this.renderHeader(),this.renderBody())}renderHeader(){var e,t,r,i;const s=(null===(e=this.metadata)||void 0===e?void 0:e.title)?this.translator.get(this.metadata.title):null!==(r=null===(t=this.refNode)||void 0===t?void 0:t.id)&&void 0!==r?r:"";return o("limel-header",{class:"popover__header is-narrow",heading:s,icon:null===(i=this.metadata)||void 0===i?void 0:i.icon},this.renderHeaderActions())}renderHeaderActions(){return this.isMutable?o("div",{slot:"actions",class:"popover__header-actions"},o("limel-switch",{class:"popover__negate-switch",label:this.translator.get("webclient.rule-editor.negate"),value:this.isNegated,onChange:this.handleNegateChange}),o("limel-icon-button",{class:"popover__delete-button",icon:"trash",label:this.translator.get("webclient.rule-editor.delete"),onClick:this.handleDelete})):null}get translator(){return this.platform.get(i.Translate)}renderBody(){var e,t;const r=null===(e=this.metadata)||void 0===e?void 0:e.configComponent;return r?o("div",{class:"popover__body"},o(s,{platform:this.platform,context:this.context,name:r.name,props:Object.assign(Object.assign({},r.props),{value:null===(t=this.refNode)||void 0===t?void 0:t.args,readonly:this.readonly,disabled:this.disabled,onChange:this.handleArgsChange})})):null}};(function(e,t,o,r){var i,s=arguments.length,a=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,o,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(a=(s<3?i(a):s>3?i(t,o,a):i(t,o))||a);s>3&&a&&Object.defineProperty(t,o,a)})([r("context")],a.prototype,"context",void 0),a.style=":host{display:block}.popover{display:flex;flex-direction:column;min-width:24rem;background-color:rgb(var(--contrast-100));border:1px solid rgb(var(--contrast-700));border-radius:0.5rem;box-shadow:0 0.25rem 0.75rem rgba(0, 0, 0, 0.15);overflow:hidden}.popover__header{--header-background-color:rgba(var(--contrast-300));padding-right:0.5rem;gap:1rem}.popover__header-actions{display:grid;grid-auto-flow:column;grid-gap:0.75rem;padding:0.25rem;align-items:center}.popover__delete-button{color:rgb(var(--contrast-1100))}.popover__body{padding:1rem}";export{a as limebb_rule_chip_popover}
@@ -1 +0,0 @@
1
- import{r as t,c as e}from"./p-DYpn0EkA.js";import{H as o,b as c}from"./p-CqRNpSRV.js";import{H as i}from"./p-BWMpG2bS.js";let s=class{constructor(t){this.itemId=t}};s=function(t,e,o,c){var i,s=arguments.length,l=s<3?e:null===c?c=Object.getOwnPropertyDescriptor(e,o):c;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(t,e,o,c);else for(var n=t.length-1;n>=0;n--)(i=t[n])&&(l=(s<3?i(l):s>3?i(e,o,l):i(e,o))||l);return s>3&&l&&Object.defineProperty(e,o,l),l}([o({id:"limebb-feed.highlight-item"})],s);const l=class{constructor(o){t(this,o),this.loaded=e(this,"loaded")}connectedCallback(){}async componentWillLoad(){const t=new i;this.platform.register(i.SERVICE_NAME,t),this.commandBus.register(s,t),this.platform.get(c.RuleRegistry).attachMetadata("limetech.limeobject-matches-filter",{configComponent:{name:"limebb-rule-arg-filter-editor"}}),this.loaded.emit()}componentWillUpdate(){}disconnectedCallback(){}get commandBus(){return this.platform.get(c.CommandBus)}};export{l as limebb_loader}
@@ -1 +0,0 @@
1
- import{r as t,h as e,H as s,g as i}from"./p-DYpn0EkA.js";import{b as o}from"./p-CqRNpSRV.js";const h=class{constructor(e){t(this,e),this.shouldRender=!1}componentWillLoad(){this.compileAndEvaluate()}onRuleChange(){this.compileAndEvaluate()}onScopeChange(){this.compileAndEvaluate()}render(){return e(s,{key:"8fe8b9fad90211b80b4672563f6d599ce1cb11c3",hidden:!this.shouldRender},e("slot",{key:"f434d25308b85fd084d369ccf2b0e22bd3513210"}))}get ruleRegistry(){return this.platform.get(o.RuleRegistry)}compileAndEvaluate(){var t;if(this.rule)try{const e=this.ruleRegistry.compile(this.rule),s=null!==(t=this.scope)&&void 0!==t?t:this.ruleRegistry.scope({host:this.host});this.shouldRender=e(s)}catch(t){console.warn("rule-gate failed to compile rule; hiding slot",{rule:this.rule,error:t}),this.shouldRender=!1}else this.shouldRender=!0}get host(){return i(this)}static get watchers(){return{rule:[{onRuleChange:0}],scope:[{onScopeChange:0}]}}};h.style=":host{display:block}:host([hidden]){display:none}";export{h as limebb_rule_gate}
@@ -1 +0,0 @@
1
- import{h as e,r as t,c as n,g as r}from"./p-DYpn0EkA.js";import{O as i,b as o}from"./p-CqRNpSRV.js";function l(e,t){return t?{type:"not",rule:e}:e}function s(e,t){return e.length===t.length&&e.every(((e,n)=>e===t[n]))}function a(e,t){return e.filter((e=>s(e.path,t)))}function u(e,t){let n=e;for(const e of t)n=d(n,e);return n}function c(e,t,n){if(0===t.length)return n;const[r,...i]=t;if("not"===e.type&&"rule"===r)return Object.assign(Object.assign({},e),{rule:c(e.rule,i,n)});if(("all"===e.type||"any"===e.type)&&"rules"===r){if(0===i.length)return n;const[t,...r]=i;if("number"!=typeof t)return e;const o=[...e.rules];return o[t]=c(o[t],r,n),Object.assign(Object.assign({},e),{rules:o})}return e}function d(e,t){return"not"===e.type&&"rule"===t?e.rule:"all"!==e.type&&"any"!==e.type||"rules"!==t?"all"!==e.type&&"any"!==e.type||"number"!=typeof t?e:e.rules[t]:e}const h={name:"question",color:"rgb(var(--color-glaucous-light))"};function p(e,t){return[...e.values()].map((e=>({value:e.id,text:e.title?t.get(e.title):e.id,secondaryText:e.description?t.get(e.description):"",icon:e.icon}))).sort(((e,t)=>e.text.localeCompare(t.text)))}function f(e,t){return e.reads.every((e=>t.has(e)))}function b(e){return`__chip__:${e}`}function v(e){return"ref"===e.type?{ref:e,isNegated:!1}:"not"===e.type&&"ref"===e.rule.type?{ref:e.rule,isNegated:!0}:null}const m=({groupNode:t,groupPath:n,chipChildren:r,ctx:i})=>{const o=new Map,l=r.map((e=>{const t=b(e.index);o.set(t,e);const n=(r=e.ref.id,null!==(l=i.allPrimitiveOptions.find((e=>e.value===r)))&&void 0!==l?l:{value:r,text:r,icon:h});var r,l;return Object.assign(Object.assign({},n),{text:e.isNegated?`¬ ${n.text}`:n.text,value:t})})),s=(a=i.availablePrimitiveOptions,e=>Promise.resolve(function(e,t){if(!t)return e;const n=t.toLocaleLowerCase().split(/\s+/);return e.filter((e=>n.every((t=>{var n,r;return e.text.toLocaleLowerCase().includes(t)||(null===(n=e.secondaryText)||void 0===n?void 0:n.toLocaleLowerCase().includes(t))||(null===(r=e.value)||void 0===r?void 0:r.toLocaleLowerCase().includes(t))}))))}(a,e)));var a;const u=function(e,t,n){var r;const i=C(t,n);return null===i?null:null!==(r=e.find((e=>e.index===i)))&&void 0!==r?r:null}(r,n,i.openChipPath),c="all"===t.type?"&":"|";return e("limel-popover",{class:"rule-node__chips-popover",open:null!==u,openDirection:"bottom-start",onClose:i.onPopoverClose},e("div",{slot:"trigger",class:"rule-node__chips"},e("limel-picker",{multiple:!0,label:i.translator.get("webclient.rule-editor.rules-label"),value:l,searcher:s,delimiter:c,readonly:i.readonly,disabled:i.disabled,onChange:g(t,n,o,i),onInteract:_(n,o,i)})),e("div",null,function(t,n,r){if(!t)return null;const i=function(e,t){return[...e,"rules",t]}(n,t.index);return e("limebb-rule-chip-popover",{platform:r.platform,context:r.context,refNode:t.ref,isNegated:t.isNegated,metadata:r.metadataById.get(t.ref.id),readonly:r.readonly,disabled:r.disabled,isMutable:r.isMutable,onNegate:y(t,i,r),onUpdateArgs:x(t,i,r),onDeleteChip:j(i,r)})}(u,n,i)))},g=(e,t,n,r)=>i=>{i.stopPropagation();const o=Array.isArray(i.detail)?i.detail:[],l=C(t,r.openChipPath);if(null!==l){const e=b(l);o.every((t=>t.value!==e))&&r.onPopoverClose()}const s=o.flatMap((e=>{if("string"!=typeof e.value)return[];const t=n.get(e.value);return t?[t.isNegated?{type:"not",rule:t.ref}:t.ref]:[{type:"ref",id:e.value}]})),a=e.rules.filter((e=>null===v(e)));r.onReplaceNode(t,Object.assign(Object.assign({},e),{rules:[...s,...a]}))},_=(e,t,n)=>r=>{r.stopPropagation();const i=function(e){if("string"==typeof e)return e;if(e&&"object"==typeof e&&"value"in e){const t=e.value;return"string"==typeof t?t:void 0}}(r.detail),o=i?t.get(i):void 0;o&&n.onChipInteract([...e,"rules",o.index])},y=(e,t,n)=>r=>{r.stopPropagation(),n.onReplaceNode(t,r.detail?{type:"not",rule:e.ref}:e.ref)},x=(e,t,n)=>r=>{r.stopPropagation();const i=e.isNegated?[...t,"rule"]:t;n.onUpdateArgs(i,r.detail)},j=(e,t)=>()=>{t.onDelete(e)};function C(e,t){if(!t||t.length<2)return null;if(!s((n=t,n.slice(0,-2)),e))return null;var n;const r=t.at(-1);return"number"==typeof r?r:null}const O=({node:t,path:n,isNegated:r,ctx:i})=>{const o=r?[...n,"rule"]:n,l=r?[...a(i.issues,n),...a(i.issues,o)]:a(i.issues,n),s=[],u=[];for(const[e,n]of t.rules.entries()){const t=v(n);t?s.push(Object.assign(Object.assign({},t),{index:e})):u.push({child:n,index:e})}const c=function(e){return[{value:"all",text:e.translator.get("webclient.rule-editor.combinator.all")},{value:"any",text:e.translator.get("webclient.rule-editor.combinator.any")}]}(i),d=c.find((e=>e.value===t.type));return e("div",{class:(h=t.type,p=l,{"rule-node":!0,[`rule-node--${h}`]:!0,"rule-node--invalid":p.length>0}),key:w(n)},e("div",{class:"rule-node__header"},e("limel-select",{class:"rule-node__combinator-select",value:d,options:c,disabled:!i.isMutable,onChange:k(t,n,r,i)}),function(t,n,r,i){return i.isMutable?e("div",{class:"rule-node__header-actions"},e("limel-switch",{class:"rule-node__negate-switch",label:i.translator.get("webclient.rule-editor.negate"),value:r,onChange:M(t,n,i)}),e("limel-icon-button",{icon:"trash",label:i.translator.get("webclient.rule-editor.delete"),onClick:()=>i.onDelete(n)})):null}(t,n,r,i)),e("div",{class:"rule-node__body"},e(D,{issues:l}),e(m,{groupNode:t,groupPath:o,chipChildren:s,ctx:i}),function(t,n,r){return 0===t.length?null:e("div",{class:"rule-node__children"},t.map((t=>e(P,{node:t.child,path:[...n,"rules",t.index],ctx:r}))))}(u,o,i),function(t,n,r,i){return i.isMutable?e("div",{class:"rule-node__footer"},e("limel-button",{icon:"add",label:i.translator.get("webclient.rule-editor.add-nested-group"),onClick:R(t,n,r,i)})):null}(t,n,r,i)));var h,p};function w(e){return 0===e.length?"root":e.join("/")}function N(e,t,n,r){r.onReplaceNode(t,l(e,n))}const k=(e,t,n,r)=>i=>{i.stopPropagation();const o=i.detail.value;o!==e.type&&N(Object.assign(Object.assign({},e),{type:o}),t,n,r)},R=(e,t,n,r)=>()=>{var i,o;N((i=e,o={type:"all",rules:[]},Object.assign(Object.assign({},i),{rules:[...i.rules,o]})),t,n,r)},M=(e,t,n)=>r=>{r.stopPropagation(),n.onReplaceNode(t,l(e,r.detail))},P=t=>{const{node:n,path:r,ctx:i}=t,o=z(n);return o?e(O,{node:o.node,path:r,isNegated:o.isNegated,ctx:i}):null},A=e=>"not"===e.type&&("all"===e.rule.type||"any"===e.rule.type);function z(e){if("all"===e.type||"any"===e.type)return{node:e,isNegated:!1};if(A(e))return{node:e.rule,isNegated:!0};if("not"===e.type){const t=z(e.rule);if(t)return{node:t.node,isNegated:!t.isNegated}}return null}const D=({issues:t})=>0===t.length?null:t.map((t=>e("div",{class:"rule-node__issue"},t.message)));const V=class{constructor(e){t(this,e),this.change=n(this,"change"),this.issues=[],this.openChipPath=null,this.metadataById=new Map,this.allPrimitiveOptions=[],this.availablePrimitiveOptions=[],this.reachableSlots=new Set,this.normalizedCache=null,this.hasLoaded=!1,this.handleDelete=e=>{this.openChipPath=null,this.emitIfChanged(function(e,t){if(0===t.length)return{type:"all",rules:[]};const n=t.slice(0,-1),r=t.at(-1),i=u(e,n);if(("all"===i.type||"any"===i.type)&&"number"==typeof r){const t=[...i.rules];return t.splice(r,1),c(e,n,Object.assign(Object.assign({},i),{rules:t}))}return"not"===i.type&&"rule"===r?c(e,n,{type:"all",rules:[]}):e}(this.normalizedValue,e))},this.handleUpdateArgs=(e,t)=>{this.emitIfChanged(function(e,t,n){const r=u(e,t);return"ref"!==r.type?e:c(e,t,Object.assign(Object.assign({},r),{args:n}))}(this.normalizedValue,e,t))},this.handleReplaceNode=(e,t)=>{this.emitIfChanged(function(e,t,n){return c(e,t,n)}(this.normalizedValue,e,t))},this.handleChipInteract=e=>{this.openChipPath=e},this.handlePopoverClose=()=>{this.openChipPath=null}}componentWillLoad(){this.rebuildFromRegistries()}rebuildFromRegistries(){this.computeReachableSlots(),this.indexMetadata(),this.rebuildAvailableOptions(),this.runValidation()}connectedCallback(){this.hasLoaded&&(this.computeReachableSlots(),this.rebuildAvailableOptions(),this.runValidation())}componentDidLoad(){this.hasLoaded=!0,this.emitNormalization()}onValueChange(){this.emitNormalization()||this.runValidation()}onAvailableContextsChange(){this.rebuildFromRegistries()}render(){return e("div",{key:"f84022580c3dcbc397a2551b282464d6579368a1",class:{"rule-editor":!0,"rule-editor--disabled":this.disabled}},this.renderLabel(),e(P,{key:"660cb7221c151f0a348e00c834338ce03511a7e9",node:this.normalizedValue,path:[],ctx:this.createRenderContext()}),this.renderHelperText())}renderLabel(){return this.label?e("div",{class:"rule-editor__label"},this.label):null}renderHelperText(){return this.helperText?e("div",{class:"rule-editor__helper-text"},this.helperText):null}createRenderContext(){return{issues:this.issues,metadataById:this.metadataById,allPrimitiveOptions:this.allPrimitiveOptions,availablePrimitiveOptions:this.availablePrimitiveOptions,isMutable:!this.readonly&&!this.disabled,readonly:this.readonly,disabled:this.disabled,platform:this.platform,context:this.effectiveContext,translator:this.translator,openChipPath:this.openChipPath,onDelete:this.handleDelete,onUpdateArgs:this.handleUpdateArgs,onReplaceNode:this.handleReplaceNode,onChipInteract:this.handleChipInteract,onPopoverClose:this.handlePopoverClose}}indexMetadata(){var e,t,n;const r=null!==(n=null===(t=(e=this.ruleRegistry).listMetadata)||void 0===t?void 0:t.call(e))&&void 0!==n?n:[];this.metadataById=new Map(r.map((e=>[e.id,e]))),this.allPrimitiveOptions=p(this.metadataById,this.translator)}rebuildAvailableOptions(){this.availablePrimitiveOptions=p(this.availablePrimitiveMetadata(),this.translator)}availablePrimitiveMetadata(){const e=new Map;for(const[t,n]of this.metadataById)f(n,this.reachableSlots)&&e.set(t,n);return e}computeReachableSlots(){var e;const t=this.contextRegistry,n=t.list().map((e=>e.id)).filter((e=>void 0!==t.get(e,this.host)));this.reachableSlots=new Set([...n,...null!==(e=this.availableContexts)&&void 0!==e?e:[]])}runValidation(){if(!this.value)return void(this.issues=[]);const e=this.ruleRegistry.validate(this.normalizedValue,[...this.reachableSlots]);this.issues=e.ok?[]:e.issues}emitIfChanged(e){var t;e!==this.normalizedValue&&this.change.emit("all"!==(t=e).type&&"any"!==t.type?t:0===t.rules.length?void 0:t)}get normalizedValue(){if(null!==this.normalizedCache&&this.normalizedCache.source===this.value)return this.normalizedCache.normalized;const e=(t=this.value)?z(t)?t:{type:"all",rules:[t]}:{type:"all",rules:[]};var t;return this.normalizedCache={source:this.value,normalized:e},e}emitNormalization(){if(!this.value)return!1;const e=this.normalizedValue;return e!==this.value&&(this.change.emit(e),!0)}get ruleRegistry(){return this.platform.get(o.RuleRegistry)}get translator(){return this.platform.get(o.Translate)}get contextRegistry(){return this.platform.get(o.ContextRegistry)}get effectiveContext(){var e,t;return(null===(e=this.context)||void 0===e?void 0:e.limetype)?this.context:(null===(t=this.resolvedContext)||void 0===t?void 0:t.limetype)?this.resolvedContext:I}get host(){return r(this)}static get watchers(){return{value:[{onValueChange:0}],availableContexts:[{onAvailableContextsChange:0}]}}};!function(e,t,n,r){var i,o=arguments.length,l=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(l=(o<3?i(l):o>3?i(t,n,l):i(t,n))||l);o>3&&l&&Object.defineProperty(t,n,l)}([i("context")],V.prototype,"resolvedContext",void 0);const I=Object.freeze({limetype:null,id:null});V.style=":host{display:block}.rule-editor--disabled{opacity:0.6;pointer-events:none}.rule-editor__label{font-size:0.75rem;font-weight:600;color:rgb(var(--contrast-1500));margin-bottom:0.25rem}.rule-editor__helper-text{font-size:0.75rem;color:rgb(var(--contrast-1300));margin-top:0.25rem}.rule-node{border:1px solid rgb(var(--contrast-500));border-radius:0.5rem;margin:0.25rem 0;overflow:hidden;background-color:rgb(var(--contrast-100))}.rule-node--invalid{border-color:rgb(var(--color-red-default))}.rule-node--all>.rule-node__header,.rule-node--any>.rule-node__header{background-color:rgb(var(--contrast-300));padding:0.375rem 0.75rem;border-bottom:1px solid rgb(var(--contrast-500))}.rule-node__header{display:flex;align-items:center;gap:0.5rem}.rule-node__header-actions{margin-left:auto;display:grid;grid-auto-flow:column;grid-gap:0.5rem;padding:0.125rem;align-items:center}.rule-node__combinator-select{min-width:6rem}.rule-node__body{padding:0.75rem;display:flex;flex-direction:column;gap:0.75rem}limel-popover.rule-node__chips-popover{display:contents;--popover-surface-width:min(calc(100vw - 4rem), 50rem)}.rule-node__chips{display:block;width:100%}.rule-node__chips limel-picker{display:block;width:100%}.rule-node__children{display:flex;flex-direction:column;gap:0.5rem}.rule-node__footer{display:flex;justify-content:center}.rule-node__issue{color:rgb(var(--color-red-default));font-size:0.875rem}";export{V as limebb_rule_editor}