@ynput/ayon-frontend-shared 0.2.13 → 0.2.15

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 (382) hide show
  1. package/dist/DetailsPanel.cjs.js +8 -0
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +8 -0
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/ProjectTreeTable.cjs.js +5 -0
  6. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  7. package/dist/ProjectTreeTable.es.js +5 -0
  8. package/dist/ProjectTreeTable.es.js.map +1 -1
  9. package/dist/Slicer.cjs.js +2 -0
  10. package/dist/Slicer.cjs.js.map +1 -1
  11. package/dist/Slicer.es.js +3 -1
  12. package/dist/Slicer.es.js.map +1 -1
  13. package/dist/_virtual/index.cjs10.js +3 -5
  14. package/dist/_virtual/index.cjs10.js.map +1 -1
  15. package/dist/_virtual/index.cjs7.js +5 -3
  16. package/dist/_virtual/index.cjs7.js.map +1 -1
  17. package/dist/_virtual/index.cjs8.js +4 -4
  18. package/dist/_virtual/index.cjs9.js +4 -4
  19. package/dist/_virtual/index.es10.js +2 -5
  20. package/dist/_virtual/index.es10.js.map +1 -1
  21. package/dist/_virtual/index.es7.js +5 -2
  22. package/dist/_virtual/index.es7.js.map +1 -1
  23. package/dist/_virtual/index.es8.js +4 -4
  24. package/dist/_virtual/index.es9.js +4 -4
  25. package/dist/api.cjs.js +2 -0
  26. package/dist/api.cjs.js.map +1 -1
  27. package/dist/api.es.js +3 -1
  28. package/dist/components.cjs.js +15 -0
  29. package/dist/components.cjs.js.map +1 -1
  30. package/dist/components.es.js +16 -1
  31. package/dist/components.es.js.map +1 -1
  32. package/dist/context.cjs.js +4 -0
  33. package/dist/context.cjs.js.map +1 -1
  34. package/dist/context.es.js +4 -0
  35. package/dist/context.es.js.map +1 -1
  36. package/dist/index.cjs.js +8 -0
  37. package/dist/index.cjs.js.map +1 -1
  38. package/dist/index.es.js +8 -0
  39. package/dist/index.es.js.map +1 -1
  40. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +2 -2
  41. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  42. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  43. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  44. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  45. package/dist/node_modules/remove-accents/index.es.js +1 -1
  46. package/dist/node_modules/vfile/lib/index.cjs.js +1 -1
  47. package/dist/node_modules/vfile/lib/index.es.js +1 -1
  48. package/dist/shared/src/api/generated/actions.cjs.js.map +1 -1
  49. package/dist/shared/src/api/generated/actions.es.js.map +1 -1
  50. package/dist/shared/src/api/generated/addons.cjs.js.map +1 -1
  51. package/dist/shared/src/api/generated/addons.es.js.map +1 -1
  52. package/dist/shared/src/api/generated/anatomy.cjs.js.map +1 -1
  53. package/dist/shared/src/api/generated/anatomy.es.js.map +1 -1
  54. package/dist/shared/src/api/generated/attributes.cjs.js.map +1 -1
  55. package/dist/shared/src/api/generated/attributes.es.js.map +1 -1
  56. package/dist/shared/src/api/generated/configuration.cjs.js.map +1 -1
  57. package/dist/shared/src/api/generated/configuration.es.js.map +1 -1
  58. package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
  59. package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
  60. package/dist/shared/src/api/generated/events.cjs.js.map +1 -1
  61. package/dist/shared/src/api/generated/events.es.js.map +1 -1
  62. package/dist/shared/src/api/generated/files.cjs.js +5 -0
  63. package/dist/shared/src/api/generated/files.cjs.js.map +1 -1
  64. package/dist/shared/src/api/generated/files.es.js +5 -0
  65. package/dist/shared/src/api/generated/files.es.js.map +1 -1
  66. package/dist/shared/src/api/generated/operations.cjs.js.map +1 -1
  67. package/dist/shared/src/api/generated/operations.es.js.map +1 -1
  68. package/dist/shared/src/api/generated/projects.cjs.js +16 -0
  69. package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
  70. package/dist/shared/src/api/generated/projects.es.js +16 -0
  71. package/dist/shared/src/api/generated/projects.es.js.map +1 -1
  72. package/dist/shared/src/api/generated/reviewables.cjs.js.map +1 -1
  73. package/dist/shared/src/api/generated/reviewables.es.js.map +1 -1
  74. package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
  75. package/dist/shared/src/api/generated/system.es.js.map +1 -1
  76. package/dist/shared/src/api/generated/tasks.cjs.js +8 -0
  77. package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
  78. package/dist/shared/src/api/generated/tasks.es.js +8 -0
  79. package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
  80. package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
  81. package/dist/shared/src/api/generated/users.es.js.map +1 -1
  82. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +66 -4
  83. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  84. package/dist/shared/src/api/queries/overview/getOverview.es.js +66 -4
  85. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  86. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -0
  87. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  88. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +1 -0
  89. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  90. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js +8 -0
  91. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
  92. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +8 -0
  93. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
  94. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +69 -0
  95. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -0
  96. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +69 -0
  97. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -0
  98. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +48 -0
  99. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -0
  100. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +48 -0
  101. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -0
  102. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js +102 -0
  103. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js.map +1 -0
  104. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js +102 -0
  105. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js.map +1 -0
  106. package/dist/shared/src/components/Powerpack/PricingLink.cjs.js +13 -0
  107. package/dist/shared/src/components/Powerpack/PricingLink.cjs.js.map +1 -0
  108. package/dist/shared/src/components/Powerpack/PricingLink.es.js +13 -0
  109. package/dist/shared/src/components/Powerpack/PricingLink.es.js.map +1 -0
  110. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +4 -10
  111. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  112. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +1 -7
  113. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  114. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +5 -1
  115. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  116. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +5 -1
  117. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  118. package/dist/shared/src/components/ProjectTableSettings/TableSettings.styled.cjs.js +13 -0
  119. package/dist/shared/src/components/ProjectTableSettings/TableSettings.styled.cjs.js.map +1 -0
  120. package/dist/shared/src/components/ProjectTableSettings/TableSettings.styled.es.js +13 -0
  121. package/dist/shared/src/components/ProjectTableSettings/TableSettings.styled.es.js.map +1 -0
  122. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +50 -0
  123. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -0
  124. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +50 -0
  125. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -0
  126. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +8 -0
  127. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  128. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +8 -0
  129. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  130. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +8 -0
  131. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  132. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +8 -0
  133. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  134. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +8 -0
  135. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  136. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +8 -0
  137. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  138. package/dist/shared/src/components/SearchFilter/filterDates.cjs.js +167 -0
  139. package/dist/shared/src/components/SearchFilter/filterDates.cjs.js.map +1 -0
  140. package/dist/shared/src/components/SearchFilter/filterDates.es.js +167 -0
  141. package/dist/shared/src/components/SearchFilter/filterDates.es.js.map +1 -0
  142. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +547 -0
  143. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -0
  144. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +547 -0
  145. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -0
  146. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +6 -2
  147. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  148. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +6 -2
  149. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  150. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +19 -3
  151. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  152. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +20 -4
  153. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  154. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -0
  155. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  156. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +1 -0
  157. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  158. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +8 -0
  159. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  160. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +8 -0
  161. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  162. package/dist/shared/src/containers/Actions/Actions.cjs.js +2 -0
  163. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  164. package/dist/shared/src/containers/Actions/Actions.es.js +2 -0
  165. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  166. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +8 -0
  167. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  168. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +8 -0
  169. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  170. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +8 -0
  171. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  172. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +8 -0
  173. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  174. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +8 -0
  175. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  176. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +8 -0
  177. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  178. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +8 -0
  179. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  180. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +8 -0
  181. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  182. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +9 -1
  183. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  184. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +9 -1
  185. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  186. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -0
  187. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  188. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +1 -0
  189. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  190. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +1 -0
  191. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
  192. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +1 -0
  193. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
  194. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -0
  195. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  196. package/dist/shared/src/containers/Feed/Feed.es.js +1 -0
  197. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  198. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +2 -1
  199. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  200. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +2 -1
  201. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  202. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -0
  203. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  204. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +1 -0
  205. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  206. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +5 -1
  207. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  208. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +5 -1
  209. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  210. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.es.js.map +1 -1
  212. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -0
  213. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  214. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +1 -0
  215. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  216. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +22 -11
  217. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  218. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +22 -11
  219. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  220. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js +6 -0
  221. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js.map +1 -1
  222. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.es.js +6 -0
  223. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.es.js.map +1 -1
  224. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js +3 -3
  225. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js.map +1 -1
  226. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js +3 -3
  227. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js.map +1 -1
  228. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -0
  229. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  230. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +1 -0
  231. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  232. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -0
  233. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  234. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +1 -0
  235. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  236. package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.cjs.js +2 -1
  237. package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.cjs.js.map +1 -1
  238. package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.es.js +2 -1
  239. package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.es.js.map +1 -1
  240. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +45 -16
  241. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  242. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +45 -16
  243. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  244. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +45 -7
  245. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +45 -7
  247. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  248. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +202 -0
  249. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -0
  250. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +202 -0
  251. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -0
  252. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +14 -6
  253. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +14 -6
  255. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  256. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js +11 -1
  257. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js +11 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  260. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +22 -2
  261. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +22 -2
  263. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  264. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js +116 -0
  265. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js.map +1 -0
  266. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js +116 -0
  267. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js.map +1 -0
  268. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -0
  269. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +1 -0
  271. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  272. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  274. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  276. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +137 -0
  277. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -0
  278. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +137 -0
  279. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -0
  280. package/dist/shared/src/containers/ProjectTreeTable/hooks/{useOverviewTable.cjs.js → useBuildProjectDataTable.cjs.js} +3 -3
  281. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -0
  282. package/dist/shared/src/containers/ProjectTreeTable/hooks/{useOverviewTable.es.js → useBuildProjectDataTable.es.js} +3 -3
  283. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -0
  284. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +39 -19
  285. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +39 -19
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  288. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js +108 -0
  289. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js.map +1 -0
  290. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js +108 -0
  291. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js.map +1 -0
  292. package/dist/shared/src/containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js +29 -0
  293. package/dist/shared/src/containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js.map +1 -0
  294. package/dist/shared/src/containers/ProjectTreeTable/widgets/LoadMoreWidget.es.js +30 -0
  295. package/dist/shared/src/containers/ProjectTreeTable/widgets/LoadMoreWidget.es.js.map +1 -0
  296. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +8 -0
  297. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  298. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +8 -0
  299. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  300. package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.cjs.js +37 -0
  301. package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.cjs.js.map +1 -0
  302. package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.es.js +37 -0
  303. package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.es.js.map +1 -0
  304. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -0
  305. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  306. package/dist/shared/src/context/DetailsPanelContext.es.js +1 -0
  307. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  308. package/dist/shared/src/context/PowerpackContext.cjs.js +65 -0
  309. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -0
  310. package/dist/shared/src/context/PowerpackContext.es.js +65 -0
  311. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -0
  312. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -0
  313. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  314. package/dist/shared/src/hooks/useEntityUpdate.es.js +1 -0
  315. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  316. package/dist/shared/src/util/getAttributeIcon.cjs.js +7 -1
  317. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  318. package/dist/shared/src/util/getAttributeIcon.es.js +7 -1
  319. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  320. package/dist/shared/src/util/getEntityTypeIcon.cjs.js +9 -0
  321. package/dist/shared/src/util/getEntityTypeIcon.cjs.js.map +1 -1
  322. package/dist/shared/src/util/getEntityTypeIcon.es.js +9 -0
  323. package/dist/shared/src/util/getEntityTypeIcon.es.js.map +1 -1
  324. package/dist/types/api/generated/actions.d.ts +3 -2
  325. package/dist/types/api/generated/addons.d.ts +8 -1
  326. package/dist/types/api/generated/anatomy.d.ts +1 -14
  327. package/dist/types/api/generated/attributes.d.ts +4 -2
  328. package/dist/types/api/generated/configuration.d.ts +6 -0
  329. package/dist/types/api/generated/entityLists.d.ts +2 -0
  330. package/dist/types/api/generated/events.d.ts +1 -1
  331. package/dist/types/api/generated/files.d.ts +11 -0
  332. package/dist/types/api/generated/operations.d.ts +1 -1
  333. package/dist/types/api/generated/projects.d.ts +59 -0
  334. package/dist/types/api/generated/reviewables.d.ts +1 -0
  335. package/dist/types/api/generated/system.d.ts +5 -2
  336. package/dist/types/api/generated/tasks.d.ts +48 -9
  337. package/dist/types/api/generated/users.d.ts +1 -4
  338. package/dist/types/api/queries/overview/getOverview.d.ts +350 -482
  339. package/dist/types/api/queries/project/getProject.d.ts +6 -0
  340. package/dist/types/components/Powerpack/PowerpackButton.d.ts +7 -0
  341. package/dist/types/components/Powerpack/PowerpackDialog.d.ts +4 -0
  342. package/dist/types/components/Powerpack/PowerpackDialog.styled.d.ts +8 -0
  343. package/dist/types/components/Powerpack/PricingLink.d.ts +4 -0
  344. package/dist/types/components/Powerpack/index.d.ts +3 -0
  345. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +2 -1
  346. package/dist/types/components/ProjectTableSettings/TableSettings.styled.d.ts +1 -0
  347. package/dist/types/components/ProjectTableSettings/TableSettingsFallback.d.ts +10 -0
  348. package/dist/types/components/ProjectTableSettings/index.d.ts +1 -0
  349. package/dist/types/components/SearchFilter/filterDates.d.ts +56 -0
  350. package/dist/types/components/SearchFilter/index.d.ts +2 -0
  351. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +30 -0
  352. package/dist/types/components/index.d.ts +2 -0
  353. package/dist/types/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.d.ts +1 -1
  354. package/dist/types/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.d.ts +1 -1
  355. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +4 -3
  356. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +5 -1
  357. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +3 -1
  358. package/dist/types/containers/ProjectTreeTable/components/GroupSettingsFallback.d.ts +11 -0
  359. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +7 -0
  360. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +11 -5
  361. package/dist/types/containers/ProjectTreeTable/context/ProjectTableModulesContext.d.ts +12 -0
  362. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +1 -0
  363. package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +25 -0
  364. package/dist/types/containers/ProjectTreeTable/hooks/{useOverviewTable.d.ts → useBuildProjectDataTable.d.ts} +3 -1
  365. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +2 -0
  366. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +1 -1
  367. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +13 -5
  368. package/dist/types/containers/ProjectTreeTable/widgets/GroupHeaderWidget.d.ts +13 -0
  369. package/dist/types/containers/ProjectTreeTable/widgets/LoadMoreWidget.d.ts +8 -0
  370. package/dist/types/containers/ProjectTreeTable/widgets/index.d.ts +1 -0
  371. package/dist/types/containers/Slicer/index.d.ts +1 -0
  372. package/dist/types/containers/Slicer/useFiltersWithHierarchy.d.ts +10 -0
  373. package/dist/types/context/PowerpackContext.d.ts +20 -0
  374. package/dist/types/context/index.d.ts +1 -0
  375. package/dist/types/util/getAttributeIcon.d.ts +1 -1
  376. package/dist/types/util/getEntityTypeIcon.d.ts +1 -0
  377. package/dist/util.cjs.js +1 -0
  378. package/dist/util.cjs.js.map +1 -1
  379. package/dist/util.es.js +2 -1
  380. package/package.json +1 -1
  381. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js.map +0 -1
  382. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsPanel.cjs.js","sources":["../../../../../src/components/SettingsPanel/SettingsPanel.tsx"],"sourcesContent":["import { Button, Icon } from '@ynput/ayon-react-components'\nimport { FC, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport { SettingField, useSettingsPanel } from '@shared/context'\n\n// Side panel styled components\nconst SidePanel = styled.div<{ open: boolean }>`\n height: 100%;\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n border-radius: 4px;\n z-index: 10;\n display: flex;\n flex-direction: column;\n`\n\nconst PanelHeader = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 34px;\n padding: 0px 4px;\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n\n h3 {\n margin-left: 4px;\n padding: 0;\n }\n`\n\nconst ToolButton = styled(Button)`\n padding: 4px !important;\n`\n\nconst PanelTitle = styled.h3`\n margin: 0;\n flex: 1;\n`\n\nconst PanelContent = styled.div`\n padding: 8px;\n flex: 1;\n overflow-y: auto;\n`\n\nexport const SettingOption = styled(Button)`\n width: 100%;\n justify-content: flex-start;\n margin-bottom: 8px;\n text-align: left;\n display: flex;\n gap: var(--base-gap-small);\n\n .title {\n flex: 1;\n }\n\n .preview {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport interface SettingConfig {\n id: SettingField\n title: string\n component: ReactNode\n icon?: string\n preview?: string | number\n}\n\nexport interface SettingsPanelProps {\n settings: SettingConfig[]\n}\n\nexport const SettingsPanel: FC<SettingsPanelProps> = ({ settings }) => {\n const { isPanelOpen, selectedSetting, closePanel, backToMainMenu, selectSetting } =\n useSettingsPanel()\n\n const getPanelTitle = () => {\n if (!selectedSetting) return 'Settings'\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.title || 'Settings'\n }\n\n const renderSettingContent = () => {\n if (!selectedSetting) {\n // Render main menu\n return (\n <>\n {settings.map((setting) => (\n <SettingOption\n key={setting.id}\n onClick={() => selectSetting(setting.id)}\n variant=\"text\"\n >\n {setting.icon && <Icon icon={setting.icon} />}\n <span className=\"title\">{setting.title}</span>\n {!!setting.preview?.toString() && <span className=\"preview\">{setting.preview}</span>}\n </SettingOption>\n ))}\n </>\n )\n }\n\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.component\n }\n\n return (\n <SidePanel open={isPanelOpen}>\n <PanelHeader>\n {selectedSetting && settings.length > 1 && (\n <ToolButton variant=\"text\" icon=\"arrow_back\" onClick={backToMainMenu} />\n )}\n <PanelTitle>{getPanelTitle()}</PanelTitle>\n <ToolButton variant=\"text\" icon=\"close\" onClick={closePanel} />\n </PanelHeader>\n <PanelContent>{renderSettingContent()}</PanelContent>\n </SidePanel>\n )\n}\n"],"names":["Button","useSettingsPanel","jsx","Fragment","setting","jsxs","Icon"],"mappings":";;;;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUzB,MAAM,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAc3B,MAAM,aAAa,OAAOA,0BAAM;AAAA;AAAA;AAIhC,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAMf,MAAA,gBAAgB,OAAOA,0BAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BnC,MAAM,gBAAwC,CAAC,EAAE,eAAe;AACrE,QAAM,EAAE,aAAa,iBAAiB,YAAY,gBAAgB,kBAChEC,sCAAiB;AAEnB,QAAM,gBAAgB,MAAM;AACtB,QAAA,CAAC,gBAAwB,QAAA;AAC7B,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,YAAO,mCAAS,UAAS;AAAA,EAC3B;AAEA,QAAM,uBAAuB,MAAM;AACjC,QAAI,CAAC,iBAAiB;AAEpB,aAEKC,2BAAAA,kBAAAA,IAAAC,WAAAA,kBAAAA,UAAA,EAAA,UAAA,SAAS,IAAI,CAACC;;AACbC,0CAAA,kBAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM,cAAcD,SAAQ,EAAE;AAAA,YACvC,SAAQ;AAAA,YAEP,UAAA;AAAA,cAAAA,SAAQ,QAAQF,iDAACI,oBAAAA,MAAK,EAAA,MAAMF,SAAQ,MAAM;AAAA,+DAC1C,QAAK,EAAA,WAAU,SAAS,UAAAA,SAAQ,OAAM;AAAA,cACtC,CAAC,GAACA,cAAQ,YAARA,mBAAiB,eAAeF,2BAAA,kBAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAAE,SAAQ,QAAQ,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UANxEA,SAAQ;AAAA,QAQhB;AAAA,OAAA,GACH;AAAA,IAAA;AAIJ,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,WAAO,mCAAS;AAAA,EAClB;AAGE,SAAAC,2BAAA,kBAAA,KAAC,WAAU,EAAA,MAAM,aACf,UAAA;AAAA,IAAAA,kDAAC,aACE,EAAA,UAAA;AAAA,MAAmB,mBAAA,SAAS,SAAS,KACnCH,2BAAA,kBAAA,IAAA,YAAA,EAAW,SAAQ,QAAO,MAAK,cAAa,SAAS,eAAgB,CAAA;AAAA,MAExEA,2BAAAA,kBAAAA,IAAC,YAAY,EAAA,UAAA,cAAgB,EAAA,CAAA;AAAA,uDAC5B,YAAW,EAAA,SAAQ,QAAO,MAAK,SAAQ,SAAS,WAAY,CAAA;AAAA,IAAA,GAC/D;AAAA,IACAA,2BAAAA,kBAAAA,IAAC,cAAc,EAAA,UAAA,qBAAA,EAAuB,CAAA;AAAA,EAAA,GACxC;AAEJ;;;"}
1
+ {"version":3,"file":"SettingsPanel.cjs.js","sources":["../../../../../src/components/SettingsPanel/SettingsPanel.tsx"],"sourcesContent":["import { Button, Icon } from '@ynput/ayon-react-components'\nimport { FC, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport { SettingField, useSettingsPanel } from '@shared/context'\n\n// Side panel styled components\nconst SidePanel = styled.div<{ open: boolean }>`\n height: 100%;\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n border-radius: 4px;\n z-index: 10;\n display: flex;\n flex-direction: column;\n`\n\nconst PanelHeader = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 34px;\n padding: 0px 4px;\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n\n h3 {\n margin-left: 4px;\n padding: 0;\n }\n`\n\nconst ToolButton = styled(Button)`\n padding: 4px !important;\n`\n\nconst PanelTitle = styled.h3`\n margin: 0;\n flex: 1;\n`\n\nconst PanelContent = styled.div`\n padding: 8px;\n flex: 1;\n overflow-y: auto;\n`\n\nexport const SettingOption = styled(Button)`\n width: 100%;\n justify-content: flex-start;\n margin-bottom: 8px;\n text-align: left;\n display: flex;\n gap: var(--base-gap-small);\n padding-right: var(--padding-s);\n\n .title {\n flex: 1;\n }\n\n .preview,\n .arrow {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport interface SettingConfig {\n id: SettingField\n title: string\n component: ReactNode\n icon?: string\n preview?: string | number\n}\n\nexport interface SettingsPanelProps {\n settings: SettingConfig[]\n}\n\nexport const SettingsPanel: FC<SettingsPanelProps> = ({ settings }) => {\n const { isPanelOpen, selectedSetting, closePanel, backToMainMenu, selectSetting } =\n useSettingsPanel()\n\n const getPanelTitle = () => {\n if (!selectedSetting) return 'Settings'\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.title || 'Settings'\n }\n\n const renderSettingContent = () => {\n if (!selectedSetting) {\n // Render main menu\n return (\n <>\n {settings.map((setting) => (\n <SettingOption\n key={setting.id}\n onClick={() => selectSetting(setting.id)}\n variant=\"text\"\n >\n {setting.icon && <Icon icon={setting.icon} />}\n <span className=\"title\">{setting.title}</span>\n {!!setting.preview?.toString() && <span className=\"preview\">{setting.preview}</span>}\n <Icon icon=\"chevron_right\" className=\"arrow\" />\n </SettingOption>\n ))}\n </>\n )\n }\n\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.component\n }\n\n return (\n <SidePanel open={isPanelOpen}>\n <PanelHeader>\n {selectedSetting && settings.length > 1 && (\n <ToolButton variant=\"text\" icon=\"arrow_back\" onClick={backToMainMenu} />\n )}\n <PanelTitle>{getPanelTitle()}</PanelTitle>\n <ToolButton variant=\"text\" icon=\"close\" onClick={closePanel} />\n </PanelHeader>\n <PanelContent>{renderSettingContent()}</PanelContent>\n </SidePanel>\n )\n}\n"],"names":["Button","useSettingsPanel","jsx","Fragment","setting","jsxs","Icon"],"mappings":";;;;;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUzB,MAAM,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAc3B,MAAM,aAAa,OAAOA,0BAAM;AAAA;AAAA;AAIhC,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAMf,MAAA,gBAAgB,OAAOA,0BAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BnC,MAAM,gBAAwC,CAAC,EAAE,eAAe;AACrE,QAAM,EAAE,aAAa,iBAAiB,YAAY,gBAAgB,kBAChEC,sCAAiB;AAEnB,QAAM,gBAAgB,MAAM;AACtB,QAAA,CAAC,gBAAwB,QAAA;AAC7B,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,YAAO,mCAAS,UAAS;AAAA,EAC3B;AAEA,QAAM,uBAAuB,MAAM;AACjC,QAAI,CAAC,iBAAiB;AAEpB,aAEKC,2BAAAA,kBAAAA,IAAAC,WAAAA,kBAAAA,UAAA,EAAA,UAAA,SAAS,IAAI,CAACC;;AACbC,0CAAA,kBAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM,cAAcD,SAAQ,EAAE;AAAA,YACvC,SAAQ;AAAA,YAEP,UAAA;AAAA,cAAAA,SAAQ,QAAQF,iDAACI,oBAAAA,MAAK,EAAA,MAAMF,SAAQ,MAAM;AAAA,+DAC1C,QAAK,EAAA,WAAU,SAAS,UAAAA,SAAQ,OAAM;AAAA,cACtC,CAAC,GAACA,cAAQ,YAARA,mBAAiB,eAAeF,2BAAAA,kBAAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAAE,SAAQ,QAAQ,CAAA;AAAA,cAC5EF,2BAAA,kBAAA,IAAAI,oBAAA,MAAA,EAAK,MAAK,iBAAgB,WAAU,QAAQ,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAPxCF,SAAQ;AAAA,QAShB;AAAA,OAAA,GACH;AAAA,IAAA;AAIJ,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,WAAO,mCAAS;AAAA,EAClB;AAGE,SAAAC,2BAAA,kBAAA,KAAC,WAAU,EAAA,MAAM,aACf,UAAA;AAAA,IAAAA,kDAAC,aACE,EAAA,UAAA;AAAA,MAAmB,mBAAA,SAAS,SAAS,KACnCH,2BAAA,kBAAA,IAAA,YAAA,EAAW,SAAQ,QAAO,MAAK,cAAa,SAAS,eAAgB,CAAA;AAAA,MAExEA,2BAAAA,kBAAAA,IAAC,YAAY,EAAA,UAAA,cAAgB,EAAA,CAAA;AAAA,uDAC5B,YAAW,EAAA,SAAQ,QAAO,MAAK,SAAQ,SAAS,WAAY,CAAA;AAAA,IAAA,GAC/D;AAAA,IACAA,2BAAAA,kBAAAA,IAAC,cAAc,EAAA,UAAA,qBAAA,EAAuB,CAAA;AAAA,EAAA,GACxC;AAEJ;;;"}
@@ -10,6 +10,7 @@ import "react-dom";
10
10
  import "../../context/pip/PiPWrapper.es.js";
11
11
  import "../../context/AddonProjectContext.es.js";
12
12
  import "../../context/AddonContext.es.js";
13
+ import "../../context/PowerpackContext.es.js";
13
14
  const SidePanel = styled.div`
14
15
  height: 100%;
15
16
  overflow: hidden;
@@ -51,12 +52,14 @@ const SettingOption = styled(Button)`
51
52
  text-align: left;
52
53
  display: flex;
53
54
  gap: var(--base-gap-small);
55
+ padding-right: var(--padding-s);
54
56
 
55
57
  .title {
56
58
  flex: 1;
57
59
  }
58
60
 
59
- .preview {
61
+ .preview,
62
+ .arrow {
60
63
  color: var(--md-sys-color-outline);
61
64
  }
62
65
  `;
@@ -79,7 +82,8 @@ const SettingsPanel = ({ settings }) => {
79
82
  children: [
80
83
  setting2.icon && /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { icon: setting2.icon }),
81
84
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "title", children: setting2.title }),
82
- !!((_a = setting2.preview) == null ? void 0 : _a.toString()) && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "preview", children: setting2.preview })
85
+ !!((_a = setting2.preview) == null ? void 0 : _a.toString()) && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "preview", children: setting2.preview }),
86
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { icon: "chevron_right", className: "arrow" })
83
87
  ]
84
88
  },
85
89
  setting2.id
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsPanel.es.js","sources":["../../../../../src/components/SettingsPanel/SettingsPanel.tsx"],"sourcesContent":["import { Button, Icon } from '@ynput/ayon-react-components'\nimport { FC, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport { SettingField, useSettingsPanel } from '@shared/context'\n\n// Side panel styled components\nconst SidePanel = styled.div<{ open: boolean }>`\n height: 100%;\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n border-radius: 4px;\n z-index: 10;\n display: flex;\n flex-direction: column;\n`\n\nconst PanelHeader = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 34px;\n padding: 0px 4px;\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n\n h3 {\n margin-left: 4px;\n padding: 0;\n }\n`\n\nconst ToolButton = styled(Button)`\n padding: 4px !important;\n`\n\nconst PanelTitle = styled.h3`\n margin: 0;\n flex: 1;\n`\n\nconst PanelContent = styled.div`\n padding: 8px;\n flex: 1;\n overflow-y: auto;\n`\n\nexport const SettingOption = styled(Button)`\n width: 100%;\n justify-content: flex-start;\n margin-bottom: 8px;\n text-align: left;\n display: flex;\n gap: var(--base-gap-small);\n\n .title {\n flex: 1;\n }\n\n .preview {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport interface SettingConfig {\n id: SettingField\n title: string\n component: ReactNode\n icon?: string\n preview?: string | number\n}\n\nexport interface SettingsPanelProps {\n settings: SettingConfig[]\n}\n\nexport const SettingsPanel: FC<SettingsPanelProps> = ({ settings }) => {\n const { isPanelOpen, selectedSetting, closePanel, backToMainMenu, selectSetting } =\n useSettingsPanel()\n\n const getPanelTitle = () => {\n if (!selectedSetting) return 'Settings'\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.title || 'Settings'\n }\n\n const renderSettingContent = () => {\n if (!selectedSetting) {\n // Render main menu\n return (\n <>\n {settings.map((setting) => (\n <SettingOption\n key={setting.id}\n onClick={() => selectSetting(setting.id)}\n variant=\"text\"\n >\n {setting.icon && <Icon icon={setting.icon} />}\n <span className=\"title\">{setting.title}</span>\n {!!setting.preview?.toString() && <span className=\"preview\">{setting.preview}</span>}\n </SettingOption>\n ))}\n </>\n )\n }\n\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.component\n }\n\n return (\n <SidePanel open={isPanelOpen}>\n <PanelHeader>\n {selectedSetting && settings.length > 1 && (\n <ToolButton variant=\"text\" icon=\"arrow_back\" onClick={backToMainMenu} />\n )}\n <PanelTitle>{getPanelTitle()}</PanelTitle>\n <ToolButton variant=\"text\" icon=\"close\" onClick={closePanel} />\n </PanelHeader>\n <PanelContent>{renderSettingContent()}</PanelContent>\n </SidePanel>\n )\n}\n"],"names":["jsx","Fragment","setting","jsxs"],"mappings":";;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUzB,MAAM,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAc3B,MAAM,aAAa,OAAO,MAAM;AAAA;AAAA;AAIhC,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAMf,MAAA,gBAAgB,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BnC,MAAM,gBAAwC,CAAC,EAAE,eAAe;AACrE,QAAM,EAAE,aAAa,iBAAiB,YAAY,gBAAgB,kBAChE,iBAAiB;AAEnB,QAAM,gBAAgB,MAAM;AACtB,QAAA,CAAC,gBAAwB,QAAA;AAC7B,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,YAAO,mCAAS,UAAS;AAAA,EAC3B;AAEA,QAAM,uBAAuB,MAAM;AACjC,QAAI,CAAC,iBAAiB;AAEpB,aAEKA,kCAAAA,IAAAC,kBAAAA,UAAA,EAAA,UAAA,SAAS,IAAI,CAACC;;AACbC,iDAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM,cAAcD,SAAQ,EAAE;AAAA,YACvC,SAAQ;AAAA,YAEP,UAAA;AAAA,cAAAA,SAAQ,QAAQF,sCAAC,MAAK,EAAA,MAAME,SAAQ,MAAM;AAAA,oDAC1C,QAAK,EAAA,WAAU,SAAS,UAAAA,SAAQ,OAAM;AAAA,cACtC,CAAC,GAACA,cAAQ,YAARA,mBAAiB,eAAeF,kCAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAAE,SAAQ,QAAQ,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UANxEA,SAAQ;AAAA,QAQhB;AAAA,OAAA,GACH;AAAA,IAAA;AAIJ,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,WAAO,mCAAS;AAAA,EAClB;AAGE,SAAAC,kCAAA,KAAC,WAAU,EAAA,MAAM,aACf,UAAA;AAAA,IAAAA,uCAAC,aACE,EAAA,UAAA;AAAA,MAAmB,mBAAA,SAAS,SAAS,KACnCH,kCAAA,IAAA,YAAA,EAAW,SAAQ,QAAO,MAAK,cAAa,SAAS,eAAgB,CAAA;AAAA,MAExEA,kCAAAA,IAAC,YAAY,EAAA,UAAA,cAAgB,EAAA,CAAA;AAAA,4CAC5B,YAAW,EAAA,SAAQ,QAAO,MAAK,SAAQ,SAAS,WAAY,CAAA;AAAA,IAAA,GAC/D;AAAA,IACAA,kCAAAA,IAAC,cAAc,EAAA,UAAA,qBAAA,EAAuB,CAAA;AAAA,EAAA,GACxC;AAEJ;"}
1
+ {"version":3,"file":"SettingsPanel.es.js","sources":["../../../../../src/components/SettingsPanel/SettingsPanel.tsx"],"sourcesContent":["import { Button, Icon } from '@ynput/ayon-react-components'\nimport { FC, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport { SettingField, useSettingsPanel } from '@shared/context'\n\n// Side panel styled components\nconst SidePanel = styled.div<{ open: boolean }>`\n height: 100%;\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n border-radius: 4px;\n z-index: 10;\n display: flex;\n flex-direction: column;\n`\n\nconst PanelHeader = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 34px;\n padding: 0px 4px;\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n\n h3 {\n margin-left: 4px;\n padding: 0;\n }\n`\n\nconst ToolButton = styled(Button)`\n padding: 4px !important;\n`\n\nconst PanelTitle = styled.h3`\n margin: 0;\n flex: 1;\n`\n\nconst PanelContent = styled.div`\n padding: 8px;\n flex: 1;\n overflow-y: auto;\n`\n\nexport const SettingOption = styled(Button)`\n width: 100%;\n justify-content: flex-start;\n margin-bottom: 8px;\n text-align: left;\n display: flex;\n gap: var(--base-gap-small);\n padding-right: var(--padding-s);\n\n .title {\n flex: 1;\n }\n\n .preview,\n .arrow {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport interface SettingConfig {\n id: SettingField\n title: string\n component: ReactNode\n icon?: string\n preview?: string | number\n}\n\nexport interface SettingsPanelProps {\n settings: SettingConfig[]\n}\n\nexport const SettingsPanel: FC<SettingsPanelProps> = ({ settings }) => {\n const { isPanelOpen, selectedSetting, closePanel, backToMainMenu, selectSetting } =\n useSettingsPanel()\n\n const getPanelTitle = () => {\n if (!selectedSetting) return 'Settings'\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.title || 'Settings'\n }\n\n const renderSettingContent = () => {\n if (!selectedSetting) {\n // Render main menu\n return (\n <>\n {settings.map((setting) => (\n <SettingOption\n key={setting.id}\n onClick={() => selectSetting(setting.id)}\n variant=\"text\"\n >\n {setting.icon && <Icon icon={setting.icon} />}\n <span className=\"title\">{setting.title}</span>\n {!!setting.preview?.toString() && <span className=\"preview\">{setting.preview}</span>}\n <Icon icon=\"chevron_right\" className=\"arrow\" />\n </SettingOption>\n ))}\n </>\n )\n }\n\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.component\n }\n\n return (\n <SidePanel open={isPanelOpen}>\n <PanelHeader>\n {selectedSetting && settings.length > 1 && (\n <ToolButton variant=\"text\" icon=\"arrow_back\" onClick={backToMainMenu} />\n )}\n <PanelTitle>{getPanelTitle()}</PanelTitle>\n <ToolButton variant=\"text\" icon=\"close\" onClick={closePanel} />\n </PanelHeader>\n <PanelContent>{renderSettingContent()}</PanelContent>\n </SidePanel>\n )\n}\n"],"names":["jsx","Fragment","setting","jsxs"],"mappings":";;;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUzB,MAAM,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAc3B,MAAM,aAAa,OAAO,MAAM;AAAA;AAAA;AAIhC,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAMf,MAAA,gBAAgB,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BnC,MAAM,gBAAwC,CAAC,EAAE,eAAe;AACrE,QAAM,EAAE,aAAa,iBAAiB,YAAY,gBAAgB,kBAChE,iBAAiB;AAEnB,QAAM,gBAAgB,MAAM;AACtB,QAAA,CAAC,gBAAwB,QAAA;AAC7B,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,YAAO,mCAAS,UAAS;AAAA,EAC3B;AAEA,QAAM,uBAAuB,MAAM;AACjC,QAAI,CAAC,iBAAiB;AAEpB,aAEKA,kCAAAA,IAAAC,kBAAAA,UAAA,EAAA,UAAA,SAAS,IAAI,CAACC;;AACbC,iDAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM,cAAcD,SAAQ,EAAE;AAAA,YACvC,SAAQ;AAAA,YAEP,UAAA;AAAA,cAAAA,SAAQ,QAAQF,sCAAC,MAAK,EAAA,MAAME,SAAQ,MAAM;AAAA,oDAC1C,QAAK,EAAA,WAAU,SAAS,UAAAA,SAAQ,OAAM;AAAA,cACtC,CAAC,GAACA,cAAQ,YAARA,mBAAiB,eAAeF,kCAAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAAE,SAAQ,QAAQ,CAAA;AAAA,cAC5EF,kCAAA,IAAA,MAAA,EAAK,MAAK,iBAAgB,WAAU,QAAQ,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAPxCE,SAAQ;AAAA,QAShB;AAAA,OAAA,GACH;AAAA,IAAA;AAIJ,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,WAAO,mCAAS;AAAA,EAClB;AAGE,SAAAC,kCAAA,KAAC,WAAU,EAAA,MAAM,aACf,UAAA;AAAA,IAAAA,uCAAC,aACE,EAAA,UAAA;AAAA,MAAmB,mBAAA,SAAS,SAAS,KACnCH,kCAAA,IAAA,YAAA,EAAW,SAAQ,QAAO,MAAK,cAAa,SAAS,eAAgB,CAAA;AAAA,MAExEA,kCAAAA,IAAC,YAAY,EAAA,UAAA,cAAgB,EAAA,CAAA;AAAA,4CAC5B,YAAW,EAAA,SAAQ,QAAO,MAAK,SAAQ,SAAS,WAAY,CAAA;AAAA,IAAA,GAC/D;AAAA,IACAA,kCAAAA,IAAC,cAAc,EAAA,UAAA,qBAAA,EAAuB,CAAA;AAAA,EAAA,GACxC;AAEJ;"}
@@ -20,6 +20,8 @@ const getDefaults = (fields, values) => {
20
20
  defaults[field.name] = 0;
21
21
  } else if (field.type === "text") {
22
22
  defaults[field.name] = "";
23
+ } else if (field.type === "multiselect") {
24
+ defaults[field.name] = [];
23
25
  }
24
26
  });
25
27
  return defaults;
@@ -110,6 +112,20 @@ const FormField = ({ field, value, onChange }) => {
110
112
  }
111
113
  );
112
114
  }
115
+ if (field.type === "multiselect") {
116
+ const parsedValue = Array.isArray(value) ? value : [];
117
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
118
+ ayonReactComponents.Dropdown,
119
+ {
120
+ widthExpand: true,
121
+ options: field.options || [],
122
+ value: parsedValue,
123
+ onSelectionChange: (e) => onChange(e),
124
+ className: `form-field`,
125
+ multiSelect: true
126
+ }
127
+ );
128
+ }
113
129
  };
114
130
  const SimpleFormDialog = ({
115
131
  fields,
@@ -152,8 +168,8 @@ const SimpleFormDialog = ({
152
168
  onClose,
153
169
  header: title,
154
170
  footer,
155
- style: { minHeight: 400, minWidth: 600 },
156
- children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.ScrollPanel, { style: { flexGrow: 1, background: "transparent" }, children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.FormLayout, { style: { width: "95%" }, children: fields.map((field) => {
171
+ style: { minHeight: 500, minWidth: 600 },
172
+ children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.FormLayout, { style: { width: "95%" }, children: fields.map((field) => {
157
173
  if (field.type === "label") {
158
174
  return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(FormLabel, { field }, field.name);
159
175
  }
@@ -170,7 +186,7 @@ const SimpleFormDialog = ({
170
186
  }
171
187
  }
172
188
  ) }, field.name);
173
- }) }) })
189
+ }) })
174
190
  }
175
191
  );
176
192
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleFormDialog.cjs.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n ScrollPanel,\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n} from '@ynput/ayon-react-components'\n\nimport type { SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n />\n )\n }\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && (\n <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />\n )}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 400, minWidth: 600 }}\n >\n <ScrollPanel style={{ flexGrow: 1, background: 'transparent' }}>\n <FormLayout style={{ width: '95%' }}>\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </ScrollPanel>\n </Dialog>\n )\n}\n"],"names":["jsx","InputText","InputSwitch","InputNumber","Dropdown","useState","useEffect","jsxs","Spacer","Button","Dialog","ScrollPanel","FormLayout","FormRow"],"mappings":";;;;;;;AAqBA,MAAM,cAAc,CAAC,QAA2B,WAAgC;AAC9E,QAAM,WAAgC,CAAC;AAChC,SAAA,QAAQ,CAAC,UAAU;AACpB,QAAA,MAAM,QAAQ,QAAQ;AACxB,eAAS,MAAM,IAAI,IAAI,OAAO,MAAM,IAAI;AAAA,IAAA,WAC/B,MAAM,OAAO;AACb,eAAA,MAAM,IAAI,IAAI,MAAM;AAAA,IAAA,WACpB,MAAM,SAAS,WAAW;AAC1B,eAAA,MAAM,IAAI,IAAI;AAAA,IAAA,WACd,MAAM,SAAS,WAAW;AAC1B,eAAA,MAAM,IAAI,IAAI;AAAA,IAAA,WACd,MAAM,SAAS,SAAS;AACxB,eAAA,MAAM,IAAI,IAAI;AAAA,IAAA,WACd,MAAM,SAAS,QAAQ;AACvB,eAAA,MAAM,IAAI,IAAI;AAAA,IAAA;AAAA,EACzB,CACD;AACM,SAAA;AACT;AAEA,MAAM,iBAAiB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6B9B,MAAM,YAAY,CAAC,EAAE,YAA4B;AAC/C,QAAM,OAAO,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ;AAG3D,SAAAA,2BAAA,kBAAA,IAAC,kBAAe,WAAW,MAAM,aAAa,UAC5C,UAAAA,2BAAAA,kBAAAA,IAAC,eAAe,EAAA,UAAA,KAAA,CAAK,EACvB,CAAA;AAEJ;AAQA,MAAM,YAAY,CAAC,EAAE,OAAO,OAAO,eAA+B;AAC5D,MAAA,MAAM,SAAS,QAAQ;AACzB,UAAM,cAAc,OAAO,UAAU,WAAW,QAAQ;AAEtD,WAAAA,2BAAA,kBAAA;AAAA,MAACC,oBAAA;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,QACxC,aAAa,MAAM,eAAe;AAAA,MAAA;AAAA,IACpC;AAAA,EAAA;AAGA,MAAA,MAAM,SAAS,WAAW;AAC5B,UAAM,cAAc,OAAO,UAAU,YAAY,QAAQ;AAEnD,UAAA,sBAAsB,CAC1B,UACG;AACH,UAAI,YAAY,SAAS,aAAa,MAAM,QAAQ;AACxC,iBAAA,MAAM,OAA4B,OAAO;AAAA,MAAA;AAAA,IAEvD;AAEA,WAAQD,2BAAAA,kBAAAA,IAAAE,oBAAAA,aAAA,EAAY,SAAS,aAAa,UAAU,qBAAqB;AAAA,EAAA;AAEvE,MAAA,MAAM,SAAS,WAAW;AAC5B,UAAM,cAAc,OAAO,UAAU,WAAW,QAAQ;AAEtD,WAAAF,2BAAA,kBAAA;AAAA,MAACG,oBAAA;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU,CAAC,MAAM,SAAS,SAAS,EAAE,OAAO,KAAK,CAAC;AAAA,QAClD,aAAa,MAAM,eAAe;AAAA,MAAA;AAAA,IACpC;AAAA,EAAA;AAGA,MAAA,MAAM,SAAS,SAAS;AAC1B,UAAM,cAAc,OAAO,UAAU,WAAW,QAAQ;AAEtD,WAAAH,2BAAA,kBAAA;AAAA,MAACG,oBAAA;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU,CAAC,MAAM,SAAS,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA,QACpD,aAAa,MAAM,eAAe;AAAA,MAAA;AAAA,IACpC;AAAA,EAAA;AAIA,MAAA,MAAM,SAAS,UAAU;AAC3B,UAAM,cAAc,OAAO,UAAU,WAAW,QAAQ;AAEtD,WAAAH,2BAAA,kBAAA;AAAA,MAACI,oBAAA;AAAA,MAAA;AAAA,QACC,aAAW;AAAA,QACX,SAAS,MAAM,WAAW,CAAC;AAAA,QAC3B,OAAO,cAAc,CAAC,WAAW,IAAI,CAAC;AAAA,QACtC,mBAAmB,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC;AAAA,QACvC,WAAW;AAAA,QACX,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,EAAA;AAGN;AAeO,MAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6B;AAC3B,QAAM,CAAC,UAAU,WAAW,IAAIC,MAAAA,SAAqC,IAAI;AAEzEC,QAAAA,UAAU,MAAM;AACd,QAAI,QAAQ;AACV,YAAM,WAAW,YAAY,QAAQ,UAAU,CAAA,CAAE;AACjD,kBAAY,QAAQ;AAAA,IAAA;AAAA,EAErB,GAAA,CAAC,QAAQ,QAAQ,MAAM,CAAC;AAEvB,MAAA,CAAC,OAAe,QAAA;AAChB,MAAA,CAAC,SAAiB,QAAA;AAEhB,QAAA,SACHC,2BAAA,kBAAA,KAAA,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,OAAO,KAAK,EAAA,GACxD,UAAA;AAAA,IAAAP,2BAAA,kBAAA,IAACQ,oBAAO,QAAA,EAAA;AAAA,IACP,eACER,2BAAA,kBAAA,IAAAS,4BAAA,EAAO,SAAS,MAAM,QAAW,GAAA,OAAO,aAAa,MAAM,WAAY,CAAA;AAAA,IAEzE,eACCT,2BAAA,kBAAA;AAAA,MAACS,oBAAA;AAAA,MAAA;AAAA,QACC,SAAS,MAAM,SAAS,QAAQ;AAAA,QAChC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,EACV,GAEJ;AAIA,SAAAT,2BAAA,kBAAA;AAAA,IAACU,oBAAA;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA,OAAO,EAAE,WAAW,KAAK,UAAU,IAAI;AAAA,MAEvC,2DAACC,oBAAY,aAAA,EAAA,OAAO,EAAE,UAAU,GAAG,YAAY,cAAc,GAC3D,2DAACC,gCAAW,EAAA,OAAO,EAAE,OAAO,SACzB,UAAO,OAAA,IAAI,CAAC,UAA2B;AAClC,YAAA,MAAM,SAAS,SAAS;AAC1B,iBAAQZ,2BAAAA,kBAAAA,IAAA,WAAA,EAA2B,MAAZ,GAAA,MAAM,IAAoB;AAAA,QAAA;AAGnD,eACGA,2BAAA,kBAAA,IAAAa,oBAAA,SAAA,EAAyB,OAAO,MAAM,SAAS,IAC9C,UAAAb,2BAAA,kBAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,OAAO,SAAS,MAAM,IAAI;AAAA,YAC1B,UAAU,CAAC,UAAU;AACnB,0BAAY,CAAC,UAAU;AAAA,gBACrB,GAAG;AAAA,gBACH,CAAC,MAAM,IAAI,GAAG;AAAA,cAAA,EACd;AAAA,YAAA;AAAA,UACJ;AAAA,QAAA,EACF,GAVY,MAAM,IAWpB;AAAA,MAEH,CAAA,EACH,CAAA,EACF,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ;;"}
1
+ {"version":3,"file":"SimpleFormDialog.cjs.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n ScrollPanel,\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n} from '@ynput/ayon-react-components'\n\nimport type { SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n } else if (field.type === 'multiselect') {\n defaults[field.name] = []\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n />\n )\n } // Handle select\n\n if (field.type === 'multiselect') {\n const parsedValue = Array.isArray(value) ? value : []\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue}\n onSelectionChange={(e) => onChange(e)}\n className={`form-field`}\n multiSelect={true}\n />\n )\n }\n\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && (\n <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />\n )}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 500, minWidth: 600 }}\n >\n <FormLayout style={{ width: '95%' }}>\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </Dialog>\n )\n}\n"],"names":["jsx","InputText","InputSwitch","InputNumber","Dropdown","useState","useEffect","jsxs","Spacer","Button","Dialog","FormLayout","FormRow"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { j as jsxRuntimeExports } from "../../../../_virtual/jsx-runtime.es.js";
2
2
  import styled from "styled-components";
3
3
  import { useState, useEffect } from "react";
4
4
  import ReactMarkdown from "react-markdown";
5
- import { Dialog, ScrollPanel, FormLayout, FormRow, Spacer, Button, InputText, InputSwitch, InputNumber, Dropdown } from "@ynput/ayon-react-components";
5
+ import { Dialog, FormLayout, FormRow, Spacer, Button, InputText, InputSwitch, InputNumber, Dropdown } from "@ynput/ayon-react-components";
6
6
  const getDefaults = (fields, values) => {
7
7
  const defaults = {};
8
8
  fields.forEach((field) => {
@@ -18,6 +18,8 @@ const getDefaults = (fields, values) => {
18
18
  defaults[field.name] = 0;
19
19
  } else if (field.type === "text") {
20
20
  defaults[field.name] = "";
21
+ } else if (field.type === "multiselect") {
22
+ defaults[field.name] = [];
21
23
  }
22
24
  });
23
25
  return defaults;
@@ -108,6 +110,20 @@ const FormField = ({ field, value, onChange }) => {
108
110
  }
109
111
  );
110
112
  }
113
+ if (field.type === "multiselect") {
114
+ const parsedValue = Array.isArray(value) ? value : [];
115
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
116
+ Dropdown,
117
+ {
118
+ widthExpand: true,
119
+ options: field.options || [],
120
+ value: parsedValue,
121
+ onSelectionChange: (e) => onChange(e),
122
+ className: `form-field`,
123
+ multiSelect: true
124
+ }
125
+ );
126
+ }
111
127
  };
112
128
  const SimpleFormDialog = ({
113
129
  fields,
@@ -150,8 +166,8 @@ const SimpleFormDialog = ({
150
166
  onClose,
151
167
  header: title,
152
168
  footer,
153
- style: { minHeight: 400, minWidth: 600 },
154
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollPanel, { style: { flexGrow: 1, background: "transparent" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FormLayout, { style: { width: "95%" }, children: fields.map((field) => {
169
+ style: { minHeight: 500, minWidth: 600 },
170
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(FormLayout, { style: { width: "95%" }, children: fields.map((field) => {
155
171
  if (field.type === "label") {
156
172
  return /* @__PURE__ */ jsxRuntimeExports.jsx(FormLabel, { field }, field.name);
157
173
  }
@@ -168,7 +184,7 @@ const SimpleFormDialog = ({
168
184
  }
169
185
  }
170
186
  ) }, field.name);
171
- }) }) })
187
+ }) })
172
188
  }
173
189
  );
174
190
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleFormDialog.es.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n ScrollPanel,\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n} from '@ynput/ayon-react-components'\n\nimport type { SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n />\n )\n }\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && (\n <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />\n )}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 400, minWidth: 600 }}\n >\n <ScrollPanel style={{ flexGrow: 1, background: 'transparent' }}>\n <FormLayout style={{ width: '95%' }}>\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </ScrollPanel>\n </Dialog>\n )\n}\n"],"names":["jsx","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"SimpleFormDialog.es.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n ScrollPanel,\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n} from '@ynput/ayon-react-components'\n\nimport type { SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n } else if (field.type === 'multiselect') {\n defaults[field.name] = []\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n />\n )\n } // Handle select\n\n if (field.type === 'multiselect') {\n const parsedValue = Array.isArray(value) ? value : []\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue}\n onSelectionChange={(e) => onChange(e)}\n className={`form-field`}\n multiSelect={true}\n />\n )\n }\n\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && (\n <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />\n )}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 500, minWidth: 600 }}\n >\n <FormLayout style={{ width: '95%' }}>\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </Dialog>\n )\n}\n"],"names":["jsx","jsxs"],"mappings":"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"}
@@ -14,6 +14,7 @@ require("react-dom");
14
14
  require("../../context/pip/PiPWrapper.cjs.js");
15
15
  require("../../context/AddonProjectContext.cjs.js");
16
16
  require("../../context/AddonContext.cjs.js");
17
+ require("../../context/PowerpackContext.cjs.js");
17
18
  const StackedStyled = styled.div`
18
19
  display: flex;
19
20
  z-index: 10;
@@ -1 +1 @@
1
- {"version":3,"file":"StackedThumbnails.cjs.js","sources":["../../../../../src/components/Thumbnail/StackedThumbnails.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport { Thumbnail } from './Thumbnail'\nimport clsx from 'clsx'\nimport { ThumbnailUploadContext } from '@shared/context'\nimport { ThumbnailProps } from '@shared/components'\n\ntype StackedStyledProps = {\n $length: number\n}\n\nconst StackedStyled = styled.div<StackedStyledProps>`\n display: flex;\n z-index: 10;\n height: 100%;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n min-width: min-content;\n cursor: pointer;\n\n &.stacking {\n & > * {\n margin: unset;\n aspect-ratio: 1;\n border: solid 2px var(--md-sys-color-outline-variant);\n border-radius: 8px;\n\n span {\n font-size: 24px;\n }\n\n ${({ $length }) =>\n $length > 1 &&\n css`\n :not(:last-child) {\n box-shadow: 0 0 4px 0px black;\n }\n `}\n }\n\n /* create stacked effect */\n & > * + * {\n margin-left: ${({ $length }) => `${Math.max(-20, -$length * 1.5 - 8)}px`};\n }\n\n .thumbnail img {\n object-fit: cover;\n }\n }\n`\n\ntype Thumbnail = {\n id?: string\n type?: string\n projectName?: string\n icon?: string\n updatedAt?: string\n src?: string\n}\n\nexport interface StackedThumbnailsProps\n extends Omit<ThumbnailProps, 'entityType' | 'entityId' | 'projectName'> {\n thumbnails?: Thumbnail[]\n isLoading?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\nexport const StackedThumbnails = ({\n thumbnails = [],\n isLoading,\n className,\n style,\n ...props\n}: StackedThumbnailsProps) => {\n const { onContextMenu } = useContext(ThumbnailUploadContext)\n // limit to 5 users\n thumbnails = thumbnails.slice(0, 5)\n const isStacking = thumbnails.length > 1\n\n if (!thumbnails.length) return null\n\n return (\n <StackedStyled\n $length={thumbnails.length}\n className={clsx('stacked-thumbnails', className, { stacking: isStacking })}\n >\n {thumbnails.map((thumb, i) =>\n thumb ? (\n <Thumbnail\n projectName={thumb.projectName}\n entityType={thumb.type}\n entityId={thumb.id}\n icon={thumb.icon}\n key={thumb.id || thumb.src || i}\n style={{ ...style, zIndex: -i }}\n entityUpdatedAt={thumb.updatedAt}\n isLoading={isLoading}\n src={thumb.src}\n // @ts-ignore\n onContextMenu={onContextMenu}\n {...props}\n />\n ) : null,\n )}\n </StackedStyled>\n )\n}\n"],"names":["css","useContext","ThumbnailUploadContext","jsx","Thumbnail"],"mappings":";;;;;;;;;;;;;;;;AAWA,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAqBrB,CAAC,EAAE,QAAQ,MACX,UAAU,KACVA,OAAA;AAAA;AAAA;AAAA;AAAA,SAIC;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKY,CAAC,EAAE,QAAQ,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BvE,MAAM,oBAAoB,CAAC;AAAA,EAChC,aAAa,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA8B;AAC5B,QAAM,EAAE,cAAA,IAAkBC,MAAA,WAAWC,+CAAsB;AAE9C,eAAA,WAAW,MAAM,GAAG,CAAC;AAC5B,QAAA,aAAa,WAAW,SAAS;AAEnC,MAAA,CAAC,WAAW,OAAe,QAAA;AAG7B,SAAAC,2BAAA,kBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB,WAAW,KAAK,sBAAsB,WAAW,EAAE,UAAU,YAAY;AAAA,MAExE,UAAW,WAAA;AAAA,QAAI,CAAC,OAAO,MACtB,QACEA,2BAAA,kBAAA;AAAA,UAACC,UAAA;AAAA,UAAA;AAAA,YACC,aAAa,MAAM;AAAA,YACnB,YAAY,MAAM;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,MAAM,MAAM;AAAA,YAEZ,OAAO,EAAE,GAAG,OAAO,QAAQ,CAAC,EAAE;AAAA,YAC9B,iBAAiB,MAAM;AAAA,YACvB;AAAA,YACA,KAAK,MAAM;AAAA,YAEX;AAAA,YACC,GAAG;AAAA,UAAA;AAAA,UAPC,MAAM,MAAM,MAAM,OAAO;AAAA,QAAA,IAS9B;AAAA,MAAA;AAAA,IACN;AAAA,EACF;AAEJ;;"}
1
+ {"version":3,"file":"StackedThumbnails.cjs.js","sources":["../../../../../src/components/Thumbnail/StackedThumbnails.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport { Thumbnail } from './Thumbnail'\nimport clsx from 'clsx'\nimport { ThumbnailUploadContext } from '@shared/context'\nimport { ThumbnailProps } from '@shared/components'\n\ntype StackedStyledProps = {\n $length: number\n}\n\nconst StackedStyled = styled.div<StackedStyledProps>`\n display: flex;\n z-index: 10;\n height: 100%;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n min-width: min-content;\n cursor: pointer;\n\n &.stacking {\n & > * {\n margin: unset;\n aspect-ratio: 1;\n border: solid 2px var(--md-sys-color-outline-variant);\n border-radius: 8px;\n\n span {\n font-size: 24px;\n }\n\n ${({ $length }) =>\n $length > 1 &&\n css`\n :not(:last-child) {\n box-shadow: 0 0 4px 0px black;\n }\n `}\n }\n\n /* create stacked effect */\n & > * + * {\n margin-left: ${({ $length }) => `${Math.max(-20, -$length * 1.5 - 8)}px`};\n }\n\n .thumbnail img {\n object-fit: cover;\n }\n }\n`\n\ntype Thumbnail = {\n id?: string\n type?: string\n projectName?: string\n icon?: string\n updatedAt?: string\n src?: string\n}\n\nexport interface StackedThumbnailsProps\n extends Omit<ThumbnailProps, 'entityType' | 'entityId' | 'projectName'> {\n thumbnails?: Thumbnail[]\n isLoading?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\nexport const StackedThumbnails = ({\n thumbnails = [],\n isLoading,\n className,\n style,\n ...props\n}: StackedThumbnailsProps) => {\n const { onContextMenu } = useContext(ThumbnailUploadContext)\n // limit to 5 users\n thumbnails = thumbnails.slice(0, 5)\n const isStacking = thumbnails.length > 1\n\n if (!thumbnails.length) return null\n\n return (\n <StackedStyled\n $length={thumbnails.length}\n className={clsx('stacked-thumbnails', className, { stacking: isStacking })}\n >\n {thumbnails.map((thumb, i) =>\n thumb ? (\n <Thumbnail\n projectName={thumb.projectName}\n entityType={thumb.type}\n entityId={thumb.id}\n icon={thumb.icon}\n key={thumb.id || thumb.src || i}\n style={{ ...style, zIndex: -i }}\n entityUpdatedAt={thumb.updatedAt}\n isLoading={isLoading}\n src={thumb.src}\n // @ts-ignore\n onContextMenu={onContextMenu}\n {...props}\n />\n ) : null,\n )}\n </StackedStyled>\n )\n}\n"],"names":["css","useContext","ThumbnailUploadContext","jsx","Thumbnail"],"mappings":";;;;;;;;;;;;;;;;;AAWA,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAqBrB,CAAC,EAAE,QAAQ,MACX,UAAU,KACVA,OAAA;AAAA;AAAA;AAAA;AAAA,SAIC;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKY,CAAC,EAAE,QAAQ,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BvE,MAAM,oBAAoB,CAAC;AAAA,EAChC,aAAa,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA8B;AAC5B,QAAM,EAAE,cAAA,IAAkBC,MAAA,WAAWC,+CAAsB;AAE9C,eAAA,WAAW,MAAM,GAAG,CAAC;AAC5B,QAAA,aAAa,WAAW,SAAS;AAEnC,MAAA,CAAC,WAAW,OAAe,QAAA;AAG7B,SAAAC,2BAAA,kBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB,WAAW,KAAK,sBAAsB,WAAW,EAAE,UAAU,YAAY;AAAA,MAExE,UAAW,WAAA;AAAA,QAAI,CAAC,OAAO,MACtB,QACEA,2BAAA,kBAAA;AAAA,UAACC,UAAA;AAAA,UAAA;AAAA,YACC,aAAa,MAAM;AAAA,YACnB,YAAY,MAAM;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,MAAM,MAAM;AAAA,YAEZ,OAAO,EAAE,GAAG,OAAO,QAAQ,CAAC,EAAE;AAAA,YAC9B,iBAAiB,MAAM;AAAA,YACvB;AAAA,YACA,KAAK,MAAM;AAAA,YAEX;AAAA,YACC,GAAG;AAAA,UAAA;AAAA,UAPC,MAAM,MAAM,MAAM,OAAO;AAAA,QAAA,IAS9B;AAAA,MAAA;AAAA,IACN;AAAA,EACF;AAEJ;;"}
@@ -12,6 +12,7 @@ import "react-dom";
12
12
  import "../../context/pip/PiPWrapper.es.js";
13
13
  import "../../context/AddonProjectContext.es.js";
14
14
  import "../../context/AddonContext.es.js";
15
+ import "../../context/PowerpackContext.es.js";
15
16
  const StackedStyled = styled.div`
16
17
  display: flex;
17
18
  z-index: 10;
@@ -1 +1 @@
1
- {"version":3,"file":"StackedThumbnails.es.js","sources":["../../../../../src/components/Thumbnail/StackedThumbnails.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport { Thumbnail } from './Thumbnail'\nimport clsx from 'clsx'\nimport { ThumbnailUploadContext } from '@shared/context'\nimport { ThumbnailProps } from '@shared/components'\n\ntype StackedStyledProps = {\n $length: number\n}\n\nconst StackedStyled = styled.div<StackedStyledProps>`\n display: flex;\n z-index: 10;\n height: 100%;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n min-width: min-content;\n cursor: pointer;\n\n &.stacking {\n & > * {\n margin: unset;\n aspect-ratio: 1;\n border: solid 2px var(--md-sys-color-outline-variant);\n border-radius: 8px;\n\n span {\n font-size: 24px;\n }\n\n ${({ $length }) =>\n $length > 1 &&\n css`\n :not(:last-child) {\n box-shadow: 0 0 4px 0px black;\n }\n `}\n }\n\n /* create stacked effect */\n & > * + * {\n margin-left: ${({ $length }) => `${Math.max(-20, -$length * 1.5 - 8)}px`};\n }\n\n .thumbnail img {\n object-fit: cover;\n }\n }\n`\n\ntype Thumbnail = {\n id?: string\n type?: string\n projectName?: string\n icon?: string\n updatedAt?: string\n src?: string\n}\n\nexport interface StackedThumbnailsProps\n extends Omit<ThumbnailProps, 'entityType' | 'entityId' | 'projectName'> {\n thumbnails?: Thumbnail[]\n isLoading?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\nexport const StackedThumbnails = ({\n thumbnails = [],\n isLoading,\n className,\n style,\n ...props\n}: StackedThumbnailsProps) => {\n const { onContextMenu } = useContext(ThumbnailUploadContext)\n // limit to 5 users\n thumbnails = thumbnails.slice(0, 5)\n const isStacking = thumbnails.length > 1\n\n if (!thumbnails.length) return null\n\n return (\n <StackedStyled\n $length={thumbnails.length}\n className={clsx('stacked-thumbnails', className, { stacking: isStacking })}\n >\n {thumbnails.map((thumb, i) =>\n thumb ? (\n <Thumbnail\n projectName={thumb.projectName}\n entityType={thumb.type}\n entityId={thumb.id}\n icon={thumb.icon}\n key={thumb.id || thumb.src || i}\n style={{ ...style, zIndex: -i }}\n entityUpdatedAt={thumb.updatedAt}\n isLoading={isLoading}\n src={thumb.src}\n // @ts-ignore\n onContextMenu={onContextMenu}\n {...props}\n />\n ) : null,\n )}\n </StackedStyled>\n )\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;AAWA,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAqBrB,CAAC,EAAE,QAAQ,MACX,UAAU,KACV;AAAA;AAAA;AAAA;AAAA,SAIC;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKY,CAAC,EAAE,QAAQ,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BvE,MAAM,oBAAoB,CAAC;AAAA,EAChC,aAAa,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA8B;AAC5B,QAAM,EAAE,cAAA,IAAkB,WAAW,sBAAsB;AAE9C,eAAA,WAAW,MAAM,GAAG,CAAC;AAC5B,QAAA,aAAa,WAAW,SAAS;AAEnC,MAAA,CAAC,WAAW,OAAe,QAAA;AAG7B,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB,WAAW,KAAK,sBAAsB,WAAW,EAAE,UAAU,YAAY;AAAA,MAExE,UAAW,WAAA;AAAA,QAAI,CAAC,OAAO,MACtB,QACEA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,aAAa,MAAM;AAAA,YACnB,YAAY,MAAM;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,MAAM,MAAM;AAAA,YAEZ,OAAO,EAAE,GAAG,OAAO,QAAQ,CAAC,EAAE;AAAA,YAC9B,iBAAiB,MAAM;AAAA,YACvB;AAAA,YACA,KAAK,MAAM;AAAA,YAEX;AAAA,YACC,GAAG;AAAA,UAAA;AAAA,UAPC,MAAM,MAAM,MAAM,OAAO;AAAA,QAAA,IAS9B;AAAA,MAAA;AAAA,IACN;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"StackedThumbnails.es.js","sources":["../../../../../src/components/Thumbnail/StackedThumbnails.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport { Thumbnail } from './Thumbnail'\nimport clsx from 'clsx'\nimport { ThumbnailUploadContext } from '@shared/context'\nimport { ThumbnailProps } from '@shared/components'\n\ntype StackedStyledProps = {\n $length: number\n}\n\nconst StackedStyled = styled.div<StackedStyledProps>`\n display: flex;\n z-index: 10;\n height: 100%;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n min-width: min-content;\n cursor: pointer;\n\n &.stacking {\n & > * {\n margin: unset;\n aspect-ratio: 1;\n border: solid 2px var(--md-sys-color-outline-variant);\n border-radius: 8px;\n\n span {\n font-size: 24px;\n }\n\n ${({ $length }) =>\n $length > 1 &&\n css`\n :not(:last-child) {\n box-shadow: 0 0 4px 0px black;\n }\n `}\n }\n\n /* create stacked effect */\n & > * + * {\n margin-left: ${({ $length }) => `${Math.max(-20, -$length * 1.5 - 8)}px`};\n }\n\n .thumbnail img {\n object-fit: cover;\n }\n }\n`\n\ntype Thumbnail = {\n id?: string\n type?: string\n projectName?: string\n icon?: string\n updatedAt?: string\n src?: string\n}\n\nexport interface StackedThumbnailsProps\n extends Omit<ThumbnailProps, 'entityType' | 'entityId' | 'projectName'> {\n thumbnails?: Thumbnail[]\n isLoading?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\nexport const StackedThumbnails = ({\n thumbnails = [],\n isLoading,\n className,\n style,\n ...props\n}: StackedThumbnailsProps) => {\n const { onContextMenu } = useContext(ThumbnailUploadContext)\n // limit to 5 users\n thumbnails = thumbnails.slice(0, 5)\n const isStacking = thumbnails.length > 1\n\n if (!thumbnails.length) return null\n\n return (\n <StackedStyled\n $length={thumbnails.length}\n className={clsx('stacked-thumbnails', className, { stacking: isStacking })}\n >\n {thumbnails.map((thumb, i) =>\n thumb ? (\n <Thumbnail\n projectName={thumb.projectName}\n entityType={thumb.type}\n entityId={thumb.id}\n icon={thumb.icon}\n key={thumb.id || thumb.src || i}\n style={{ ...style, zIndex: -i }}\n entityUpdatedAt={thumb.updatedAt}\n isLoading={isLoading}\n src={thumb.src}\n // @ts-ignore\n onContextMenu={onContextMenu}\n {...props}\n />\n ) : null,\n )}\n </StackedStyled>\n )\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAqBrB,CAAC,EAAE,QAAQ,MACX,UAAU,KACV;AAAA;AAAA;AAAA;AAAA,SAIC;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKY,CAAC,EAAE,QAAQ,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BvE,MAAM,oBAAoB,CAAC;AAAA,EAChC,aAAa,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA8B;AAC5B,QAAM,EAAE,cAAA,IAAkB,WAAW,sBAAsB;AAE9C,eAAA,WAAW,MAAM,GAAG,CAAC;AAC5B,QAAA,aAAa,WAAW,SAAS;AAEnC,MAAA,CAAC,WAAW,OAAe,QAAA;AAG7B,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB,WAAW,KAAK,sBAAsB,WAAW,EAAE,UAAU,YAAY;AAAA,MAExE,UAAW,WAAA;AAAA,QAAI,CAAC,OAAO,MACtB,QACEA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,aAAa,MAAM;AAAA,YACnB,YAAY,MAAM;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,MAAM,MAAM;AAAA,YAEZ,OAAO,EAAE,GAAG,OAAO,QAAQ,CAAC,EAAE;AAAA,YAC9B,iBAAiB,MAAM;AAAA,YACvB;AAAA,YACA,KAAK,MAAM;AAAA,YAEX;AAAA,YACC,GAAG;AAAA,UAAA;AAAA,UAPC,MAAM,MAAM,MAAM,OAAO;AAAA,QAAA,IAS9B;AAAA,MAAA;AAAA,IACN;AAAA,EACF;AAEJ;"}
@@ -91,6 +91,7 @@ require("react-dom");
91
91
  require("../../context/pip/PiPWrapper.cjs.js");
92
92
  require("../../context/AddonProjectContext.cjs.js");
93
93
  require("../../context/AddonContext.cjs.js");
94
+ require("../../context/PowerpackContext.cjs.js");
94
95
  require("../../components/ReviewableCard/ReviewableCard.cjs.js");
95
96
  require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");
96
97
  require("../../components/FileThumbnail/FileThumbnail.cjs.js");
@@ -134,6 +135,7 @@ require("../ProjectTreeTable/context/CellEditingContext.cjs.js");
134
135
  require("../ProjectTreeTable/context/ClipboardContext.cjs.js");
135
136
  require("../ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js");
136
137
  require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");
138
+ require("../ProjectTreeTable/context/ProjectTableModulesContext.cjs.js");
137
139
  require("@tanstack/react-table");
138
140
  require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");
139
141
  require("../ProjectTreeTable/widgets/DateWidget.cjs.js");
@@ -142,10 +144,12 @@ require("../ProjectTreeTable/widgets/TextWidget.cjs.js");
142
144
  require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");
143
145
  require("../ProjectTreeTable/widgets/CellWidget.cjs.js");
144
146
  require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");
147
+ require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");
145
148
  require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");
146
149
  require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");
147
150
  require("../ProjectTreeTable/components/SelectionCell.cjs.js");
148
151
  require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");
152
+ require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");
149
153
  require("../DetailsPanel/DetailsPanel.styled.cjs.js");
150
154
  require("../../../../_virtual/runtime.cjs.js");
151
155
  require("../../../../_virtual/semver.cjs.js");
@@ -167,10 +171,14 @@ require("../../components/EntityPath/SegmentProvider.cjs.js");
167
171
  require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");
168
172
  require("../../components/Watchers/Watchers.cjs.js");
169
173
  require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");
174
+ require("../../components/Powerpack/PowerpackButton.cjs.js");
175
+ require("../../components/Powerpack/PricingLink.cjs.js");
176
+ require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");
170
177
  require("../../components/SettingsPanel/SettingsPanel.cjs.js");
171
178
  require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");
172
179
  require("../../components/AttributeEditor/components/MinMaxField.cjs.js");
173
180
  require("../../components/EnumEditor/EnumEditor.styled.cjs.js");
181
+ require("../../components/SearchFilter/filterDates.cjs.js");
174
182
  const ActionConfigDialog = ({ action, onClose, context }) => {
175
183
  const requestParams = React.useMemo(() => {
176
184
  if (!action) return null;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionConfigDialog.cjs.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["useMemo","useSetActionConfigMutation","useGetActionConfigQuery","toast","jsx","SimpleFormDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,qBAAqB,CAAC,EAAE,QAAQ,SAAS,cAAuC;AACrF,QAAA,gBACJA,MAAAA,QAA+C,MAAM;AAC/C,QAAA,CAAC,OAAe,QAAA;AACpB,QAAI,EAAE,OAAO,aAAa,OAAO,cAAsB,QAAA;AAChD,WAAA;AAAA,MACL,WAAW,OAAO;AAAA,MAClB,cAAc,OAAO;AAAA,MACrB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,IACrB;AAAA,EAAA,GACC,CAAC,MAAM,CAAC;AAEP,QAAA,CAAC,eAAe,IAAIC,sCAA2B;AAIrD,QAAM,KAAU,EAAE,cAAc,SAAS,GAAI,iBAAiB,CAAA,EAAI;AAC5D,QAAA,EAAE,MAAM,eAAeC,WAAAA,wBAAwB,IAAI,EAAE,MAAM,CAAC,eAAe;AAIjF,MAAI,EAAE,eAAc,iCAAQ,iBAAgB,UAAU,gBAAgB;AAC7D,WAAA;AAAA,EAAA;AAGH,QAAA,eAAe,OAAO,SAAqB;AAC3C,QAAA;AACF,YAAM,gBAAgB;AAAA,QACpB,cAAc,EAAE,GAAG,SAAS,OAAO,KAAK;AAAA,QACxC,GAAG;AAAA,MACJ,CAAA,EAAE,OAAO;AACF,cAAA;AAAA,aACD,OAAO;AACN,cAAA,KAAK,4BAA4B,KAAK;AAC9CC,oBAAA,MAAM,MAAM,wCAAwC;AAAA,IAAA;AAAA,EAExD;AAGE,SAAAC,2BAAA,kBAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,QAAM;AAAA,MACN,OAAO,oBAAoB,OAAO,KAAK;AAAA,MACvC,QAAQ,OAAO;AAAA,MACf,QAAQ;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,YAAW;AAAA,MACX,YAAW;AAAA,IAAA;AAAA,EACb;AAEJ;;"}
1
+ {"version":3,"file":"ActionConfigDialog.cjs.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["useMemo","useSetActionConfigMutation","useGetActionConfigQuery","toast","jsx","SimpleFormDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,qBAAqB,CAAC,EAAE,QAAQ,SAAS,cAAuC;AACrF,QAAA,gBACJA,MAAAA,QAA+C,MAAM;AAC/C,QAAA,CAAC,OAAe,QAAA;AACpB,QAAI,EAAE,OAAO,aAAa,OAAO,cAAsB,QAAA;AAChD,WAAA;AAAA,MACL,WAAW,OAAO;AAAA,MAClB,cAAc,OAAO;AAAA,MACrB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,IACrB;AAAA,EAAA,GACC,CAAC,MAAM,CAAC;AAEP,QAAA,CAAC,eAAe,IAAIC,sCAA2B;AAIrD,QAAM,KAAU,EAAE,cAAc,SAAS,GAAI,iBAAiB,CAAA,EAAI;AAC5D,QAAA,EAAE,MAAM,eAAeC,WAAAA,wBAAwB,IAAI,EAAE,MAAM,CAAC,eAAe;AAIjF,MAAI,EAAE,eAAc,iCAAQ,iBAAgB,UAAU,gBAAgB;AAC7D,WAAA;AAAA,EAAA;AAGH,QAAA,eAAe,OAAO,SAAqB;AAC3C,QAAA;AACF,YAAM,gBAAgB;AAAA,QACpB,cAAc,EAAE,GAAG,SAAS,OAAO,KAAK;AAAA,QACxC,GAAG;AAAA,MACJ,CAAA,EAAE,OAAO;AACF,cAAA;AAAA,aACD,OAAO;AACN,cAAA,KAAK,4BAA4B,KAAK;AAC9CC,oBAAA,MAAM,MAAM,wCAAwC;AAAA,IAAA;AAAA,EAExD;AAGE,SAAAC,2BAAA,kBAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,QAAM;AAAA,MACN,OAAO,oBAAoB,OAAO,KAAK;AAAA,MACvC,QAAQ,OAAO;AAAA,MACf,QAAQ;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,YAAW;AAAA,MACX,YAAW;AAAA,IAAA;AAAA,EACb;AAEJ;;"}
@@ -89,6 +89,7 @@ import "react-dom";
89
89
  import "../../context/pip/PiPWrapper.es.js";
90
90
  import "../../context/AddonProjectContext.es.js";
91
91
  import "../../context/AddonContext.es.js";
92
+ import "../../context/PowerpackContext.es.js";
92
93
  import "../../components/ReviewableCard/ReviewableCard.es.js";
93
94
  import "../../components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js";
94
95
  import "../../components/FileThumbnail/FileThumbnail.es.js";
@@ -132,6 +133,7 @@ import "../ProjectTreeTable/context/CellEditingContext.es.js";
132
133
  import "../ProjectTreeTable/context/ClipboardContext.es.js";
133
134
  import "../ProjectTreeTable/context/ProjectTableSelectionContext.es.js";
134
135
  import "../ProjectTreeTable/context/ProjectDataContext.es.js";
136
+ import "../ProjectTreeTable/context/ProjectTableModulesContext.es.js";
135
137
  import "@tanstack/react-table";
136
138
  import "../ProjectTreeTable/widgets/CollapsedWidget.es.js";
137
139
  import "../ProjectTreeTable/widgets/DateWidget.es.js";
@@ -140,10 +142,12 @@ import "../ProjectTreeTable/widgets/TextWidget.es.js";
140
142
  import "../ProjectTreeTable/widgets/BooleanWidget.es.js";
141
143
  import "../ProjectTreeTable/widgets/CellWidget.es.js";
142
144
  import "../ProjectTreeTable/widgets/EntityNameWidget.es.js";
145
+ import "../ProjectTreeTable/widgets/GroupHeaderWidget.es.js";
143
146
  import "../ProjectTreeTable/widgets/ThumbnailWidget.es.js";
144
147
  import "../ProjectTreeTable/ProjectTreeTable.styled.es.js";
145
148
  import "../ProjectTreeTable/components/SelectionCell.es.js";
146
149
  import "../ProjectTreeTable/components/RowSelectionHeader.es.js";
150
+ import "../ProjectTreeTable/widgets/LoadMoreWidget.es.js";
147
151
  import "../DetailsPanel/DetailsPanel.styled.es.js";
148
152
  import "../../../../_virtual/runtime.es.js";
149
153
  import "../../../../_virtual/semver.es.js";
@@ -165,10 +169,14 @@ import "../../components/EntityPath/SegmentProvider.es.js";
165
169
  import "../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js";
166
170
  import "../../components/Watchers/Watchers.es.js";
167
171
  import "../../components/ProjectTableSettings/ProjectTableSettings.es.js";
172
+ import "../../components/Powerpack/PowerpackButton.es.js";
173
+ import "../../components/Powerpack/PricingLink.es.js";
174
+ import "../../components/Powerpack/PowerpackDialog.styled.es.js";
168
175
  import "../../components/SettingsPanel/SettingsPanel.es.js";
169
176
  import "../../components/SettingsPanel/SettingsPanelItemTemplate.es.js";
170
177
  import "../../components/AttributeEditor/components/MinMaxField.es.js";
171
178
  import "../../components/EnumEditor/EnumEditor.styled.es.js";
179
+ import "../../components/SearchFilter/filterDates.es.js";
172
180
  const ActionConfigDialog = ({ action, onClose, context }) => {
173
181
  const requestParams = useMemo(() => {
174
182
  if (!action) return null;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionConfigDialog.es.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,qBAAqB,CAAC,EAAE,QAAQ,SAAS,cAAuC;AACrF,QAAA,gBACJ,QAA+C,MAAM;AAC/C,QAAA,CAAC,OAAe,QAAA;AACpB,QAAI,EAAE,OAAO,aAAa,OAAO,cAAsB,QAAA;AAChD,WAAA;AAAA,MACL,WAAW,OAAO;AAAA,MAClB,cAAc,OAAO;AAAA,MACrB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,IACrB;AAAA,EAAA,GACC,CAAC,MAAM,CAAC;AAEP,QAAA,CAAC,eAAe,IAAI,2BAA2B;AAIrD,QAAM,KAAU,EAAE,cAAc,SAAS,GAAI,iBAAiB,CAAA,EAAI;AAC5D,QAAA,EAAE,MAAM,eAAe,wBAAwB,IAAI,EAAE,MAAM,CAAC,eAAe;AAIjF,MAAI,EAAE,eAAc,iCAAQ,iBAAgB,UAAU,gBAAgB;AAC7D,WAAA;AAAA,EAAA;AAGH,QAAA,eAAe,OAAO,SAAqB;AAC3C,QAAA;AACF,YAAM,gBAAgB;AAAA,QACpB,cAAc,EAAE,GAAG,SAAS,OAAO,KAAK;AAAA,QACxC,GAAG;AAAA,MACJ,CAAA,EAAE,OAAO;AACF,cAAA;AAAA,aACD,OAAO;AACN,cAAA,KAAK,4BAA4B,KAAK;AAC9C,YAAM,MAAM,wCAAwC;AAAA,IAAA;AAAA,EAExD;AAGE,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAM;AAAA,MACN,OAAO,oBAAoB,OAAO,KAAK;AAAA,MACvC,QAAQ,OAAO;AAAA,MACf,QAAQ;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,YAAW;AAAA,MACX,YAAW;AAAA,IAAA;AAAA,EACb;AAEJ;"}
1
+ {"version":3,"file":"ActionConfigDialog.es.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,qBAAqB,CAAC,EAAE,QAAQ,SAAS,cAAuC;AACrF,QAAA,gBACJ,QAA+C,MAAM;AAC/C,QAAA,CAAC,OAAe,QAAA;AACpB,QAAI,EAAE,OAAO,aAAa,OAAO,cAAsB,QAAA;AAChD,WAAA;AAAA,MACL,WAAW,OAAO;AAAA,MAClB,cAAc,OAAO;AAAA,MACrB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,IACrB;AAAA,EAAA,GACC,CAAC,MAAM,CAAC;AAEP,QAAA,CAAC,eAAe,IAAI,2BAA2B;AAIrD,QAAM,KAAU,EAAE,cAAc,SAAS,GAAI,iBAAiB,CAAA,EAAI;AAC5D,QAAA,EAAE,MAAM,eAAe,wBAAwB,IAAI,EAAE,MAAM,CAAC,eAAe;AAIjF,MAAI,EAAE,eAAc,iCAAQ,iBAAgB,UAAU,gBAAgB;AAC7D,WAAA;AAAA,EAAA;AAGH,QAAA,eAAe,OAAO,SAAqB;AAC3C,QAAA;AACF,YAAM,gBAAgB;AAAA,QACpB,cAAc,EAAE,GAAG,SAAS,OAAO,KAAK;AAAA,QACxC,GAAG;AAAA,MACJ,CAAA,EAAE,OAAO;AACF,cAAA;AAAA,aACD,OAAO;AACN,cAAA,KAAK,4BAA4B,KAAK;AAC9C,YAAM,MAAM,wCAAwC;AAAA,IAAA;AAAA,EAExD;AAGE,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAM;AAAA,MACN,OAAO,oBAAoB,OAAO,KAAK;AAAA,MACvC,QAAQ,OAAO;AAAA,MACf,QAAQ;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,YAAW;AAAA,MACX,YAAW;AAAA,IAAA;AAAA,EACb;AAEJ;"}
@@ -84,6 +84,7 @@ require("react-dom");
84
84
  require("../../context/pip/PiPWrapper.cjs.js");
85
85
  require("../../context/AddonProjectContext.cjs.js");
86
86
  require("../../context/AddonContext.cjs.js");
87
+ require("../../context/PowerpackContext.cjs.js");
87
88
  const useActionTriggers = require("../../hooks/useActionTriggers.cjs.js");
88
89
  const ActionConfigDialog = require("./ActionConfigDialog.cjs.js");
89
90
  const InteractiveActionDialog = require("./InteractiveActionDialog.cjs.js");
@@ -111,6 +112,7 @@ const Actions = ({
111
112
  const context = React.useMemo(() => {
112
113
  if (projectActionsProjectName) {
113
114
  return {
115
+ entityType: "project",
114
116
  projectName: projectActionsProjectName
115
117
  };
116
118
  }