@cratis/components 4.19.1 → 4.20.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 (738) hide show
  1. package/README.md +2 -2
  2. package/compat-manifest.json +11 -11
  3. package/dist/esm/Canvas/Canvas.d.ts +1 -0
  4. package/dist/esm/Canvas/Canvas.d.ts.map +1 -0
  5. package/dist/esm/Canvas/Canvas.js.map +1 -1
  6. package/dist/esm/Canvas/CanvasControls.d.ts +1 -0
  7. package/dist/esm/Canvas/CanvasControls.d.ts.map +1 -0
  8. package/dist/esm/Canvas/CanvasControls.js.map +1 -1
  9. package/dist/esm/Canvas/CanvasItem.js.map +1 -1
  10. package/dist/esm/Canvas/CanvasMinimap.js.map +1 -1
  11. package/dist/esm/Canvas/CanvasOverlay.js.map +1 -1
  12. package/dist/esm/Canvas/canvasGesture.js.map +1 -1
  13. package/dist/esm/Canvas/canvasTransformActivity.js.map +1 -1
  14. package/dist/esm/Canvas/index.d.ts +1 -0
  15. package/dist/esm/Canvas/index.d.ts.map +1 -0
  16. package/dist/esm/Canvas/isBackgroundPointerTarget.js.map +1 -1
  17. package/dist/esm/Canvas/isWithinScrollableContent.js.map +1 -1
  18. package/dist/esm/Canvas/panMomentum.js.map +1 -1
  19. package/dist/esm/Canvas/pinchGesture.js.map +1 -1
  20. package/dist/esm/Canvas/selfSuspendingFrameLoop.js.map +1 -1
  21. package/dist/esm/Canvas/shapes/ChatBubble/index.d.ts +1 -0
  22. package/dist/esm/Canvas/shapes/ChatBubble/index.d.ts.map +1 -0
  23. package/dist/esm/Canvas/shapes/ChatBubble/index.js +1 -0
  24. package/dist/esm/Canvas/shapes/ChatBubble/index.js.map +1 -0
  25. package/dist/esm/Canvas/shapes/Note/Note.js.map +1 -1
  26. package/dist/esm/Canvas/shapes/Note/NoteTextChanged.js.map +1 -1
  27. package/dist/esm/Canvas/shapes/Note/index.d.ts +1 -0
  28. package/dist/esm/Canvas/shapes/Note/index.d.ts.map +1 -0
  29. package/dist/esm/Canvas/shapes/Note/index.js +1 -0
  30. package/dist/esm/Canvas/shapes/Note/index.js.map +1 -0
  31. package/dist/esm/Canvas/shapes/Note/noteFont.js.map +1 -1
  32. package/dist/esm/Canvas/shapes/Region/ItemAddedToRegion.js.map +1 -1
  33. package/dist/esm/Canvas/shapes/Region/ItemRemovedFromRegion.js.map +1 -1
  34. package/dist/esm/Canvas/shapes/Region/Region.js.map +1 -1
  35. package/dist/esm/Canvas/shapes/Region/index.d.ts +1 -0
  36. package/dist/esm/Canvas/shapes/Region/index.d.ts.map +1 -0
  37. package/dist/esm/Canvas/shapes/Region/index.js +1 -0
  38. package/dist/esm/Canvas/shapes/Region/index.js.map +1 -0
  39. package/dist/esm/Canvas/shapes/Region/regionContainment.js.map +1 -1
  40. package/dist/esm/Canvas/useDragSelectionGuard.js.map +1 -1
  41. package/dist/esm/Canvas/zoomMechanism.js.map +1 -1
  42. package/dist/esm/Chat/ChatAuthor.d.ts +1 -0
  43. package/dist/esm/Chat/ChatAuthor.d.ts.map +1 -0
  44. package/dist/esm/Chat/ChatAuthor.js.map +1 -1
  45. package/dist/esm/Chat/ChatConversation.d.ts +1 -0
  46. package/dist/esm/Chat/ChatConversation.d.ts.map +1 -0
  47. package/dist/esm/Chat/ChatConversation.js.map +1 -1
  48. package/dist/esm/Chat/ChatIdentifier.js.map +1 -1
  49. package/dist/esm/Chat/ChatMention.d.ts +1 -0
  50. package/dist/esm/Chat/ChatMention.d.ts.map +1 -0
  51. package/dist/esm/Chat/ChatMention.js.map +1 -1
  52. package/dist/esm/Chat/ChatMessage.d.ts +1 -0
  53. package/dist/esm/Chat/ChatMessage.d.ts.map +1 -0
  54. package/dist/esm/Chat/ChatMessage.js.map +1 -1
  55. package/dist/esm/Chat/ChatMessageAction.d.ts +1 -0
  56. package/dist/esm/Chat/ChatMessageAction.d.ts.map +1 -0
  57. package/dist/esm/Chat/ChatMessageAction.js.map +1 -1
  58. package/dist/esm/Chat/ChatMessageBody.d.ts +1 -0
  59. package/dist/esm/Chat/ChatMessageBody.d.ts.map +1 -0
  60. package/dist/esm/Chat/ChatMessageBody.js.map +1 -1
  61. package/dist/esm/Chat/ChatSidebar.d.ts +5 -1
  62. package/dist/esm/Chat/ChatSidebar.d.ts.map +1 -0
  63. package/dist/esm/Chat/ChatSidebar.js +2 -2
  64. package/dist/esm/Chat/ChatSidebar.js.map +1 -1
  65. package/dist/esm/Chat/ChatSidebarForObservableQueries.d.ts +1 -0
  66. package/dist/esm/Chat/ChatSidebarForObservableQueries.d.ts.map +1 -0
  67. package/dist/esm/Chat/ChatSidebarForObservableQueries.js.map +1 -1
  68. package/dist/esm/Chat/ChatStatus.js.map +1 -1
  69. package/dist/esm/Chat/ChatTopic.d.ts +1 -0
  70. package/dist/esm/Chat/ChatTopic.d.ts.map +1 -0
  71. package/dist/esm/Chat/ChatTopic.js.map +1 -1
  72. package/dist/esm/Chat/ChatTopicAction.d.ts +23 -0
  73. package/dist/esm/Chat/ChatTopicAction.d.ts.map +1 -0
  74. package/dist/esm/Chat/ChatTopicAction.js +4 -0
  75. package/dist/esm/Chat/ChatTopicAction.js.map +1 -0
  76. package/dist/esm/Chat/ChatTopicActions.d.ts +25 -0
  77. package/dist/esm/Chat/ChatTopicActions.d.ts.map +1 -0
  78. package/dist/esm/Chat/ChatTopicActions.js +6 -0
  79. package/dist/esm/Chat/ChatTopicActions.js.map +1 -0
  80. package/dist/esm/Chat/ChatTopicList.d.ts +6 -2
  81. package/dist/esm/Chat/ChatTopicList.d.ts.map +1 -0
  82. package/dist/esm/Chat/ChatTopicList.js +17 -9
  83. package/dist/esm/Chat/ChatTopicList.js.map +1 -1
  84. package/dist/esm/Chat/Kit/AnchoredOverlay.js.map +1 -1
  85. package/dist/esm/Chat/Kit/Avatar/PersonAvatarCircle.js.map +1 -1
  86. package/dist/esm/Chat/Kit/Avatar/getAvatarColor.js.map +1 -1
  87. package/dist/esm/Chat/Kit/Avatar/getInitials.js.map +1 -1
  88. package/dist/esm/Chat/Kit/Avatar/index.d.ts +1 -0
  89. package/dist/esm/Chat/Kit/Avatar/index.d.ts.map +1 -0
  90. package/dist/esm/Chat/Kit/Avatar/index.js +1 -0
  91. package/dist/esm/Chat/Kit/Avatar/index.js.map +1 -0
  92. package/dist/esm/Chat/Kit/Chat.d.ts +1 -0
  93. package/dist/esm/Chat/Kit/Chat.d.ts.map +1 -0
  94. package/dist/esm/Chat/Kit/Chat.js.map +1 -1
  95. package/dist/esm/Chat/Kit/ChatAuthorKind.js.map +1 -1
  96. package/dist/esm/Chat/Kit/ChatBubble.d.ts +1 -0
  97. package/dist/esm/Chat/Kit/ChatBubble.d.ts.map +1 -0
  98. package/dist/esm/Chat/Kit/ChatBubble.js.map +1 -1
  99. package/dist/esm/Chat/Kit/ChatComposer.d.ts +1 -0
  100. package/dist/esm/Chat/Kit/ChatComposer.d.ts.map +1 -0
  101. package/dist/esm/Chat/Kit/ChatComposer.js.map +1 -1
  102. package/dist/esm/Chat/Kit/ChatMessage.d.ts +1 -0
  103. package/dist/esm/Chat/Kit/ChatMessage.d.ts.map +1 -0
  104. package/dist/esm/Chat/Kit/ChatMessage.js.map +1 -1
  105. package/dist/esm/Chat/Kit/ChatMessageAdded.js.map +1 -1
  106. package/dist/esm/Chat/Kit/ChatMessageBubble.d.ts +1 -0
  107. package/dist/esm/Chat/Kit/ChatMessageBubble.d.ts.map +1 -0
  108. package/dist/esm/Chat/Kit/ChatMessageBubble.js.map +1 -1
  109. package/dist/esm/Chat/Kit/ChatMessageReaction.d.ts +1 -0
  110. package/dist/esm/Chat/Kit/ChatMessageReaction.d.ts.map +1 -0
  111. package/dist/esm/Chat/Kit/ChatMessageReaction.js.map +1 -1
  112. package/dist/esm/Chat/Kit/ChatMessageReactionUser.js.map +1 -1
  113. package/dist/esm/Chat/Kit/ChatOwnReaction.js.map +1 -1
  114. package/dist/esm/Chat/Kit/ChatTypingAuthor.d.ts +1 -0
  115. package/dist/esm/Chat/Kit/ChatTypingAuthor.d.ts.map +1 -0
  116. package/dist/esm/Chat/Kit/ChatTypingAuthor.js.map +1 -1
  117. package/dist/esm/Chat/Kit/ChatVariant.js.map +1 -1
  118. package/dist/esm/Chat/Kit/Emoji/EmojiCategory.d.ts +1 -0
  119. package/dist/esm/Chat/Kit/Emoji/EmojiCategory.d.ts.map +1 -0
  120. package/dist/esm/Chat/Kit/Emoji/EmojiCategory.js.map +1 -1
  121. package/dist/esm/Chat/Kit/Emoji/EmojiCategoryKey.js.map +1 -1
  122. package/dist/esm/Chat/Kit/Emoji/EmojiMemory.js.map +1 -1
  123. package/dist/esm/Chat/Kit/Emoji/EmojiPicker.d.ts +1 -0
  124. package/dist/esm/Chat/Kit/Emoji/EmojiPicker.d.ts.map +1 -0
  125. package/dist/esm/Chat/Kit/Emoji/EmojiPicker.js.map +1 -1
  126. package/dist/esm/Chat/Kit/Emoji/emojiCatalog.d.ts +1 -0
  127. package/dist/esm/Chat/Kit/Emoji/emojiCatalog.d.ts.map +1 -0
  128. package/dist/esm/Chat/Kit/Emoji/emojiCatalog.js.map +1 -1
  129. package/dist/esm/Chat/Kit/Emoji/index.d.ts +1 -0
  130. package/dist/esm/Chat/Kit/Emoji/index.d.ts.map +1 -0
  131. package/dist/esm/Chat/Kit/Emoji/index.js +1 -0
  132. package/dist/esm/Chat/Kit/Emoji/index.js.map +1 -0
  133. package/dist/esm/Chat/Kit/Emoji/recentEmojis.d.ts +1 -0
  134. package/dist/esm/Chat/Kit/Emoji/recentEmojis.d.ts.map +1 -0
  135. package/dist/esm/Chat/Kit/Emoji/recentEmojis.js.map +1 -1
  136. package/dist/esm/Chat/Kit/FailedReply.d.ts +1 -0
  137. package/dist/esm/Chat/Kit/FailedReply.d.ts.map +1 -0
  138. package/dist/esm/Chat/Kit/FailedReply.js.map +1 -1
  139. package/dist/esm/Chat/Kit/Mentions/MentionCandidate.d.ts +1 -0
  140. package/dist/esm/Chat/Kit/Mentions/MentionCandidate.d.ts.map +1 -0
  141. package/dist/esm/Chat/Kit/Mentions/MentionCandidate.js.map +1 -1
  142. package/dist/esm/Chat/Kit/Mentions/MentionQuery.js.map +1 -1
  143. package/dist/esm/Chat/Kit/Mentions/MentionSuggestions.d.ts +1 -0
  144. package/dist/esm/Chat/Kit/Mentions/MentionSuggestions.d.ts.map +1 -0
  145. package/dist/esm/Chat/Kit/Mentions/MentionSuggestions.js.map +1 -1
  146. package/dist/esm/Chat/Kit/Mentions/activeMentionQuery.d.ts +1 -0
  147. package/dist/esm/Chat/Kit/Mentions/activeMentionQuery.d.ts.map +1 -0
  148. package/dist/esm/Chat/Kit/Mentions/activeMentionQuery.js.map +1 -1
  149. package/dist/esm/Chat/Kit/Mentions/applyMention.d.ts +1 -0
  150. package/dist/esm/Chat/Kit/Mentions/applyMention.d.ts.map +1 -0
  151. package/dist/esm/Chat/Kit/Mentions/applyMention.js.map +1 -1
  152. package/dist/esm/Chat/Kit/Mentions/extractMentions.js.map +1 -1
  153. package/dist/esm/Chat/Kit/Mentions/findMentionRanges.js.map +1 -1
  154. package/dist/esm/Chat/Kit/Mentions/index.d.ts +1 -0
  155. package/dist/esm/Chat/Kit/Mentions/index.d.ts.map +1 -0
  156. package/dist/esm/Chat/Kit/Mentions/index.js +1 -0
  157. package/dist/esm/Chat/Kit/Mentions/index.js.map +1 -0
  158. package/dist/esm/Chat/Kit/Mentions/matchCandidates.d.ts +1 -0
  159. package/dist/esm/Chat/Kit/Mentions/matchCandidates.d.ts.map +1 -0
  160. package/dist/esm/Chat/Kit/Mentions/matchCandidates.js.map +1 -1
  161. package/dist/esm/Chat/Kit/Mentions/mentionSegments.js.map +1 -1
  162. package/dist/esm/Chat/Kit/MessageReactions.d.ts +1 -0
  163. package/dist/esm/Chat/Kit/MessageReactions.d.ts.map +1 -0
  164. package/dist/esm/Chat/Kit/MessageReactions.js.map +1 -1
  165. package/dist/esm/Chat/Kit/ReactionPicker.d.ts +1 -0
  166. package/dist/esm/Chat/Kit/ReactionPicker.d.ts.map +1 -0
  167. package/dist/esm/Chat/Kit/ReactionPicker.js.map +1 -1
  168. package/dist/esm/Chat/Kit/TypingIndicator.d.ts +1 -0
  169. package/dist/esm/Chat/Kit/TypingIndicator.d.ts.map +1 -0
  170. package/dist/esm/Chat/Kit/TypingIndicator.js.map +1 -1
  171. package/dist/esm/Chat/Kit/findOwnReaction.d.ts +1 -0
  172. package/dist/esm/Chat/Kit/findOwnReaction.d.ts.map +1 -0
  173. package/dist/esm/Chat/Kit/findOwnReaction.js.map +1 -1
  174. package/dist/esm/Chat/Kit/index.d.ts +1 -0
  175. package/dist/esm/Chat/Kit/index.d.ts.map +1 -0
  176. package/dist/esm/Chat/Kit/index.js +1 -0
  177. package/dist/esm/Chat/Kit/index.js.map +1 -0
  178. package/dist/esm/Chat/Kit/reactionsExcludingUser.d.ts +1 -0
  179. package/dist/esm/Chat/Kit/reactionsExcludingUser.d.ts.map +1 -0
  180. package/dist/esm/Chat/Kit/reactionsExcludingUser.js.map +1 -1
  181. package/dist/esm/Chat/index.d.ts +2 -0
  182. package/dist/esm/Chat/index.d.ts.map +1 -0
  183. package/dist/esm/Chat/isTopicUnnamed.d.ts +1 -0
  184. package/dist/esm/Chat/isTopicUnnamed.d.ts.map +1 -0
  185. package/dist/esm/Chat/isTopicUnnamed.js.map +1 -1
  186. package/dist/esm/Chat/relativeTimestamp.js.map +1 -1
  187. package/dist/esm/Chat/shouldRequestTopicName.js.map +1 -1
  188. package/dist/esm/Chat/topicsByActivity.d.ts +1 -0
  189. package/dist/esm/Chat/topicsByActivity.d.ts.map +1 -0
  190. package/dist/esm/Chat/topicsByActivity.js.map +1 -1
  191. package/dist/esm/Chat/useTopicActionFocusRecovery.d.ts +19 -0
  192. package/dist/esm/Chat/useTopicActionFocusRecovery.d.ts.map +1 -0
  193. package/dist/esm/Chat/useTopicActionFocusRecovery.js +41 -0
  194. package/dist/esm/Chat/useTopicActionFocusRecovery.js.map +1 -0
  195. package/dist/esm/CommandDialog/CommandDialog.d.ts +1 -0
  196. package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -0
  197. package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
  198. package/dist/esm/CommandDialog/CommandStepper.d.ts +1 -0
  199. package/dist/esm/CommandDialog/CommandStepper.d.ts.map +1 -0
  200. package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
  201. package/dist/esm/CommandDialog/CommandStepperContent.d.ts +1 -0
  202. package/dist/esm/CommandDialog/CommandStepperContent.d.ts.map +1 -0
  203. package/dist/esm/CommandDialog/CommandStepperContent.js.map +1 -1
  204. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts +1 -0
  205. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts.map +1 -0
  206. package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
  207. package/dist/esm/CommandDialog/StepperPanel.js.map +1 -1
  208. package/dist/esm/CommandDialog/applyBeforeExecute.js.map +1 -1
  209. package/dist/esm/CommandDialog/commandValuesUnchanged.js.map +1 -1
  210. package/dist/esm/CommandDialog/confirmBeforeExecute.js.map +1 -1
  211. package/dist/esm/CommandDialog/index.d.ts +1 -0
  212. package/dist/esm/CommandDialog/index.d.ts.map +1 -0
  213. package/dist/esm/CommandDialog/stepChildren.js.map +1 -1
  214. package/dist/esm/CommandDialog/transitionStep.d.ts +1 -0
  215. package/dist/esm/CommandDialog/transitionStep.d.ts.map +1 -0
  216. package/dist/esm/CommandDialog/transitionStep.js.map +1 -1
  217. package/dist/esm/CommandDialog/useCommandExecution.d.ts +1 -0
  218. package/dist/esm/CommandDialog/useCommandExecution.d.ts.map +1 -0
  219. package/dist/esm/CommandDialog/useCommandExecution.js.map +1 -1
  220. package/dist/esm/CommandDialog/useSubmissionFlight.js.map +1 -1
  221. package/dist/esm/CommandForm/AutoCommandForm.js.map +1 -1
  222. package/dist/esm/CommandForm/FieldTypeProvider.js.map +1 -1
  223. package/dist/esm/CommandForm/commandFormMarkers.js.map +1 -1
  224. package/dist/esm/CommandForm/defaultFieldTypeProviders.js.map +1 -1
  225. package/dist/esm/CommandForm/fieldTypeProviderRegistry.d.ts +1 -0
  226. package/dist/esm/CommandForm/fieldTypeProviderRegistry.d.ts.map +1 -0
  227. package/dist/esm/CommandForm/fieldTypeProviderRegistry.js.map +1 -1
  228. package/dist/esm/CommandForm/fields/CalendarField.d.ts +1 -0
  229. package/dist/esm/CommandForm/fields/CalendarField.d.ts.map +1 -0
  230. package/dist/esm/CommandForm/fields/CalendarField.js.map +1 -1
  231. package/dist/esm/CommandForm/fields/CheckboxField.d.ts +1 -0
  232. package/dist/esm/CommandForm/fields/CheckboxField.d.ts.map +1 -0
  233. package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
  234. package/dist/esm/CommandForm/fields/ChipsField.d.ts +1 -0
  235. package/dist/esm/CommandForm/fields/ChipsField.d.ts.map +1 -0
  236. package/dist/esm/CommandForm/fields/ChipsField.js.map +1 -1
  237. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts +1 -0
  238. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts.map +1 -0
  239. package/dist/esm/CommandForm/fields/ColorPickerField.js.map +1 -1
  240. package/dist/esm/CommandForm/fields/DropdownField.d.ts +1 -0
  241. package/dist/esm/CommandForm/fields/DropdownField.d.ts.map +1 -0
  242. package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
  243. package/dist/esm/CommandForm/fields/InputTextField.d.ts +1 -0
  244. package/dist/esm/CommandForm/fields/InputTextField.d.ts.map +1 -0
  245. package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
  246. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts +1 -0
  247. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts.map +1 -0
  248. package/dist/esm/CommandForm/fields/MultiSelectField.js.map +1 -1
  249. package/dist/esm/CommandForm/fields/NumberField.d.ts +1 -0
  250. package/dist/esm/CommandForm/fields/NumberField.d.ts.map +1 -0
  251. package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
  252. package/dist/esm/CommandForm/fields/NumberInputField.d.ts +1 -0
  253. package/dist/esm/CommandForm/fields/NumberInputField.d.ts.map +1 -0
  254. package/dist/esm/CommandForm/fields/NumberInputField.js.map +1 -1
  255. package/dist/esm/CommandForm/fields/PasswordField.d.ts +1 -0
  256. package/dist/esm/CommandForm/fields/PasswordField.d.ts.map +1 -0
  257. package/dist/esm/CommandForm/fields/PasswordField.js.map +1 -1
  258. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts +1 -0
  259. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts.map +1 -0
  260. package/dist/esm/CommandForm/fields/RadioButtonField.js.map +1 -1
  261. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts +1 -0
  262. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts.map +1 -0
  263. package/dist/esm/CommandForm/fields/RadioGroupField.js.map +1 -1
  264. package/dist/esm/CommandForm/fields/RatingField.d.ts +1 -0
  265. package/dist/esm/CommandForm/fields/RatingField.d.ts.map +1 -0
  266. package/dist/esm/CommandForm/fields/RatingField.js.map +1 -1
  267. package/dist/esm/CommandForm/fields/SliderField.d.ts +1 -0
  268. package/dist/esm/CommandForm/fields/SliderField.d.ts.map +1 -0
  269. package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
  270. package/dist/esm/CommandForm/fields/TextAreaField.d.ts +1 -0
  271. package/dist/esm/CommandForm/fields/TextAreaField.d.ts.map +1 -0
  272. package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
  273. package/dist/esm/CommandForm/fields/ToggleSwitchField.d.ts +1 -0
  274. package/dist/esm/CommandForm/fields/ToggleSwitchField.d.ts.map +1 -0
  275. package/dist/esm/CommandForm/fields/ToggleSwitchField.js.map +1 -1
  276. package/dist/esm/CommandForm/fields/chipValues.js.map +1 -1
  277. package/dist/esm/CommandForm/fields/fieldAccessibility.js.map +1 -1
  278. package/dist/esm/CommandForm/fields/fieldValueFromEvent.js.map +1 -1
  279. package/dist/esm/CommandForm/fields/index.d.ts +1 -0
  280. package/dist/esm/CommandForm/fields/index.d.ts.map +1 -0
  281. package/dist/esm/CommandForm/fields/index.js +1 -0
  282. package/dist/esm/CommandForm/fields/index.js.map +1 -0
  283. package/dist/esm/CommandForm/index.d.ts +1 -0
  284. package/dist/esm/CommandForm/index.d.ts.map +1 -0
  285. package/dist/esm/Common/ActionMenubar.d.ts +1 -0
  286. package/dist/esm/Common/ActionMenubar.d.ts.map +1 -0
  287. package/dist/esm/Common/ActionMenubar.js.map +1 -1
  288. package/dist/esm/Common/Breadcrumbs.js.map +1 -1
  289. package/dist/esm/Common/Button.d.ts +1 -0
  290. package/dist/esm/Common/Button.d.ts.map +1 -0
  291. package/dist/esm/Common/Button.js.map +1 -1
  292. package/dist/esm/Common/ButtonImplementation.d.ts +1 -0
  293. package/dist/esm/Common/ButtonImplementation.d.ts.map +1 -0
  294. package/dist/esm/Common/ButtonImplementation.js.map +1 -1
  295. package/dist/esm/Common/Checkbox.d.ts +1 -0
  296. package/dist/esm/Common/Checkbox.d.ts.map +1 -0
  297. package/dist/esm/Common/Checkbox.js.map +1 -1
  298. package/dist/esm/Common/CheckboxImplementation.d.ts +1 -0
  299. package/dist/esm/Common/CheckboxImplementation.d.ts.map +1 -0
  300. package/dist/esm/Common/CheckboxImplementation.js.map +1 -1
  301. package/dist/esm/Common/ComboBox.js.map +1 -1
  302. package/dist/esm/Common/CratisComponentsProvider.d.ts +1 -0
  303. package/dist/esm/Common/CratisComponentsProvider.d.ts.map +1 -0
  304. package/dist/esm/Common/CratisComponentsProvider.js.map +1 -1
  305. package/dist/esm/Common/DatePickerInput.d.ts +1 -0
  306. package/dist/esm/Common/DatePickerInput.d.ts.map +1 -0
  307. package/dist/esm/Common/DatePickerInput.js.map +1 -1
  308. package/dist/esm/Common/DatePickerInputImplementation.d.ts +1 -0
  309. package/dist/esm/Common/DatePickerInputImplementation.d.ts.map +1 -0
  310. package/dist/esm/Common/DatePickerInputImplementation.js.map +1 -1
  311. package/dist/esm/Common/ErrorBoundary.js.map +1 -1
  312. package/dist/esm/Common/FormElement.js.map +1 -1
  313. package/dist/esm/Common/Icon.js.map +1 -1
  314. package/dist/esm/Common/IconButton.d.ts +1 -0
  315. package/dist/esm/Common/IconButton.d.ts.map +1 -0
  316. package/dist/esm/Common/IconButton.js.map +1 -1
  317. package/dist/esm/Common/IconButtonImplementation.d.ts +1 -0
  318. package/dist/esm/Common/IconButtonImplementation.d.ts.map +1 -0
  319. package/dist/esm/Common/IconButtonImplementation.js.map +1 -1
  320. package/dist/esm/Common/NumberInput.d.ts +1 -0
  321. package/dist/esm/Common/NumberInput.d.ts.map +1 -0
  322. package/dist/esm/Common/NumberInput.js.map +1 -1
  323. package/dist/esm/Common/NumberInputCommitReason.js.map +1 -1
  324. package/dist/esm/Common/NumberInputPartAttributes.js.map +1 -1
  325. package/dist/esm/Common/Page.js.map +1 -1
  326. package/dist/esm/Common/Radio.d.ts +1 -0
  327. package/dist/esm/Common/Radio.d.ts.map +1 -0
  328. package/dist/esm/Common/Radio.js.map +1 -1
  329. package/dist/esm/Common/RadioImplementation.d.ts +1 -0
  330. package/dist/esm/Common/RadioImplementation.d.ts.map +1 -0
  331. package/dist/esm/Common/RadioImplementation.js.map +1 -1
  332. package/dist/esm/Common/Surface.js.map +1 -1
  333. package/dist/esm/Common/SurfaceImplementation.d.ts +1 -0
  334. package/dist/esm/Common/SurfaceImplementation.d.ts.map +1 -0
  335. package/dist/esm/Common/SurfaceImplementation.js.map +1 -1
  336. package/dist/esm/Common/Switch.d.ts +1 -0
  337. package/dist/esm/Common/Switch.d.ts.map +1 -0
  338. package/dist/esm/Common/Switch.js.map +1 -1
  339. package/dist/esm/Common/SwitchImplementation.d.ts +1 -0
  340. package/dist/esm/Common/SwitchImplementation.d.ts.map +1 -0
  341. package/dist/esm/Common/SwitchImplementation.js.map +1 -1
  342. package/dist/esm/Common/Tabs.js.map +1 -1
  343. package/dist/esm/Common/TagGroup.js.map +1 -1
  344. package/dist/esm/Common/TextArea.d.ts +1 -0
  345. package/dist/esm/Common/TextArea.d.ts.map +1 -0
  346. package/dist/esm/Common/TextArea.js.map +1 -1
  347. package/dist/esm/Common/TextAreaImplementation.d.ts +1 -0
  348. package/dist/esm/Common/TextAreaImplementation.d.ts.map +1 -0
  349. package/dist/esm/Common/TextAreaImplementation.js.map +1 -1
  350. package/dist/esm/Common/TextInput.d.ts +1 -0
  351. package/dist/esm/Common/TextInput.d.ts.map +1 -0
  352. package/dist/esm/Common/TextInput.js.map +1 -1
  353. package/dist/esm/Common/TextInputImplementation.d.ts +1 -0
  354. package/dist/esm/Common/TextInputImplementation.d.ts.map +1 -0
  355. package/dist/esm/Common/TextInputImplementation.js.map +1 -1
  356. package/dist/esm/Common/ToggleGroup.js.map +1 -1
  357. package/dist/esm/Common/ToolbarFocusMode.js.map +1 -1
  358. package/dist/esm/Common/Tooltip.js.map +1 -1
  359. package/dist/esm/Common/TooltipImplementation.d.ts +1 -0
  360. package/dist/esm/Common/TooltipImplementation.d.ts.map +1 -0
  361. package/dist/esm/Common/TooltipImplementation.js.map +1 -1
  362. package/dist/esm/Common/index.d.ts +1 -0
  363. package/dist/esm/Common/index.d.ts.map +1 -0
  364. package/dist/esm/Common/messaging/useOptionalMessenger.js.map +1 -1
  365. package/dist/esm/Common/normalizeIconClass.js.map +1 -1
  366. package/dist/esm/Common/reactAriaProps.js.map +1 -1
  367. package/dist/esm/Common/useNativeCheckedState.js.map +1 -1
  368. package/dist/esm/Common/useToolbarKeyboardNavigation.d.ts +1 -0
  369. package/dist/esm/Common/useToolbarKeyboardNavigation.d.ts.map +1 -0
  370. package/dist/esm/Common/useToolbarKeyboardNavigation.js.map +1 -1
  371. package/dist/esm/DataPage/DataPage.d.ts +1 -0
  372. package/dist/esm/DataPage/DataPage.d.ts.map +1 -0
  373. package/dist/esm/DataPage/DataPage.js.map +1 -1
  374. package/dist/esm/DataPage/DataPageLayout.js.map +1 -1
  375. package/dist/esm/DataPage/index.d.ts +1 -0
  376. package/dist/esm/DataPage/index.d.ts.map +1 -0
  377. package/dist/esm/DataTables/Column.d.ts +1 -0
  378. package/dist/esm/DataTables/Column.d.ts.map +1 -0
  379. package/dist/esm/DataTables/Column.js.map +1 -1
  380. package/dist/esm/DataTables/ColumnFilterMenu.d.ts +1 -0
  381. package/dist/esm/DataTables/ColumnFilterMenu.d.ts.map +1 -0
  382. package/dist/esm/DataTables/ColumnFilterMenu.js.map +1 -1
  383. package/dist/esm/DataTables/DataTableCore.d.ts +1 -0
  384. package/dist/esm/DataTables/DataTableCore.d.ts.map +1 -0
  385. package/dist/esm/DataTables/DataTableCore.js.map +1 -1
  386. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.d.ts +1 -0
  387. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.d.ts.map +1 -0
  388. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.js.map +1 -1
  389. package/dist/esm/DataTables/DataTableFilterMeta.js.map +1 -1
  390. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts +1 -0
  391. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts.map +1 -0
  392. package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
  393. package/dist/esm/DataTables/DataTableForQuery.d.ts +1 -0
  394. package/dist/esm/DataTables/DataTableForQuery.d.ts.map +1 -0
  395. package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
  396. package/dist/esm/DataTables/DataTableSelectionChangeEvent.js.map +1 -1
  397. package/dist/esm/DataTables/DataTableStatus.js.map +1 -1
  398. package/dist/esm/DataTables/TablePaginator.d.ts +1 -0
  399. package/dist/esm/DataTables/TablePaginator.d.ts.map +1 -0
  400. package/dist/esm/DataTables/TablePaginator.js.map +1 -1
  401. package/dist/esm/DataTables/TablePaginatorImplementation.d.ts +1 -0
  402. package/dist/esm/DataTables/TablePaginatorImplementation.d.ts.map +1 -0
  403. package/dist/esm/DataTables/TablePaginatorImplementation.js.map +1 -1
  404. package/dist/esm/DataTables/index.d.ts +1 -0
  405. package/dist/esm/DataTables/index.d.ts.map +1 -0
  406. package/dist/esm/DataTables/paginatorRange.js.map +1 -1
  407. package/dist/esm/DataTables/resolveDataTableStatus.d.ts +1 -0
  408. package/dist/esm/DataTables/resolveDataTableStatus.d.ts.map +1 -0
  409. package/dist/esm/DataTables/resolveDataTableStatus.js.map +1 -1
  410. package/dist/esm/DataTables/selectionKeys.js.map +1 -1
  411. package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
  412. package/dist/esm/Dialogs/ConfirmationDialog.js.map +1 -1
  413. package/dist/esm/Dialogs/Dialog.d.ts +1 -0
  414. package/dist/esm/Dialogs/Dialog.d.ts.map +1 -0
  415. package/dist/esm/Dialogs/Dialog.js.map +1 -1
  416. package/dist/esm/Dialogs/DialogImplementation.d.ts +1 -0
  417. package/dist/esm/Dialogs/DialogImplementation.d.ts.map +1 -0
  418. package/dist/esm/Dialogs/DialogImplementation.js.map +1 -1
  419. package/dist/esm/Dialogs/DialogInitialFocus.js.map +1 -1
  420. package/dist/esm/Dialogs/index.d.ts +1 -0
  421. package/dist/esm/Dialogs/index.d.ts.map +1 -0
  422. package/dist/esm/Display/Avatar.js.map +1 -1
  423. package/dist/esm/Display/Badge.js.map +1 -1
  424. package/dist/esm/Display/Chip.js.map +1 -1
  425. package/dist/esm/Display/Message.js.map +1 -1
  426. package/dist/esm/Display/ProgressBar.js.map +1 -1
  427. package/dist/esm/Display/ProgressBarImplementation.d.ts +1 -0
  428. package/dist/esm/Display/ProgressBarImplementation.d.ts.map +1 -0
  429. package/dist/esm/Display/ProgressBarImplementation.js.map +1 -1
  430. package/dist/esm/Display/ProgressSpinner.js.map +1 -1
  431. package/dist/esm/Display/Skeleton.js.map +1 -1
  432. package/dist/esm/Display/Tag.js.map +1 -1
  433. package/dist/esm/Display/index.d.ts +1 -0
  434. package/dist/esm/Display/index.d.ts.map +1 -0
  435. package/dist/esm/Dropdown/Dropdown.d.ts +1 -0
  436. package/dist/esm/Dropdown/Dropdown.d.ts.map +1 -0
  437. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  438. package/dist/esm/Dropdown/DropdownImplementation.d.ts +1 -0
  439. package/dist/esm/Dropdown/DropdownImplementation.d.ts.map +1 -0
  440. package/dist/esm/Dropdown/DropdownImplementation.js.map +1 -1
  441. package/dist/esm/Dropdown/index.d.ts +1 -0
  442. package/dist/esm/Dropdown/index.d.ts.map +1 -0
  443. package/dist/esm/Dropdown/observeLabelAssociations.js.map +1 -1
  444. package/dist/esm/Dropdown/useExternalLabel.js.map +1 -1
  445. package/dist/esm/Filter/CheckboxListFilter.d.ts +1 -0
  446. package/dist/esm/Filter/CheckboxListFilter.d.ts.map +1 -0
  447. package/dist/esm/Filter/CheckboxListFilter.js.map +1 -1
  448. package/dist/esm/Filter/FilterEditor.d.ts +1 -0
  449. package/dist/esm/Filter/FilterEditor.d.ts.map +1 -0
  450. package/dist/esm/Filter/FilterEditor.js.map +1 -1
  451. package/dist/esm/Filter/FilterEditorProps.d.ts +1 -0
  452. package/dist/esm/Filter/FilterEditorProps.d.ts.map +1 -0
  453. package/dist/esm/Filter/FilterEditorProps.js.map +1 -1
  454. package/dist/esm/Filter/FilterPanel.d.ts +1 -0
  455. package/dist/esm/Filter/FilterPanel.d.ts.map +1 -0
  456. package/dist/esm/Filter/FilterPanel.js.map +1 -1
  457. package/dist/esm/Filter/RangeHistogramFilter.d.ts +1 -0
  458. package/dist/esm/Filter/RangeHistogramFilter.d.ts.map +1 -0
  459. package/dist/esm/Filter/RangeHistogramFilter.js.map +1 -1
  460. package/dist/esm/Filter/index.d.ts +1 -0
  461. package/dist/esm/Filter/index.d.ts.map +1 -0
  462. package/dist/esm/Filter/types.js.map +1 -1
  463. package/dist/esm/Filter/useFilterState.d.ts +1 -0
  464. package/dist/esm/Filter/useFilterState.d.ts.map +1 -0
  465. package/dist/esm/Filter/useFilterState.js.map +1 -1
  466. package/dist/esm/Filter/useOptionListOverflow.js.map +1 -1
  467. package/dist/esm/Filter/utils.d.ts +1 -0
  468. package/dist/esm/Filter/utils.d.ts.map +1 -0
  469. package/dist/esm/Filter/utils.js.map +1 -1
  470. package/dist/esm/Notifications/Toaster.js.map +1 -1
  471. package/dist/esm/Notifications/index.d.ts +1 -0
  472. package/dist/esm/Notifications/index.d.ts.map +1 -0
  473. package/dist/esm/Notifications/toast.js.map +1 -1
  474. package/dist/esm/Notifications/toastCommandResult.js.map +1 -1
  475. package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts +1 -0
  476. package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts.map +1 -0
  477. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  478. package/dist/esm/ObjectContentEditor/index.d.ts +1 -0
  479. package/dist/esm/ObjectContentEditor/index.d.ts.map +1 -0
  480. package/dist/esm/ObjectContentEditor/objectHelpers.d.ts +1 -0
  481. package/dist/esm/ObjectContentEditor/objectHelpers.d.ts.map +1 -0
  482. package/dist/esm/ObjectContentEditor/objectHelpers.js.map +1 -1
  483. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  484. package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js.map +1 -1
  485. package/dist/esm/ObjectNavigationalBar/index.d.ts +1 -0
  486. package/dist/esm/ObjectNavigationalBar/index.d.ts.map +1 -0
  487. package/dist/esm/PivotViewer/PivotViewer.d.ts +1 -0
  488. package/dist/esm/PivotViewer/PivotViewer.d.ts.map +1 -0
  489. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  490. package/dist/esm/PivotViewer/PivotViewerLabels.js.map +1 -1
  491. package/dist/esm/PivotViewer/components/AxisLabels.d.ts +1 -0
  492. package/dist/esm/PivotViewer/components/AxisLabels.d.ts.map +1 -0
  493. package/dist/esm/PivotViewer/components/AxisLabels.js.map +1 -1
  494. package/dist/esm/PivotViewer/components/DetailPanel.js.map +1 -1
  495. package/dist/esm/PivotViewer/components/FilterPanel.d.ts +1 -0
  496. package/dist/esm/PivotViewer/components/FilterPanel.d.ts.map +1 -0
  497. package/dist/esm/PivotViewer/components/FilterPanel.js.map +1 -1
  498. package/dist/esm/PivotViewer/components/FilterPanelContainer.d.ts +1 -0
  499. package/dist/esm/PivotViewer/components/FilterPanelContainer.d.ts.map +1 -0
  500. package/dist/esm/PivotViewer/components/FilterPanelContainer.js.map +1 -1
  501. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts +1 -0
  502. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts.map +1 -0
  503. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  504. package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts +1 -0
  505. package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts.map +1 -0
  506. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  507. package/dist/esm/PivotViewer/components/RangeHistogramFilter.d.ts +1 -0
  508. package/dist/esm/PivotViewer/components/RangeHistogramFilter.d.ts.map +1 -0
  509. package/dist/esm/PivotViewer/components/RangeHistogramFilter.js.map +1 -1
  510. package/dist/esm/PivotViewer/components/Spinner.js.map +1 -1
  511. package/dist/esm/PivotViewer/components/Toolbar.d.ts +1 -0
  512. package/dist/esm/PivotViewer/components/Toolbar.d.ts.map +1 -0
  513. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  514. package/dist/esm/PivotViewer/components/ToolbarContainer.d.ts +1 -0
  515. package/dist/esm/PivotViewer/components/ToolbarContainer.d.ts.map +1 -0
  516. package/dist/esm/PivotViewer/components/ToolbarContainer.js.map +1 -1
  517. package/dist/esm/PivotViewer/components/index.d.ts +1 -0
  518. package/dist/esm/PivotViewer/components/index.d.ts.map +1 -0
  519. package/dist/esm/PivotViewer/components/index.js +1 -0
  520. package/dist/esm/PivotViewer/components/index.js.map +1 -0
  521. package/dist/esm/PivotViewer/components/pivot/animation.d.ts +1 -0
  522. package/dist/esm/PivotViewer/components/pivot/animation.d.ts.map +1 -0
  523. package/dist/esm/PivotViewer/components/pivot/animation.js.map +1 -1
  524. package/dist/esm/PivotViewer/components/pivot/colorResolver.d.ts +1 -0
  525. package/dist/esm/PivotViewer/components/pivot/colorResolver.d.ts.map +1 -0
  526. package/dist/esm/PivotViewer/components/pivot/colorResolver.js.map +1 -1
  527. package/dist/esm/PivotViewer/components/pivot/constants.js.map +1 -1
  528. package/dist/esm/PivotViewer/components/pivot/ellipsize.js.map +1 -1
  529. package/dist/esm/PivotViewer/components/pivot/groups.d.ts +1 -0
  530. package/dist/esm/PivotViewer/components/pivot/groups.d.ts.map +1 -0
  531. package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
  532. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts +1 -0
  533. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts.map +1 -0
  534. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  535. package/dist/esm/PivotViewer/components/pivot/syncScrollSprites.d.ts +1 -0
  536. package/dist/esm/PivotViewer/components/pivot/syncScrollSprites.d.ts.map +1 -0
  537. package/dist/esm/PivotViewer/components/pivot/syncScrollSprites.js.map +1 -1
  538. package/dist/esm/PivotViewer/components/pivot/visibility.d.ts +1 -0
  539. package/dist/esm/PivotViewer/components/pivot/visibility.d.ts.map +1 -0
  540. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  541. package/dist/esm/PivotViewer/constants.js.map +1 -1
  542. package/dist/esm/PivotViewer/engine/layout.d.ts +1 -0
  543. package/dist/esm/PivotViewer/engine/layout.d.ts.map +1 -0
  544. package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
  545. package/dist/esm/PivotViewer/engine/pivot.worker.js +1 -0
  546. package/dist/esm/PivotViewer/engine/pivot.worker.js.map +1 -0
  547. package/dist/esm/PivotViewer/engine/requestCorrelator.js.map +1 -1
  548. package/dist/esm/PivotViewer/engine/store.d.ts +1 -0
  549. package/dist/esm/PivotViewer/engine/store.d.ts.map +1 -0
  550. package/dist/esm/PivotViewer/engine/store.js.map +1 -1
  551. package/dist/esm/PivotViewer/engine/types.js.map +1 -1
  552. package/dist/esm/PivotViewer/hooks/index.d.ts +1 -0
  553. package/dist/esm/PivotViewer/hooks/index.d.ts.map +1 -0
  554. package/dist/esm/PivotViewer/hooks/index.js +1 -0
  555. package/dist/esm/PivotViewer/hooks/index.js.map +1 -0
  556. package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js.map +1 -1
  557. package/dist/esm/PivotViewer/hooks/useCardSelection.d.ts +1 -0
  558. package/dist/esm/PivotViewer/hooks/useCardSelection.d.ts.map +1 -0
  559. package/dist/esm/PivotViewer/hooks/useCardSelection.js.map +1 -1
  560. package/dist/esm/PivotViewer/hooks/useContainerDimensions.js.map +1 -1
  561. package/dist/esm/PivotViewer/hooks/useCurrentFilters.d.ts +1 -0
  562. package/dist/esm/PivotViewer/hooks/useCurrentFilters.d.ts.map +1 -0
  563. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  564. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.d.ts +1 -0
  565. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.d.ts.map +1 -0
  566. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js.map +1 -1
  567. package/dist/esm/PivotViewer/hooks/useDimensionState.d.ts +1 -0
  568. package/dist/esm/PivotViewer/hooks/useDimensionState.d.ts.map +1 -0
  569. package/dist/esm/PivotViewer/hooks/useDimensionState.js.map +1 -1
  570. package/dist/esm/PivotViewer/hooks/useFieldExtractors.d.ts +1 -0
  571. package/dist/esm/PivotViewer/hooks/useFieldExtractors.d.ts.map +1 -0
  572. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
  573. package/dist/esm/PivotViewer/hooks/useFilterOptions.d.ts +1 -0
  574. package/dist/esm/PivotViewer/hooks/useFilterOptions.d.ts.map +1 -0
  575. package/dist/esm/PivotViewer/hooks/useFilterOptions.js.map +1 -1
  576. package/dist/esm/PivotViewer/hooks/useFilterPanelDrag.js.map +1 -1
  577. package/dist/esm/PivotViewer/hooks/useFilterState.d.ts +1 -0
  578. package/dist/esm/PivotViewer/hooks/useFilterState.d.ts.map +1 -0
  579. package/dist/esm/PivotViewer/hooks/useFilterState.js.map +1 -1
  580. package/dist/esm/PivotViewer/hooks/useFilteredData.d.ts +1 -0
  581. package/dist/esm/PivotViewer/hooks/useFilteredData.d.ts.map +1 -0
  582. package/dist/esm/PivotViewer/hooks/useFilteredData.js +1 -0
  583. package/dist/esm/PivotViewer/hooks/useFilteredData.js.map +1 -0
  584. package/dist/esm/PivotViewer/hooks/usePanning.js.map +1 -1
  585. package/dist/esm/PivotViewer/hooks/usePivotEngine.d.ts +1 -0
  586. package/dist/esm/PivotViewer/hooks/usePivotEngine.d.ts.map +1 -0
  587. package/dist/esm/PivotViewer/hooks/usePivotEngine.js.map +1 -1
  588. package/dist/esm/PivotViewer/hooks/useScrollSync.d.ts +1 -0
  589. package/dist/esm/PivotViewer/hooks/useScrollSync.d.ts.map +1 -0
  590. package/dist/esm/PivotViewer/hooks/useScrollSync.js.map +1 -1
  591. package/dist/esm/PivotViewer/hooks/useSelectedItem.js +1 -0
  592. package/dist/esm/PivotViewer/hooks/useSelectedItem.js.map +1 -0
  593. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.d.ts +1 -0
  594. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.d.ts.map +1 -0
  595. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
  596. package/dist/esm/PivotViewer/hooks/useWheelZoom.js.map +1 -1
  597. package/dist/esm/PivotViewer/hooks/useZoomScrollAnchor.js.map +1 -1
  598. package/dist/esm/PivotViewer/hooks/useZoomState.js.map +1 -1
  599. package/dist/esm/PivotViewer/index.d.ts +1 -0
  600. package/dist/esm/PivotViewer/index.d.ts.map +1 -0
  601. package/dist/esm/PivotViewer/types.d.ts +1 -0
  602. package/dist/esm/PivotViewer/types.d.ts.map +1 -0
  603. package/dist/esm/PivotViewer/types.js.map +1 -1
  604. package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
  605. package/dist/esm/PivotViewer/utils/cardPosition.d.ts +1 -0
  606. package/dist/esm/PivotViewer/utils/cardPosition.d.ts.map +1 -0
  607. package/dist/esm/PivotViewer/utils/cardPosition.js.map +1 -1
  608. package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
  609. package/dist/esm/PivotViewer/utils/idResolution.d.ts +1 -0
  610. package/dist/esm/PivotViewer/utils/idResolution.d.ts.map +1 -0
  611. package/dist/esm/PivotViewer/utils/idResolution.js.map +1 -1
  612. package/dist/esm/PivotViewer/utils/index.d.ts +1 -0
  613. package/dist/esm/PivotViewer/utils/index.d.ts.map +1 -0
  614. package/dist/esm/PivotViewer/utils/index.js +1 -0
  615. package/dist/esm/PivotViewer/utils/index.js.map +1 -0
  616. package/dist/esm/PivotViewer/utils/presentGrouping.d.ts +1 -0
  617. package/dist/esm/PivotViewer/utils/presentGrouping.d.ts.map +1 -0
  618. package/dist/esm/PivotViewer/utils/presentGrouping.js.map +1 -1
  619. package/dist/esm/PivotViewer/utils/search.d.ts +1 -0
  620. package/dist/esm/PivotViewer/utils/search.d.ts.map +1 -0
  621. package/dist/esm/PivotViewer/utils/search.js.map +1 -1
  622. package/dist/esm/PivotViewer/utils/selection.d.ts +1 -0
  623. package/dist/esm/PivotViewer/utils/selection.d.ts.map +1 -0
  624. package/dist/esm/PivotViewer/utils/selection.js.map +1 -1
  625. package/dist/esm/PivotViewer/utils/utils.d.ts +1 -0
  626. package/dist/esm/PivotViewer/utils/utils.d.ts.map +1 -0
  627. package/dist/esm/PivotViewer/utils/utils.js.map +1 -1
  628. package/dist/esm/QueryStatus/QueryStatus.js.map +1 -1
  629. package/dist/esm/QueryStatus/resolveQueryStatus.d.ts +1 -0
  630. package/dist/esm/QueryStatus/resolveQueryStatus.d.ts.map +1 -0
  631. package/dist/esm/QueryStatus/resolveQueryStatus.js.map +1 -1
  632. package/dist/esm/SchemaEditor/NameCell.d.ts +1 -0
  633. package/dist/esm/SchemaEditor/NameCell.d.ts.map +1 -0
  634. package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
  635. package/dist/esm/SchemaEditor/SchemaEditor.d.ts +1 -0
  636. package/dist/esm/SchemaEditor/SchemaEditor.d.ts.map +1 -0
  637. package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
  638. package/dist/esm/SchemaEditor/TypeCell.d.ts +1 -0
  639. package/dist/esm/SchemaEditor/TypeCell.d.ts.map +1 -0
  640. package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
  641. package/dist/esm/SchemaEditor/index.d.ts +1 -0
  642. package/dist/esm/SchemaEditor/index.d.ts.map +1 -0
  643. package/dist/esm/SchemaEditor/schemaHelpers.d.ts +1 -0
  644. package/dist/esm/SchemaEditor/schemaHelpers.d.ts.map +1 -0
  645. package/dist/esm/SchemaEditor/schemaHelpers.js.map +1 -1
  646. package/dist/esm/TimeMachine/EventsView.d.ts +1 -0
  647. package/dist/esm/TimeMachine/EventsView.d.ts.map +1 -0
  648. package/dist/esm/TimeMachine/EventsView.js.map +1 -1
  649. package/dist/esm/TimeMachine/Properties.js.map +1 -1
  650. package/dist/esm/TimeMachine/ReadModelView.d.ts +1 -0
  651. package/dist/esm/TimeMachine/ReadModelView.d.ts.map +1 -0
  652. package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
  653. package/dist/esm/TimeMachine/TimeMachine.d.ts +1 -0
  654. package/dist/esm/TimeMachine/TimeMachine.d.ts.map +1 -0
  655. package/dist/esm/TimeMachine/TimeMachine.js.map +1 -1
  656. package/dist/esm/TimeMachine/TimeMachineLabels.js.map +1 -1
  657. package/dist/esm/TimeMachine/index.d.ts +1 -0
  658. package/dist/esm/TimeMachine/index.d.ts.map +1 -0
  659. package/dist/esm/TimeMachine/propertiesHelpers.js.map +1 -1
  660. package/dist/esm/TimeMachine/types.js.map +1 -1
  661. package/dist/esm/Toolbar/Toolbar.d.ts +1 -0
  662. package/dist/esm/Toolbar/Toolbar.d.ts.map +1 -0
  663. package/dist/esm/Toolbar/Toolbar.js.map +1 -1
  664. package/dist/esm/Toolbar/ToolbarButton.d.ts +1 -0
  665. package/dist/esm/Toolbar/ToolbarButton.d.ts.map +1 -0
  666. package/dist/esm/Toolbar/ToolbarButton.js.map +1 -1
  667. package/dist/esm/Toolbar/ToolbarContext.js.map +1 -1
  668. package/dist/esm/Toolbar/ToolbarDragContext.js.map +1 -1
  669. package/dist/esm/Toolbar/ToolbarFanOutItem.d.ts +1 -0
  670. package/dist/esm/Toolbar/ToolbarFanOutItem.d.ts.map +1 -0
  671. package/dist/esm/Toolbar/ToolbarFanOutItem.js.map +1 -1
  672. package/dist/esm/Toolbar/ToolbarFolder.d.ts +1 -0
  673. package/dist/esm/Toolbar/ToolbarFolder.d.ts.map +1 -0
  674. package/dist/esm/Toolbar/ToolbarFolder.js.map +1 -1
  675. package/dist/esm/Toolbar/ToolbarFolderContext.js.map +1 -1
  676. package/dist/esm/Toolbar/ToolbarGroup.js.map +1 -1
  677. package/dist/esm/Toolbar/ToolbarItemVisibilityContext.js.map +1 -1
  678. package/dist/esm/Toolbar/ToolbarLayout.js.map +1 -1
  679. package/dist/esm/Toolbar/ToolbarSection.js.map +1 -1
  680. package/dist/esm/Toolbar/ToolbarSeparator.js.map +1 -1
  681. package/dist/esm/Toolbar/ToolbarSlot.js.map +1 -1
  682. package/dist/esm/Toolbar/index.d.ts +1 -0
  683. package/dist/esm/Toolbar/index.d.ts.map +1 -0
  684. package/dist/esm/configuration/CratisComponentsContext.d.ts +1 -0
  685. package/dist/esm/configuration/CratisComponentsContext.d.ts.map +1 -0
  686. package/dist/esm/configuration/CratisComponentsContext.js.map +1 -1
  687. package/dist/esm/configuration/CratisComponentsDefaults.d.ts +1 -0
  688. package/dist/esm/configuration/CratisComponentsDefaults.d.ts.map +1 -0
  689. package/dist/esm/configuration/CratisComponentsDefaults.js.map +1 -1
  690. package/dist/esm/configuration/useCratisIcon.d.ts +1 -0
  691. package/dist/esm/configuration/useCratisIcon.d.ts.map +1 -0
  692. package/dist/esm/configuration/useCratisIcon.js.map +1 -1
  693. package/dist/esm/index.d.ts +1 -0
  694. package/dist/esm/index.d.ts.map +1 -0
  695. package/dist/esm/renderer/DialogStackContext.js.map +1 -1
  696. package/dist/esm/renderer/RendererContext.d.ts +1 -0
  697. package/dist/esm/renderer/RendererContext.d.ts.map +1 -0
  698. package/dist/esm/renderer/RendererContext.js.map +1 -1
  699. package/dist/esm/renderer/RendererScope.d.ts +1 -0
  700. package/dist/esm/renderer/RendererScope.d.ts.map +1 -0
  701. package/dist/esm/renderer/RendererScope.js.map +1 -1
  702. package/dist/esm/renderer/builtin/index.js.map +1 -1
  703. package/dist/esm/renderer/capabilities.js.map +1 -1
  704. package/dist/esm/renderer/coreSlots.d.ts +1 -0
  705. package/dist/esm/renderer/coreSlots.d.ts.map +1 -0
  706. package/dist/esm/renderer/coreSlots.js.map +1 -1
  707. package/dist/esm/renderer/dialogStack.js.map +1 -1
  708. package/dist/esm/renderer/errors.d.ts +1 -0
  709. package/dist/esm/renderer/errors.d.ts.map +1 -0
  710. package/dist/esm/renderer/errors.js.map +1 -1
  711. package/dist/esm/renderer/index.d.ts +1 -0
  712. package/dist/esm/renderer/index.d.ts.map +1 -0
  713. package/dist/esm/renderer/manifest.d.ts +1 -0
  714. package/dist/esm/renderer/manifest.d.ts.map +1 -0
  715. package/dist/esm/renderer/manifest.js.map +1 -1
  716. package/dist/esm/renderer/overlayEnvironment.js.map +1 -1
  717. package/dist/esm/renderer/presentation.d.ts +1 -0
  718. package/dist/esm/renderer/presentation.d.ts.map +1 -0
  719. package/dist/esm/renderer/presentation.js.map +1 -1
  720. package/dist/esm/renderer/renderSlot.js.map +1 -1
  721. package/dist/esm/renderer/resolve.d.ts +1 -0
  722. package/dist/esm/renderer/resolve.d.ts.map +1 -0
  723. package/dist/esm/renderer/resolve.js.map +1 -1
  724. package/dist/esm/renderer/slots.js.map +1 -1
  725. package/dist/esm/styles.Canvas.css +17 -1
  726. package/dist/esm/styles.Chat.css +17 -1
  727. package/dist/esm/styles.css +17 -1
  728. package/dist/esm/types/ChangeHandler.d.ts +1 -0
  729. package/dist/esm/types/ChangeHandler.d.ts.map +1 -0
  730. package/dist/esm/types/ChangeHandler.js.map +1 -1
  731. package/dist/esm/types/ChangeMeta.js.map +1 -1
  732. package/dist/esm/types/ExactPartKeys.js.map +1 -1
  733. package/dist/esm/types/JsonSchema.js.map +1 -1
  734. package/dist/esm/types/TypeFormat.js.map +1 -1
  735. package/dist/esm/types/index.d.ts +1 -0
  736. package/dist/esm/types/index.d.ts.map +1 -0
  737. package/dist/esm/types/parts.js.map +1 -1
  738. package/package.json +7 -3
@@ -3,3 +3,4 @@ import type { ViewMode } from '../components/Toolbar.js';
3
3
  * Synchronizes axis labels scroll with container scroll
4
4
  */
5
5
  export declare function useScrollSync(containerRef: React.RefObject<HTMLDivElement>, axisLabelsRef: React.RefObject<HTMLDivElement>, viewMode: ViewMode): void;
6
+ //# sourceMappingURL=useScrollSync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollSync.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/hooks/useScrollSync.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAAuB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,aAAa,CACzB,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,EAC7C,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,EAC9C,QAAQ,EAAE,QAAQ,QAkBrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollSync.js","sources":["../../../../PivotViewer/hooks/useScrollSync.ts"],"sourcesContent":[null],"names":[],"mappings":";;SASgB,aAAa,CACzB,YAA6C,EAC7C,aAA8C,EAC9C,QAAkB,EAAA;IAElB,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO;QAExC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,QAAQ,KAAK,SAAS;YAAE;QAEzD,MAAM,YAAY,GAAG,MAAK;AACtB,YAAA,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU;AAChD,QAAA,CAAC;AAGD,QAAA,YAAY,EAAE;AAEd,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;QAClD,OAAO,MAAM,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC;IACtE,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AAC/C;;"}
1
+ {"version":3,"file":"useScrollSync.js","sources":["../../../../PivotViewer/hooks/useScrollSync.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useEffect } from 'react';\nimport type { ViewMode } from '../components/Toolbar';\n\n/**\n * Synchronizes axis labels scroll with container scroll\n */\nexport function useScrollSync(\n containerRef: React.RefObject<HTMLDivElement>,\n axisLabelsRef: React.RefObject<HTMLDivElement>,\n viewMode: ViewMode,\n) {\n useEffect(() => {\n const container = containerRef.current;\n const axisLabels = axisLabelsRef.current;\n\n if (!container || !axisLabels || viewMode !== 'grouped') return;\n\n const handleScroll = () => {\n axisLabels.scrollLeft = container.scrollLeft;\n };\n\n // Sync immediately\n handleScroll();\n\n container.addEventListener('scroll', handleScroll);\n return () => container.removeEventListener('scroll', handleScroll);\n }, [viewMode, containerRef, axisLabelsRef]);\n}\n"],"names":[],"mappings":";;SASgB,aAAa,CACzB,YAA6C,EAC7C,aAA8C,EAC9C,QAAkB,EAAA;IAElB,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO;QAExC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,QAAQ,KAAK,SAAS;YAAE;QAEzD,MAAM,YAAY,GAAG,MAAK;AACtB,YAAA,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU;AAChD,QAAA,CAAC;AAGD,QAAA,YAAY,EAAE;AAEd,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;QAClD,OAAO,MAAM,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC;IACtE,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AAC/C;;"}
@@ -321,3 +321,4 @@ export function useSelectedItem(containerRef, zoomLevel, setZoomLevel, resolveId
321
321
  clearSelection,
322
322
  };
323
323
  }
324
+ //# sourceMappingURL=useSelectedItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSelectedItem.js","sourceRoot":"","sources":["../../../../PivotViewer/hooks/useSelectedItem.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useState, useRef, useCallback, useEffect } from 'react';\nimport { flushSync } from 'react-dom';\nimport { ZOOM_MAX } from '../utils/utils';\n\nfunction getOffsetWithin(element: HTMLElement, ancestor: HTMLElement) {\n let current: HTMLElement | null = element;\n let x = 0;\n let y = 0;\n\n while (current && current !== ancestor) {\n x += current.offsetLeft;\n y += current.offsetTop;\n current = current.offsetParent as HTMLElement | null;\n }\n\n if (current !== ancestor) {\n const containerRect = ancestor.getBoundingClientRect();\n const elementRect = element.getBoundingClientRect();\n x = elementRect.left - containerRect.left + ancestor.scrollLeft;\n y = elementRect.top - containerRect.top + ancestor.scrollTop;\n }\n\n return { x, y };\n}\n\nfunction scrollCardToCenter(\n container: HTMLElement,\n card: HTMLElement,\n smooth: boolean = true,\n detailPanelWidth: number = 0\n) {\n const { x, y } = getOffsetWithin(card, container);\n const cardCenterX = x + card.offsetWidth / 2;\n const cardCenterY = y + card.offsetHeight / 2;\n\n const availableWidth = container.clientWidth - detailPanelWidth;\n const targetX = availableWidth / 2;\n const targetY = container.clientHeight / 2;\n\n const maxScrollLeft = Math.max(0, container.scrollWidth - container.clientWidth);\n const maxScrollTop = Math.max(0, container.scrollHeight - container.clientHeight);\n const targetLeft = Math.min(maxScrollLeft, Math.max(0, cardCenterX - targetX));\n const targetTop = Math.min(maxScrollTop, Math.max(0, cardCenterY - targetY));\n\n container.scrollTo({\n left: targetLeft,\n top: targetTop,\n behavior: smooth ? 'smooth' : 'auto'\n });\n}\n\nfunction escapeAttributeSelectorValue(value: string) {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n}\n\nexport function useSelectedItem<TItem extends object>(\n containerRef: React.RefObject<HTMLDivElement | null>,\n zoomLevel: number,\n setZoomLevel: (zoom: number) => void,\n resolveId: (item: TItem, index: number) => string | number,\n viewMode: 'collection' | 'grouped' = 'grouped'\n) {\n const [selectedItem, setSelectedItem] = useState<TItem | null>(null);\n const [preSelectionState, setPreSelectionState] = useState<{ zoom: number; scrollLeft: number; scrollTop: number } | null>(null);\n const [isZooming, setIsZooming] = useState(false);\n const pendingCenterRaf = useRef<number | null>(null);\n\n const focusCardById = useCallback((targetId: string | number, detailPanelWidth: number = 380) => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n const selector = `[data-card-id=\"${escapeAttributeSelectorValue(String(targetId))}\"]`;\n const latestCard = container.querySelector(selector) as HTMLElement | null;\n if (latestCard) {\n scrollCardToCenter(container, latestCard, true, detailPanelWidth);\n }\n }, [containerRef]);\n\n const handleCardClick = useCallback((item: TItem, e: React.MouseEvent) => {\n const container = containerRef.current;\n if (!container) return;\n\n const card = (e.target as HTMLElement).closest('.pv-card') as HTMLElement;\n if (!card) return;\n\n const itemId = resolveId(item, 0);\n const selectedId = selectedItem ? resolveId(selectedItem, 0) : null;\n\n if (selectedId === itemId) {\n if (pendingCenterRaf.current !== null && typeof window !== 'undefined') {\n window.clearTimeout(pendingCenterRaf.current);\n pendingCenterRaf.current = null;\n }\n\n if (viewMode === 'collection') {\n setSelectedItem(null);\n if (preSelectionState) {\n container.scrollTo({ left: preSelectionState.scrollLeft, top: preSelectionState.scrollTop, behavior: 'smooth' });\n setPreSelectionState(null);\n }\n return;\n }\n\n if (!preSelectionState || Math.abs(preSelectionState.zoom - zoomLevel) <= 0.001) {\n setSelectedItem(null);\n if (preSelectionState) {\n container.scrollTo({ left: preSelectionState.scrollLeft, top: preSelectionState.scrollTop, behavior: 'smooth' });\n setPreSelectionState(null);\n }\n return;\n }\n\n setIsZooming(true);\n container.style.scrollBehavior = 'auto';\n\n const startZoom = zoomLevel;\n const targetZoom = preSelectionState.zoom;\n const targetScrollLeft = preSelectionState.scrollLeft;\n const targetScrollTop = preSelectionState.scrollTop;\n\n const startOffset = getOffsetWithin(card, container);\n const startCardScreenX = startOffset.x + card.offsetWidth / 2 - container.scrollLeft;\n const startCardScreenY = startOffset.y + card.offsetHeight / 2 - container.scrollTop;\n\n const duration = 300;\n let startTime: number | null = null;\n\n const easeOutCubic = (t: number) => 1 - Math.pow(1 - t, 3);\n\n const animate = (timestamp: number) => {\n if (startTime === null) {\n startTime = timestamp;\n }\n\n const elapsed = timestamp - startTime;\n const progress = Math.min(1, elapsed / duration);\n const easedProgress = easeOutCubic(progress);\n\n const currentZoom = startZoom + (targetZoom - startZoom) * easedProgress;\n\n flushSync(() => {\n setZoomLevel(currentZoom);\n });\n\n const currentOffset = getOffsetWithin(card, container);\n const currentCardCenterX = currentOffset.x + card.offsetWidth / 2;\n const currentCardCenterY = currentOffset.y + card.offsetHeight / 2;\n\n const endCardScreenX = currentCardCenterX - targetScrollLeft;\n const endCardScreenY = currentCardCenterY - targetScrollTop;\n\n const desiredScreenX = startCardScreenX + (endCardScreenX - startCardScreenX) * easedProgress;\n const desiredScreenY = startCardScreenY + (endCardScreenY - startCardScreenY) * easedProgress;\n\n const neededScrollLeft = currentCardCenterX - desiredScreenX;\n const neededScrollTop = currentCardCenterY - desiredScreenY;\n\n const maxScrollLeft = container.scrollWidth - container.clientWidth;\n const maxScrollTop = container.scrollHeight - container.clientHeight;\n container.scrollLeft = Math.max(0, Math.min(neededScrollLeft, maxScrollLeft));\n container.scrollTop = Math.max(0, Math.min(neededScrollTop, maxScrollTop));\n\n if (progress < 1) {\n requestAnimationFrame(animate);\n } else {\n container.style.scrollBehavior = '';\n setIsZooming(false);\n setSelectedItem(null);\n setPreSelectionState(null);\n container.scrollLeft = targetScrollLeft;\n container.scrollTop = targetScrollTop;\n }\n };\n\n requestAnimationFrame(animate);\n return;\n }\n\n const isFirstSelection = selectedItem === null;\n\n if (isFirstSelection) {\n setPreSelectionState({\n zoom: zoomLevel,\n scrollLeft: container.scrollLeft,\n scrollTop: container.scrollTop,\n });\n }\n\n setSelectedItem(item);\n\n if (isFirstSelection) {\n if (viewMode === 'collection') {\n focusCardById(itemId, 0);\n } else {\n const zoomMultiplier = 1.15;\n const minZoom = 1.2;\n const targetZoom = Math.min(ZOOM_MAX, Math.max(minZoom, zoomLevel * zoomMultiplier));\n const shouldZoom = Math.abs(targetZoom - zoomLevel) > 0.001;\n\n if (shouldZoom) {\n const selector = `[data-card-id=\"${escapeAttributeSelectorValue(String(itemId))}\"]`;\n const cardEl = container.querySelector(selector) as HTMLElement | null;\n\n if (cardEl) {\n setIsZooming(true);\n container.style.scrollBehavior = 'auto';\n\n const detailPanelWidth = 380;\n const availableWidth = container.clientWidth - detailPanelWidth;\n const targetScreenX = availableWidth / 2;\n const targetScreenY = container.clientHeight / 2;\n\n const startZoom = zoomLevel;\n\n const startOffset = getOffsetWithin(cardEl, container);\n const startCardScreenX = startOffset.x + cardEl.offsetWidth / 2 - container.scrollLeft;\n const startCardScreenY = startOffset.y + cardEl.offsetHeight / 2 - container.scrollTop;\n\n const duration = 300;\n let startTime: number | null = null;\n\n const easeOutCubic = (t: number) => 1 - Math.pow(1 - t, 3);\n\n const animate = (timestamp: number) => {\n if (startTime === null) {\n startTime = timestamp;\n }\n\n const elapsed = timestamp - startTime;\n const progress = Math.min(1, elapsed / duration);\n const easedProgress = easeOutCubic(progress);\n\n const currentZoom = startZoom + (targetZoom - startZoom) * easedProgress;\n\n flushSync(() => {\n setZoomLevel(currentZoom);\n });\n\n const currentOffset = getOffsetWithin(cardEl, container);\n const currentCardCenterX = currentOffset.x + cardEl.offsetWidth / 2;\n const currentCardCenterY = currentOffset.y + cardEl.offsetHeight / 2;\n\n const desiredScreenX = startCardScreenX + (targetScreenX - startCardScreenX) * easedProgress;\n const desiredScreenY = startCardScreenY + (targetScreenY - startCardScreenY) * easedProgress;\n\n const neededScrollLeft = currentCardCenterX - desiredScreenX;\n const neededScrollTop = currentCardCenterY - desiredScreenY;\n\n const maxScrollLeft = container.scrollWidth - container.clientWidth;\n const maxScrollTop = container.scrollHeight - container.clientHeight;\n container.scrollLeft = Math.max(0, Math.min(neededScrollLeft, maxScrollLeft));\n container.scrollTop = Math.max(0, Math.min(neededScrollTop, maxScrollTop));\n\n if (progress < 1) {\n requestAnimationFrame(animate);\n } else {\n container.style.scrollBehavior = '';\n setIsZooming(false);\n requestAnimationFrame(() => {\n focusCardById(itemId, 380);\n });\n }\n };\n\n requestAnimationFrame(animate);\n }\n } else {\n focusCardById(itemId, 380);\n }\n }\n } else {\n focusCardById(itemId, viewMode === 'collection' ? 0 : 380);\n }\n }, [selectedItem, zoomLevel, preSelectionState, resolveId, setZoomLevel, containerRef, viewMode]);\n\n const closeDetail = useCallback(() => {\n const container = containerRef.current;\n\n if (pendingCenterRaf.current !== null && typeof window !== 'undefined') {\n window.clearTimeout(pendingCenterRaf.current);\n pendingCenterRaf.current = null;\n }\n\n if (preSelectionState && container && selectedItem) {\n const itemId = resolveId(selectedItem, 0);\n const selector = `[data-card-id=\"${escapeAttributeSelectorValue(String(itemId))}\"]`;\n const cardEl = container.querySelector(selector) as HTMLElement | null;\n\n if (viewMode === 'collection') {\n setSelectedItem(null);\n container.scrollTo({ left: preSelectionState.scrollLeft, top: preSelectionState.scrollTop, behavior: 'smooth' });\n setPreSelectionState(null);\n return;\n }\n\n if (cardEl && Math.abs(preSelectionState.zoom - zoomLevel) > 0.001) {\n setIsZooming(true);\n container.style.scrollBehavior = 'auto';\n\n const startZoom = zoomLevel;\n const targetZoom = preSelectionState.zoom;\n const targetScrollLeft = preSelectionState.scrollLeft;\n const targetScrollTop = preSelectionState.scrollTop;\n\n const startOffset = getOffsetWithin(cardEl, container);\n const startCardScreenX = startOffset.x + cardEl.offsetWidth / 2 - container.scrollLeft;\n const startCardScreenY = startOffset.y + cardEl.offsetHeight / 2 - container.scrollTop;\n\n const duration = 300;\n let startTime: number | null = null;\n\n const easeOutCubic = (t: number) => 1 - Math.pow(1 - t, 3);\n\n const animate = (timestamp: number) => {\n if (startTime === null) {\n startTime = timestamp;\n }\n\n const elapsed = timestamp - startTime;\n const progress = Math.min(1, elapsed / duration);\n const easedProgress = easeOutCubic(progress);\n\n const currentZoom = startZoom + (targetZoom - startZoom) * easedProgress;\n\n flushSync(() => {\n setZoomLevel(currentZoom);\n });\n\n const currentOffset = getOffsetWithin(cardEl, container);\n const currentCardCenterX = currentOffset.x + cardEl.offsetWidth / 2;\n const currentCardCenterY = currentOffset.y + cardEl.offsetHeight / 2;\n\n const endCardScreenX = currentCardCenterX - targetScrollLeft;\n const endCardScreenY = currentCardCenterY - targetScrollTop;\n\n const desiredScreenX = startCardScreenX + (endCardScreenX - startCardScreenX) * easedProgress;\n const desiredScreenY = startCardScreenY + (endCardScreenY - startCardScreenY) * easedProgress;\n\n const neededScrollLeft = currentCardCenterX - desiredScreenX;\n const neededScrollTop = currentCardCenterY - desiredScreenY;\n\n const maxScrollLeft = container.scrollWidth - container.clientWidth;\n const maxScrollTop = container.scrollHeight - container.clientHeight;\n container.scrollLeft = Math.max(0, Math.min(neededScrollLeft, maxScrollLeft));\n container.scrollTop = Math.max(0, Math.min(neededScrollTop, maxScrollTop));\n\n if (progress < 1) {\n requestAnimationFrame(animate);\n } else {\n container.style.scrollBehavior = '';\n setIsZooming(false);\n setSelectedItem(null);\n setPreSelectionState(null);\n container.scrollLeft = targetScrollLeft;\n container.scrollTop = targetScrollTop;\n }\n };\n\n requestAnimationFrame(animate);\n } else {\n setSelectedItem(null);\n if (preSelectionState) {\n setZoomLevel(preSelectionState.zoom);\n container.scrollTo({ left: preSelectionState.scrollLeft, top: preSelectionState.scrollTop, behavior: 'smooth' });\n setPreSelectionState(null);\n }\n }\n } else {\n setSelectedItem(null);\n if (preSelectionState) {\n setPreSelectionState(null);\n }\n }\n }, [preSelectionState, selectedItem, zoomLevel, setZoomLevel, containerRef, resolveId, viewMode]);\n\n const clearSelection = useCallback(() => {\n if (selectedItem) {\n closeDetail();\n }\n }, [selectedItem, closeDetail]);\n\n useEffect(() => {\n return () => {\n if (typeof window !== 'undefined' && pendingCenterRaf.current !== null) {\n window.clearTimeout(pendingCenterRaf.current);\n pendingCenterRaf.current = null;\n }\n };\n }, []);\n\n return {\n selectedItem,\n isZooming,\n handleCardClick,\n closeDetail,\n clearSelection,\n };\n}\n"]}
@@ -16,3 +16,4 @@ interface UseViewModeScrollHandlingParams<TItem extends object> {
16
16
  */
17
17
  export declare function useViewModeScrollHandling<TItem extends object>({ containerRef, viewMode, grouping, layout, selectedItem, zoomLevel, resolveId, data, setPreSelectionState, }: UseViewModeScrollHandlingParams<TItem>): void;
18
18
  export {};
19
+ //# sourceMappingURL=useViewModeScrollHandling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useViewModeScrollHandling.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/hooks/useViewModeScrollHandling.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAAuB,CAAC;AAQtD,UAAU,+BAA+B,CAAC,KAAK,SAAS,MAAM;IAC1D,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IAC3D,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,SAAS,MAAM,EAAE,EAC5D,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,EACT,IAAI,EACJ,oBAAoB,GACvB,EAAE,+BAA+B,CAAC,KAAK,CAAC,QA8DxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useViewModeScrollHandling.js","sources":["../../../../PivotViewer/hooks/useViewModeScrollHandling.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AA6BM,SAAU,yBAAyB,CAAuB,EAC5D,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,EACT,IAAI,EACJ,oBAAoB,GACiB,EAAA;AACrC,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC9C,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE9C,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,KAAK,QAAQ;AAClE,QAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,KAAK,QAAQ;AAElE,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe;YAAE;AAE1C,QAAA,qBAAqB,CAAC,OAAO,GAAG,QAAQ;AACxC,QAAA,qBAAqB,CAAC,OAAO,GAAG,QAAQ;AAExC,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,SAAS;YAAE;QAGhB,IAAI,YAAY,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC;AAEzE,YAAA,MAAM,YAAY,GAAG,yBAAyB,CAC1C,MAAM,EACN,MAAM,EACN,eAAe,EACf,gBAAgB,CACnB;YAED,IAAI,YAAY,EAAE;AACd,gBAAA,MAAM,WAAW,GAAG,QAAQ,KAAK,YAAY,GAAG,CAAC,GAAG,kBAAkB;gBAEtE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAC3D,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,MAAM,CAAC,WAAW,CACrB;AAED,gBAAA,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;gBACxD,oBAAoB,CAAC,IAAI,CAAC;YAC9B;QACJ;AAAO,aAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;YAI/B,MAAM,cAAc,GAChB,MAAM,CAAC,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC,YAAY;YAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC;AACnD,YAAA,SAAS,CAAC,SAAS,GAAG,eAAe;AACrC,YAAA,SAAS,CAAC,UAAU,GAAG,CAAC;QAC5B;AACJ,IAAA,CAAC,EAAE;QACC,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,YAAY;QACZ,SAAS;QACT,SAAS;QACT,YAAY;QACZ,IAAI;QACJ,oBAAoB;AACvB,KAAA,CAAC;AACN;;"}
1
+ {"version":3,"file":"useViewModeScrollHandling.js","sources":["../../../../PivotViewer/hooks/useViewModeScrollHandling.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useEffect, useRef } from 'react';\nimport { calculateCenterScrollPosition } from '../utils/animations';\nimport type { Layout } from '../utils/cardPosition';\nimport type { ViewMode } from '../components/Toolbar';\nimport {\n BASE_CARD_WIDTH,\n BASE_CARD_HEIGHT,\n DETAIL_PANEL_WIDTH,\n} from '../utils/constants';\nimport { getCardPositionFromLayout, resolveLayoutItemId } from '../utils/idResolution';\n\ninterface UseViewModeScrollHandlingParams<TItem extends object> {\n containerRef: React.RefObject<HTMLDivElement>;\n viewMode: ViewMode;\n grouping: unknown;\n layout: Layout;\n selectedItem: TItem | null;\n zoomLevel: number;\n resolveId: (item: TItem, index: number) => string | number;\n data: TItem[];\n setPreSelectionState: (state: null) => void;\n}\n\n/**\n * Handles scroll positioning when switching view modes or grouping changes\n */\nexport function useViewModeScrollHandling<TItem extends object>({\n containerRef,\n viewMode,\n grouping,\n layout,\n selectedItem,\n zoomLevel,\n resolveId,\n data,\n setPreSelectionState,\n}: UseViewModeScrollHandlingParams<TItem>) {\n const lastProcessedViewMode = useRef(viewMode);\n const lastProcessedGrouping = useRef(grouping);\n\n useEffect(() => {\n const viewModeChanged = lastProcessedViewMode.current !== viewMode;\n const groupingChanged = lastProcessedGrouping.current !== grouping;\n\n if (!viewModeChanged && !groupingChanged) return;\n\n lastProcessedViewMode.current = viewMode;\n lastProcessedGrouping.current = grouping;\n\n const container = containerRef.current;\n if (!container) return;\n\n // If we have a selected item, keep it centered in the new layout\n if (selectedItem) {\n const itemId = resolveLayoutItemId(data, selectedItem, layout, resolveId);\n\n const cardPosition = getCardPositionFromLayout(\n itemId,\n layout,\n BASE_CARD_WIDTH,\n BASE_CARD_HEIGHT,\n );\n\n if (cardPosition) {\n const detailWidth = viewMode === 'collection' ? 0 : DETAIL_PANEL_WIDTH;\n\n const { scrollLeft, scrollTop } = calculateCenterScrollPosition(\n container,\n cardPosition,\n zoomLevel,\n detailWidth,\n layout.totalHeight,\n );\n\n container.scrollTo({ left: scrollLeft, top: scrollTop });\n setPreSelectionState(null);\n }\n } else if (viewMode === 'grouped') {\n // Default behavior for grouped view: scroll to bottom to see the cards\n // which are laid out from bottom-to-top. Use layout.totalHeight which is\n // the authoritative height in world units, converted back to pixels.\n const scrollToHeight =\n layout.totalHeight * zoomLevel - container.clientHeight;\n const targetScrollTop = Math.max(0, scrollToHeight);\n container.scrollTop = targetScrollTop;\n container.scrollLeft = 0;\n }\n }, [\n viewMode,\n grouping,\n layout,\n selectedItem,\n resolveId,\n zoomLevel,\n containerRef,\n data,\n setPreSelectionState,\n ]);\n}\n"],"names":[],"mappings":";;;;;AA6BM,SAAU,yBAAyB,CAAuB,EAC5D,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,EACT,IAAI,EACJ,oBAAoB,GACiB,EAAA;AACrC,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC9C,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE9C,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,KAAK,QAAQ;AAClE,QAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,KAAK,QAAQ;AAElE,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe;YAAE;AAE1C,QAAA,qBAAqB,CAAC,OAAO,GAAG,QAAQ;AACxC,QAAA,qBAAqB,CAAC,OAAO,GAAG,QAAQ;AAExC,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,SAAS;YAAE;QAGhB,IAAI,YAAY,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC;AAEzE,YAAA,MAAM,YAAY,GAAG,yBAAyB,CAC1C,MAAM,EACN,MAAM,EACN,eAAe,EACf,gBAAgB,CACnB;YAED,IAAI,YAAY,EAAE;AACd,gBAAA,MAAM,WAAW,GAAG,QAAQ,KAAK,YAAY,GAAG,CAAC,GAAG,kBAAkB;gBAEtE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAC3D,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,MAAM,CAAC,WAAW,CACrB;AAED,gBAAA,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;gBACxD,oBAAoB,CAAC,IAAI,CAAC;YAC9B;QACJ;AAAO,aAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;YAI/B,MAAM,cAAc,GAChB,MAAM,CAAC,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC,YAAY;YAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC;AACnD,YAAA,SAAS,CAAC,SAAS,GAAG,eAAe;AACrC,YAAA,SAAS,CAAC,UAAU,GAAG,CAAC;QAC5B;AACJ,IAAA,CAAC,EAAE;QACC,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,YAAY;QACZ,SAAS;QACT,SAAS;QACT,YAAY;QACZ,IAAI;QACJ,oBAAoB;AACvB,KAAA,CAAC;AACN;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWheelZoom.js","sources":["../../../../PivotViewer/hooks/useWheelZoom.ts"],"sourcesContent":[null],"names":[],"mappings":";;;SAMgB,YAAY,CAC1B,YAAoD,EACpD,SAAiB,EACjB,YAAoC,EAAA;AAEpC,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAa,KAAI;QAChD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;YAC1B,CAAC,CAAC,cAAc,EAAE;AAElB,YAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,YAAA,IAAI,CAAC,SAAS;gBAAE;AAEhB,YAAA,SAAS,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM;AAEvC,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;YAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;YACrC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;AACpC,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU;AACpC,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS;AAMnC,YAAA,IAAI,MAAc;AAClB,YAAA,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,EAAE;gBACrB,MAAM,GAAG,IAAI;YACf;iBAAO;gBACL,MAAM,GAAG,IAAI;YACf;YACA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;AACzE,YAAA,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS;YAErC,MAAM,aAAa,GAAG,CAAC,OAAO,GAAG,OAAO,IAAI,SAAS,GAAG,OAAO;YAC/D,MAAM,YAAY,GAAG,CAAC,OAAO,GAAG,OAAO,IAAI,SAAS,GAAG,OAAO;YAE9D,YAAY,CAAC,OAAO,CAAC;YAErB,UAAU,CAAC,MAAK;gBACd,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC;gBACjD,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC;gBAC/C,UAAU,CAAC,MAAK;AACd,oBAAA,SAAS,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE;gBACrC,CAAC,EAAE,EAAE,CAAC;YACR,CAAC,EAAE,CAAC,CAAC;QACP;IACF,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAS3C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC;IACvE,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS;AAAE,YAAA,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC;AAC5E,IAAA,CAAC,CAAC;IAEF,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAEpE,IAAI,iBAAiB,GAAG,CAAC;QACzB,IAAI,WAAW,GAAG,SAAS;AAE3B,QAAA,MAAM,gBAAgB,GAAG,CAAC,CAAa,KAAI;YACzC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,gBAAA,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AACtD,gBAAA,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AACtD,gBAAA,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAChD,WAAW,GAAG,SAAS;YACzB;AACF,QAAA,CAAC;AAED,QAAA,MAAM,eAAe,GAAG,CAAC,CAAa,KAAI;YACxC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,CAAC,CAAC,cAAc,EAAE;AAClB,gBAAA,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AACtD,gBAAA,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AACtD,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAE7C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC;gBACjE,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC;AACjE,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;AAC9C,gBAAA,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI;AACnC,gBAAA,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG;AAElC,gBAAA,IAAI,iBAAiB,GAAG,CAAC,EAAE;AACzB,oBAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,iBAAiB;AAC1C,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC;AAC3E,oBAAA,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS;AAErC,oBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,GAAG,OAAO;AAC/C,oBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,GAAG,OAAO;AAE9C,oBAAA,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO;AACpD,oBAAA,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO;oBAEnD,YAAY,CAAC,OAAO,CAAC;oBAErB,qBAAqB,CAAC,MAAK;wBACzB,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC;wBACjD,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC;AACjD,oBAAA,CAAC,CAAC;gBACJ;gBACA,iBAAiB,GAAG,QAAQ;YAC9B;AACF,QAAA,CAAC;QAED,MAAM,cAAc,GAAG,MAAK;YAC1B,iBAAiB,GAAG,CAAC;AACvB,QAAA,CAAC;AAED,QAAA,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7E,QAAA,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5E,QAAA,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACzE,QAAA,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAE5E,QAAA,OAAO,MAAK;AACV,YAAA,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC;AACnD,YAAA,SAAS,CAAC,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,CAAC;AAC7D,YAAA,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC;AAC3D,YAAA,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC;AACzD,YAAA,SAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,cAAc,CAAC;AAC9D,QAAA,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AACvD;;"}
1
+ {"version":3,"file":"useWheelZoom.js","sources":["../../../../PivotViewer/hooks/useWheelZoom.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useCallback, useEffect, useState } from 'react';\nimport { ZOOM_MIN, ZOOM_MAX } from '../utils/utils';\n\nexport function useWheelZoom(\n containerRef: React.RefObject<HTMLDivElement | null>,\n zoomLevel: number,\n setZoomLevel: (zoom: number) => void\n) {\n const handleWheel = useCallback((e: WheelEvent) => {\n if (e.ctrlKey || e.metaKey) {\n e.preventDefault();\n\n const container = containerRef.current;\n if (!container) return;\n\n container.style.scrollBehavior = 'auto';\n\n const rect = container.getBoundingClientRect();\n const cursorX = e.clientX - rect.left;\n const cursorY = e.clientY - rect.top;\n const scrollX = container.scrollLeft;\n const scrollY = container.scrollTop;\n\n // Normalize delta based on deltaMode:\n // 0 = DOM_DELTA_PIXEL (trackpad pinch — deltaY is in pixels, small values)\n // 1 = DOM_DELTA_LINE (mouse wheel — deltaY is in lines, typically 3)\n // 2 = DOM_DELTA_PAGE (rare, treated same as pixel for safety)\n let factor: number;\n if (e.deltaMode === 1) {\n factor = 0.12; // line-mode: each \"line\" gives a noticeable zoom step\n } else {\n factor = 0.01; // pixel-mode (trackpad pinch) and page-mode: fast zoom step\n }\n const delta = -e.deltaY * factor;\n const newZoom = Math.max(ZOOM_MIN, Math.min(ZOOM_MAX, zoomLevel + delta));\n const zoomRatio = newZoom / zoomLevel;\n\n const newScrollLeft = (scrollX + cursorX) * zoomRatio - cursorX;\n const newScrollTop = (scrollY + cursorY) * zoomRatio - cursorY;\n\n setZoomLevel(newZoom);\n\n setTimeout(() => {\n container.scrollLeft = Math.max(0, newScrollLeft);\n container.scrollTop = Math.max(0, newScrollTop);\n setTimeout(() => {\n container.style.scrollBehavior = '';\n }, 50);\n }, 0);\n }\n }, [zoomLevel, setZoomLevel, containerRef]);\n\n // The viewport this binds to mounts a render or more after the hook first runs - it sits\n // behind the loading gate, inside a child component - and a ref object keeps the same identity\n // forever, so an effect keyed on the ref alone bound to nothing and never retried. Pinching did\n // nothing until something else happened to change `zoomLevel` and re-run the effect, which\n // meant zooming with the toolbar first was the only way to make the gesture start working.\n // Comparing the node after every render picks it up the moment it appears, and lets go again\n // if it is unmounted.\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n useEffect(() => {\n if (containerRef.current !== container) setContainer(containerRef.current);\n });\n\n useEffect(() => {\n if (!container) return;\n\n container.addEventListener('wheel', handleWheel, { passive: false });\n\n let lastTouchDistance = 0;\n let currentZoom = zoomLevel;\n\n const handleTouchStart = (e: TouchEvent) => {\n if (e.touches.length === 2) {\n const dx = e.touches[0].clientX - e.touches[1].clientX;\n const dy = e.touches[0].clientY - e.touches[1].clientY;\n lastTouchDistance = Math.sqrt(dx * dx + dy * dy);\n currentZoom = zoomLevel;\n }\n };\n\n const handleTouchMove = (e: TouchEvent) => {\n if (e.touches.length === 2) {\n e.preventDefault();\n const dx = e.touches[0].clientX - e.touches[1].clientX;\n const dy = e.touches[0].clientY - e.touches[1].clientY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n const centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2;\n const centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2;\n const rect = container.getBoundingClientRect();\n const cursorX = centerX - rect.left;\n const cursorY = centerY - rect.top;\n\n if (lastTouchDistance > 0) {\n const scale = distance / lastTouchDistance;\n const newZoom = Math.max(ZOOM_MIN, Math.min(ZOOM_MAX, currentZoom * scale));\n const zoomRatio = newZoom / zoomLevel;\n\n const contentX = container.scrollLeft + cursorX;\n const contentY = container.scrollTop + cursorY;\n\n const newScrollLeft = contentX * zoomRatio - cursorX;\n const newScrollTop = contentY * zoomRatio - cursorY;\n\n setZoomLevel(newZoom);\n\n requestAnimationFrame(() => {\n container.scrollLeft = Math.max(0, newScrollLeft);\n container.scrollTop = Math.max(0, newScrollTop);\n });\n }\n lastTouchDistance = distance;\n }\n };\n\n const handleTouchEnd = () => {\n lastTouchDistance = 0;\n };\n\n container.addEventListener('touchstart', handleTouchStart, { passive: true });\n container.addEventListener('touchmove', handleTouchMove, { passive: false });\n container.addEventListener('touchend', handleTouchEnd, { passive: true });\n container.addEventListener('touchcancel', handleTouchEnd, { passive: true });\n\n return () => {\n container.removeEventListener('wheel', handleWheel);\n container.removeEventListener('touchstart', handleTouchStart);\n container.removeEventListener('touchmove', handleTouchMove);\n container.removeEventListener('touchend', handleTouchEnd);\n container.removeEventListener('touchcancel', handleTouchEnd);\n };\n }, [container, handleWheel, zoomLevel, setZoomLevel]);\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useZoomScrollAnchor.js","sources":["../../../../PivotViewer/hooks/useZoomScrollAnchor.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useZoomScrollAnchor.js","sources":["../../../../PivotViewer/hooks/useZoomScrollAnchor.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useEffect, useRef, useState } from 'react';\n\n/**\n * Keeps the content the viewport is looking at in view when the scrollable area is resized by a\n * zoom change.\n *\n * Zooming resizes the content underneath a scroll offset that stays where it was, so without this\n * the view lands somewhere unrelated to what the user was looking at. Zooming all the way out is\n * the worst case: the content then fits the viewport, the scroll range collapses to nothing, and\n * zooming back in leaves the offset at zero.\n *\n * In grouped mode that is not merely disorienting - it looks broken. Groups are drawn from the\n * bottom up, so the top of the scrollable area is empty for every group shorter than the tallest\n * one, and an offset of zero shows a blank canvas with no clue that the cards are below. Grouped\n * mode therefore holds its distance from the *bottom*, which is where its content is anchored;\n * every other mode holds the centre.\n *\n * This watches the spacer that defines the scrollable area rather than the zoom level, because the\n * spacer is what actually resizes - reacting to the zoom directly would read the extent before it\n * had been laid out. The wheel handler keeps its own cursor-anchored adjustment for the gesture in\n * progress; this covers the zoom paths that have no anchor of their own, such as the toolbar's\n * buttons, slider and reset.\n *\n * @param containerRef The scrolling viewport.\n * @param spacerRef The element whose size defines the scrollable area.\n * @param viewMode The active view mode.\n */\nexport function useZoomScrollAnchor(\n containerRef: React.RefObject<HTMLDivElement | null>,\n spacerRef: React.RefObject<HTMLDivElement | null>,\n viewMode: string,\n) {\n const [spacer, setSpacer] = useState<HTMLDivElement | null>(null);\n const previousExtent = useRef<{ width: number; height: number } | null>(null);\n const viewModeRef = useRef(viewMode);\n viewModeRef.current = viewMode;\n\n // The spacer mounts inside a child, a render or more after this hook first runs, and a ref\n // object never changes identity - so the element is picked up by comparing it after a render\n // rather than by depending on the ref.\n useEffect(() => {\n if (spacerRef.current !== spacer) setSpacer(spacerRef.current);\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container || !spacer) return;\n\n const anchor = (previous: { width: number; height: number }) => {\n const height = spacer.offsetHeight;\n const width = spacer.offsetWidth;\n if (previous.height <= 0 || previous.width <= 0) return;\n if (previous.height === height && previous.width === width) return;\n\n const maxScrollTop = Math.max(0, height - container.clientHeight);\n const maxScrollLeft = Math.max(0, width - container.clientWidth);\n\n const horizontalRatio = width / previous.width;\n const anchoredLeft =\n (container.scrollLeft + container.clientWidth / 2) * horizontalRatio\n - container.clientWidth / 2;\n container.scrollLeft = Math.min(maxScrollLeft, Math.max(0, anchoredLeft));\n\n const verticalRatio = height / previous.height;\n if (viewModeRef.current === 'grouped') {\n const previousMaxScrollTop = Math.max(0, previous.height - container.clientHeight);\n const gapFromBottom = Math.max(0, previousMaxScrollTop - container.scrollTop);\n container.scrollTop = Math.min(\n maxScrollTop,\n Math.max(0, maxScrollTop - gapFromBottom * verticalRatio));\n } else {\n const anchoredTop =\n (container.scrollTop + container.clientHeight / 2) * verticalRatio\n - container.clientHeight / 2;\n container.scrollTop = Math.min(maxScrollTop, Math.max(0, anchoredTop));\n }\n };\n\n previousExtent.current ??= { width: spacer.offsetWidth, height: spacer.offsetHeight };\n\n const observer = new ResizeObserver(() => {\n const previous = previousExtent.current;\n previousExtent.current = { width: spacer.offsetWidth, height: spacer.offsetHeight };\n if (previous) anchor(previous);\n });\n observer.observe(spacer);\n\n return () => observer.disconnect();\n }, [containerRef, spacer]);\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useZoomState.js","sources":["../../../../PivotViewer/hooks/useZoomState.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAMM,SAAU,YAAY,CAAC,WAAW,GAAG,CAAC,EAAA;IAC1C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;AAEvD,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,OAAe,KAAI;AACvD,QAAA,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAK;AACpC,QAAA,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAC;AACnC,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAEjC,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,MAAK;AACrC,QAAA,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAC;AACnC,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAEjC,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAsC,KAAI;QAC9E,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAA,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAEtB,IAAA,MAAM,eAAe,GAAG,WAAW,CAAC,MAAK;QACvC,gBAAgB,CAAC,CAAC,CAAC;AACrB,IAAA,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAEtB,OAAO;QACL,SAAS;QACT,YAAY;QACZ,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,gBAAgB;QAChB,eAAe;KAChB;AACH;;"}
1
+ {"version":3,"file":"useZoomState.js","sources":["../../../../PivotViewer/hooks/useZoomState.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useState, useCallback } from 'react';\nimport { ZOOM_MIN, ZOOM_MAX } from '../utils/utils';\n\nexport function useZoomState(initialZoom = 1) {\n const [zoomLevel, setZoomLevel] = useState(initialZoom);\n\n const handleZoomChange = useCallback((newZoom: number) => {\n setZoomLevel(Math.max(ZOOM_MIN, Math.min(ZOOM_MAX, newZoom)));\n }, []);\n\n const handleZoomIn = useCallback(() => {\n handleZoomChange(zoomLevel + 0.2);\n }, [zoomLevel, handleZoomChange]);\n\n const handleZoomOut = useCallback(() => {\n handleZoomChange(zoomLevel - 0.2);\n }, [zoomLevel, handleZoomChange]);\n\n const handleZoomSlider = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n handleZoomChange(parseFloat(e.target.value));\n }, [handleZoomChange]);\n\n const handleZoomReset = useCallback(() => {\n handleZoomChange(1);\n }, [handleZoomChange]);\n\n return {\n zoomLevel,\n setZoomLevel,\n handleZoomChange,\n handleZoomIn,\n handleZoomOut,\n handleZoomSlider,\n handleZoomReset,\n };\n}\n"],"names":[],"mappings":";;;AAMM,SAAU,YAAY,CAAC,WAAW,GAAG,CAAC,EAAA;IAC1C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;AAEvD,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,OAAe,KAAI;AACvD,QAAA,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAK;AACpC,QAAA,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAC;AACnC,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAEjC,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,MAAK;AACrC,QAAA,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAC;AACnC,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAEjC,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAsC,KAAI;QAC9E,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAA,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAEtB,IAAA,MAAM,eAAe,GAAG,WAAW,CAAC,MAAK;QACvC,gBAAgB,CAAC,CAAC,CAAC;AACrB,IAAA,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAEtB,OAAO;QACL,SAAS;QACT,YAAY;QACZ,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,gBAAgB;QAChB,eAAe;KAChB;AACH;;"}
@@ -2,3 +2,4 @@ export { PivotViewer } from './PivotViewer.js';
2
2
  export type { PivotViewerLabels } from './PivotViewerLabels.js';
3
3
  export type { PivotViewerProps, PivotViewerColors, PivotDimension, PivotFilter, PivotFilterOption, PivotGroup, PivotPrimitive, PivotPropertyValue, PropertyAccessor, } from './types.js';
4
4
  export { getPropertyPath, getValueByPath } from './types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../PivotViewer/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AAG5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAqB,CAAC;AAC7D,YAAY,EACR,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,YAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC"}
@@ -153,3 +153,4 @@ export interface PivotViewerProps<TItem extends object> {
153
153
  }
154
154
  export type FilterState = Record<string, Set<string>>;
155
155
  export type RangeFilterState = Record<string, [number, number] | null>;
156
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../PivotViewer/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../PivotViewer/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAsBM,SAAU,eAAe,CAAQ,QAAiC,EAAA;AACpE,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE;IAEjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CACrB,uEAAuE,CAC1E;AACD,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC;AAMM,SAAU,cAAc,CAAQ,IAAW,EAAE,IAAY,EAAA;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7B,IAAI,KAAK,GAAuB,IAA0B;AAC1D,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpE,YAAA,OAAO,SAAS;QACpB;QACA,MAAM,MAAM,GAAG,KAA2C;QAC1D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAAE,YAAA,OAAO,SAAS;AAGlD,QAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IACxB;AACA,IAAA,OAAO,KAAK;AAChB;;"}
1
+ {"version":3,"file":"types.js","sources":["../../../PivotViewer/types.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { ReactNode } from 'react';\nimport type { FilterEditorProps } from '../Filter/FilterEditorProps';\nimport type { PivotViewerLabels } from './PivotViewerLabels';\n\n/** Primitive value types that a pivot property can hold. */\nexport type PivotPrimitive = string | number | boolean | Date | null | undefined;\n\n/** Value reachable through a searchable PivotViewer property path. */\nexport type PivotPropertyValue = PivotPrimitive | object;\n\n/**\n * Type-safe property accessor for accessing properties, including nested ones\n */\nexport type PropertyAccessor<TItem> = (item: TItem) => PivotPropertyValue;\n\n/**\n * Extract property path from a property accessor function\n * Supports nested properties like item => item.address.city\n */\nexport function getPropertyPath<TItem>(accessor: PropertyAccessor<TItem>): string {\n const fnStr = accessor.toString();\n // Match patterns like: item => item.prop or item => item.prop.nested or (item) => item.prop\n const match = fnStr.match(\n /(?:=>|return)\\s*[a-zA-Z_$][a-zA-Z0-9_$]*\\.([a-zA-Z_$][a-zA-Z0-9_$.]*)/,\n );\n return match ? match[1] : '';\n}\n\n/**\n * Get the value from an item using a property path string\n * Supports nested properties like \"address.city\"\n */\nexport function getValueByPath<TItem>(item: TItem, path: string): PivotPropertyValue {\n const parts = path.split('.');\n let value: PivotPropertyValue = item as PivotPropertyValue;\n for (const part of parts) {\n if (value === null || value === undefined || typeof value !== 'object') {\n return undefined;\n }\n const record = value as Record<string, PivotPropertyValue>;\n if (!Object.hasOwn(record, part)) return undefined;\n // SAFETY: The own-property guard excludes prototype-chain traversal; the remaining key is\n // read from the current object without mutation.\n value = record[part];\n }\n return value;\n}\n\n/** One group of items sharing a common dimension value. */\nexport interface PivotGroup<TItem extends object> {\n /** Unique identifier for this group. */\n key: string;\n /** Display label for this group. */\n label: string;\n /** The actual dimension value this group represents. */\n value: PivotPrimitive;\n /** Array of items belonging to this group. */\n items: TItem[];\n /** Optional item count (may be computed from items.length). */\n count?: number;\n}\n\n/** Defines how items are grouped, labeled, and sorted along one facet. */\nexport interface PivotDimension<TItem extends object> {\n /** Unique identifier for this dimension. */\n key: string;\n /** Display label for this dimension. */\n label: string;\n /** Extracts the dimension value from an item. */\n getValue: (item: TItem) => PivotPrimitive;\n /** Optional formatter for displaying dimension values. */\n formatValue?: (value: PivotPrimitive) => string;\n /** Optional custom sort comparator for groups within this dimension. */\n sort?: (a: PivotGroup<TItem>, b: PivotGroup<TItem>) => number;\n}\n\n/** One selectable value within a PivotFilter. */\nexport interface PivotFilterOption {\n /** Unique identifier for this option. */\n key: string;\n /** Display label for this option. */\n label: string;\n /** The actual value this option represents. */\n value: PivotPrimitive;\n /** Number of items with this value. */\n count: number;\n}\n\n/** A facet filter offered in the filter panel. */\nexport interface PivotFilter<TItem extends object> {\n /** Unique identifier for this filter. */\n key: string;\n /** Display label for this filter. */\n label: string;\n /** Extracts the filter value from an item. */\n getValue: (item: TItem) => PivotPrimitive;\n /** Whether multiple options can be selected simultaneously. */\n multi?: boolean;\n /** Available filter options; auto-computed from data if omitted. */\n options?: PivotFilterOption[];\n /** Optional custom sort comparator for filter options. */\n sort?: (a: PivotFilterOption, b: PivotFilterOption) => number;\n /** For numeric filters, enables range picker with histogram */\n type?: 'string' | 'number' | 'date' | 'custom';\n /** Number of buckets for the histogram in range filters */\n buckets?: number;\n /** Custom filter editor renderer. When provided, replaces the default filter UI for this filter. */\n renderEditor?: (props: FilterEditorProps) => ReactNode;\n}\n\n/** Semantic color overrides for DOM and Pixi PivotViewer surfaces. */\nexport interface PivotViewerColors {\n /** Color used for primary/brand elements. */\n primaryColor: string;\n /** Color used for text on primary-colored backgrounds. */\n primaryColorText: string;\n /** Color used for medium primary shade (500-level). */\n primary500: string;\n /** Color used for the base/ground surface. */\n surfaceGround: string;\n /** Color used for card/content surfaces. */\n surfaceCard: string;\n /** Color used for section surfaces. */\n surfaceSection: string;\n /** Color used for overlay/modal surfaces. */\n surfaceOverlay: string;\n /** Color used for surface borders. */\n surfaceBorder: string;\n /** Color used for primary text. */\n textColor: string;\n /** Color used for secondary/muted text. */\n textColorSecondary: string;\n /** Color used for highlight/selection backgrounds. */\n highlightBg: string;\n /** Color used for mask/backdrop backgrounds. */\n maskbg: string;\n /** Color used for focus ring/outline. */\n focusRing: string;\n}\n\n/** Props for the PivotViewer component. */\nexport interface PivotViewerProps<TItem extends object> {\n /** Array of items to display in the viewer. */\n data: TItem[];\n /** Available grouping dimensions for organizing items. */\n dimensions: PivotDimension<TItem>[];\n /** Optional facet filters for the filter panel. */\n filters?: PivotFilter<TItem>[];\n /** Initial dimension key to group by; defaults to the first dimension if omitted. */\n defaultDimensionKey?: string;\n /** Renderer for card content; returns structured text data for display */\n cardRenderer: (item: TItem) => {\n title: string;\n labels?: string[];\n values?: string[];\n };\n /** Optional renderer for the detail content area; the drawer shell (header/close/layout) stays component-owned */\n detailRenderer?: (item: TItem, onClose: () => void) => ReactNode;\n /** Optional stable ID extractor for items; used for efficient rendering and selection tracking. */\n getItemId?: (item: TItem, index: number) => string | number;\n /** Property accessors defining which fields are searchable. */\n searchFields?: PropertyAccessor<TItem>[];\n /**\n * Optional heading shown at the left of the toolbar.\n *\n * Omit it when the host already names the view - the heading collapses entirely and the\n * item count sits directly beside the filter button.\n */\n title?: string;\n /** Optional CSS class name to apply to the root element. */\n className?: string;\n /** Content to display when no items match the current filters/search. */\n emptyContent?: ReactNode;\n /** Loading state; displays a loading indicator when true. */\n isLoading?: boolean;\n /** Accessible status text while loading; overrides labels.loading and defaults to \"Loading…\". */\n loadingLabel?: string;\n /** Optional controls, card-area region, and loading-status text overrides. Unset fields keep their English defaults. */\n labels?: PivotViewerLabels;\n /**\n * Optional color overrides mapped to semantic CSS variables.\n * If omitted, values are taken from the global theme (Cratis defaults).\n */\n colors?: Partial<PivotViewerColors>;\n}\n\nexport type FilterState = Record<string, Set<string>>;\n\nexport type RangeFilterState = Record<string, [number, number] | null>;\n"],"names":[],"mappings":"AAsBM,SAAU,eAAe,CAAQ,QAAiC,EAAA;AACpE,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE;IAEjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CACrB,uEAAuE,CAC1E;AACD,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC;AAMM,SAAU,cAAc,CAAQ,IAAW,EAAE,IAAY,EAAA;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7B,IAAI,KAAK,GAAuB,IAA0B;AAC1D,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpE,YAAA,OAAO,SAAS;QACpB;QACA,MAAM,MAAM,GAAG,KAA2C;QAC1D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAAE,YAAA,OAAO,SAAS;AAGlD,QAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IACxB;AACA,IAAA,OAAO,KAAK;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"animations.js","sources":["../../../../PivotViewer/utils/animations.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animations.js","sources":["../../../../PivotViewer/utils/animations.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nexport type EasingFunction = (t: number) => number;\n\nexport const easeOutCubic: EasingFunction = (t: number) => 1 - Math.pow(1 - t, 3);\n\nexport interface ZoomAnimationParams {\n startZoom: number;\n targetZoom: number;\n duration?: number;\n easing?: EasingFunction;\n}\n\nexport interface ScrollAnimationParams {\n targetScrollLeft: number;\n targetScrollTop: number;\n}\n\nexport interface ZoomScrollAnimationParams extends ZoomAnimationParams, ScrollAnimationParams {\n container: HTMLElement;\n cardPosition?: { x: number; y: number; width: number; height: number } | null;\n targetCardPosition?: { x: number; y: number; width: number; height: number } | null;\n getCardPositionAtZoom?: (zoom: number) => { x: number; y: number; width: number; height: number } | null;\n getLayoutSizeAtZoom?: (zoom: number) => { width: number; height: number };\n spacer?: HTMLElement | null;\n onUpdate: (zoom: number) => void;\n onComplete?: () => void;\n startScrollLeft?: number; // Optional explicit start scroll\n startScrollTop?: number; // Optional explicit start scroll\n}\n\n/**\n * Animate zoom and scroll together, keeping a specific element centered\n */\nexport function animateZoomAndScroll({\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom,\n getLayoutSizeAtZoom,\n spacer,\n startZoom,\n targetZoom,\n targetScrollLeft,\n targetScrollTop,\n duration = 300,\n easing = easeOutCubic,\n onUpdate,\n onComplete,\n startScrollLeft,\n startScrollTop,\n}: ZoomScrollAnimationParams): () => void {\n container.style.scrollBehavior = 'auto';\n\n let startTime: number | null = null;\n let rafId: number | null = null;\n\n // Capture start scroll if not provided\n const initialScrollLeft = startScrollLeft ?? container.scrollLeft;\n const initialScrollTop = startScrollTop ?? container.scrollTop;\n\n // Calculate initial center point relative to viewport\n const startCardCenterX = cardPosition ? (cardPosition.x * startZoom + (cardPosition.width * startZoom) / 2) : 0;\n const startCardCenterY = cardPosition ? (cardPosition.y * startZoom + (cardPosition.height * startZoom) / 2) : 0;\n\n const startCardScreenX = startCardCenterX - initialScrollLeft;\n const startCardScreenY = startCardCenterY - initialScrollTop;\n\n const animate = (timestamp: number) => {\n if (startTime === null) {\n startTime = timestamp;\n }\n\n const elapsed = timestamp - startTime;\n const progress = Math.min(1, elapsed / duration);\n const easedProgress = easing(progress);\n\n const currentZoom = startZoom + (targetZoom - startZoom) * easedProgress;\n\n // Update spacer size synchronously if possible\n if (spacer && getLayoutSizeAtZoom) {\n const size = getLayoutSizeAtZoom(currentZoom);\n if (size) {\n spacer.style.width = `${size.width * currentZoom}px`;\n spacer.style.height = `${size.height * currentZoom}px`;\n }\n }\n\n onUpdate(currentZoom);\n\n if (cardPosition) {\n let currentCardX: number;\n let currentCardY: number;\n\n if (getCardPositionAtZoom) {\n const pos = getCardPositionAtZoom(currentZoom);\n if (pos) {\n currentCardX = pos.x;\n currentCardY = pos.y;\n } else {\n currentCardX = cardPosition.x;\n currentCardY = cardPosition.y;\n }\n } else {\n // Interpolate card position if target is provided (for layouts that change with zoom)\n currentCardX = targetCardPosition\n ? cardPosition.x + (targetCardPosition.x - cardPosition.x) * easedProgress\n : cardPosition.x;\n currentCardY = targetCardPosition\n ? cardPosition.y + (targetCardPosition.y - cardPosition.y) * easedProgress\n : cardPosition.y;\n }\n\n // Calculate where the card center is at current zoom\n const currentCardCenterX = currentCardX * currentZoom + (cardPosition.width * currentZoom) / 2;\n const currentCardCenterY = currentCardY * currentZoom + (cardPosition.height * currentZoom) / 2;\n\n // Calculate where the card center will be at the end of animation (relative to viewport)\n // Target scroll position is where we want to end up\n const endCardX = targetCardPosition ? targetCardPosition.x : cardPosition.x;\n const endCardY = targetCardPosition ? targetCardPosition.y : cardPosition.y;\n\n const endCardCenterX = endCardX * targetZoom + (cardPosition.width * targetZoom) / 2;\n const endCardCenterY = endCardY * targetZoom + (cardPosition.height * targetZoom) / 2;\n\n const endCardScreenX = endCardCenterX - targetScrollLeft;\n const endCardScreenY = endCardCenterY - targetScrollTop;\n\n // Interpolate the desired screen position\n const desiredScreenX = startCardScreenX + (endCardScreenX - startCardScreenX) * easedProgress;\n const desiredScreenY = startCardScreenY + (endCardScreenY - startCardScreenY) * easedProgress;\n\n // Calculate needed scroll position to put card at desired screen position\n const neededScrollLeft = currentCardCenterX - desiredScreenX;\n const neededScrollTop = currentCardCenterY - desiredScreenY;\n\n let maxScrollLeft = container.scrollWidth - container.clientWidth;\n let maxScrollTop = container.scrollHeight - container.clientHeight;\n\n // If we have explicit layout size, use it for clamping to avoid DOM sync issues\n if (getLayoutSizeAtZoom) {\n const size = getLayoutSizeAtZoom(currentZoom);\n if (size) {\n maxScrollLeft = Math.max(0, size.width * currentZoom - container.clientWidth);\n maxScrollTop = Math.max(0, size.height * currentZoom - container.clientHeight);\n }\n }\n\n // We can't clamp strictly during animation because the scrollWidth/Height might not have updated yet\n // if the spacer hasn't resized. But usually spacer resizes immediately on zoom update.\n // For safety, we just set it.\n container.scrollLeft = Math.min(Math.max(0, neededScrollLeft), maxScrollLeft);\n container.scrollTop = Math.min(Math.max(0, neededScrollTop), maxScrollTop);\n } else {\n // If no card position, just interpolate scroll position\n // Use captured initial scroll positions for linear interpolation\n const currentScrollLeft = initialScrollLeft + (targetScrollLeft - initialScrollLeft) * easedProgress;\n const currentScrollTop = initialScrollTop + (targetScrollTop - initialScrollTop) * easedProgress;\n\n container.scrollLeft = currentScrollLeft;\n container.scrollTop = currentScrollTop;\n }\n\n if (progress < 1) {\n rafId = requestAnimationFrame(animate);\n } else {\n container.style.scrollBehavior = '';\n container.scrollLeft = targetScrollLeft;\n container.scrollTop = targetScrollTop;\n onComplete?.();\n }\n };\n\n rafId = requestAnimationFrame(animate);\n\n return () => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n container.style.scrollBehavior = '';\n }\n };\n}\n\n/**\n * Calculate scroll position to center a card in viewport, accounting for detail panel\n */\nexport function calculateCenterScrollPosition(\n container: HTMLElement,\n cardPosition: { x: number; y: number; width: number; height: number },\n zoomLevel: number,\n detailPanelWidth: number = 0,\n totalHeight?: number\n): { scrollLeft: number; scrollTop: number } {\n const cardCenterX = cardPosition.x * zoomLevel + (cardPosition.width * zoomLevel) / 2;\n const cardCenterY = cardPosition.y * zoomLevel + (cardPosition.height * zoomLevel) / 2;\n const cardBottomY = (cardPosition.y + cardPosition.height) * zoomLevel;\n\n const availableWidth = container.clientWidth - detailPanelWidth;\n const targetX = availableWidth / 2;\n \n // For vertical centering, prefer putting the card center at viewport center.\n // But ensure the card bottom stays visible (at least 20% from viewport bottom).\n const viewportHeight = container.clientHeight;\n const targetYCenter = viewportHeight / 2;\n const targetYForBottom = viewportHeight * 0.7; // Card center should be at most 70% down\n\n const scrollLeft = Math.max(0, cardCenterX - targetX);\n \n // Calculate scroll needed to center the card\n const scrollTopForCenter = cardCenterY - targetYCenter;\n \n // Calculate scroll that ensures card bottom is visible with some margin\n const scrollTopForBottomVisible = cardBottomY - viewportHeight + 50; // 50px margin from bottom\n \n // If centering would push the card bottom out of view, use the bottom-visible scroll\n let scrollTop = scrollTopForCenter;\n if (scrollTopForCenter > scrollTopForBottomVisible + (cardPosition.height * zoomLevel / 2)) {\n // Card is near bottom of content, adjust to keep it visible\n scrollTop = Math.max(0, cardCenterY - targetYForBottom);\n }\n \n scrollTop = Math.max(0, scrollTop);\n\n // If totalHeight is provided, clamp to valid scroll range\n if (totalHeight) {\n const contentHeight = totalHeight * zoomLevel;\n const maxScrollTop = Math.max(0, contentHeight - viewportHeight);\n scrollTop = Math.min(scrollTop, maxScrollTop);\n }\n\n return { scrollLeft, scrollTop };\n}\n\n/**\n * Smooth scroll to position\n */\nexport function smoothScrollTo(\n container: HTMLElement,\n scrollLeft: number,\n scrollTop: number,\n smooth: boolean = true\n): void {\n container.scrollTo({\n left: scrollLeft,\n top: scrollTop,\n behavior: smooth ? 'smooth' : 'auto',\n });\n}\n"],"names":[],"mappings":"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"}
@@ -25,3 +25,4 @@ export declare function createCardPositionCallbacks(itemId: string | number, gro
25
25
  height: number;
26
26
  };
27
27
  };
28
+ //# sourceMappingURL=cardPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cardPosition.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/utils/cardPosition.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAiB,CAAC;AAQtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAEnD,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC;AAElC;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACxB,YAAY,GAAG,IAAI,CA6BrB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAgCnC;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACvC,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM;IAGnB,qBAAqB,SAAS,MAAM;IAGpC,mBAAmB,SAAS,MAAM;eAjD9B,MAAM;gBAAU,MAAM;;EAoDjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cardPosition.js","sources":["../../../../PivotViewer/utils/cardPosition.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAoBM,SAAU,qBAAqB,CACjC,IAAY,EACZ,MAAuB,EACvB,QAAwB,EACxB,QAAkB,EAClB,cAAsB,EACtB,eAAuB,EAAA;AAEvB,IAAA,MAAM,oBAAoB,GAAG,cAAc,GAAG,IAAI;AAClD,IAAA,MAAM,qBAAqB,GAAG,QAAQ,KAAK;UACrC,eAAe,GAAG;UAClB,eAAe;AAErB,IAAA,MAAM,MAAM,GAAG,aAAa,CAExB,QAA0B,EAAE;QAC5B,QAAQ;AACR,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,UAAU,EAAE,gBAAgB;AAC5B,QAAA,cAAc,EAAE,gBAAgB;AAChC,QACA,cAAc,EAAE,oBAAoB;AACpC,QAAA,eAAe,EAAE,qBAAqB;AACzC,KAAA,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE;AACX,QAAA,OAAO,IAAI;IACf;IAEA,OAAO;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,CAAC,EAAE,QAAQ,CAAC,CAAC;AACb,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,MAAM,EAAE,gBAAgB;KAC3B;AACL;AAKM,SAAU,mBAAmB,CAC/B,IAAY,EACZ,QAAwB,EACxB,QAAkB,EAClB,cAAsB,EACtB,eAAuB,EAAA;AAEvB,IAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;AAC3B,QAAA,MAAM,MAAM,GAAG,aAAa,CAExB,QAA0B,EAAE;YAC5B,QAAQ;AACR,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,UAAU,EAAE,gBAAgB;AAC5B,YAAA,cAAc,EAAE,gBAAgB;AAChC,YACA,cAAc;YACd,eAAe;AAClB,SAAA,CAAC;AACF,QAAA,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;IACnE;AAEA,IAAA,MAAM,oBAAoB,GAAG,cAAc,GAAG,IAAI;IAClD,MAAM,qBAAqB,GAAG,eAAe;AAE7C,IAAA,MAAM,MAAM,GAAG,aAAa,CAExB,QAA0B,EAAE;QAC5B,QAAQ;AACR,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,UAAU,EAAE,gBAAgB;AAC5B,QAAA,cAAc,EAAE,gBAAgB;AAChC,QACA,cAAc,EAAE,oBAAoB;AACpC,QAAA,eAAe,EAAE,qBAAqB;AACzC,KAAA,CAAC;AAEF,IAAA,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;AACnE;AAMM,SAAU,2BAA2B,CACvC,MAAuB,EACvB,QAAwB,EACxB,QAAkB,EAClB,cAAsB,EACtB,eAAuB,EAAA;IAEvB,OAAO;AACH,QAAA,qBAAqB,EAAE,CAAC,IAAY,KAChC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC;AAE5F,QAAA,mBAAmB,EAAE,CAAC,IAAY,KAC9B,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC;KACrF;AACL;;"}
1
+ {"version":3,"file":"cardPosition.js","sources":["../../../../PivotViewer/utils/cardPosition.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { GroupingResult } from '../engine/types';\nimport { computeLayout } from '../engine/layout';\nimport {\n BASE_CARD_WIDTH,\n BASE_CARD_HEIGHT,\n CARDS_PER_COLUMN,\n GROUP_SPACING,\n} from '../constants';\nimport type { ViewMode } from '../components/Toolbar';\nimport type { LayoutResult } from '../engine/types';\nimport type { CardPosition } from './idResolution';\n\nexport type Layout = LayoutResult;\n\n/**\n * Computes the card position at a specific zoom level\n */\nexport function getCardPositionAtZoom(\n zoom: number,\n itemId: string | number,\n grouping: GroupingResult,\n viewMode: ViewMode,\n containerWidth: number,\n containerHeight: number,\n): CardPosition | null {\n const scaledContainerWidth = containerWidth / zoom;\n const scaledContainerHeight = viewMode === 'collection'\n ? containerHeight / zoom\n : containerHeight;\n\n const layout = computeLayout(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n grouping as unknown as any, {\n viewMode,\n cardWidth: BASE_CARD_WIDTH,\n cardHeight: BASE_CARD_HEIGHT,\n cardsPerColumn: CARDS_PER_COLUMN,\n groupSpacing: GROUP_SPACING,\n containerWidth: scaledContainerWidth,\n containerHeight: scaledContainerHeight,\n });\n\n const position = layout.positions.get(itemId);\n if (!position) {\n return null;\n }\n\n return {\n x: position.x,\n y: position.y,\n width: BASE_CARD_WIDTH,\n height: BASE_CARD_HEIGHT,\n };\n}\n\n/**\n * Computes layout size at a specific zoom level\n */\nexport function getLayoutSizeAtZoom(\n zoom: number,\n grouping: GroupingResult,\n viewMode: ViewMode,\n containerWidth: number,\n containerHeight: number,\n): { width: number; height: number } {\n if (viewMode === 'collection') {\n const layout = computeLayout(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n grouping as unknown as any, {\n viewMode,\n cardWidth: BASE_CARD_WIDTH,\n cardHeight: BASE_CARD_HEIGHT,\n cardsPerColumn: CARDS_PER_COLUMN,\n groupSpacing: GROUP_SPACING,\n containerWidth,\n containerHeight,\n });\n return { width: layout.totalWidth, height: layout.totalHeight };\n }\n\n const scaledContainerWidth = containerWidth / zoom;\n const scaledContainerHeight = containerHeight;\n\n const layout = computeLayout(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n grouping as unknown as any, {\n viewMode,\n cardWidth: BASE_CARD_WIDTH,\n cardHeight: BASE_CARD_HEIGHT,\n cardsPerColumn: CARDS_PER_COLUMN,\n groupSpacing: GROUP_SPACING,\n containerWidth: scaledContainerWidth,\n containerHeight: scaledContainerHeight,\n });\n\n return { width: layout.totalWidth, height: layout.totalHeight };\n}\n\n/**\n * Creates callback functions for card position calculations at various zoom levels\n * Used for smooth animations during zoom and pan operations\n */\nexport function createCardPositionCallbacks(\n itemId: string | number,\n grouping: GroupingResult,\n viewMode: ViewMode,\n containerWidth: number,\n containerHeight: number,\n) {\n return {\n getCardPositionAtZoom: (zoom: number) =>\n getCardPositionAtZoom(zoom, itemId, grouping, viewMode, containerWidth, containerHeight),\n \n getLayoutSizeAtZoom: (zoom: number) =>\n getLayoutSizeAtZoom(zoom, grouping, viewMode, containerWidth, containerHeight),\n };\n}\n"],"names":[],"mappings":";;;AAoBM,SAAU,qBAAqB,CACjC,IAAY,EACZ,MAAuB,EACvB,QAAwB,EACxB,QAAkB,EAClB,cAAsB,EACtB,eAAuB,EAAA;AAEvB,IAAA,MAAM,oBAAoB,GAAG,cAAc,GAAG,IAAI;AAClD,IAAA,MAAM,qBAAqB,GAAG,QAAQ,KAAK;UACrC,eAAe,GAAG;UAClB,eAAe;AAErB,IAAA,MAAM,MAAM,GAAG,aAAa,CAExB,QAA0B,EAAE;QAC5B,QAAQ;AACR,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,UAAU,EAAE,gBAAgB;AAC5B,QAAA,cAAc,EAAE,gBAAgB;AAChC,QACA,cAAc,EAAE,oBAAoB;AACpC,QAAA,eAAe,EAAE,qBAAqB;AACzC,KAAA,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE;AACX,QAAA,OAAO,IAAI;IACf;IAEA,OAAO;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,CAAC,EAAE,QAAQ,CAAC,CAAC;AACb,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,MAAM,EAAE,gBAAgB;KAC3B;AACL;AAKM,SAAU,mBAAmB,CAC/B,IAAY,EACZ,QAAwB,EACxB,QAAkB,EAClB,cAAsB,EACtB,eAAuB,EAAA;AAEvB,IAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;AAC3B,QAAA,MAAM,MAAM,GAAG,aAAa,CAExB,QAA0B,EAAE;YAC5B,QAAQ;AACR,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,UAAU,EAAE,gBAAgB;AAC5B,YAAA,cAAc,EAAE,gBAAgB;AAChC,YACA,cAAc;YACd,eAAe;AAClB,SAAA,CAAC;AACF,QAAA,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;IACnE;AAEA,IAAA,MAAM,oBAAoB,GAAG,cAAc,GAAG,IAAI;IAClD,MAAM,qBAAqB,GAAG,eAAe;AAE7C,IAAA,MAAM,MAAM,GAAG,aAAa,CAExB,QAA0B,EAAE;QAC5B,QAAQ;AACR,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,UAAU,EAAE,gBAAgB;AAC5B,QAAA,cAAc,EAAE,gBAAgB;AAChC,QACA,cAAc,EAAE,oBAAoB;AACpC,QAAA,eAAe,EAAE,qBAAqB;AACzC,KAAA,CAAC;AAEF,IAAA,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;AACnE;AAMM,SAAU,2BAA2B,CACvC,MAAuB,EACvB,QAAwB,EACxB,QAAkB,EAClB,cAAsB,EACtB,eAAuB,EAAA;IAEvB,OAAO;AACH,QAAA,qBAAqB,EAAE,CAAC,IAAY,KAChC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC;AAE5F,QAAA,mBAAmB,EAAE,CAAC,IAAY,KAC9B,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC;KACrF;AACL;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../PivotViewer/utils/constants.ts"],"sourcesContent":[null],"names":[],"mappings":"AAKO,MAAM,QAAQ,GAAG;AAOjB,MAAM,eAAe,GAAG;AACxB,MAAM,gBAAgB,GAAG;AACzB,MAAM,kBAAkB,GAAG;AAI3B,MAAM,eAAe,GAAG;AACxB,MAAM,kBAAkB,GAAG;;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../PivotViewer/utils/constants.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n// Zoom constants\nexport const ZOOM_MIN = 0.1;\nexport const ZOOM_MAX = 3;\nexport const ZOOM_STEP = 0.05;\n\n// Layout constants - matched to main constants\nexport const GROUP_SPACING = 20;\nexport const CARD_GAP = 10;\nexport const CARDS_PER_COLUMN = 5;\nexport const BASE_CARD_WIDTH = 200;\nexport const BASE_CARD_HEIGHT = 176;\nexport const DETAIL_PANEL_WIDTH = 380;\n\n// Animation constants\nexport const ZOOM_ANIMATION_DURATION = 300;\nexport const ZOOM_MULTIPLIER = 1.2;\nexport const MIN_ZOOM_ON_SELECT = 1.2;\n"],"names":[],"mappings":"AAKO,MAAM,QAAQ,GAAG;AAOjB,MAAM,eAAe,GAAG;AACxB,MAAM,gBAAgB,GAAG;AACzB,MAAM,kBAAkB,GAAG;AAI3B,MAAM,eAAe,GAAG;AACxB,MAAM,kBAAkB,GAAG;;"}
@@ -31,3 +31,4 @@ export declare function resolveLayoutItemId<TItem extends object>(data: TItem[],
31
31
  */
32
32
  export declare function getCardPositionFromLayout(itemId: string | number, layout: Layout, cardWidth: number, cardHeight: number): CardPosition | null;
33
33
  export {};
34
+ //# sourceMappingURL=idResolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idResolution.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/utils/idResolution.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAiB,CAAC;AAEpD,KAAK,MAAM,GAAG,YAAY,CAAC;AAE3B,MAAM,WAAW,YAAY;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,SAAS,MAAM,EAC9C,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAC5D,MAAM,GAAG,MAAM,CAOjB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,MAAM,EAAE,MAAM,GACf,MAAM,GAAG,MAAM,CAqBjB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,MAAM,EACzD,IAAI,EAAE,KAAK,EAAE,EACb,IAAI,EAAE,KAAK,EACX,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAC5D,MAAM,CAsBR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,MAAM,EACpD,IAAI,EAAE,KAAK,EAAE,EACb,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAC3D,MAAM,GAAG,MAAM,CAIjB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,YAAY,GAAG,IAAI,CAcrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"idResolution.js","sources":["../../../../PivotViewer/utils/idResolution.ts"],"sourcesContent":[null],"names":[],"mappings":"AAkCM,SAAU,sBAAsB,CAClC,MAAuB,EACvB,MAAc,EAAA;IAGd,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAA,OAAO,MAAM;IACjB;AAGA,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACpE,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC;IACzB;AAGA,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC5B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAA,OAAO,KAAK;QAChB;IACJ;AAGA,IAAA,OAAO,MAAM;AACjB;SAOgB,wBAAwB,CACpC,IAAa,EACb,IAAW,EACX,SAA2D,EAAA;IAE3D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,IAAI,cAAc,KAAK,EAAE;AAAE,QAAA,OAAO,cAAc;AAEhD,IAAA,MAAM,UAAU,GAAI,IAAgC,CAAC,IAAI,CAAC;IAC1D,MAAM,QAAQ,GAAG;AACb,UAAE,SAAS,CAAC,IAAI,EAAE,CAAC;UACjB,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK;AACxD,cAAE;cACA,SAAS;IACjB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE;IAErC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,KAAK,KAAI;AACvC,QAAA,MAAM,mBAAmB,GAAI,SAAqC,CAAC,IAAI,CAAC;QACxE,MAAM,iBAAiB,GAAG;AACtB,cAAE,SAAS,CAAC,SAAS,EAAE,KAAK;AAC5B,cAAE,OAAO,mBAAmB,KAAK,QAAQ;gBACrC,OAAO,mBAAmB,KAAK;AACjC,kBAAE;kBACA,SAAS;QACjB,OAAO,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC;AACjD,IAAA,CAAC,CAAC;AACN;AAMM,SAAU,mBAAmB,CAC/B,IAAa,EACb,IAAW,EACX,MAAc,EACd,SAA0D,EAAA;IAE1D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AACxD,IAAA,OAAO,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC;AACjD;AAKM,SAAU,yBAAyB,CACrC,MAAuB,EACvB,MAAc,EACd,SAAiB,EACjB,UAAkB,EAAA;IAElB,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;IAEnD,IAAI,CAAC,QAAQ,EAAE;AACX,QAAA,OAAO,IAAI;IACf;IAEA,OAAO;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,CAAC,EAAE,QAAQ,CAAC,CAAC;AACb,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,MAAM,EAAE,UAAU;KACrB;AACL;;"}
1
+ {"version":3,"file":"idResolution.js","sources":["../../../../PivotViewer/utils/idResolution.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { LayoutResult } from '../engine/types';\n\ntype Layout = LayoutResult;\n\nexport interface CardPosition {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/**\n * Resolves the ID for an item, handling type conversions and consistency with layout keys\n */\nexport function resolveItemId<TItem extends object>(\n item: TItem,\n index: number,\n getItemId?: (item: TItem, index: number) => string | number,\n): string | number {\n if (getItemId) {\n const id = getItemId(item, index);\n return typeof id === 'number' ? id : id;\n }\n const id = (item as Record<string, unknown>)['id'];\n return typeof id === 'number' ? id : index;\n}\n\n/**\n * Ensures the item ID matches the layout's key type (number vs string)\n * by attempting type conversion if needed\n */\nexport function normalizeIdToLayoutKey(\n itemId: string | number,\n layout: Layout,\n): string | number {\n // If already in layout, return as-is\n if (layout.positions.has(itemId)) {\n return itemId;\n }\n\n // Try converting number to string\n if (typeof itemId === 'number' && layout.positions.has(String(itemId))) {\n return String(itemId);\n }\n\n // Try converting string to number\n if (typeof itemId === 'string') {\n const numId = Number(itemId);\n if (!isNaN(numId) && layout.positions.has(numId)) {\n return numId;\n }\n }\n\n // Return original if no match found (will likely result in null position)\n return itemId;\n}\n\n/**\n * Resolves an item to the engine's canonical array-index identity. A stale object reference is\n * relocated by its consumer identity when a stable `getItemId` is available; raw consumer ids are\n * never returned as layout keys.\n */\nexport function resolveInternalItemIndex<TItem extends object>(\n data: TItem[],\n item: TItem,\n getItemId?: (item: TItem, index: number) => string | number,\n): number {\n const referenceIndex = data.indexOf(item);\n if (referenceIndex !== -1) return referenceIndex;\n\n const implicitId = (item as Record<string, unknown>)['id'];\n const identity = getItemId\n ? getItemId(item, 0)\n : typeof implicitId === 'string' || typeof implicitId === 'number'\n ? implicitId\n : undefined;\n if (identity === undefined) return -1;\n\n return data.findIndex((candidate, index) => {\n const candidateImplicitId = (candidate as Record<string, unknown>)['id'];\n const candidateIdentity = getItemId\n ? getItemId(candidate, index)\n : typeof candidateImplicitId === 'string' ||\n typeof candidateImplicitId === 'number'\n ? candidateImplicitId\n : undefined;\n return Object.is(candidateIdentity, identity);\n });\n}\n\n/**\n * Resolves the layout key for a specific item. `resolveId` must return the internal array index (or\n * `-1` when the item cannot be relocated), never a consumer-supplied id.\n */\nexport function resolveLayoutItemId<TItem extends object>(\n data: TItem[],\n item: TItem,\n layout: Layout,\n resolveId: (item: TItem, index: number) => string | number,\n): string | number {\n const index = data.indexOf(item);\n const itemId = index !== -1 ? index : resolveId(item, 0);\n return normalizeIdToLayoutKey(itemId, layout);\n}\n\n/**\n * Gets the card position from the layout, handling ID type mismatches\n */\nexport function getCardPositionFromLayout(\n itemId: string | number,\n layout: Layout,\n cardWidth: number,\n cardHeight: number,\n): CardPosition | null {\n const normalizedId = normalizeIdToLayoutKey(itemId, layout);\n const position = layout.positions.get(normalizedId);\n\n if (!position) {\n return null;\n }\n\n return {\n x: position.x,\n y: position.y,\n width: cardWidth,\n height: cardHeight,\n };\n}\n"],"names":[],"mappings":"AAkCM,SAAU,sBAAsB,CAClC,MAAuB,EACvB,MAAc,EAAA;IAGd,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAA,OAAO,MAAM;IACjB;AAGA,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACpE,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC;IACzB;AAGA,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC5B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAA,OAAO,KAAK;QAChB;IACJ;AAGA,IAAA,OAAO,MAAM;AACjB;SAOgB,wBAAwB,CACpC,IAAa,EACb,IAAW,EACX,SAA2D,EAAA;IAE3D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,IAAI,cAAc,KAAK,EAAE;AAAE,QAAA,OAAO,cAAc;AAEhD,IAAA,MAAM,UAAU,GAAI,IAAgC,CAAC,IAAI,CAAC;IAC1D,MAAM,QAAQ,GAAG;AACb,UAAE,SAAS,CAAC,IAAI,EAAE,CAAC;UACjB,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK;AACxD,cAAE;cACA,SAAS;IACjB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE;IAErC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,KAAK,KAAI;AACvC,QAAA,MAAM,mBAAmB,GAAI,SAAqC,CAAC,IAAI,CAAC;QACxE,MAAM,iBAAiB,GAAG;AACtB,cAAE,SAAS,CAAC,SAAS,EAAE,KAAK;AAC5B,cAAE,OAAO,mBAAmB,KAAK,QAAQ;gBACrC,OAAO,mBAAmB,KAAK;AACjC,kBAAE;kBACA,SAAS;QACjB,OAAO,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC;AACjD,IAAA,CAAC,CAAC;AACN;AAMM,SAAU,mBAAmB,CAC/B,IAAa,EACb,IAAW,EACX,MAAc,EACd,SAA0D,EAAA;IAE1D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AACxD,IAAA,OAAO,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC;AACjD;AAKM,SAAU,yBAAyB,CACrC,MAAuB,EACvB,MAAc,EACd,SAAiB,EACjB,UAAkB,EAAA;IAElB,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;IAEnD,IAAI,CAAC,QAAQ,EAAE;AACX,QAAA,OAAO,IAAI;IACf;IAEA,OAAO;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,CAAC,EAAE,QAAQ,CAAC,CAAC;AACb,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,MAAM,EAAE,UAAU;KACrB;AACL;;"}
@@ -3,3 +3,4 @@ export * from './animations.js';
3
3
  export * from './selection.js';
4
4
  export * from './idResolution.js';
5
5
  export * from './cardPosition.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/utils/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAS,CAAC;AACxB,cAAc,iBAAc,CAAC;AAC7B,cAAc,gBAAa,CAAC;AAC5B,cAAc,mBAAgB,CAAC;AAC/B,cAAc,mBAAgB,CAAC"}
@@ -5,3 +5,4 @@ export * from './animations.js';
5
5
  export * from './selection.js';
6
6
  export * from './idResolution.js';
7
7
  export * from './cardPosition.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../PivotViewer/utils/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,cAAc,YAAS,CAAC;AACxB,cAAc,iBAAc,CAAC;AAC7B,cAAc,gBAAa,CAAC;AAC5B,cAAc,mBAAgB,CAAC;AAC/B,cAAc,mBAAgB,CAAC","sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nexport * from './utils';\nexport * from './animations';\nexport * from './selection';\nexport * from './idResolution';\nexport * from './cardPosition';\n\n"]}
@@ -2,3 +2,4 @@ import type { GroupingResult } from '../engine/types.js';
2
2
  import type { PivotDimension } from '../types.js';
3
3
  /** Apply display-only dimension callbacks after results cross the worker boundary. */
4
4
  export declare function presentGrouping<TItem extends object>(result: GroupingResult, dimension: PivotDimension<TItem> | undefined, data: TItem[]): GroupingResult;
5
+ //# sourceMappingURL=presentGrouping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentGrouping.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/utils/presentGrouping.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAU,CAAC;AAE3D,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,KAAK,SAAS,MAAM,EAChD,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,EAC5C,IAAI,EAAE,KAAK,EAAE,GACd,cAAc,CAoBhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"presentGrouping.js","sources":["../../../../PivotViewer/utils/presentGrouping.ts"],"sourcesContent":[null],"names":[],"mappings":"SAOgB,eAAe,CAC3B,MAAsB,EACtB,SAA4C,EAC5C,IAAa,EAAA;IAEb,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI,CAAC,SAAS,EAAE,IAAI;AAAE,QAAA,OAAO,MAAM;AAE9D,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;AACvC,QAAA,GAAG,KAAK;QACR,KAAK,EAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK;AAClF,KAAA,CAAC,CAAC;AAEH,IAAA,IAAI,SAAS,CAAC,IAAI,EAAE;AAChB,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;gBACrD,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5C,KAAK,EAAE,KAAK,CAAC,KAAK;aACO,CAAC,CAAC,CAAC;AAChC,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,IAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;IACtF;AAEA,IAAA,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE;AAChC;;"}
1
+ {"version":3,"file":"presentGrouping.js","sources":["../../../../PivotViewer/utils/presentGrouping.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { GroupingResult } from '../engine/types';\nimport type { PivotDimension, PivotGroup } from '../types';\n\n/** Apply display-only dimension callbacks after results cross the worker boundary. */\nexport function presentGrouping<TItem extends object>(\n result: GroupingResult,\n dimension: PivotDimension<TItem> | undefined,\n data: TItem[],\n): GroupingResult {\n if (!dimension?.formatValue && !dimension?.sort) return result;\n\n const groups = result.groups.map(group => ({\n ...group,\n label: dimension.formatValue ? dimension.formatValue(group.value) : group.label,\n }));\n\n if (dimension.sort) {\n const publicGroups = new Map(groups.map(group => [group, {\n key: group.key,\n label: group.label,\n value: group.value,\n items: Array.from(group.ids, id => data[id]),\n count: group.count,\n } satisfies PivotGroup<TItem>]));\n groups.sort((a, b) => dimension.sort!(publicGroups.get(a)!, publicGroups.get(b)!));\n }\n\n return { ...result, groups };\n}\n"],"names":[],"mappings":"SAOgB,eAAe,CAC3B,MAAsB,EACtB,SAA4C,EAC5C,IAAa,EAAA;IAEb,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI,CAAC,SAAS,EAAE,IAAI;AAAE,QAAA,OAAO,MAAM;AAE9D,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;AACvC,QAAA,GAAG,KAAK;QACR,KAAK,EAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK;AAClF,KAAA,CAAC,CAAC;AAEH,IAAA,IAAI,SAAS,CAAC,IAAI,EAAE;AAChB,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;gBACrD,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5C,KAAK,EAAE,KAAK,CAAC,KAAK;aACO,CAAC,CAAC,CAAC;AAChC,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,IAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;IACtF;AAEA,IAAA,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE;AAChC;;"}
@@ -9,3 +9,4 @@ import type { PropertyAccessor } from '../types.js';
9
9
  * omitted or empty, search remains a no-op and `visibleIds` is returned unchanged.
10
10
  */
11
11
  export declare function filterVisibleIdsBySearch<TItem extends object>(data: TItem[], visibleIds: Uint32Array, searchTerm: string, searchFields?: PropertyAccessor<TItem>[]): Uint32Array;
12
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/utils/search.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAU,CAAC;AAGjD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,MAAM,EACzD,IAAI,EAAE,KAAK,EAAE,EACb,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,GACzC,WAAW,CAiBb"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sources":["../../../../PivotViewer/utils/search.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAeM,SAAU,wBAAwB,CACpC,IAAa,EACb,UAAuB,EACvB,UAAkB,EAClB,YAAwC,EAAA;IAExC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAC5C,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACrD,QAAA,OAAO,UAAU;IACrB;AAEA,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAa,EAAE;AAC5B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,QAAA,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;AACrB,QAAA,IAAI,IAAI,KAAK,SAAS,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE;AACtE,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB;IACJ;AAEA,IAAA,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;AACnC;AAEA,SAAS,mBAAmB,CACxB,IAAW,EACX,IAAY,EACZ,aAAuB,EAAA;AAEvB,IAAA,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;QACtC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC;QAChD,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AACzE,YAAA,OAAO,IAAI;QACf;IACJ;AAEA,IAAA,OAAO,KAAK;AAChB;;"}
1
+ {"version":3,"file":"search.js","sources":["../../../../PivotViewer/utils/search.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { PropertyAccessor } from '../types';\nimport { getPropertyPath, getValueByPath } from '../types';\n\n/**\n * Narrows a set of visible item ids (array indices into `data`, matching the engine's internal\n * id space) down to those matching a free-text search term across `searchFields`.\n *\n * This is a post-filter step over already-filtered ids, so it composes identically whether\n * `visibleIds` came from the worker or the synchronous fallback path. Per the documented\n * `searchFields` contract, there is no default set of searched fields: when `searchFields` is\n * omitted or empty, search remains a no-op and `visibleIds` is returned unchanged.\n */\nexport function filterVisibleIdsBySearch<TItem extends object>(\n data: TItem[],\n visibleIds: Uint32Array,\n searchTerm: string,\n searchFields?: PropertyAccessor<TItem>[],\n): Uint32Array {\n const term = searchTerm.trim().toLowerCase();\n if (!term || !searchFields || searchFields.length === 0) {\n return visibleIds;\n }\n\n const propertyPaths = searchFields.map((accessor) => getPropertyPath(accessor));\n const matches: number[] = [];\n for (let i = 0; i < visibleIds.length; i++) {\n const id = visibleIds[i];\n const item = data[id];\n if (item !== undefined && matchesSearchFields(item, term, propertyPaths)) {\n matches.push(id);\n }\n }\n\n return new Uint32Array(matches);\n}\n\nfunction matchesSearchFields<TItem extends object>(\n item: TItem,\n term: string,\n propertyPaths: string[],\n): boolean {\n for (const propertyPath of propertyPaths) {\n const value = getValueByPath(item, propertyPath);\n if (value !== undefined && String(value).toLowerCase().indexOf(term) !== -1) {\n return true;\n }\n }\n\n return false;\n}\n"],"names":[],"mappings":";;AAeM,SAAU,wBAAwB,CACpC,IAAa,EACb,UAAuB,EACvB,UAAkB,EAClB,YAAwC,EAAA;IAExC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAC5C,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACrD,QAAA,OAAO,UAAU;IACrB;AAEA,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAa,EAAE;AAC5B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,QAAA,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;AACrB,QAAA,IAAI,IAAI,KAAK,SAAS,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE;AACtE,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB;IACJ;AAEA,IAAA,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;AACnC;AAEA,SAAS,mBAAmB,CACxB,IAAW,EACX,IAAY,EACZ,aAAuB,EAAA;AAEvB,IAAA,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;QACtC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC;QAChD,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AACzE,YAAA,OAAO,IAAI;QACf;IACJ;AAEA,IAAA,OAAO,KAAK;AAChB;;"}
@@ -53,3 +53,4 @@ export declare function handleCardSelection<TItem>({ itemId, selectedItemId, con
53
53
  * Get card element by ID from container
54
54
  */
55
55
  export declare function getCardElementById(_container: HTMLElement, _itemId: string | number): HTMLElement | null;
56
+ //# sourceMappingURL=selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/utils/selection.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAAuB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB,CAAC,KAAK;IAC3C,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACvC,SAAS,EAAE,WAAW,CAAC;IACvB,YAAY,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7E,kBAAkB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpF,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzG,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,mBAAmB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,oBAAoB,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;CAC9D;AAaD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,EACzC,MAAM,EACN,cAAc,EACd,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,IAAI,GACL,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,IAAI,CAsFtC;AA2JD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAMxG"}
@@ -1 +1 @@
1
- {"version":3,"file":"selection.js","sources":["../../../../PivotViewer/utils/selection.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection.js","sources":["../../../../PivotViewer/utils/selection.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { animateZoomAndScroll, calculateCenterScrollPosition, smoothScrollTo } from './animations';\nimport { ZOOM_MAX, MIN_ZOOM_ON_SELECT, ZOOM_MULTIPLIER, DETAIL_PANEL_WIDTH } from './constants';\nimport type { ViewMode } from '../components/Toolbar';\n\nexport interface SelectionState {\n zoom: number;\n scrollLeft: number;\n scrollTop: number;\n}\n\nexport interface CardClickHandlerParams<TItem> {\n item: TItem;\n itemId: string | number;\n selectedItemId: string | number | null;\n container: HTMLElement;\n cardPosition: { x: number; y: number; width: number; height: number } | null;\n targetCardPosition?: { x: number; y: number; width: number; height: number } | null;\n getCardPositionAtZoom?: (zoom: number) => { x: number; y: number; width: number; height: number } | null;\n getLayoutSizeAtZoom?: (zoom: number) => { width: number; height: number };\n spacer?: HTMLElement | null;\n viewMode: ViewMode;\n zoomLevel: number;\n totalHeight?: number;\n preSelectionState: SelectionState | null;\n startScrollPosition?: { x: number; y: number };\n setZoomLevel: (zoom: number) => void;\n setIsZooming: (isZooming: boolean) => void;\n setSelectedItem: (item: TItem | null) => void;\n setPreSelectionState: (state: SelectionState | null) => void;\n}\n\n/**\n * Compare two item IDs handling type coercion (string vs number)\n */\nfunction isSameItemId(id1: string | number | null, id2: string | number | null): boolean {\n if (id1 === null || id2 === null) return false;\n // Strict equality\n if (id1 === id2) return true;\n // Compare as strings to handle number/string mismatches\n return String(id1) === String(id2);\n}\n\n/**\n * Handle card click for selection with zoom and scroll animation\n */\nexport function handleCardSelection<TItem>({\n itemId,\n selectedItemId,\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom,\n getLayoutSizeAtZoom,\n spacer,\n viewMode,\n zoomLevel,\n totalHeight,\n preSelectionState,\n startScrollPosition,\n setZoomLevel,\n setIsZooming,\n setSelectedItem,\n setPreSelectionState,\n item,\n}: CardClickHandlerParams<TItem>): void {\n // Clicking the same card - deselect (using type-coerced comparison)\n if (isSameItemId(selectedItemId, itemId)) {\n deselectCard({\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom,\n getLayoutSizeAtZoom,\n spacer,\n viewMode,\n zoomLevel,\n preSelectionState,\n setZoomLevel,\n setIsZooming,\n setSelectedItem,\n setPreSelectionState,\n });\n return;\n }\n\n // First selection - save state and zoom in\n const isFirstSelection = selectedItemId === null;\n\n if (isFirstSelection) {\n setPreSelectionState({\n zoom: zoomLevel,\n scrollLeft: container.scrollLeft,\n scrollTop: container.scrollTop,\n });\n }\n\n setSelectedItem(item);\n\n if (isFirstSelection) {\n if (viewMode === 'collection') {\n // Collection mode: animate scroll to center the selected card (no zoom change)\n if (cardPosition) {\n setIsZooming(true);\n const { scrollLeft, scrollTop } = calculateCenterScrollPosition(container, cardPosition, zoomLevel, 0, totalHeight);\n animateZoomAndScroll({\n container,\n cardPosition,\n startZoom: zoomLevel,\n targetZoom: zoomLevel,\n targetScrollLeft: scrollLeft,\n targetScrollTop: scrollTop,\n onUpdate: setZoomLevel,\n onComplete: () => setIsZooming(false),\n });\n }\n } else {\n // Grouped mode: animate zoom and scroll\n zoomAndCenterCard({\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom,\n getLayoutSizeAtZoom,\n spacer,\n itemId,\n zoomLevel,\n totalHeight,\n startScrollPosition,\n setZoomLevel,\n setIsZooming,\n });\n }\n } else {\n // Subsequent selections: animate the scroll to center the new card\n if (cardPosition) {\n setIsZooming(true);\n const detailWidth = viewMode === 'collection' ? 0 : DETAIL_PANEL_WIDTH;\n const { scrollLeft, scrollTop } = calculateCenterScrollPosition(container, cardPosition, zoomLevel, detailWidth, totalHeight);\n animateZoomAndScroll({\n container,\n cardPosition,\n startZoom: zoomLevel,\n targetZoom: zoomLevel,\n targetScrollLeft: scrollLeft,\n targetScrollTop: scrollTop,\n onUpdate: setZoomLevel,\n onComplete: () => setIsZooming(false),\n });\n }\n }\n}\n\ninterface DeselectParams {\n container: HTMLElement;\n cardPosition: { x: number; y: number; width: number; height: number } | null;\n targetCardPosition?: { x: number; y: number; width: number; height: number } | null;\n getCardPositionAtZoom?: (zoom: number) => { x: number; y: number; width: number; height: number } | null;\n getLayoutSizeAtZoom?: (zoom: number) => { width: number; height: number };\n spacer?: HTMLElement | null;\n viewMode: ViewMode;\n zoomLevel: number;\n preSelectionState: SelectionState | null;\n setZoomLevel: (zoom: number) => void;\n setIsZooming: (isZooming: boolean) => void;\n setSelectedItem: (item: null) => void;\n setPreSelectionState: (state: SelectionState | null) => void;\n}\n\n/**\n * Deselect card with zoom-out animation if needed\n */\nfunction deselectCard({\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom,\n getLayoutSizeAtZoom,\n spacer,\n viewMode,\n zoomLevel,\n preSelectionState,\n setZoomLevel,\n setIsZooming,\n setSelectedItem,\n setPreSelectionState,\n}: DeselectParams): void {\n if (!preSelectionState) {\n setSelectedItem(null);\n return;\n }\n\n // Collection mode: just scroll back\n if (viewMode === 'collection') {\n setSelectedItem(null);\n smoothScrollTo(container, preSelectionState.scrollLeft, preSelectionState.scrollTop, true);\n setPreSelectionState(null);\n return;\n }\n\n // Grouped mode: check if zoom changed\n const zoomChanged = Math.abs(preSelectionState.zoom - zoomLevel) > 0.001;\n\n if (!zoomChanged || !cardPosition) {\n setSelectedItem(null);\n smoothScrollTo(container, preSelectionState.scrollLeft, preSelectionState.scrollTop, true);\n setPreSelectionState(null);\n return;\n }\n\n // Animate zoom out\n setIsZooming(true);\n\n animateZoomAndScroll({\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom,\n getLayoutSizeAtZoom,\n spacer,\n startZoom: zoomLevel,\n targetZoom: preSelectionState.zoom,\n targetScrollLeft: preSelectionState.scrollLeft,\n targetScrollTop: preSelectionState.scrollTop,\n onUpdate: setZoomLevel,\n onComplete: () => {\n setIsZooming(false);\n setSelectedItem(null);\n setPreSelectionState(null);\n },\n });\n}\n\ninterface ZoomAndCenterParams {\n container: HTMLElement;\n cardPosition: { x: number; y: number; width: number; height: number } | null;\n targetCardPosition?: { x: number; y: number; width: number; height: number } | null;\n getCardPositionAtZoom?: (zoom: number) => { x: number; y: number; width: number; height: number } | null;\n getLayoutSizeAtZoom?: (zoom: number) => { width: number; height: number };\n spacer?: HTMLElement | null;\n itemId: string | number;\n zoomLevel: number;\n totalHeight?: number;\n startScrollPosition?: { x: number; y: number };\n setZoomLevel: (zoom: number) => void;\n setIsZooming: (isZooming: boolean) => void;\n}\n\n/**\n * Zoom in and center a card\n */\nfunction zoomAndCenterCard({\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom,\n getLayoutSizeAtZoom,\n spacer,\n zoomLevel,\n totalHeight,\n startScrollPosition,\n setZoomLevel,\n setIsZooming,\n}: ZoomAndCenterParams): void {\n const targetZoom = Math.min(ZOOM_MAX, Math.max(MIN_ZOOM_ON_SELECT, zoomLevel * ZOOM_MULTIPLIER));\n const shouldZoom = Math.abs(targetZoom - zoomLevel) > 0.001;\n\n if (!shouldZoom || !cardPosition) {\n if (cardPosition) {\n const { scrollLeft, scrollTop } = calculateCenterScrollPosition(container, cardPosition, zoomLevel, DETAIL_PANEL_WIDTH, totalHeight);\n smoothScrollTo(container, scrollLeft, scrollTop, true);\n }\n return;\n }\n\n setIsZooming(true);\n\n // Use targetCardPosition if available, otherwise fallback to cardPosition\n const { scrollLeft: targetScrollLeft, scrollTop: targetScrollTop } = calculateCenterScrollPosition(\n container,\n targetCardPosition || cardPosition,\n targetZoom,\n DETAIL_PANEL_WIDTH,\n totalHeight\n );\n\n animateZoomAndScroll({\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom,\n getLayoutSizeAtZoom,\n spacer,\n startZoom: zoomLevel,\n targetZoom,\n targetScrollLeft,\n targetScrollTop,\n startScrollLeft: startScrollPosition?.x,\n startScrollTop: startScrollPosition?.y,\n onUpdate: setZoomLevel,\n onComplete: () => {\n setIsZooming(false);\n },\n });\n}\n\n/**\n * Get card element by ID from container\n */\nexport function getCardElementById(_container: HTMLElement, _itemId: string | number): HTMLElement | null {\n // Deprecated: Pixi renderer doesn't use DOM elements for cards\n // Keep parameter names prefixed to indicate intentional non-use.\n void _container;\n void _itemId;\n return null;\n}\n"],"names":[],"mappings":";;;AAqCA,SAAS,YAAY,CAAC,GAA2B,EAAE,GAA2B,EAAA;AAC5E,IAAA,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI;AAAE,QAAA,OAAO,KAAK;IAE9C,IAAI,GAAG,KAAK,GAAG;AAAE,QAAA,OAAO,IAAI;IAE5B,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC;AACpC;SAKgB,mBAAmB,CAAQ,EACzC,MAAM,EACN,cAAc,EACd,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,IAAI,GAC0B,EAAA;AAE9B,IAAA,IAAI,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE;AACxC,QAAA,YAAY,CAAC;YACX,SAAS;YACT,YAAY;YACZ,kBAAkB;YAClB,qBAAqB;YACrB,mBAAmB;YACnB,MAAM;YACN,QAAQ;YACR,SAAS;YACT,iBAAiB;YACjB,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,oBAAoB;AACrB,SAAA,CAAC;QACF;IACF;AAGA,IAAA,MAAM,gBAAgB,GAAG,cAAc,KAAK,IAAI;IAEhD,IAAI,gBAAgB,EAAE;AACpB,QAAA,oBAAoB,CAAC;AACnB,YAAA,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,SAAS,EAAE,SAAS,CAAC,SAAS;AAC/B,SAAA,CAAC;IACJ;IAEA,eAAe,CAAC,IAAI,CAAC;IAErB,IAAI,gBAAgB,EAAE;AACpB,QAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;YAE7B,IAAI,YAAY,EAAE;gBAChB,YAAY,CAAC,IAAI,CAAC;AAClB,gBAAA,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,CAAC;AACnH,gBAAA,oBAAoB,CAAC;oBACnB,SAAS;oBACT,YAAY;AACZ,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,UAAU,EAAE,SAAS;AACrB,oBAAA,gBAAgB,EAAE,UAAU;AAC5B,oBAAA,eAAe,EAAE,SAAS;AAC1B,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC;AACtC,iBAAA,CAAC;YACJ;QACF;aAAO;AAEL,YAAA,iBAAiB,CAAC;gBAChB,SAAS;gBACT,YAAY;gBACZ,kBAAkB;gBAClB,qBAAqB;gBACrB,mBAAmB;gBACnB,MAAM;gBAEN,SAAS;gBACT,WAAW;gBACX,mBAAmB;gBACnB,YAAY;gBACZ,YAAY;AACb,aAAA,CAAC;QACJ;IACF;SAAO;QAEL,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,IAAI,CAAC;AAClB,YAAA,MAAM,WAAW,GAAG,QAAQ,KAAK,YAAY,GAAG,CAAC,GAAG,kBAAkB;AACtE,YAAA,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC;AAC7H,YAAA,oBAAoB,CAAC;gBACnB,SAAS;gBACT,YAAY;AACZ,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,gBAAgB,EAAE,UAAU;AAC5B,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,QAAQ,EAAE,YAAY;AACtB,gBAAA,UAAU,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC;AACtC,aAAA,CAAC;QACJ;IACF;AACF;AAqBA,SAAS,YAAY,CAAC,EACpB,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,oBAAoB,GACL,EAAA;IACf,IAAI,CAAC,iBAAiB,EAAE;QACtB,eAAe,CAAC,IAAI,CAAC;QACrB;IACF;AAGA,IAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;QAC7B,eAAe,CAAC,IAAI,CAAC;AACrB,QAAA,cAAc,CAAC,SAAS,EAAE,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC;QAC1F,oBAAoB,CAAC,IAAI,CAAC;QAC1B;IACF;AAGA,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,KAAK;AAExE,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE;QACjC,eAAe,CAAC,IAAI,CAAC;AACrB,QAAA,cAAc,CAAC,SAAS,EAAE,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC;QAC1F,oBAAoB,CAAC,IAAI,CAAC;QAC1B;IACF;IAGA,YAAY,CAAC,IAAI,CAAC;AAElB,IAAA,oBAAoB,CAAC;QACnB,SAAS;QACT,YAAY;QACZ,kBAAkB;QAClB,qBAAqB;QACrB,mBAAmB;QACnB,MAAM;AACN,QAAA,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,iBAAiB,CAAC,IAAI;QAClC,gBAAgB,EAAE,iBAAiB,CAAC,UAAU;QAC9C,eAAe,EAAE,iBAAiB,CAAC,SAAS;AAC5C,QAAA,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,MAAK;YACf,YAAY,CAAC,KAAK,CAAC;YACnB,eAAe,CAAC,IAAI,CAAC;YACrB,oBAAoB,CAAC,IAAI,CAAC;QAC5B,CAAC;AACF,KAAA,CAAC;AACJ;AAoBA,SAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,EACN,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACQ,EAAA;AACpB,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,GAAG,eAAe,CAAC,CAAC;AAChG,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,KAAK;AAE3D,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE;QAChC,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,CAAC;YACpI,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC;QACxD;QACA;IACF;IAEA,YAAY,CAAC,IAAI,CAAC;IAGlB,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,6BAA6B,CAChG,SAAS,EACT,kBAAkB,IAAI,YAAY,EAClC,UAAU,EACV,kBAAkB,EAClB,WAAW,CACZ;AAED,IAAA,oBAAoB,CAAC;QACnB,SAAS;QACT,YAAY;QACZ,kBAAkB;QAClB,qBAAqB;QACrB,mBAAmB;QACnB,MAAM;AACN,QAAA,SAAS,EAAE,SAAS;QACpB,UAAU;QACV,gBAAgB;QAChB,eAAe;QACf,eAAe,EAAE,mBAAmB,EAAE,CAAC;QACvC,cAAc,EAAE,mBAAmB,EAAE,CAAC;AACtC,QAAA,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,MAAK;YACf,YAAY,CAAC,KAAK,CAAC;QACrB,CAAC;AACF,KAAA,CAAC;AACJ;;"}
@@ -31,3 +31,4 @@ export declare const groupData: <TItem extends object>(data: TItem[], dimension:
31
31
  * Returns array with nulls for empty cells that need placeholder rendering.
32
32
  */
33
33
  export declare const reorderForBottomUpGrid: <TItem>(items: TItem[], columns: number) => (TItem | null)[];
34
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/utils/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,cAAc,EACf,MAAM,aAAU,CAAC;AAElB,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAGvE,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,SAAS,OAAO,CAAC;AAC9B,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,KAAK,UAAW,cAAc,KAAG,MAM7C,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,cAAc,KAAG,MAMrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,SAAS,MAAM,WAC1C,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,KACxC,WAMF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,KAAK,SAAS,MAAM,WAC/C,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,KACxC,gBAQF,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,KAAK,SAAS,MAAM,QACzC,KAAK,EAAE,WACJ,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,SAClC,WAAW,cACN,gBAAgB,YAClB,MAAM,KACf,KAAK,EAoDP,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,MAAM,QACjD,KAAK,EAAE,UACL,WAAW,CAAC,KAAK,CAAC,KACzB,iBAAiB,EAgCnB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,MAC/B,CAAC;AAEzC,eAAO,MAAM,mBAAmB,GAAI,KAAK,SAAS,MAAM,QAChD,KAAK,EAAE,UACL,WAAW,CAAC,KAAK,CAAC,KACzB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,EAAE,CAAA;CAoBtD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,KAAK,SAAS,MAAM,QACtC,KAAK,EAAE,aACF,cAAc,CAAC,KAAK,CAAC,KAC/B,UAAU,CAAC,KAAK,CAAC,EA0BnB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,GAAI,KAAK,SAAU,KAAK,EAAE,WAAW,MAAM,KAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAgC9F,CAAC"}