@ynput/ayon-frontend-shared 0.2.7 → 0.2.9

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 (929) hide show
  1. package/dist/DetailsPanel.cjs.js +4 -0
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +4 -0
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/ProjectTreeTable.cjs.js +11 -0
  6. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  7. package/dist/ProjectTreeTable.es.js +12 -1
  8. package/dist/ProjectTreeTable.es.js.map +1 -1
  9. package/dist/api.cjs.js +5 -0
  10. package/dist/api.cjs.js.map +1 -1
  11. package/dist/api.es.js +6 -1
  12. package/dist/api.es.js.map +1 -1
  13. package/dist/context.cjs.js +6 -0
  14. package/dist/context.cjs.js.map +1 -1
  15. package/dist/context.es.js +6 -0
  16. package/dist/context.es.js.map +1 -1
  17. package/dist/hooks.cjs.js +2 -0
  18. package/dist/hooks.cjs.js.map +1 -1
  19. package/dist/hooks.es.js +3 -1
  20. package/dist/hooks.es.js.map +1 -1
  21. package/dist/index.cjs.js +4 -0
  22. package/dist/index.cjs.js.map +1 -1
  23. package/dist/index.es.js +4 -0
  24. package/dist/index.es.js.map +1 -1
  25. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.cjs.js +1 -1
  26. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.cjs.js.map +1 -1
  27. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.es.js +1 -1
  28. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.es.js.map +1 -1
  29. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js +12 -12
  30. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js.map +1 -1
  31. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js +12 -12
  32. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js.map +1 -1
  33. package/dist/node_modules/decode-named-character-reference/index.dom.cjs.js +7 -3
  34. package/dist/node_modules/decode-named-character-reference/index.dom.cjs.js.map +1 -1
  35. package/dist/node_modules/decode-named-character-reference/index.dom.es.js +7 -3
  36. package/dist/node_modules/decode-named-character-reference/index.dom.es.js.map +1 -1
  37. package/dist/node_modules/graphql/language/visitor.cjs.js +1 -4
  38. package/dist/node_modules/graphql/language/visitor.cjs.js.map +1 -1
  39. package/dist/node_modules/graphql/language/visitor.es.js +1 -4
  40. package/dist/node_modules/graphql/language/visitor.es.js.map +1 -1
  41. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +17 -11
  42. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js.map +1 -1
  43. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +17 -11
  44. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js.map +1 -1
  45. package/dist/node_modules/parse-entities/lib/index.cjs.js +26 -24
  46. package/dist/node_modules/parse-entities/lib/index.cjs.js.map +1 -1
  47. package/dist/node_modules/parse-entities/lib/index.es.js +26 -24
  48. package/dist/node_modules/parse-entities/lib/index.es.js.map +1 -1
  49. package/dist/node_modules/react-intersection-observer/{index.cjs.js → dist/index.cjs.js} +4 -10
  50. package/dist/node_modules/react-intersection-observer/dist/index.cjs.js.map +1 -0
  51. package/dist/node_modules/react-intersection-observer/{index.es.js → dist/index.es.js} +4 -10
  52. package/dist/node_modules/react-intersection-observer/dist/index.es.js.map +1 -0
  53. package/dist/node_modules/refractor/lang/abap.cjs.js.map +1 -1
  54. package/dist/node_modules/refractor/lang/abap.es.js.map +1 -1
  55. package/dist/node_modules/refractor/lang/abnf.cjs.js.map +1 -1
  56. package/dist/node_modules/refractor/lang/abnf.es.js.map +1 -1
  57. package/dist/node_modules/refractor/lang/actionscript.cjs.js.map +1 -1
  58. package/dist/node_modules/refractor/lang/actionscript.es.js.map +1 -1
  59. package/dist/node_modules/refractor/lang/ada.cjs.js.map +1 -1
  60. package/dist/node_modules/refractor/lang/ada.es.js.map +1 -1
  61. package/dist/node_modules/refractor/lang/agda.cjs.js.map +1 -1
  62. package/dist/node_modules/refractor/lang/agda.es.js.map +1 -1
  63. package/dist/node_modules/refractor/lang/al.cjs.js.map +1 -1
  64. package/dist/node_modules/refractor/lang/al.es.js.map +1 -1
  65. package/dist/node_modules/refractor/lang/antlr4.cjs.js.map +1 -1
  66. package/dist/node_modules/refractor/lang/antlr4.es.js.map +1 -1
  67. package/dist/node_modules/refractor/lang/apacheconf.cjs.js.map +1 -1
  68. package/dist/node_modules/refractor/lang/apacheconf.es.js.map +1 -1
  69. package/dist/node_modules/refractor/lang/apex.cjs.js.map +1 -1
  70. package/dist/node_modules/refractor/lang/apex.es.js.map +1 -1
  71. package/dist/node_modules/refractor/lang/apl.cjs.js.map +1 -1
  72. package/dist/node_modules/refractor/lang/apl.es.js.map +1 -1
  73. package/dist/node_modules/refractor/lang/applescript.cjs.js.map +1 -1
  74. package/dist/node_modules/refractor/lang/applescript.es.js.map +1 -1
  75. package/dist/node_modules/refractor/lang/aql.cjs.js.map +1 -1
  76. package/dist/node_modules/refractor/lang/aql.es.js.map +1 -1
  77. package/dist/node_modules/refractor/lang/arduino.cjs.js.map +1 -1
  78. package/dist/node_modules/refractor/lang/arduino.es.js.map +1 -1
  79. package/dist/node_modules/refractor/lang/arff.cjs.js.map +1 -1
  80. package/dist/node_modules/refractor/lang/arff.es.js.map +1 -1
  81. package/dist/node_modules/refractor/lang/armasm.cjs.js.map +1 -1
  82. package/dist/node_modules/refractor/lang/armasm.es.js.map +1 -1
  83. package/dist/node_modules/refractor/lang/arturo.cjs.js.map +1 -1
  84. package/dist/node_modules/refractor/lang/arturo.es.js.map +1 -1
  85. package/dist/node_modules/refractor/lang/asciidoc.cjs.js.map +1 -1
  86. package/dist/node_modules/refractor/lang/asciidoc.es.js.map +1 -1
  87. package/dist/node_modules/refractor/lang/asm6502.cjs.js.map +1 -1
  88. package/dist/node_modules/refractor/lang/asm6502.es.js.map +1 -1
  89. package/dist/node_modules/refractor/lang/asmatmel.cjs.js.map +1 -1
  90. package/dist/node_modules/refractor/lang/asmatmel.es.js.map +1 -1
  91. package/dist/node_modules/refractor/lang/aspnet.cjs.js.map +1 -1
  92. package/dist/node_modules/refractor/lang/aspnet.es.js.map +1 -1
  93. package/dist/node_modules/refractor/lang/autohotkey.cjs.js.map +1 -1
  94. package/dist/node_modules/refractor/lang/autohotkey.es.js.map +1 -1
  95. package/dist/node_modules/refractor/lang/autoit.cjs.js.map +1 -1
  96. package/dist/node_modules/refractor/lang/autoit.es.js.map +1 -1
  97. package/dist/node_modules/refractor/lang/avisynth.cjs.js.map +1 -1
  98. package/dist/node_modules/refractor/lang/avisynth.es.js.map +1 -1
  99. package/dist/node_modules/refractor/lang/avro-idl.cjs.js.map +1 -1
  100. package/dist/node_modules/refractor/lang/avro-idl.es.js.map +1 -1
  101. package/dist/node_modules/refractor/lang/awk.cjs.js.map +1 -1
  102. package/dist/node_modules/refractor/lang/awk.es.js.map +1 -1
  103. package/dist/node_modules/refractor/lang/bash.cjs.js.map +1 -1
  104. package/dist/node_modules/refractor/lang/bash.es.js.map +1 -1
  105. package/dist/node_modules/refractor/lang/basic.cjs.js.map +1 -1
  106. package/dist/node_modules/refractor/lang/basic.es.js.map +1 -1
  107. package/dist/node_modules/refractor/lang/batch.cjs.js.map +1 -1
  108. package/dist/node_modules/refractor/lang/batch.es.js.map +1 -1
  109. package/dist/node_modules/refractor/lang/bbcode.cjs.js.map +1 -1
  110. package/dist/node_modules/refractor/lang/bbcode.es.js.map +1 -1
  111. package/dist/node_modules/refractor/lang/bbj.cjs.js.map +1 -1
  112. package/dist/node_modules/refractor/lang/bbj.es.js.map +1 -1
  113. package/dist/node_modules/refractor/lang/bicep.cjs.js.map +1 -1
  114. package/dist/node_modules/refractor/lang/bicep.es.js.map +1 -1
  115. package/dist/node_modules/refractor/lang/birb.cjs.js.map +1 -1
  116. package/dist/node_modules/refractor/lang/birb.es.js.map +1 -1
  117. package/dist/node_modules/refractor/lang/bison.cjs.js.map +1 -1
  118. package/dist/node_modules/refractor/lang/bison.es.js.map +1 -1
  119. package/dist/node_modules/refractor/lang/bnf.cjs.js.map +1 -1
  120. package/dist/node_modules/refractor/lang/bnf.es.js.map +1 -1
  121. package/dist/node_modules/refractor/lang/bqn.cjs.js.map +1 -1
  122. package/dist/node_modules/refractor/lang/bqn.es.js.map +1 -1
  123. package/dist/node_modules/refractor/lang/brainfuck.cjs.js.map +1 -1
  124. package/dist/node_modules/refractor/lang/brainfuck.es.js.map +1 -1
  125. package/dist/node_modules/refractor/lang/brightscript.cjs.js.map +1 -1
  126. package/dist/node_modules/refractor/lang/brightscript.es.js.map +1 -1
  127. package/dist/node_modules/refractor/lang/bro.cjs.js.map +1 -1
  128. package/dist/node_modules/refractor/lang/bro.es.js.map +1 -1
  129. package/dist/node_modules/refractor/lang/bsl.cjs.js.map +1 -1
  130. package/dist/node_modules/refractor/lang/bsl.es.js.map +1 -1
  131. package/dist/node_modules/refractor/lang/c.cjs.js.map +1 -1
  132. package/dist/node_modules/refractor/lang/c.es.js.map +1 -1
  133. package/dist/node_modules/refractor/lang/cfscript.cjs.js.map +1 -1
  134. package/dist/node_modules/refractor/lang/cfscript.es.js.map +1 -1
  135. package/dist/node_modules/refractor/lang/chaiscript.cjs.js.map +1 -1
  136. package/dist/node_modules/refractor/lang/chaiscript.es.js.map +1 -1
  137. package/dist/node_modules/refractor/lang/cil.cjs.js.map +1 -1
  138. package/dist/node_modules/refractor/lang/cil.es.js.map +1 -1
  139. package/dist/node_modules/refractor/lang/cilkc.cjs.js.map +1 -1
  140. package/dist/node_modules/refractor/lang/cilkc.es.js.map +1 -1
  141. package/dist/node_modules/refractor/lang/cilkcpp.cjs.js.map +1 -1
  142. package/dist/node_modules/refractor/lang/cilkcpp.es.js.map +1 -1
  143. package/dist/node_modules/refractor/lang/clike.cjs.js.map +1 -1
  144. package/dist/node_modules/refractor/lang/clike.es.js.map +1 -1
  145. package/dist/node_modules/refractor/lang/clojure.cjs.js.map +1 -1
  146. package/dist/node_modules/refractor/lang/clojure.es.js.map +1 -1
  147. package/dist/node_modules/refractor/lang/cmake.cjs.js.map +1 -1
  148. package/dist/node_modules/refractor/lang/cmake.es.js.map +1 -1
  149. package/dist/node_modules/refractor/lang/cobol.cjs.js.map +1 -1
  150. package/dist/node_modules/refractor/lang/cobol.es.js.map +1 -1
  151. package/dist/node_modules/refractor/lang/coffeescript.cjs.js.map +1 -1
  152. package/dist/node_modules/refractor/lang/coffeescript.es.js.map +1 -1
  153. package/dist/node_modules/refractor/lang/concurnas.cjs.js.map +1 -1
  154. package/dist/node_modules/refractor/lang/concurnas.es.js.map +1 -1
  155. package/dist/node_modules/refractor/lang/cooklang.cjs.js.map +1 -1
  156. package/dist/node_modules/refractor/lang/cooklang.es.js.map +1 -1
  157. package/dist/node_modules/refractor/lang/coq.cjs.js.map +1 -1
  158. package/dist/node_modules/refractor/lang/coq.es.js.map +1 -1
  159. package/dist/node_modules/refractor/lang/cpp.cjs.js.map +1 -1
  160. package/dist/node_modules/refractor/lang/cpp.es.js.map +1 -1
  161. package/dist/node_modules/refractor/lang/crystal.cjs.js.map +1 -1
  162. package/dist/node_modules/refractor/lang/crystal.es.js.map +1 -1
  163. package/dist/node_modules/refractor/lang/csharp.cjs.js.map +1 -1
  164. package/dist/node_modules/refractor/lang/csharp.es.js.map +1 -1
  165. package/dist/node_modules/refractor/lang/cshtml.cjs.js.map +1 -1
  166. package/dist/node_modules/refractor/lang/cshtml.es.js.map +1 -1
  167. package/dist/node_modules/refractor/lang/csp.cjs.js.map +1 -1
  168. package/dist/node_modules/refractor/lang/csp.es.js.map +1 -1
  169. package/dist/node_modules/refractor/lang/css-extras.cjs.js.map +1 -1
  170. package/dist/node_modules/refractor/lang/css-extras.es.js.map +1 -1
  171. package/dist/node_modules/refractor/lang/css.cjs.js.map +1 -1
  172. package/dist/node_modules/refractor/lang/css.es.js.map +1 -1
  173. package/dist/node_modules/refractor/lang/csv.cjs.js.map +1 -1
  174. package/dist/node_modules/refractor/lang/csv.es.js.map +1 -1
  175. package/dist/node_modules/refractor/lang/cue.cjs.js.map +1 -1
  176. package/dist/node_modules/refractor/lang/cue.es.js.map +1 -1
  177. package/dist/node_modules/refractor/lang/cypher.cjs.js.map +1 -1
  178. package/dist/node_modules/refractor/lang/cypher.es.js.map +1 -1
  179. package/dist/node_modules/refractor/lang/d.cjs.js.map +1 -1
  180. package/dist/node_modules/refractor/lang/d.es.js.map +1 -1
  181. package/dist/node_modules/refractor/lang/dart.cjs.js.map +1 -1
  182. package/dist/node_modules/refractor/lang/dart.es.js.map +1 -1
  183. package/dist/node_modules/refractor/lang/dataweave.cjs.js.map +1 -1
  184. package/dist/node_modules/refractor/lang/dataweave.es.js.map +1 -1
  185. package/dist/node_modules/refractor/lang/dax.cjs.js.map +1 -1
  186. package/dist/node_modules/refractor/lang/dax.es.js.map +1 -1
  187. package/dist/node_modules/refractor/lang/dhall.cjs.js.map +1 -1
  188. package/dist/node_modules/refractor/lang/dhall.es.js.map +1 -1
  189. package/dist/node_modules/refractor/lang/diff.cjs.js.map +1 -1
  190. package/dist/node_modules/refractor/lang/diff.es.js.map +1 -1
  191. package/dist/node_modules/refractor/lang/django.cjs.js.map +1 -1
  192. package/dist/node_modules/refractor/lang/django.es.js.map +1 -1
  193. package/dist/node_modules/refractor/lang/dns-zone-file.cjs.js.map +1 -1
  194. package/dist/node_modules/refractor/lang/dns-zone-file.es.js.map +1 -1
  195. package/dist/node_modules/refractor/lang/docker.cjs.js.map +1 -1
  196. package/dist/node_modules/refractor/lang/docker.es.js.map +1 -1
  197. package/dist/node_modules/refractor/lang/dot.cjs.js.map +1 -1
  198. package/dist/node_modules/refractor/lang/dot.es.js.map +1 -1
  199. package/dist/node_modules/refractor/lang/ebnf.cjs.js.map +1 -1
  200. package/dist/node_modules/refractor/lang/ebnf.es.js.map +1 -1
  201. package/dist/node_modules/refractor/lang/editorconfig.cjs.js.map +1 -1
  202. package/dist/node_modules/refractor/lang/editorconfig.es.js.map +1 -1
  203. package/dist/node_modules/refractor/lang/eiffel.cjs.js.map +1 -1
  204. package/dist/node_modules/refractor/lang/eiffel.es.js.map +1 -1
  205. package/dist/node_modules/refractor/lang/ejs.cjs.js.map +1 -1
  206. package/dist/node_modules/refractor/lang/ejs.es.js.map +1 -1
  207. package/dist/node_modules/refractor/lang/elixir.cjs.js.map +1 -1
  208. package/dist/node_modules/refractor/lang/elixir.es.js.map +1 -1
  209. package/dist/node_modules/refractor/lang/elm.cjs.js.map +1 -1
  210. package/dist/node_modules/refractor/lang/elm.es.js.map +1 -1
  211. package/dist/node_modules/refractor/lang/erb.cjs.js.map +1 -1
  212. package/dist/node_modules/refractor/lang/erb.es.js.map +1 -1
  213. package/dist/node_modules/refractor/lang/erlang.cjs.js.map +1 -1
  214. package/dist/node_modules/refractor/lang/erlang.es.js.map +1 -1
  215. package/dist/node_modules/refractor/lang/etlua.cjs.js.map +1 -1
  216. package/dist/node_modules/refractor/lang/etlua.es.js.map +1 -1
  217. package/dist/node_modules/refractor/lang/excel-formula.cjs.js.map +1 -1
  218. package/dist/node_modules/refractor/lang/excel-formula.es.js.map +1 -1
  219. package/dist/node_modules/refractor/lang/factor.cjs.js.map +1 -1
  220. package/dist/node_modules/refractor/lang/factor.es.js.map +1 -1
  221. package/dist/node_modules/refractor/lang/false.cjs.js.map +1 -1
  222. package/dist/node_modules/refractor/lang/false.es.js.map +1 -1
  223. package/dist/node_modules/refractor/lang/firestore-security-rules.cjs.js.map +1 -1
  224. package/dist/node_modules/refractor/lang/firestore-security-rules.es.js.map +1 -1
  225. package/dist/node_modules/refractor/lang/flow.cjs.js.map +1 -1
  226. package/dist/node_modules/refractor/lang/flow.es.js.map +1 -1
  227. package/dist/node_modules/refractor/lang/fortran.cjs.js.map +1 -1
  228. package/dist/node_modules/refractor/lang/fortran.es.js.map +1 -1
  229. package/dist/node_modules/refractor/lang/fsharp.cjs.js.map +1 -1
  230. package/dist/node_modules/refractor/lang/fsharp.es.js.map +1 -1
  231. package/dist/node_modules/refractor/lang/ftl.cjs.js.map +1 -1
  232. package/dist/node_modules/refractor/lang/ftl.es.js.map +1 -1
  233. package/dist/node_modules/refractor/lang/gap.cjs.js.map +1 -1
  234. package/dist/node_modules/refractor/lang/gap.es.js.map +1 -1
  235. package/dist/node_modules/refractor/lang/gcode.cjs.js.map +1 -1
  236. package/dist/node_modules/refractor/lang/gcode.es.js.map +1 -1
  237. package/dist/node_modules/refractor/lang/gdscript.cjs.js.map +1 -1
  238. package/dist/node_modules/refractor/lang/gdscript.es.js.map +1 -1
  239. package/dist/node_modules/refractor/lang/gedcom.cjs.js.map +1 -1
  240. package/dist/node_modules/refractor/lang/gedcom.es.js.map +1 -1
  241. package/dist/node_modules/refractor/lang/gettext.cjs.js.map +1 -1
  242. package/dist/node_modules/refractor/lang/gettext.es.js.map +1 -1
  243. package/dist/node_modules/refractor/lang/gherkin.cjs.js.map +1 -1
  244. package/dist/node_modules/refractor/lang/gherkin.es.js.map +1 -1
  245. package/dist/node_modules/refractor/lang/git.cjs.js.map +1 -1
  246. package/dist/node_modules/refractor/lang/git.es.js.map +1 -1
  247. package/dist/node_modules/refractor/lang/glsl.cjs.js.map +1 -1
  248. package/dist/node_modules/refractor/lang/glsl.es.js.map +1 -1
  249. package/dist/node_modules/refractor/lang/gml.cjs.js.map +1 -1
  250. package/dist/node_modules/refractor/lang/gml.es.js.map +1 -1
  251. package/dist/node_modules/refractor/lang/gn.cjs.js.map +1 -1
  252. package/dist/node_modules/refractor/lang/gn.es.js.map +1 -1
  253. package/dist/node_modules/refractor/lang/go-module.cjs.js.map +1 -1
  254. package/dist/node_modules/refractor/lang/go-module.es.js.map +1 -1
  255. package/dist/node_modules/refractor/lang/go.cjs.js.map +1 -1
  256. package/dist/node_modules/refractor/lang/go.es.js.map +1 -1
  257. package/dist/node_modules/refractor/lang/gradle.cjs.js.map +1 -1
  258. package/dist/node_modules/refractor/lang/gradle.es.js.map +1 -1
  259. package/dist/node_modules/refractor/lang/graphql.cjs.js.map +1 -1
  260. package/dist/node_modules/refractor/lang/graphql.es.js.map +1 -1
  261. package/dist/node_modules/refractor/lang/groovy.cjs.js.map +1 -1
  262. package/dist/node_modules/refractor/lang/groovy.es.js.map +1 -1
  263. package/dist/node_modules/refractor/lang/haml.cjs.js.map +1 -1
  264. package/dist/node_modules/refractor/lang/haml.es.js.map +1 -1
  265. package/dist/node_modules/refractor/lang/handlebars.cjs.js.map +1 -1
  266. package/dist/node_modules/refractor/lang/handlebars.es.js.map +1 -1
  267. package/dist/node_modules/refractor/lang/haskell.cjs.js.map +1 -1
  268. package/dist/node_modules/refractor/lang/haskell.es.js.map +1 -1
  269. package/dist/node_modules/refractor/lang/haxe.cjs.js.map +1 -1
  270. package/dist/node_modules/refractor/lang/haxe.es.js.map +1 -1
  271. package/dist/node_modules/refractor/lang/hcl.cjs.js.map +1 -1
  272. package/dist/node_modules/refractor/lang/hcl.es.js.map +1 -1
  273. package/dist/node_modules/refractor/lang/hlsl.cjs.js.map +1 -1
  274. package/dist/node_modules/refractor/lang/hlsl.es.js.map +1 -1
  275. package/dist/node_modules/refractor/lang/hoon.cjs.js.map +1 -1
  276. package/dist/node_modules/refractor/lang/hoon.es.js.map +1 -1
  277. package/dist/node_modules/refractor/lang/hpkp.cjs.js.map +1 -1
  278. package/dist/node_modules/refractor/lang/hpkp.es.js.map +1 -1
  279. package/dist/node_modules/refractor/lang/hsts.cjs.js.map +1 -1
  280. package/dist/node_modules/refractor/lang/hsts.es.js.map +1 -1
  281. package/dist/node_modules/refractor/lang/http.cjs.js.map +1 -1
  282. package/dist/node_modules/refractor/lang/http.es.js.map +1 -1
  283. package/dist/node_modules/refractor/lang/ichigojam.cjs.js.map +1 -1
  284. package/dist/node_modules/refractor/lang/ichigojam.es.js.map +1 -1
  285. package/dist/node_modules/refractor/lang/icon.cjs.js.map +1 -1
  286. package/dist/node_modules/refractor/lang/icon.es.js.map +1 -1
  287. package/dist/node_modules/refractor/lang/icu-message-format.cjs.js.map +1 -1
  288. package/dist/node_modules/refractor/lang/icu-message-format.es.js.map +1 -1
  289. package/dist/node_modules/refractor/lang/idris.cjs.js.map +1 -1
  290. package/dist/node_modules/refractor/lang/idris.es.js.map +1 -1
  291. package/dist/node_modules/refractor/lang/iecst.cjs.js.map +1 -1
  292. package/dist/node_modules/refractor/lang/iecst.es.js.map +1 -1
  293. package/dist/node_modules/refractor/lang/ignore.cjs.js.map +1 -1
  294. package/dist/node_modules/refractor/lang/ignore.es.js.map +1 -1
  295. package/dist/node_modules/refractor/lang/inform7.cjs.js.map +1 -1
  296. package/dist/node_modules/refractor/lang/inform7.es.js.map +1 -1
  297. package/dist/node_modules/refractor/lang/ini.cjs.js.map +1 -1
  298. package/dist/node_modules/refractor/lang/ini.es.js.map +1 -1
  299. package/dist/node_modules/refractor/lang/io.cjs.js.map +1 -1
  300. package/dist/node_modules/refractor/lang/io.es.js.map +1 -1
  301. package/dist/node_modules/refractor/lang/j.cjs.js.map +1 -1
  302. package/dist/node_modules/refractor/lang/j.es.js.map +1 -1
  303. package/dist/node_modules/refractor/lang/java.cjs.js.map +1 -1
  304. package/dist/node_modules/refractor/lang/java.es.js.map +1 -1
  305. package/dist/node_modules/refractor/lang/javadoc.cjs.js.map +1 -1
  306. package/dist/node_modules/refractor/lang/javadoc.es.js.map +1 -1
  307. package/dist/node_modules/refractor/lang/javadoclike.cjs.js.map +1 -1
  308. package/dist/node_modules/refractor/lang/javadoclike.es.js.map +1 -1
  309. package/dist/node_modules/refractor/lang/javascript.cjs.js.map +1 -1
  310. package/dist/node_modules/refractor/lang/javascript.es.js.map +1 -1
  311. package/dist/node_modules/refractor/lang/javastacktrace.cjs.js.map +1 -1
  312. package/dist/node_modules/refractor/lang/javastacktrace.es.js.map +1 -1
  313. package/dist/node_modules/refractor/lang/jexl.cjs.js.map +1 -1
  314. package/dist/node_modules/refractor/lang/jexl.es.js.map +1 -1
  315. package/dist/node_modules/refractor/lang/jolie.cjs.js.map +1 -1
  316. package/dist/node_modules/refractor/lang/jolie.es.js.map +1 -1
  317. package/dist/node_modules/refractor/lang/jq.cjs.js.map +1 -1
  318. package/dist/node_modules/refractor/lang/jq.es.js.map +1 -1
  319. package/dist/node_modules/refractor/lang/js-extras.cjs.js.map +1 -1
  320. package/dist/node_modules/refractor/lang/js-extras.es.js.map +1 -1
  321. package/dist/node_modules/refractor/lang/js-templates.cjs.js.map +1 -1
  322. package/dist/node_modules/refractor/lang/js-templates.es.js.map +1 -1
  323. package/dist/node_modules/refractor/lang/jsdoc.cjs.js.map +1 -1
  324. package/dist/node_modules/refractor/lang/jsdoc.es.js.map +1 -1
  325. package/dist/node_modules/refractor/lang/json.cjs.js.map +1 -1
  326. package/dist/node_modules/refractor/lang/json.es.js.map +1 -1
  327. package/dist/node_modules/refractor/lang/json5.cjs.js.map +1 -1
  328. package/dist/node_modules/refractor/lang/json5.es.js.map +1 -1
  329. package/dist/node_modules/refractor/lang/jsonp.cjs.js.map +1 -1
  330. package/dist/node_modules/refractor/lang/jsonp.es.js.map +1 -1
  331. package/dist/node_modules/refractor/lang/jsstacktrace.cjs.js.map +1 -1
  332. package/dist/node_modules/refractor/lang/jsstacktrace.es.js.map +1 -1
  333. package/dist/node_modules/refractor/lang/jsx.cjs.js.map +1 -1
  334. package/dist/node_modules/refractor/lang/jsx.es.js.map +1 -1
  335. package/dist/node_modules/refractor/lang/julia.cjs.js.map +1 -1
  336. package/dist/node_modules/refractor/lang/julia.es.js.map +1 -1
  337. package/dist/node_modules/refractor/lang/keepalived.cjs.js.map +1 -1
  338. package/dist/node_modules/refractor/lang/keepalived.es.js.map +1 -1
  339. package/dist/node_modules/refractor/lang/keyman.cjs.js.map +1 -1
  340. package/dist/node_modules/refractor/lang/keyman.es.js.map +1 -1
  341. package/dist/node_modules/refractor/lang/kotlin.cjs.js.map +1 -1
  342. package/dist/node_modules/refractor/lang/kotlin.es.js.map +1 -1
  343. package/dist/node_modules/refractor/lang/kumir.cjs.js.map +1 -1
  344. package/dist/node_modules/refractor/lang/kumir.es.js.map +1 -1
  345. package/dist/node_modules/refractor/lang/kusto.cjs.js.map +1 -1
  346. package/dist/node_modules/refractor/lang/kusto.es.js.map +1 -1
  347. package/dist/node_modules/refractor/lang/latex.cjs.js.map +1 -1
  348. package/dist/node_modules/refractor/lang/latex.es.js.map +1 -1
  349. package/dist/node_modules/refractor/lang/latte.cjs.js.map +1 -1
  350. package/dist/node_modules/refractor/lang/latte.es.js.map +1 -1
  351. package/dist/node_modules/refractor/lang/less.cjs.js.map +1 -1
  352. package/dist/node_modules/refractor/lang/less.es.js.map +1 -1
  353. package/dist/node_modules/refractor/lang/lilypond.cjs.js.map +1 -1
  354. package/dist/node_modules/refractor/lang/lilypond.es.js.map +1 -1
  355. package/dist/node_modules/refractor/lang/linker-script.cjs.js.map +1 -1
  356. package/dist/node_modules/refractor/lang/linker-script.es.js.map +1 -1
  357. package/dist/node_modules/refractor/lang/liquid.cjs.js.map +1 -1
  358. package/dist/node_modules/refractor/lang/liquid.es.js.map +1 -1
  359. package/dist/node_modules/refractor/lang/lisp.cjs.js.map +1 -1
  360. package/dist/node_modules/refractor/lang/lisp.es.js.map +1 -1
  361. package/dist/node_modules/refractor/lang/livescript.cjs.js.map +1 -1
  362. package/dist/node_modules/refractor/lang/livescript.es.js.map +1 -1
  363. package/dist/node_modules/refractor/lang/llvm.cjs.js.map +1 -1
  364. package/dist/node_modules/refractor/lang/llvm.es.js.map +1 -1
  365. package/dist/node_modules/refractor/lang/log.cjs.js.map +1 -1
  366. package/dist/node_modules/refractor/lang/log.es.js.map +1 -1
  367. package/dist/node_modules/refractor/lang/lolcode.cjs.js.map +1 -1
  368. package/dist/node_modules/refractor/lang/lolcode.es.js.map +1 -1
  369. package/dist/node_modules/refractor/lang/lua.cjs.js.map +1 -1
  370. package/dist/node_modules/refractor/lang/lua.es.js.map +1 -1
  371. package/dist/node_modules/refractor/lang/magma.cjs.js.map +1 -1
  372. package/dist/node_modules/refractor/lang/magma.es.js.map +1 -1
  373. package/dist/node_modules/refractor/lang/makefile.cjs.js.map +1 -1
  374. package/dist/node_modules/refractor/lang/makefile.es.js.map +1 -1
  375. package/dist/node_modules/refractor/lang/markdown.cjs.js +6 -4
  376. package/dist/node_modules/refractor/lang/markdown.cjs.js.map +1 -1
  377. package/dist/node_modules/refractor/lang/markdown.es.js +6 -4
  378. package/dist/node_modules/refractor/lang/markdown.es.js.map +1 -1
  379. package/dist/node_modules/refractor/lang/markup-templating.cjs.js.map +1 -1
  380. package/dist/node_modules/refractor/lang/markup-templating.es.js.map +1 -1
  381. package/dist/node_modules/refractor/lang/markup.cjs.js.map +1 -1
  382. package/dist/node_modules/refractor/lang/markup.es.js.map +1 -1
  383. package/dist/node_modules/refractor/lang/mata.cjs.js.map +1 -1
  384. package/dist/node_modules/refractor/lang/mata.es.js.map +1 -1
  385. package/dist/node_modules/refractor/lang/matlab.cjs.js.map +1 -1
  386. package/dist/node_modules/refractor/lang/matlab.es.js.map +1 -1
  387. package/dist/node_modules/refractor/lang/maxscript.cjs.js.map +1 -1
  388. package/dist/node_modules/refractor/lang/maxscript.es.js.map +1 -1
  389. package/dist/node_modules/refractor/lang/mel.cjs.js.map +1 -1
  390. package/dist/node_modules/refractor/lang/mel.es.js.map +1 -1
  391. package/dist/node_modules/refractor/lang/mermaid.cjs.js.map +1 -1
  392. package/dist/node_modules/refractor/lang/mermaid.es.js.map +1 -1
  393. package/dist/node_modules/refractor/lang/metafont.cjs.js.map +1 -1
  394. package/dist/node_modules/refractor/lang/metafont.es.js.map +1 -1
  395. package/dist/node_modules/refractor/lang/mizar.cjs.js.map +1 -1
  396. package/dist/node_modules/refractor/lang/mizar.es.js.map +1 -1
  397. package/dist/node_modules/refractor/lang/mongodb.cjs.js.map +1 -1
  398. package/dist/node_modules/refractor/lang/mongodb.es.js.map +1 -1
  399. package/dist/node_modules/refractor/lang/monkey.cjs.js.map +1 -1
  400. package/dist/node_modules/refractor/lang/monkey.es.js.map +1 -1
  401. package/dist/node_modules/refractor/lang/moonscript.cjs.js.map +1 -1
  402. package/dist/node_modules/refractor/lang/moonscript.es.js.map +1 -1
  403. package/dist/node_modules/refractor/lang/n1ql.cjs.js.map +1 -1
  404. package/dist/node_modules/refractor/lang/n1ql.es.js.map +1 -1
  405. package/dist/node_modules/refractor/lang/n4js.cjs.js.map +1 -1
  406. package/dist/node_modules/refractor/lang/n4js.es.js.map +1 -1
  407. package/dist/node_modules/refractor/lang/nand2tetris-hdl.cjs.js.map +1 -1
  408. package/dist/node_modules/refractor/lang/nand2tetris-hdl.es.js.map +1 -1
  409. package/dist/node_modules/refractor/lang/naniscript.cjs.js.map +1 -1
  410. package/dist/node_modules/refractor/lang/naniscript.es.js.map +1 -1
  411. package/dist/node_modules/refractor/lang/nasm.cjs.js.map +1 -1
  412. package/dist/node_modules/refractor/lang/nasm.es.js.map +1 -1
  413. package/dist/node_modules/refractor/lang/neon.cjs.js.map +1 -1
  414. package/dist/node_modules/refractor/lang/neon.es.js.map +1 -1
  415. package/dist/node_modules/refractor/lang/nevod.cjs.js.map +1 -1
  416. package/dist/node_modules/refractor/lang/nevod.es.js.map +1 -1
  417. package/dist/node_modules/refractor/lang/nginx.cjs.js.map +1 -1
  418. package/dist/node_modules/refractor/lang/nginx.es.js.map +1 -1
  419. package/dist/node_modules/refractor/lang/nim.cjs.js.map +1 -1
  420. package/dist/node_modules/refractor/lang/nim.es.js.map +1 -1
  421. package/dist/node_modules/refractor/lang/nix.cjs.js.map +1 -1
  422. package/dist/node_modules/refractor/lang/nix.es.js.map +1 -1
  423. package/dist/node_modules/refractor/lang/nsis.cjs.js.map +1 -1
  424. package/dist/node_modules/refractor/lang/nsis.es.js.map +1 -1
  425. package/dist/node_modules/refractor/lang/objectivec.cjs.js.map +1 -1
  426. package/dist/node_modules/refractor/lang/objectivec.es.js.map +1 -1
  427. package/dist/node_modules/refractor/lang/ocaml.cjs.js.map +1 -1
  428. package/dist/node_modules/refractor/lang/ocaml.es.js.map +1 -1
  429. package/dist/node_modules/refractor/lang/odin.cjs.js.map +1 -1
  430. package/dist/node_modules/refractor/lang/odin.es.js.map +1 -1
  431. package/dist/node_modules/refractor/lang/opencl.cjs.js.map +1 -1
  432. package/dist/node_modules/refractor/lang/opencl.es.js.map +1 -1
  433. package/dist/node_modules/refractor/lang/openqasm.cjs.js.map +1 -1
  434. package/dist/node_modules/refractor/lang/openqasm.es.js.map +1 -1
  435. package/dist/node_modules/refractor/lang/oz.cjs.js.map +1 -1
  436. package/dist/node_modules/refractor/lang/oz.es.js.map +1 -1
  437. package/dist/node_modules/refractor/lang/parigp.cjs.js.map +1 -1
  438. package/dist/node_modules/refractor/lang/parigp.es.js.map +1 -1
  439. package/dist/node_modules/refractor/lang/parser.cjs.js.map +1 -1
  440. package/dist/node_modules/refractor/lang/parser.es.js.map +1 -1
  441. package/dist/node_modules/refractor/lang/pascal.cjs.js.map +1 -1
  442. package/dist/node_modules/refractor/lang/pascal.es.js.map +1 -1
  443. package/dist/node_modules/refractor/lang/pascaligo.cjs.js.map +1 -1
  444. package/dist/node_modules/refractor/lang/pascaligo.es.js.map +1 -1
  445. package/dist/node_modules/refractor/lang/pcaxis.cjs.js.map +1 -1
  446. package/dist/node_modules/refractor/lang/pcaxis.es.js.map +1 -1
  447. package/dist/node_modules/refractor/lang/peoplecode.cjs.js.map +1 -1
  448. package/dist/node_modules/refractor/lang/peoplecode.es.js.map +1 -1
  449. package/dist/node_modules/refractor/lang/perl.cjs.js.map +1 -1
  450. package/dist/node_modules/refractor/lang/perl.es.js.map +1 -1
  451. package/dist/node_modules/refractor/lang/php-extras.cjs.js.map +1 -1
  452. package/dist/node_modules/refractor/lang/php-extras.es.js.map +1 -1
  453. package/dist/node_modules/refractor/lang/php.cjs.js.map +1 -1
  454. package/dist/node_modules/refractor/lang/php.es.js.map +1 -1
  455. package/dist/node_modules/refractor/lang/phpdoc.cjs.js.map +1 -1
  456. package/dist/node_modules/refractor/lang/phpdoc.es.js.map +1 -1
  457. package/dist/node_modules/refractor/lang/plant-uml.cjs.js.map +1 -1
  458. package/dist/node_modules/refractor/lang/plant-uml.es.js.map +1 -1
  459. package/dist/node_modules/refractor/lang/plsql.cjs.js.map +1 -1
  460. package/dist/node_modules/refractor/lang/plsql.es.js.map +1 -1
  461. package/dist/node_modules/refractor/lang/powerquery.cjs.js.map +1 -1
  462. package/dist/node_modules/refractor/lang/powerquery.es.js.map +1 -1
  463. package/dist/node_modules/refractor/lang/powershell.cjs.js.map +1 -1
  464. package/dist/node_modules/refractor/lang/powershell.es.js.map +1 -1
  465. package/dist/node_modules/refractor/lang/processing.cjs.js.map +1 -1
  466. package/dist/node_modules/refractor/lang/processing.es.js.map +1 -1
  467. package/dist/node_modules/refractor/lang/prolog.cjs.js.map +1 -1
  468. package/dist/node_modules/refractor/lang/prolog.es.js.map +1 -1
  469. package/dist/node_modules/refractor/lang/promql.cjs.js.map +1 -1
  470. package/dist/node_modules/refractor/lang/promql.es.js.map +1 -1
  471. package/dist/node_modules/refractor/lang/properties.cjs.js.map +1 -1
  472. package/dist/node_modules/refractor/lang/properties.es.js.map +1 -1
  473. package/dist/node_modules/refractor/lang/protobuf.cjs.js.map +1 -1
  474. package/dist/node_modules/refractor/lang/protobuf.es.js.map +1 -1
  475. package/dist/node_modules/refractor/lang/psl.cjs.js.map +1 -1
  476. package/dist/node_modules/refractor/lang/psl.es.js.map +1 -1
  477. package/dist/node_modules/refractor/lang/pug.cjs.js.map +1 -1
  478. package/dist/node_modules/refractor/lang/pug.es.js.map +1 -1
  479. package/dist/node_modules/refractor/lang/puppet.cjs.js.map +1 -1
  480. package/dist/node_modules/refractor/lang/puppet.es.js.map +1 -1
  481. package/dist/node_modules/refractor/lang/pure.cjs.js.map +1 -1
  482. package/dist/node_modules/refractor/lang/pure.es.js.map +1 -1
  483. package/dist/node_modules/refractor/lang/purebasic.cjs.js.map +1 -1
  484. package/dist/node_modules/refractor/lang/purebasic.es.js.map +1 -1
  485. package/dist/node_modules/refractor/lang/purescript.cjs.js.map +1 -1
  486. package/dist/node_modules/refractor/lang/purescript.es.js.map +1 -1
  487. package/dist/node_modules/refractor/lang/python.cjs.js.map +1 -1
  488. package/dist/node_modules/refractor/lang/python.es.js.map +1 -1
  489. package/dist/node_modules/refractor/lang/q.cjs.js.map +1 -1
  490. package/dist/node_modules/refractor/lang/q.es.js.map +1 -1
  491. package/dist/node_modules/refractor/lang/qml.cjs.js.map +1 -1
  492. package/dist/node_modules/refractor/lang/qml.es.js.map +1 -1
  493. package/dist/node_modules/refractor/lang/qore.cjs.js.map +1 -1
  494. package/dist/node_modules/refractor/lang/qore.es.js.map +1 -1
  495. package/dist/node_modules/refractor/lang/qsharp.cjs.js.map +1 -1
  496. package/dist/node_modules/refractor/lang/qsharp.es.js.map +1 -1
  497. package/dist/node_modules/refractor/lang/r.cjs.js.map +1 -1
  498. package/dist/node_modules/refractor/lang/r.es.js.map +1 -1
  499. package/dist/node_modules/refractor/lang/racket.cjs.js.map +1 -1
  500. package/dist/node_modules/refractor/lang/racket.es.js.map +1 -1
  501. package/dist/node_modules/refractor/lang/reason.cjs.js.map +1 -1
  502. package/dist/node_modules/refractor/lang/reason.es.js.map +1 -1
  503. package/dist/node_modules/refractor/lang/regex.cjs.js.map +1 -1
  504. package/dist/node_modules/refractor/lang/regex.es.js.map +1 -1
  505. package/dist/node_modules/refractor/lang/rego.cjs.js.map +1 -1
  506. package/dist/node_modules/refractor/lang/rego.es.js.map +1 -1
  507. package/dist/node_modules/refractor/lang/renpy.cjs.js.map +1 -1
  508. package/dist/node_modules/refractor/lang/renpy.es.js.map +1 -1
  509. package/dist/node_modules/refractor/lang/rescript.cjs.js.map +1 -1
  510. package/dist/node_modules/refractor/lang/rescript.es.js.map +1 -1
  511. package/dist/node_modules/refractor/lang/rest.cjs.js.map +1 -1
  512. package/dist/node_modules/refractor/lang/rest.es.js.map +1 -1
  513. package/dist/node_modules/refractor/lang/rip.cjs.js.map +1 -1
  514. package/dist/node_modules/refractor/lang/rip.es.js.map +1 -1
  515. package/dist/node_modules/refractor/lang/roboconf.cjs.js.map +1 -1
  516. package/dist/node_modules/refractor/lang/roboconf.es.js.map +1 -1
  517. package/dist/node_modules/refractor/lang/robotframework.cjs.js.map +1 -1
  518. package/dist/node_modules/refractor/lang/robotframework.es.js.map +1 -1
  519. package/dist/node_modules/refractor/lang/ruby.cjs.js.map +1 -1
  520. package/dist/node_modules/refractor/lang/ruby.es.js.map +1 -1
  521. package/dist/node_modules/refractor/lang/rust.cjs.js.map +1 -1
  522. package/dist/node_modules/refractor/lang/rust.es.js.map +1 -1
  523. package/dist/node_modules/refractor/lang/sas.cjs.js.map +1 -1
  524. package/dist/node_modules/refractor/lang/sas.es.js.map +1 -1
  525. package/dist/node_modules/refractor/lang/sass.cjs.js.map +1 -1
  526. package/dist/node_modules/refractor/lang/sass.es.js.map +1 -1
  527. package/dist/node_modules/refractor/lang/scala.cjs.js.map +1 -1
  528. package/dist/node_modules/refractor/lang/scala.es.js.map +1 -1
  529. package/dist/node_modules/refractor/lang/scheme.cjs.js.map +1 -1
  530. package/dist/node_modules/refractor/lang/scheme.es.js.map +1 -1
  531. package/dist/node_modules/refractor/lang/scss.cjs.js.map +1 -1
  532. package/dist/node_modules/refractor/lang/scss.es.js.map +1 -1
  533. package/dist/node_modules/refractor/lang/shell-session.cjs.js.map +1 -1
  534. package/dist/node_modules/refractor/lang/shell-session.es.js.map +1 -1
  535. package/dist/node_modules/refractor/lang/smali.cjs.js.map +1 -1
  536. package/dist/node_modules/refractor/lang/smali.es.js.map +1 -1
  537. package/dist/node_modules/refractor/lang/smalltalk.cjs.js.map +1 -1
  538. package/dist/node_modules/refractor/lang/smalltalk.es.js.map +1 -1
  539. package/dist/node_modules/refractor/lang/smarty.cjs.js.map +1 -1
  540. package/dist/node_modules/refractor/lang/smarty.es.js.map +1 -1
  541. package/dist/node_modules/refractor/lang/sml.cjs.js.map +1 -1
  542. package/dist/node_modules/refractor/lang/sml.es.js.map +1 -1
  543. package/dist/node_modules/refractor/lang/solidity.cjs.js.map +1 -1
  544. package/dist/node_modules/refractor/lang/solidity.es.js.map +1 -1
  545. package/dist/node_modules/refractor/lang/solution-file.cjs.js.map +1 -1
  546. package/dist/node_modules/refractor/lang/solution-file.es.js.map +1 -1
  547. package/dist/node_modules/refractor/lang/soy.cjs.js.map +1 -1
  548. package/dist/node_modules/refractor/lang/soy.es.js.map +1 -1
  549. package/dist/node_modules/refractor/lang/sparql.cjs.js.map +1 -1
  550. package/dist/node_modules/refractor/lang/sparql.es.js.map +1 -1
  551. package/dist/node_modules/refractor/lang/splunk-spl.cjs.js.map +1 -1
  552. package/dist/node_modules/refractor/lang/splunk-spl.es.js.map +1 -1
  553. package/dist/node_modules/refractor/lang/sqf.cjs.js.map +1 -1
  554. package/dist/node_modules/refractor/lang/sqf.es.js.map +1 -1
  555. package/dist/node_modules/refractor/lang/sql.cjs.js.map +1 -1
  556. package/dist/node_modules/refractor/lang/sql.es.js.map +1 -1
  557. package/dist/node_modules/refractor/lang/squirrel.cjs.js.map +1 -1
  558. package/dist/node_modules/refractor/lang/squirrel.es.js.map +1 -1
  559. package/dist/node_modules/refractor/lang/stan.cjs.js.map +1 -1
  560. package/dist/node_modules/refractor/lang/stan.es.js.map +1 -1
  561. package/dist/node_modules/refractor/lang/stata.cjs.js.map +1 -1
  562. package/dist/node_modules/refractor/lang/stata.es.js.map +1 -1
  563. package/dist/node_modules/refractor/lang/stylus.cjs.js.map +1 -1
  564. package/dist/node_modules/refractor/lang/stylus.es.js.map +1 -1
  565. package/dist/node_modules/refractor/lang/supercollider.cjs.js.map +1 -1
  566. package/dist/node_modules/refractor/lang/supercollider.es.js.map +1 -1
  567. package/dist/node_modules/refractor/lang/swift.cjs.js.map +1 -1
  568. package/dist/node_modules/refractor/lang/swift.es.js.map +1 -1
  569. package/dist/node_modules/refractor/lang/systemd.cjs.js.map +1 -1
  570. package/dist/node_modules/refractor/lang/systemd.es.js.map +1 -1
  571. package/dist/node_modules/refractor/lang/t4-cs.cjs.js.map +1 -1
  572. package/dist/node_modules/refractor/lang/t4-cs.es.js.map +1 -1
  573. package/dist/node_modules/refractor/lang/t4-templating.cjs.js.map +1 -1
  574. package/dist/node_modules/refractor/lang/t4-templating.es.js.map +1 -1
  575. package/dist/node_modules/refractor/lang/t4-vb.cjs.js.map +1 -1
  576. package/dist/node_modules/refractor/lang/t4-vb.es.js.map +1 -1
  577. package/dist/node_modules/refractor/lang/tap.cjs.js.map +1 -1
  578. package/dist/node_modules/refractor/lang/tap.es.js.map +1 -1
  579. package/dist/node_modules/refractor/lang/tcl.cjs.js.map +1 -1
  580. package/dist/node_modules/refractor/lang/tcl.es.js.map +1 -1
  581. package/dist/node_modules/refractor/lang/textile.cjs.js.map +1 -1
  582. package/dist/node_modules/refractor/lang/textile.es.js.map +1 -1
  583. package/dist/node_modules/refractor/lang/toml.cjs.js.map +1 -1
  584. package/dist/node_modules/refractor/lang/toml.es.js.map +1 -1
  585. package/dist/node_modules/refractor/lang/tremor.cjs.js.map +1 -1
  586. package/dist/node_modules/refractor/lang/tremor.es.js.map +1 -1
  587. package/dist/node_modules/refractor/lang/tsx.cjs.js.map +1 -1
  588. package/dist/node_modules/refractor/lang/tsx.es.js.map +1 -1
  589. package/dist/node_modules/refractor/lang/tt2.cjs.js.map +1 -1
  590. package/dist/node_modules/refractor/lang/tt2.es.js.map +1 -1
  591. package/dist/node_modules/refractor/lang/turtle.cjs.js.map +1 -1
  592. package/dist/node_modules/refractor/lang/turtle.es.js.map +1 -1
  593. package/dist/node_modules/refractor/lang/twig.cjs.js.map +1 -1
  594. package/dist/node_modules/refractor/lang/twig.es.js.map +1 -1
  595. package/dist/node_modules/refractor/lang/typescript.cjs.js.map +1 -1
  596. package/dist/node_modules/refractor/lang/typescript.es.js.map +1 -1
  597. package/dist/node_modules/refractor/lang/typoscript.cjs.js.map +1 -1
  598. package/dist/node_modules/refractor/lang/typoscript.es.js.map +1 -1
  599. package/dist/node_modules/refractor/lang/unrealscript.cjs.js.map +1 -1
  600. package/dist/node_modules/refractor/lang/unrealscript.es.js.map +1 -1
  601. package/dist/node_modules/refractor/lang/uorazor.cjs.js.map +1 -1
  602. package/dist/node_modules/refractor/lang/uorazor.es.js.map +1 -1
  603. package/dist/node_modules/refractor/lang/uri.cjs.js.map +1 -1
  604. package/dist/node_modules/refractor/lang/uri.es.js.map +1 -1
  605. package/dist/node_modules/refractor/lang/v.cjs.js.map +1 -1
  606. package/dist/node_modules/refractor/lang/v.es.js.map +1 -1
  607. package/dist/node_modules/refractor/lang/vala.cjs.js.map +1 -1
  608. package/dist/node_modules/refractor/lang/vala.es.js.map +1 -1
  609. package/dist/node_modules/refractor/lang/vbnet.cjs.js.map +1 -1
  610. package/dist/node_modules/refractor/lang/vbnet.es.js.map +1 -1
  611. package/dist/node_modules/refractor/lang/velocity.cjs.js.map +1 -1
  612. package/dist/node_modules/refractor/lang/velocity.es.js.map +1 -1
  613. package/dist/node_modules/refractor/lang/verilog.cjs.js.map +1 -1
  614. package/dist/node_modules/refractor/lang/verilog.es.js.map +1 -1
  615. package/dist/node_modules/refractor/lang/vhdl.cjs.js.map +1 -1
  616. package/dist/node_modules/refractor/lang/vhdl.es.js.map +1 -1
  617. package/dist/node_modules/refractor/lang/vim.cjs.js.map +1 -1
  618. package/dist/node_modules/refractor/lang/vim.es.js.map +1 -1
  619. package/dist/node_modules/refractor/lang/visual-basic.cjs.js.map +1 -1
  620. package/dist/node_modules/refractor/lang/visual-basic.es.js.map +1 -1
  621. package/dist/node_modules/refractor/lang/warpscript.cjs.js.map +1 -1
  622. package/dist/node_modules/refractor/lang/warpscript.es.js.map +1 -1
  623. package/dist/node_modules/refractor/lang/wasm.cjs.js.map +1 -1
  624. package/dist/node_modules/refractor/lang/wasm.es.js.map +1 -1
  625. package/dist/node_modules/refractor/lang/web-idl.cjs.js.map +1 -1
  626. package/dist/node_modules/refractor/lang/web-idl.es.js.map +1 -1
  627. package/dist/node_modules/refractor/lang/wgsl.cjs.js.map +1 -1
  628. package/dist/node_modules/refractor/lang/wgsl.es.js.map +1 -1
  629. package/dist/node_modules/refractor/lang/wiki.cjs.js.map +1 -1
  630. package/dist/node_modules/refractor/lang/wiki.es.js.map +1 -1
  631. package/dist/node_modules/refractor/lang/wolfram.cjs.js.map +1 -1
  632. package/dist/node_modules/refractor/lang/wolfram.es.js.map +1 -1
  633. package/dist/node_modules/refractor/lang/wren.cjs.js.map +1 -1
  634. package/dist/node_modules/refractor/lang/wren.es.js.map +1 -1
  635. package/dist/node_modules/refractor/lang/xeora.cjs.js.map +1 -1
  636. package/dist/node_modules/refractor/lang/xeora.es.js.map +1 -1
  637. package/dist/node_modules/refractor/lang/xml-doc.cjs.js.map +1 -1
  638. package/dist/node_modules/refractor/lang/xml-doc.es.js.map +1 -1
  639. package/dist/node_modules/refractor/lang/xojo.cjs.js.map +1 -1
  640. package/dist/node_modules/refractor/lang/xojo.es.js.map +1 -1
  641. package/dist/node_modules/refractor/lang/xquery.cjs.js.map +1 -1
  642. package/dist/node_modules/refractor/lang/xquery.es.js.map +1 -1
  643. package/dist/node_modules/refractor/lang/yaml.cjs.js.map +1 -1
  644. package/dist/node_modules/refractor/lang/yaml.es.js.map +1 -1
  645. package/dist/node_modules/refractor/lang/yang.cjs.js.map +1 -1
  646. package/dist/node_modules/refractor/lang/yang.es.js.map +1 -1
  647. package/dist/node_modules/refractor/lang/zig.cjs.js.map +1 -1
  648. package/dist/node_modules/refractor/lang/zig.es.js.map +1 -1
  649. package/dist/node_modules/refractor/lib/all.cjs.js.map +1 -1
  650. package/dist/node_modules/refractor/lib/all.es.js.map +1 -1
  651. package/dist/node_modules/refractor/lib/common.cjs.js.map +1 -1
  652. package/dist/node_modules/refractor/lib/common.es.js.map +1 -1
  653. package/dist/node_modules/refractor/lib/core.cjs.js +10 -10
  654. package/dist/node_modules/refractor/lib/core.cjs.js.map +1 -1
  655. package/dist/node_modules/refractor/lib/core.es.js +10 -10
  656. package/dist/node_modules/refractor/lib/core.es.js.map +1 -1
  657. package/dist/node_modules/refractor/lib/prism-core.cjs.js +6 -3
  658. package/dist/node_modules/refractor/lib/prism-core.cjs.js.map +1 -1
  659. package/dist/node_modules/refractor/lib/prism-core.es.js +6 -3
  660. package/dist/node_modules/refractor/lib/prism-core.es.js.map +1 -1
  661. package/dist/shared/src/api/generated/graphql.cjs.js +4 -2
  662. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  663. package/dist/shared/src/api/generated/graphql.es.js +4 -2
  664. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  665. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -0
  666. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  667. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +1 -0
  668. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  669. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -0
  670. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  671. package/dist/shared/src/api/queries/entities/updateEntity.es.js +1 -0
  672. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  673. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +6 -4
  674. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  675. package/dist/shared/src/api/queries/entityLists/getLists.es.js +6 -4
  676. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  677. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +65 -1
  678. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  679. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +65 -1
  680. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  681. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -0
  682. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  683. package/dist/shared/src/api/queries/overview/updateOverview.es.js +1 -0
  684. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  685. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js +52 -0
  686. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js.map +1 -0
  687. package/dist/shared/src/api/queries/permissions/getPermissions.es.js +52 -0
  688. package/dist/shared/src/api/queries/permissions/getPermissions.es.js.map +1 -0
  689. package/dist/shared/src/api/queries/users/getUsers.cjs.js +1 -5
  690. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  691. package/dist/shared/src/api/queries/users/getUsers.es.js +1 -5
  692. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  693. package/dist/shared/src/api/queries/users/updateUsers.cjs.js +22 -14
  694. package/dist/shared/src/api/queries/users/updateUsers.cjs.js.map +1 -1
  695. package/dist/shared/src/api/queries/users/updateUsers.es.js +22 -14
  696. package/dist/shared/src/api/queries/users/updateUsers.es.js.map +1 -1
  697. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -0
  698. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  699. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +1 -0
  700. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  701. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +1 -0
  702. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  703. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +1 -0
  704. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  705. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +2 -0
  706. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  707. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +2 -0
  708. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  709. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js +4 -0
  710. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
  711. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +4 -0
  712. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
  713. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +5 -0
  714. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  715. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +5 -0
  716. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  717. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -0
  718. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  719. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +1 -0
  720. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  721. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +4 -0
  722. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  723. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -0
  724. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  725. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +4 -0
  726. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  727. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +4 -0
  728. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  729. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +4 -0
  730. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  731. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -0
  732. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  733. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +2 -0
  734. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  735. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +2 -0
  736. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  737. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +6 -0
  738. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  739. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +6 -0
  740. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  741. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js +2 -7
  742. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js.map +1 -1
  743. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js +2 -7
  744. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js.map +1 -1
  745. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -0
  746. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  747. package/dist/shared/src/components/Watchers/Watchers.es.js +1 -0
  748. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  749. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +4 -0
  750. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  751. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -0
  752. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  753. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js +1 -1
  754. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js.map +1 -1
  755. package/dist/shared/src/containers/Actions/ActionIcon.es.js +1 -1
  756. package/dist/shared/src/containers/Actions/ActionIcon.es.js.map +1 -1
  757. package/dist/shared/src/containers/Actions/Actions.cjs.js +13 -8
  758. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  759. package/dist/shared/src/containers/Actions/Actions.es.js +13 -8
  760. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  761. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +2 -2
  762. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  763. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +2 -2
  764. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  765. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js +4 -0
  766. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js.map +1 -1
  767. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js +4 -0
  768. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js.map +1 -1
  769. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +4 -0
  770. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  771. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -0
  772. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  773. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +4 -0
  774. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  775. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -0
  776. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  777. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +4 -0
  778. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  779. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -0
  780. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  781. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +4 -0
  782. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  783. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +4 -0
  784. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  785. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +4 -0
  786. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  787. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -0
  788. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  789. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +3 -0
  790. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  791. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -0
  792. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  793. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +2 -0
  794. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
  795. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +2 -0
  796. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
  797. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -0
  798. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  799. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +1 -0
  800. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  801. package/dist/shared/src/containers/Feed/Feed.cjs.js +3 -1
  802. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  803. package/dist/shared/src/containers/Feed/Feed.es.js +3 -1
  804. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  805. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +2 -0
  806. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  807. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +2 -0
  808. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  809. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +2 -0
  810. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  811. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +2 -0
  812. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  813. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +2 -0
  814. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  815. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +2 -0
  816. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  817. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +2 -0
  818. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  819. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +2 -0
  820. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  821. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +3 -0
  822. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  823. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +3 -0
  824. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  825. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -0
  826. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  827. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +1 -0
  828. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  829. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +275 -53
  830. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  831. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +277 -55
  832. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  833. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +38 -4
  834. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  835. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +38 -4
  836. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  837. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +49 -21
  838. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  839. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +49 -21
  840. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  841. package/dist/shared/src/containers/ProjectTreeTable/components/RowDragHandleCellContent.cjs.js +33 -0
  842. package/dist/shared/src/containers/ProjectTreeTable/components/RowDragHandleCellContent.cjs.js.map +1 -0
  843. package/dist/shared/src/containers/ProjectTreeTable/components/RowDragHandleCellContent.es.js +34 -0
  844. package/dist/shared/src/containers/ProjectTreeTable/components/RowDragHandleCellContent.es.js.map +1 -0
  845. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  846. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  847. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +116 -0
  848. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -0
  849. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +116 -0
  850. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -0
  851. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +2 -1
  852. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  853. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +2 -1
  854. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  855. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +84 -0
  856. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -0
  857. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +85 -0
  858. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -0
  859. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js +0 -36
  860. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js.map +1 -1
  861. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js +0 -36
  862. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js.map +1 -1
  863. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +3 -2
  864. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  865. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +3 -2
  866. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  867. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +4 -0
  868. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  869. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -0
  870. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  871. package/dist/shared/src/context/AddonContext.cjs.js +18 -0
  872. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -0
  873. package/dist/shared/src/context/AddonContext.es.js +18 -0
  874. package/dist/shared/src/context/AddonContext.es.js.map +1 -0
  875. package/dist/shared/src/context/AddonProjectContext.cjs.js +91 -0
  876. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -0
  877. package/dist/shared/src/context/AddonProjectContext.es.js +91 -0
  878. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -0
  879. package/dist/shared/src/context/DetailsPanelContext.cjs.js +3 -0
  880. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  881. package/dist/shared/src/context/DetailsPanelContext.es.js +3 -0
  882. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  883. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -0
  884. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  885. package/dist/shared/src/context/RemoteModulesContext.es.js +1 -0
  886. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  887. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +3 -0
  888. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  889. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -0
  890. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  891. package/dist/shared/src/hooks/useLoadModule.cjs.js +19 -4
  892. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  893. package/dist/shared/src/hooks/useLoadModule.es.js +19 -4
  894. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  895. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -0
  896. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  897. package/dist/shared/src/hooks/useScopedStatuses.es.js +1 -0
  898. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  899. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +108 -0
  900. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -0
  901. package/dist/shared/src/hooks/useUserProjectConfig.es.js +108 -0
  902. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -0
  903. package/dist/types/SimpleTable/context/SimpleTableContext.d.ts +7 -5
  904. package/dist/types/api/generated/graphql.d.ts +9 -4
  905. package/dist/types/api/queries/entityLists/getLists.d.ts +2 -1
  906. package/dist/types/api/queries/entityLists/types.d.ts +1 -0
  907. package/dist/types/api/queries/index.d.ts +1 -0
  908. package/dist/types/api/queries/permissions/getPermissions.d.ts +294 -0
  909. package/dist/types/api/queries/permissions/index.d.ts +1 -0
  910. package/dist/types/api/queries/users/getUsers.d.ts +0 -1
  911. package/dist/types/containers/Actions/Actions.d.ts +2 -1
  912. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +8 -1
  913. package/dist/types/containers/ProjectTreeTable/components/RowDragHandleCellContent.d.ts +5 -0
  914. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +1 -1
  915. package/dist/types/containers/ProjectTreeTable/context/ProjectDataContext.d.ts +22 -0
  916. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +1 -0
  917. package/dist/types/containers/ProjectTreeTable/hooks/useAttributesList.d.ts +12 -0
  918. package/dist/types/containers/ProjectTreeTable/index.d.ts +1 -0
  919. package/dist/types/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +1 -1
  920. package/dist/types/context/AddonContext.d.ts +18 -0
  921. package/dist/types/context/AddonProjectContext.d.ts +28 -0
  922. package/dist/types/context/DetailsPanelContext.d.ts +1 -2
  923. package/dist/types/context/index.d.ts +2 -0
  924. package/dist/types/hooks/index.d.ts +1 -0
  925. package/dist/types/hooks/useLoadModule.d.ts +1 -0
  926. package/dist/types/hooks/useUserProjectConfig.d.ts +13 -0
  927. package/package.json +1 -1
  928. package/dist/node_modules/react-intersection-observer/index.cjs.js.map +0 -1
  929. package/dist/node_modules/react-intersection-observer/index.es.js.map +0 -1
@@ -65,6 +65,7 @@ require("../../api/queries/userDashboard/getUserDashboard.cjs.js");
65
65
  require("../../api/queries/users/getUsers.cjs.js");
66
66
  require("../../api/queries/users/updateUsers.cjs.js");
67
67
  const getWatchers = require("../../api/queries/watchers/getWatchers.cjs.js");
68
+ require("../../api/queries/permissions/getPermissions.cjs.js");
68
69
  const ayonReactComponents = require("@ynput/ayon-react-components");
69
70
  const React = require("react");
70
71
  const reactToastify = require("react-toastify");
@@ -1 +1 @@
1
- {"version":3,"file":"Watchers.cjs.js","sources":["../../../../../src/components/Watchers/Watchers.tsx"],"sourcesContent":["import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from '@shared/api'\nimport { DropdownRef, WatcherSelect, WatcherSelectProps } from '@ynput/ayon-react-components'\nimport { forwardRef } from 'react'\nimport { toast } from 'react-toastify'\n\ninterface WatchersProps extends Omit<WatcherSelectProps, 'currentUser' | 'value'> {\n entities: { id: string; projectName: string }[]\n entityType: string\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n userName: string\n}\n\nexport const Watchers = forwardRef<DropdownRef, WatchersProps>(\n ({ entities, entityType, onWatchersUpdate, userName, ...props }, ref) => {\n const entitiesQuery = entities.map((entity) => ({\n entityId: entity.id,\n entityType,\n projectName: entity.projectName,\n }))\n\n const { data: watchers = [] } = useGetEntitiesWatchersQuery(\n {\n entities: entitiesQuery,\n },\n { skip: !entities.length },\n )\n\n // merge all watchers into a single unique array\n const uniqueWatchers = Array.from(new Set(watchers.flatMap((watcher) => watcher.watchers)))\n\n const [setEntitiesWatchers] = useSetEntitiesWatchersMutation()\n\n const handleChange = async (value: string[]) => {\n // find the difference between the current watchers and the new watchers\n // which users were added and which were removed\n const added = value.filter((watcher) => !uniqueWatchers.includes(watcher))\n const removed = uniqueWatchers.filter((watcher) => !value.includes(watcher))\n\n // for each entity, add or remove the watchers\n // we do this to preserve the unique watchers for each entity (rather than setting the same watchers for all entities)\n const updatedEntities = watchers.map((entity) => {\n // first remove\n const newWatchers = entity.watchers.filter((watcher) => !removed.includes(watcher))\n // then add\n newWatchers.push(...added)\n\n return {\n ...entity,\n watchers: newWatchers,\n }\n })\n\n // update\n try {\n await setEntitiesWatchers({ entities: updatedEntities }).unwrap()\n onWatchersUpdate && onWatchersUpdate(added, removed)\n } catch (error) {\n toast.error('Failed to update watchers')\n }\n }\n\n return (\n <WatcherSelect\n align=\"right\"\n {...props}\n value={uniqueWatchers}\n currentUser={userName}\n onChange={handleChange}\n ref={ref}\n // @ts-expect-error\n buttonProps={{ 'data-tooltip': 'Watchers' }}\n />\n )\n },\n)\n"],"names":["forwardRef","useGetEntitiesWatchersQuery","useSetEntitiesWatchersMutation","toast","jsx","WatcherSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,WAAWA,MAAA;AAAA,EACtB,CAAC,EAAE,UAAU,YAAY,kBAAkB,UAAU,GAAG,MAAM,GAAG,QAAQ;AACvE,UAAM,gBAAgB,SAAS,IAAI,CAAC,YAAY;AAAA,MAC9C,UAAU,OAAO;AAAA,MACjB;AAAA,MACA,aAAa,OAAO;AAAA,IAAA,EACpB;AAEF,UAAM,EAAE,MAAM,WAAW,CAAA,EAAO,IAAAC,YAAA;AAAA,MAC9B;AAAA,QACE,UAAU;AAAA,MACZ;AAAA,MACA,EAAE,MAAM,CAAC,SAAS,OAAO;AAAA,IAC3B;AAGA,UAAM,iBAAiB,MAAM,KAAK,IAAI,IAAI,SAAS,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC,CAAC;AAEpF,UAAA,CAAC,mBAAmB,IAAIC,2CAA+B;AAEvD,UAAA,eAAe,OAAO,UAAoB;AAGxC,YAAA,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,SAAS,OAAO,CAAC;AACnE,YAAA,UAAU,eAAe,OAAO,CAAC,YAAY,CAAC,MAAM,SAAS,OAAO,CAAC;AAI3E,YAAM,kBAAkB,SAAS,IAAI,CAAC,WAAW;AAEzC,cAAA,cAAc,OAAO,SAAS,OAAO,CAAC,YAAY,CAAC,QAAQ,SAAS,OAAO,CAAC;AAEtE,oBAAA,KAAK,GAAG,KAAK;AAElB,eAAA;AAAA,UACL,GAAG;AAAA,UACH,UAAU;AAAA,QACZ;AAAA,MAAA,CACD;AAGG,UAAA;AACF,cAAM,oBAAoB,EAAE,UAAU,gBAAiB,CAAA,EAAE,OAAO;AAC5C,4BAAA,iBAAiB,OAAO,OAAO;AAAA,eAC5C,OAAO;AACdC,sBAAA,MAAM,MAAM,2BAA2B;AAAA,MAAA;AAAA,IAE3C;AAGE,WAAAC,2BAAA,kBAAA;AAAA,MAACC,oBAAA;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACL,GAAG;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,UAAU;AAAA,QACV;AAAA,QAEA,aAAa,EAAE,gBAAgB,WAAW;AAAA,MAAA;AAAA,IAC5C;AAAA,EAAA;AAGN;;"}
1
+ {"version":3,"file":"Watchers.cjs.js","sources":["../../../../../src/components/Watchers/Watchers.tsx"],"sourcesContent":["import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from '@shared/api'\nimport { DropdownRef, WatcherSelect, WatcherSelectProps } from '@ynput/ayon-react-components'\nimport { forwardRef } from 'react'\nimport { toast } from 'react-toastify'\n\ninterface WatchersProps extends Omit<WatcherSelectProps, 'currentUser' | 'value'> {\n entities: { id: string; projectName: string }[]\n entityType: string\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n userName: string\n}\n\nexport const Watchers = forwardRef<DropdownRef, WatchersProps>(\n ({ entities, entityType, onWatchersUpdate, userName, ...props }, ref) => {\n const entitiesQuery = entities.map((entity) => ({\n entityId: entity.id,\n entityType,\n projectName: entity.projectName,\n }))\n\n const { data: watchers = [] } = useGetEntitiesWatchersQuery(\n {\n entities: entitiesQuery,\n },\n { skip: !entities.length },\n )\n\n // merge all watchers into a single unique array\n const uniqueWatchers = Array.from(new Set(watchers.flatMap((watcher) => watcher.watchers)))\n\n const [setEntitiesWatchers] = useSetEntitiesWatchersMutation()\n\n const handleChange = async (value: string[]) => {\n // find the difference between the current watchers and the new watchers\n // which users were added and which were removed\n const added = value.filter((watcher) => !uniqueWatchers.includes(watcher))\n const removed = uniqueWatchers.filter((watcher) => !value.includes(watcher))\n\n // for each entity, add or remove the watchers\n // we do this to preserve the unique watchers for each entity (rather than setting the same watchers for all entities)\n const updatedEntities = watchers.map((entity) => {\n // first remove\n const newWatchers = entity.watchers.filter((watcher) => !removed.includes(watcher))\n // then add\n newWatchers.push(...added)\n\n return {\n ...entity,\n watchers: newWatchers,\n }\n })\n\n // update\n try {\n await setEntitiesWatchers({ entities: updatedEntities }).unwrap()\n onWatchersUpdate && onWatchersUpdate(added, removed)\n } catch (error) {\n toast.error('Failed to update watchers')\n }\n }\n\n return (\n <WatcherSelect\n align=\"right\"\n {...props}\n value={uniqueWatchers}\n currentUser={userName}\n onChange={handleChange}\n ref={ref}\n // @ts-expect-error\n buttonProps={{ 'data-tooltip': 'Watchers' }}\n />\n )\n },\n)\n"],"names":["forwardRef","useGetEntitiesWatchersQuery","useSetEntitiesWatchersMutation","toast","jsx","WatcherSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,WAAWA,MAAA;AAAA,EACtB,CAAC,EAAE,UAAU,YAAY,kBAAkB,UAAU,GAAG,MAAM,GAAG,QAAQ;AACvE,UAAM,gBAAgB,SAAS,IAAI,CAAC,YAAY;AAAA,MAC9C,UAAU,OAAO;AAAA,MACjB;AAAA,MACA,aAAa,OAAO;AAAA,IAAA,EACpB;AAEF,UAAM,EAAE,MAAM,WAAW,CAAA,EAAO,IAAAC,YAAA;AAAA,MAC9B;AAAA,QACE,UAAU;AAAA,MACZ;AAAA,MACA,EAAE,MAAM,CAAC,SAAS,OAAO;AAAA,IAC3B;AAGA,UAAM,iBAAiB,MAAM,KAAK,IAAI,IAAI,SAAS,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC,CAAC;AAEpF,UAAA,CAAC,mBAAmB,IAAIC,2CAA+B;AAEvD,UAAA,eAAe,OAAO,UAAoB;AAGxC,YAAA,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,SAAS,OAAO,CAAC;AACnE,YAAA,UAAU,eAAe,OAAO,CAAC,YAAY,CAAC,MAAM,SAAS,OAAO,CAAC;AAI3E,YAAM,kBAAkB,SAAS,IAAI,CAAC,WAAW;AAEzC,cAAA,cAAc,OAAO,SAAS,OAAO,CAAC,YAAY,CAAC,QAAQ,SAAS,OAAO,CAAC;AAEtE,oBAAA,KAAK,GAAG,KAAK;AAElB,eAAA;AAAA,UACL,GAAG;AAAA,UACH,UAAU;AAAA,QACZ;AAAA,MAAA,CACD;AAGG,UAAA;AACF,cAAM,oBAAoB,EAAE,UAAU,gBAAiB,CAAA,EAAE,OAAO;AAC5C,4BAAA,iBAAiB,OAAO,OAAO;AAAA,eAC5C,OAAO;AACdC,sBAAA,MAAM,MAAM,2BAA2B;AAAA,MAAA;AAAA,IAE3C;AAGE,WAAAC,2BAAA,kBAAA;AAAA,MAACC,oBAAA;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACL,GAAG;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,UAAU;AAAA,QACV;AAAA,QAEA,aAAa,EAAE,gBAAgB,WAAW;AAAA,MAAA;AAAA,IAC5C;AAAA,EAAA;AAGN;;"}
@@ -63,6 +63,7 @@ import "../../api/queries/userDashboard/getUserDashboard.es.js";
63
63
  import "../../api/queries/users/getUsers.es.js";
64
64
  import "../../api/queries/users/updateUsers.es.js";
65
65
  import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from "../../api/queries/watchers/getWatchers.es.js";
66
+ import "../../api/queries/permissions/getPermissions.es.js";
66
67
  import { WatcherSelect } from "@ynput/ayon-react-components";
67
68
  import { forwardRef } from "react";
68
69
  import { toast } from "react-toastify";
@@ -1 +1 @@
1
- {"version":3,"file":"Watchers.es.js","sources":["../../../../../src/components/Watchers/Watchers.tsx"],"sourcesContent":["import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from '@shared/api'\nimport { DropdownRef, WatcherSelect, WatcherSelectProps } from '@ynput/ayon-react-components'\nimport { forwardRef } from 'react'\nimport { toast } from 'react-toastify'\n\ninterface WatchersProps extends Omit<WatcherSelectProps, 'currentUser' | 'value'> {\n entities: { id: string; projectName: string }[]\n entityType: string\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n userName: string\n}\n\nexport const Watchers = forwardRef<DropdownRef, WatchersProps>(\n ({ entities, entityType, onWatchersUpdate, userName, ...props }, ref) => {\n const entitiesQuery = entities.map((entity) => ({\n entityId: entity.id,\n entityType,\n projectName: entity.projectName,\n }))\n\n const { data: watchers = [] } = useGetEntitiesWatchersQuery(\n {\n entities: entitiesQuery,\n },\n { skip: !entities.length },\n )\n\n // merge all watchers into a single unique array\n const uniqueWatchers = Array.from(new Set(watchers.flatMap((watcher) => watcher.watchers)))\n\n const [setEntitiesWatchers] = useSetEntitiesWatchersMutation()\n\n const handleChange = async (value: string[]) => {\n // find the difference between the current watchers and the new watchers\n // which users were added and which were removed\n const added = value.filter((watcher) => !uniqueWatchers.includes(watcher))\n const removed = uniqueWatchers.filter((watcher) => !value.includes(watcher))\n\n // for each entity, add or remove the watchers\n // we do this to preserve the unique watchers for each entity (rather than setting the same watchers for all entities)\n const updatedEntities = watchers.map((entity) => {\n // first remove\n const newWatchers = entity.watchers.filter((watcher) => !removed.includes(watcher))\n // then add\n newWatchers.push(...added)\n\n return {\n ...entity,\n watchers: newWatchers,\n }\n })\n\n // update\n try {\n await setEntitiesWatchers({ entities: updatedEntities }).unwrap()\n onWatchersUpdate && onWatchersUpdate(added, removed)\n } catch (error) {\n toast.error('Failed to update watchers')\n }\n }\n\n return (\n <WatcherSelect\n align=\"right\"\n {...props}\n value={uniqueWatchers}\n currentUser={userName}\n onChange={handleChange}\n ref={ref}\n // @ts-expect-error\n buttonProps={{ 'data-tooltip': 'Watchers' }}\n />\n )\n },\n)\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,WAAW;AAAA,EACtB,CAAC,EAAE,UAAU,YAAY,kBAAkB,UAAU,GAAG,MAAM,GAAG,QAAQ;AACvE,UAAM,gBAAgB,SAAS,IAAI,CAAC,YAAY;AAAA,MAC9C,UAAU,OAAO;AAAA,MACjB;AAAA,MACA,aAAa,OAAO;AAAA,IAAA,EACpB;AAEF,UAAM,EAAE,MAAM,WAAW,CAAA,EAAO,IAAA;AAAA,MAC9B;AAAA,QACE,UAAU;AAAA,MACZ;AAAA,MACA,EAAE,MAAM,CAAC,SAAS,OAAO;AAAA,IAC3B;AAGA,UAAM,iBAAiB,MAAM,KAAK,IAAI,IAAI,SAAS,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC,CAAC;AAEpF,UAAA,CAAC,mBAAmB,IAAI,+BAA+B;AAEvD,UAAA,eAAe,OAAO,UAAoB;AAGxC,YAAA,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,SAAS,OAAO,CAAC;AACnE,YAAA,UAAU,eAAe,OAAO,CAAC,YAAY,CAAC,MAAM,SAAS,OAAO,CAAC;AAI3E,YAAM,kBAAkB,SAAS,IAAI,CAAC,WAAW;AAEzC,cAAA,cAAc,OAAO,SAAS,OAAO,CAAC,YAAY,CAAC,QAAQ,SAAS,OAAO,CAAC;AAEtE,oBAAA,KAAK,GAAG,KAAK;AAElB,eAAA;AAAA,UACL,GAAG;AAAA,UACH,UAAU;AAAA,QACZ;AAAA,MAAA,CACD;AAGG,UAAA;AACF,cAAM,oBAAoB,EAAE,UAAU,gBAAiB,CAAA,EAAE,OAAO;AAC5C,4BAAA,iBAAiB,OAAO,OAAO;AAAA,eAC5C,OAAO;AACd,cAAM,MAAM,2BAA2B;AAAA,MAAA;AAAA,IAE3C;AAGE,WAAAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACL,GAAG;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,UAAU;AAAA,QACV;AAAA,QAEA,aAAa,EAAE,gBAAgB,WAAW;AAAA,MAAA;AAAA,IAC5C;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"Watchers.es.js","sources":["../../../../../src/components/Watchers/Watchers.tsx"],"sourcesContent":["import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from '@shared/api'\nimport { DropdownRef, WatcherSelect, WatcherSelectProps } from '@ynput/ayon-react-components'\nimport { forwardRef } from 'react'\nimport { toast } from 'react-toastify'\n\ninterface WatchersProps extends Omit<WatcherSelectProps, 'currentUser' | 'value'> {\n entities: { id: string; projectName: string }[]\n entityType: string\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n userName: string\n}\n\nexport const Watchers = forwardRef<DropdownRef, WatchersProps>(\n ({ entities, entityType, onWatchersUpdate, userName, ...props }, ref) => {\n const entitiesQuery = entities.map((entity) => ({\n entityId: entity.id,\n entityType,\n projectName: entity.projectName,\n }))\n\n const { data: watchers = [] } = useGetEntitiesWatchersQuery(\n {\n entities: entitiesQuery,\n },\n { skip: !entities.length },\n )\n\n // merge all watchers into a single unique array\n const uniqueWatchers = Array.from(new Set(watchers.flatMap((watcher) => watcher.watchers)))\n\n const [setEntitiesWatchers] = useSetEntitiesWatchersMutation()\n\n const handleChange = async (value: string[]) => {\n // find the difference between the current watchers and the new watchers\n // which users were added and which were removed\n const added = value.filter((watcher) => !uniqueWatchers.includes(watcher))\n const removed = uniqueWatchers.filter((watcher) => !value.includes(watcher))\n\n // for each entity, add or remove the watchers\n // we do this to preserve the unique watchers for each entity (rather than setting the same watchers for all entities)\n const updatedEntities = watchers.map((entity) => {\n // first remove\n const newWatchers = entity.watchers.filter((watcher) => !removed.includes(watcher))\n // then add\n newWatchers.push(...added)\n\n return {\n ...entity,\n watchers: newWatchers,\n }\n })\n\n // update\n try {\n await setEntitiesWatchers({ entities: updatedEntities }).unwrap()\n onWatchersUpdate && onWatchersUpdate(added, removed)\n } catch (error) {\n toast.error('Failed to update watchers')\n }\n }\n\n return (\n <WatcherSelect\n align=\"right\"\n {...props}\n value={uniqueWatchers}\n currentUser={userName}\n onChange={handleChange}\n ref={ref}\n // @ts-expect-error\n buttonProps={{ 'data-tooltip': 'Watchers' }}\n />\n )\n },\n)\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,WAAW;AAAA,EACtB,CAAC,EAAE,UAAU,YAAY,kBAAkB,UAAU,GAAG,MAAM,GAAG,QAAQ;AACvE,UAAM,gBAAgB,SAAS,IAAI,CAAC,YAAY;AAAA,MAC9C,UAAU,OAAO;AAAA,MACjB;AAAA,MACA,aAAa,OAAO;AAAA,IAAA,EACpB;AAEF,UAAM,EAAE,MAAM,WAAW,CAAA,EAAO,IAAA;AAAA,MAC9B;AAAA,QACE,UAAU;AAAA,MACZ;AAAA,MACA,EAAE,MAAM,CAAC,SAAS,OAAO;AAAA,IAC3B;AAGA,UAAM,iBAAiB,MAAM,KAAK,IAAI,IAAI,SAAS,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC,CAAC;AAEpF,UAAA,CAAC,mBAAmB,IAAI,+BAA+B;AAEvD,UAAA,eAAe,OAAO,UAAoB;AAGxC,YAAA,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,SAAS,OAAO,CAAC;AACnE,YAAA,UAAU,eAAe,OAAO,CAAC,YAAY,CAAC,MAAM,SAAS,OAAO,CAAC;AAI3E,YAAM,kBAAkB,SAAS,IAAI,CAAC,WAAW;AAEzC,cAAA,cAAc,OAAO,SAAS,OAAO,CAAC,YAAY,CAAC,QAAQ,SAAS,OAAO,CAAC;AAEtE,oBAAA,KAAK,GAAG,KAAK;AAElB,eAAA;AAAA,UACL,GAAG;AAAA,UACH,UAAU;AAAA,QACZ;AAAA,MAAA,CACD;AAGG,UAAA;AACF,cAAM,oBAAoB,EAAE,UAAU,gBAAiB,CAAA,EAAE,OAAO;AAC5C,4BAAA,iBAAiB,OAAO,OAAO;AAAA,eAC5C,OAAO;AACd,cAAM,MAAM,2BAA2B;AAAA,MAAA;AAAA,IAE3C;AAGE,WAAAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACL,GAAG;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,UAAU;AAAA,QACV;AAAA,QAEA,aAAa,EAAE,gBAAgB,WAAW;AAAA,MAAA;AAAA,IAC5C;AAAA,EAAA;AAGN;"}
@@ -72,6 +72,7 @@ require("../../api/queries/userDashboard/getUserDashboard.cjs.js");
72
72
  require("../../api/queries/users/getUsers.cjs.js");
73
73
  require("../../api/queries/users/updateUsers.cjs.js");
74
74
  require("../../api/queries/watchers/getWatchers.cjs.js");
75
+ require("../../api/queries/permissions/getPermissions.cjs.js");
75
76
  require("@dnd-kit/core");
76
77
  require("@dnd-kit/sortable");
77
78
  require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");
@@ -88,6 +89,8 @@ require("../../context/SettingsPanelContext.cjs.js");
88
89
  require("../../context/pip/PiPProvider.cjs.js");
89
90
  require("react-dom");
90
91
  require("../../context/pip/PiPWrapper.cjs.js");
92
+ require("../../context/AddonProjectContext.cjs.js");
93
+ require("../../context/AddonContext.cjs.js");
91
94
  require("../../components/ReviewableCard/ReviewableCard.cjs.js");
92
95
  require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");
93
96
  require("../../components/FileThumbnail/FileThumbnail.cjs.js");
@@ -130,6 +133,7 @@ require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");
130
133
  require("../ProjectTreeTable/context/CellEditingContext.cjs.js");
131
134
  require("../ProjectTreeTable/context/ClipboardContext.cjs.js");
132
135
  require("../ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js");
136
+ require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");
133
137
  require("@tanstack/react-table");
134
138
  require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");
135
139
  require("../ProjectTreeTable/widgets/DateWidget.cjs.js");
@@ -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;;"}
@@ -70,6 +70,7 @@ import "../../api/queries/userDashboard/getUserDashboard.es.js";
70
70
  import "../../api/queries/users/getUsers.es.js";
71
71
  import "../../api/queries/users/updateUsers.es.js";
72
72
  import "../../api/queries/watchers/getWatchers.es.js";
73
+ import "../../api/queries/permissions/getPermissions.es.js";
73
74
  import "@dnd-kit/core";
74
75
  import "@dnd-kit/sortable";
75
76
  import "../../components/ReviewablesList/ReviewablesList.styled.es.js";
@@ -86,6 +87,8 @@ import "../../context/SettingsPanelContext.es.js";
86
87
  import "../../context/pip/PiPProvider.es.js";
87
88
  import "react-dom";
88
89
  import "../../context/pip/PiPWrapper.es.js";
90
+ import "../../context/AddonProjectContext.es.js";
91
+ import "../../context/AddonContext.es.js";
89
92
  import "../../components/ReviewableCard/ReviewableCard.es.js";
90
93
  import "../../components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js";
91
94
  import "../../components/FileThumbnail/FileThumbnail.es.js";
@@ -128,6 +131,7 @@ import "../ProjectTreeTable/context/ColumnSettingsContext.es.js";
128
131
  import "../ProjectTreeTable/context/CellEditingContext.es.js";
129
132
  import "../ProjectTreeTable/context/ClipboardContext.es.js";
130
133
  import "../ProjectTreeTable/context/ProjectTableSelectionContext.es.js";
134
+ import "../ProjectTreeTable/context/ProjectDataContext.es.js";
131
135
  import "@tanstack/react-table";
132
136
  import "../ProjectTreeTable/widgets/CollapsedWidget.es.js";
133
137
  import "../ProjectTreeTable/widgets/DateWidget.es.js";
@@ -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;"}
@@ -23,7 +23,7 @@ const ActionIcon = ({ icon, isExecuting }) => {
23
23
  } else if ((icon == null ? void 0 : icon.type) === "url") {
24
24
  component = /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("img", { src: icon.url, title: "Action" });
25
25
  } else {
26
- component = /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.Icon, { icon: "manufacturing" });
26
+ component = /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.Icon, { icon: "category" });
27
27
  }
28
28
  return component;
29
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ActionIcon.cjs.js","sources":["../../../../../src/containers/Actions/ActionIcon.tsx"],"sourcesContent":["import { IconModel } from '@shared/api'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC } from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nconst spinning = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst SpinningIcon = styled(Icon)`\n .icon {\n animation: ${spinning} 1s linear infinite;\n }\n`\n\ninterface ActionIconProps {\n icon: IconModel | undefined\n isExecuting?: boolean\n}\n\nconst ActionIcon: FC<ActionIconProps> = ({ icon, isExecuting }) => {\n let component\n\n if (isExecuting) component = <SpinningIcon icon=\"sync\" />\n else if (icon?.type === 'material-symbols' && icon?.name) {\n component = <Icon icon={icon.name} style={{ color: icon.color }} />\n } else if (icon?.type === 'url') {\n component = <img src={icon.url} title=\"Action\" />\n } else {\n component = <Icon icon=\"manufacturing\" />\n }\n\n return component\n}\n\nexport default ActionIcon\n"],"names":["keyframes","Icon","jsx"],"mappings":";;;;AAKA,MAAM,WAAWA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASjB,MAAM,eAAe,OAAOC,wBAAI;AAAA;AAAA,iBAEf,QAAQ;AAAA;AAAA;AASzB,MAAM,aAAkC,CAAC,EAAE,MAAM,kBAAkB;AAC7D,MAAA;AAEJ,MAAI,YAAa,aAAaC,2BAAA,kBAAA,IAAA,cAAA,EAAa,MAAK,QAAO;AAAA,YAC9C,6BAAM,UAAS,uBAAsB,6BAAM,OAAM;AAC5C,gBAAAA,2BAAA,kBAAA,IAACD,0BAAK,EAAA,MAAM,KAAK,MAAM,OAAO,EAAE,OAAO,KAAK,MAAS,EAAA,CAAA;AAAA,EAAA,YACxD,6BAAM,UAAS,OAAO;AAC/B,iEAAa,OAAI,EAAA,KAAK,KAAK,KAAK,OAAM,UAAS;AAAA,EAAA,OAC1C;AACO,gBAAAC,2BAAAA,kBAAAA,IAACD,oBAAAA,MAAK,EAAA,MAAK,gBAAgB,CAAA;AAAA,EAAA;AAGlC,SAAA;AACT;;"}
1
+ {"version":3,"file":"ActionIcon.cjs.js","sources":["../../../../../src/containers/Actions/ActionIcon.tsx"],"sourcesContent":["import { IconModel } from '@shared/api'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC } from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nconst spinning = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst SpinningIcon = styled(Icon)`\n .icon {\n animation: ${spinning} 1s linear infinite;\n }\n`\n\ninterface ActionIconProps {\n icon: IconModel | undefined\n isExecuting?: boolean\n}\n\nconst ActionIcon: FC<ActionIconProps> = ({ icon, isExecuting }) => {\n let component\n\n if (isExecuting) component = <SpinningIcon icon=\"sync\" />\n else if (icon?.type === 'material-symbols' && icon?.name) {\n component = <Icon icon={icon.name} style={{ color: icon.color }} />\n } else if (icon?.type === 'url') {\n component = <img src={icon.url} title=\"Action\" />\n } else {\n component = <Icon icon=\"category\" />\n }\n\n return component\n}\n\nexport default ActionIcon\n"],"names":["keyframes","Icon","jsx"],"mappings":";;;;AAKA,MAAM,WAAWA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASjB,MAAM,eAAe,OAAOC,wBAAI;AAAA;AAAA,iBAEf,QAAQ;AAAA;AAAA;AASzB,MAAM,aAAkC,CAAC,EAAE,MAAM,kBAAkB;AAC7D,MAAA;AAEJ,MAAI,YAAa,aAAaC,2BAAA,kBAAA,IAAA,cAAA,EAAa,MAAK,QAAO;AAAA,YAC9C,6BAAM,UAAS,uBAAsB,6BAAM,OAAM;AAC5C,gBAAAA,2BAAA,kBAAA,IAACD,0BAAK,EAAA,MAAM,KAAK,MAAM,OAAO,EAAE,OAAO,KAAK,MAAS,EAAA,CAAA;AAAA,EAAA,YACxD,6BAAM,UAAS,OAAO;AAC/B,iEAAa,OAAI,EAAA,KAAK,KAAK,KAAK,OAAM,UAAS;AAAA,EAAA,OAC1C;AACO,gBAAAC,2BAAAA,kBAAAA,IAACD,oBAAAA,MAAK,EAAA,MAAK,WAAW,CAAA;AAAA,EAAA;AAG7B,SAAA;AACT;;"}
@@ -22,7 +22,7 @@ const ActionIcon = ({ icon, isExecuting }) => {
22
22
  } else if ((icon == null ? void 0 : icon.type) === "url") {
23
23
  component = /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: icon.url, title: "Action" });
24
24
  } else {
25
- component = /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { icon: "manufacturing" });
25
+ component = /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { icon: "category" });
26
26
  }
27
27
  return component;
28
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ActionIcon.es.js","sources":["../../../../../src/containers/Actions/ActionIcon.tsx"],"sourcesContent":["import { IconModel } from '@shared/api'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC } from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nconst spinning = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst SpinningIcon = styled(Icon)`\n .icon {\n animation: ${spinning} 1s linear infinite;\n }\n`\n\ninterface ActionIconProps {\n icon: IconModel | undefined\n isExecuting?: boolean\n}\n\nconst ActionIcon: FC<ActionIconProps> = ({ icon, isExecuting }) => {\n let component\n\n if (isExecuting) component = <SpinningIcon icon=\"sync\" />\n else if (icon?.type === 'material-symbols' && icon?.name) {\n component = <Icon icon={icon.name} style={{ color: icon.color }} />\n } else if (icon?.type === 'url') {\n component = <img src={icon.url} title=\"Action\" />\n } else {\n component = <Icon icon=\"manufacturing\" />\n }\n\n return component\n}\n\nexport default ActionIcon\n"],"names":["jsx"],"mappings":";;;AAKA,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASjB,MAAM,eAAe,OAAO,IAAI;AAAA;AAAA,iBAEf,QAAQ;AAAA;AAAA;AASzB,MAAM,aAAkC,CAAC,EAAE,MAAM,kBAAkB;AAC7D,MAAA;AAEJ,MAAI,YAAa,aAAaA,kCAAA,IAAA,cAAA,EAAa,MAAK,QAAO;AAAA,YAC9C,6BAAM,UAAS,uBAAsB,6BAAM,OAAM;AAC5C,gBAAAA,kCAAA,IAAC,MAAK,EAAA,MAAM,KAAK,MAAM,OAAO,EAAE,OAAO,KAAK,MAAS,EAAA,CAAA;AAAA,EAAA,YACxD,6BAAM,UAAS,OAAO;AAC/B,sDAAa,OAAI,EAAA,KAAK,KAAK,KAAK,OAAM,UAAS;AAAA,EAAA,OAC1C;AACO,gBAAAA,kCAAAA,IAAC,MAAK,EAAA,MAAK,gBAAgB,CAAA;AAAA,EAAA;AAGlC,SAAA;AACT;"}
1
+ {"version":3,"file":"ActionIcon.es.js","sources":["../../../../../src/containers/Actions/ActionIcon.tsx"],"sourcesContent":["import { IconModel } from '@shared/api'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC } from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nconst spinning = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst SpinningIcon = styled(Icon)`\n .icon {\n animation: ${spinning} 1s linear infinite;\n }\n`\n\ninterface ActionIconProps {\n icon: IconModel | undefined\n isExecuting?: boolean\n}\n\nconst ActionIcon: FC<ActionIconProps> = ({ icon, isExecuting }) => {\n let component\n\n if (isExecuting) component = <SpinningIcon icon=\"sync\" />\n else if (icon?.type === 'material-symbols' && icon?.name) {\n component = <Icon icon={icon.name} style={{ color: icon.color }} />\n } else if (icon?.type === 'url') {\n component = <img src={icon.url} title=\"Action\" />\n } else {\n component = <Icon icon=\"category\" />\n }\n\n return component\n}\n\nexport default ActionIcon\n"],"names":["jsx"],"mappings":";;;AAKA,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASjB,MAAM,eAAe,OAAO,IAAI;AAAA;AAAA,iBAEf,QAAQ;AAAA;AAAA;AASzB,MAAM,aAAkC,CAAC,EAAE,MAAM,kBAAkB;AAC7D,MAAA;AAEJ,MAAI,YAAa,aAAaA,kCAAA,IAAA,cAAA,EAAa,MAAK,QAAO;AAAA,YAC9C,6BAAM,UAAS,uBAAsB,6BAAM,OAAM;AAC5C,gBAAAA,kCAAA,IAAC,MAAK,EAAA,MAAM,KAAK,MAAM,OAAO,EAAE,OAAO,KAAK,MAAS,EAAA,CAAA;AAAA,EAAA,YACxD,6BAAM,UAAS,OAAO;AAC/B,sDAAa,OAAI,EAAA,KAAK,KAAK,KAAK,OAAM,UAAS;AAAA,EAAA,OAC1C;AACO,gBAAAA,kCAAAA,IAAC,MAAK,EAAA,MAAK,WAAW,CAAA;AAAA,EAAA;AAG7B,SAAA;AACT;"}
@@ -69,6 +69,7 @@ require("../../api/queries/userDashboard/getUserDashboard.cjs.js");
69
69
  require("../../api/queries/users/getUsers.cjs.js");
70
70
  require("../../api/queries/users/updateUsers.cjs.js");
71
71
  require("../../api/queries/watchers/getWatchers.cjs.js");
72
+ require("../../api/queries/permissions/getPermissions.cjs.js");
72
73
  const ActionsDropdown = require("./ActionsDropdown/ActionsDropdown.cjs.js");
73
74
  const ActionIcon = require("./ActionIcon.cjs.js");
74
75
  require("../../context/RemoteModulesContext.cjs.js");
@@ -81,6 +82,8 @@ require("../../context/SettingsPanelContext.cjs.js");
81
82
  require("../../context/pip/PiPProvider.cjs.js");
82
83
  require("react-dom");
83
84
  require("../../context/pip/PiPWrapper.cjs.js");
85
+ require("../../context/AddonProjectContext.cjs.js");
86
+ require("../../context/AddonContext.cjs.js");
84
87
  const useActionTriggers = require("../../hooks/useActionTriggers.cjs.js");
85
88
  const ActionConfigDialog = require("./ActionConfigDialog.cjs.js");
86
89
  const InteractiveActionDialog = require("./InteractiveActionDialog.cjs.js");
@@ -97,6 +100,7 @@ const Actions = ({
97
100
  entitySubTypes,
98
101
  isLoadingEntity,
99
102
  searchParams,
103
+ featuredCount = 2,
100
104
  onNavigate,
101
105
  onSetSearchParams
102
106
  }) => {
@@ -176,15 +180,14 @@ const Actions = ({
176
180
  }
177
181
  return options;
178
182
  }, [groupedActions, unorderedCategories, categoryOrder]);
179
- const featuredNumber = 2;
180
183
  const featuredActions = React.useMemo(() => {
181
- let tempFeaturedActions = actions.filter((action) => action.featured).sort((a, b) => (a.order || 0) - (b.order || 0)).slice(0, featuredNumber);
182
- if (tempFeaturedActions.length < featuredNumber) {
184
+ let tempFeaturedActions = actions.filter((action) => action.featured).sort((a, b) => (a.order || 0) - (b.order || 0)).slice(0, featuredCount);
185
+ if (tempFeaturedActions.length < featuredCount) {
183
186
  categories.forEach((category) => {
184
- if (tempFeaturedActions.length >= featuredNumber) return;
187
+ if (tempFeaturedActions.length >= featuredCount) return;
185
188
  const actions2 = groupedActions[category];
186
189
  if (!actions2 || !actions2.length) return;
187
- for (let i = tempFeaturedActions.length; i < featuredNumber; i++) {
190
+ for (let i = tempFeaturedActions.length; i < featuredCount; i++) {
188
191
  const action = actions2[i];
189
192
  if (!action) break;
190
193
  if (!action.icon) continue;
@@ -266,7 +269,10 @@ const Actions = ({
266
269
  const handleSubmitInteractiveForm = async (identifier, formData) => {
267
270
  handleExecuteAction(identifier, null, formData);
268
271
  };
269
- const loadingActions = [placeholder, placeholder, placeholder];
272
+ const loadingActions = React.useMemo(
273
+ () => Array(featuredCount).fill(placeholder),
274
+ [featuredCount, placeholder]
275
+ );
270
276
  const isLoading = isFetchingActions || isLoadingEntity;
271
277
  const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions;
272
278
  return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(Actions_styled.Actions, { className: "actions", children: [
@@ -275,7 +281,6 @@ const Actions = ({
275
281
  {
276
282
  className: clsx("action", {
277
283
  loading: isLoading,
278
- // @ts-expect-error
279
284
  isPlaceholder: action.isPlaceholder
280
285
  }),
281
286
  "data-tooltip": action.groupLabel ? action.groupLabel + " " + action.label : action.label,
@@ -289,7 +294,7 @@ const Actions = ({
289
294
  ActionsDropdown.ActionsDropdown,
290
295
  {
291
296
  options: dropdownOptions,
292
- isLoading,
297
+ isLoading: isLoading && featuredCount > 0,
293
298
  onAction: handleExecuteAction,
294
299
  onConfig: handleConfigureAction
295
300
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.cjs.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { ActionTriggersProps, useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n groupLabel: '',\n}\n\ninterface ActionsProps extends ActionTriggersProps {\n entities: { id: string; projectName: string; entitySubType?: string }[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n searchParams,\n onNavigate,\n onSetSearchParams,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers({ onNavigate, onSetSearchParams, searchParams })\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .filter((entity) => entity.entitySubType)\n .map((entity) => entity.entitySubType as string)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes?.length ? entitySubTypes : entitySubtypesLoaded\n\n // all types except version/representation should have subtypes\n if (\n !entitySubTypesToUse?.length &&\n entityType !== 'version' &&\n entityType !== 'representation'\n ) {\n console.warn('No entity subtypes found')\n return null\n }\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.groupLabel ? action.groupLabel + ' ' + action.label : action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredNumber = 2\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredNumber)\n\n // Check if we need to add more actions to reach featuredNumber\n if (tempFeaturedActions.length < featuredNumber) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredNumber) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredNumber; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = [placeholder, placeholder, placeholder]\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n // @ts-expect-error\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.groupLabel ? action.groupLabel + ' ' + action.label : action.label}\n // @ts-expect-error\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["useActionTriggers","useState","useMemo","useEffect","useGetActionsFromContextQuery","actions","useExecuteActionMutation","toast","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction","ActionsDropdown","ActionConfigDialog","InteractiveActionDialog"],"mappings":"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"}
1
+ {"version":3,"file":"Actions.cjs.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { ActionTriggersProps, useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n groupLabel: '',\n}\n\ninterface ActionsProps extends ActionTriggersProps {\n entities: { id: string; projectName: string; entitySubType?: string }[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n featuredCount?: number\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n searchParams,\n featuredCount = 2,\n onNavigate,\n onSetSearchParams,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers({ onNavigate, onSetSearchParams, searchParams })\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .filter((entity) => entity.entitySubType)\n .map((entity) => entity.entitySubType as string)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes?.length ? entitySubTypes : entitySubtypesLoaded\n\n // all types except version/representation should have subtypes\n if (\n !entitySubTypesToUse?.length &&\n entityType !== 'version' &&\n entityType !== 'representation'\n ) {\n console.warn('No entity subtypes found')\n return null\n }\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.groupLabel ? action.groupLabel + ' ' + action.label : action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredCount)\n\n // Check if we need to add more actions to reach featuredCount\n if (tempFeaturedActions.length < featuredCount) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredCount) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredCount; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = useMemo(\n () => Array(featuredCount).fill(placeholder),\n [featuredCount, placeholder],\n )\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.groupLabel ? action.groupLabel + ' ' + action.label : action.label}\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading && featuredCount > 0}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["useActionTriggers","useState","useMemo","useEffect","useGetActionsFromContextQuery","actions","useExecuteActionMutation","toast","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction","ActionsDropdown","ActionConfigDialog","InteractiveActionDialog"],"mappings":"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"}
@@ -67,6 +67,7 @@ import "../../api/queries/userDashboard/getUserDashboard.es.js";
67
67
  import "../../api/queries/users/getUsers.es.js";
68
68
  import "../../api/queries/users/updateUsers.es.js";
69
69
  import "../../api/queries/watchers/getWatchers.es.js";
70
+ import "../../api/queries/permissions/getPermissions.es.js";
70
71
  import { ActionsDropdown } from "./ActionsDropdown/ActionsDropdown.es.js";
71
72
  import ActionIcon from "./ActionIcon.es.js";
72
73
  import "../../context/RemoteModulesContext.es.js";
@@ -79,6 +80,8 @@ import "../../context/SettingsPanelContext.es.js";
79
80
  import "../../context/pip/PiPProvider.es.js";
80
81
  import "react-dom";
81
82
  import "../../context/pip/PiPWrapper.es.js";
83
+ import "../../context/AddonProjectContext.es.js";
84
+ import "../../context/AddonContext.es.js";
82
85
  import { useActionTriggers } from "../../hooks/useActionTriggers.es.js";
83
86
  import { ActionConfigDialog } from "./ActionConfigDialog.es.js";
84
87
  import { InteractiveActionDialog } from "./InteractiveActionDialog.es.js";
@@ -95,6 +98,7 @@ const Actions = ({
95
98
  entitySubTypes,
96
99
  isLoadingEntity,
97
100
  searchParams,
101
+ featuredCount = 2,
98
102
  onNavigate,
99
103
  onSetSearchParams
100
104
  }) => {
@@ -174,15 +178,14 @@ const Actions = ({
174
178
  }
175
179
  return options;
176
180
  }, [groupedActions, unorderedCategories, categoryOrder]);
177
- const featuredNumber = 2;
178
181
  const featuredActions = useMemo(() => {
179
- let tempFeaturedActions = actions.filter((action) => action.featured).sort((a, b) => (a.order || 0) - (b.order || 0)).slice(0, featuredNumber);
180
- if (tempFeaturedActions.length < featuredNumber) {
182
+ let tempFeaturedActions = actions.filter((action) => action.featured).sort((a, b) => (a.order || 0) - (b.order || 0)).slice(0, featuredCount);
183
+ if (tempFeaturedActions.length < featuredCount) {
181
184
  categories.forEach((category) => {
182
- if (tempFeaturedActions.length >= featuredNumber) return;
185
+ if (tempFeaturedActions.length >= featuredCount) return;
183
186
  const actions2 = groupedActions[category];
184
187
  if (!actions2 || !actions2.length) return;
185
- for (let i = tempFeaturedActions.length; i < featuredNumber; i++) {
188
+ for (let i = tempFeaturedActions.length; i < featuredCount; i++) {
186
189
  const action = actions2[i];
187
190
  if (!action) break;
188
191
  if (!action.icon) continue;
@@ -264,7 +267,10 @@ const Actions = ({
264
267
  const handleSubmitInteractiveForm = async (identifier, formData) => {
265
268
  handleExecuteAction(identifier, null, formData);
266
269
  };
267
- const loadingActions = [placeholder, placeholder, placeholder];
270
+ const loadingActions = useMemo(
271
+ () => Array(featuredCount).fill(placeholder),
272
+ [featuredCount, placeholder]
273
+ );
268
274
  const isLoading = isFetchingActions || isLoadingEntity;
269
275
  const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions;
270
276
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Actions$1, { className: "actions", children: [
@@ -273,7 +279,6 @@ const Actions = ({
273
279
  {
274
280
  className: clsx("action", {
275
281
  loading: isLoading,
276
- // @ts-expect-error
277
282
  isPlaceholder: action.isPlaceholder
278
283
  }),
279
284
  "data-tooltip": action.groupLabel ? action.groupLabel + " " + action.label : action.label,
@@ -287,7 +292,7 @@ const Actions = ({
287
292
  ActionsDropdown,
288
293
  {
289
294
  options: dropdownOptions,
290
- isLoading,
295
+ isLoading: isLoading && featuredCount > 0,
291
296
  onAction: handleExecuteAction,
292
297
  onConfig: handleConfigureAction
293
298
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.es.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { ActionTriggersProps, useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n groupLabel: '',\n}\n\ninterface ActionsProps extends ActionTriggersProps {\n entities: { id: string; projectName: string; entitySubType?: string }[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n searchParams,\n onNavigate,\n onSetSearchParams,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers({ onNavigate, onSetSearchParams, searchParams })\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .filter((entity) => entity.entitySubType)\n .map((entity) => entity.entitySubType as string)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes?.length ? entitySubTypes : entitySubtypesLoaded\n\n // all types except version/representation should have subtypes\n if (\n !entitySubTypesToUse?.length &&\n entityType !== 'version' &&\n entityType !== 'representation'\n ) {\n console.warn('No entity subtypes found')\n return null\n }\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.groupLabel ? action.groupLabel + ' ' + action.label : action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredNumber = 2\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredNumber)\n\n // Check if we need to add more actions to reach featuredNumber\n if (tempFeaturedActions.length < featuredNumber) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredNumber) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredNumber; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = [placeholder, placeholder, placeholder]\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n // @ts-expect-error\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.groupLabel ? action.groupLabel + ' ' + action.label : action.label}\n // @ts-expect-error\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["actions","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction"],"mappings":"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"}
1
+ {"version":3,"file":"Actions.es.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { ActionTriggersProps, useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n groupLabel: '',\n}\n\ninterface ActionsProps extends ActionTriggersProps {\n entities: { id: string; projectName: string; entitySubType?: string }[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n featuredCount?: number\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n searchParams,\n featuredCount = 2,\n onNavigate,\n onSetSearchParams,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers({ onNavigate, onSetSearchParams, searchParams })\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .filter((entity) => entity.entitySubType)\n .map((entity) => entity.entitySubType as string)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes?.length ? entitySubTypes : entitySubtypesLoaded\n\n // all types except version/representation should have subtypes\n if (\n !entitySubTypesToUse?.length &&\n entityType !== 'version' &&\n entityType !== 'representation'\n ) {\n console.warn('No entity subtypes found')\n return null\n }\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.groupLabel ? action.groupLabel + ' ' + action.label : action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredCount)\n\n // Check if we need to add more actions to reach featuredCount\n if (tempFeaturedActions.length < featuredCount) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredCount) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredCount; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = useMemo(\n () => Array(featuredCount).fill(placeholder),\n [featuredCount, placeholder],\n )\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.groupLabel ? action.groupLabel + ' ' + action.label : action.label}\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading && featuredCount > 0}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["actions","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction"],"mappings":"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"}
@@ -79,9 +79,9 @@ const ActionsDropdown = ({
79
79
  value: [],
80
80
  placeholder: "",
81
81
  itemTemplate: (option) => /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ActionsDropdownItem, { ...option, onConfig: handleConfigClick }),
82
- valueTemplate: () => /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.DefaultValueTemplate, { placeholder: "", value: [] }),
82
+ valueTemplate: () => /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.DefaultValueTemplate, { placeholder: "", value: [], dropIcon: "category" }),
83
83
  onChange: (v) => onAction(v[0]),
84
- buttonProps: { ["data-tooltip"]: "All actions" }
84
+ buttonProps: { ["data-tooltip"]: "Actions", ["data-tooltip-delay"]: 0 }
85
85
  }
86
86
  );
87
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ActionsDropdown.cjs.js","sources":["../../../../../../src/containers/Actions/ActionsDropdown/ActionsDropdown.tsx"],"sourcesContent":["import { DefaultValueTemplate, Button, Spacer, DropdownRef } from '@ynput/ayon-react-components'\nimport { DropdownHeader, DropdownItem, StyledDropdown } from './ActionsDropdown.styled'\nimport clsx from 'clsx'\nimport { useRef } from 'react'\nimport { upperFirst } from 'lodash'\nimport ActionIcon from '../ActionIcon'\nimport styled from 'styled-components'\nimport { IconModel } from '@shared/api'\n\nconst ActionItemContainer = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n gap: 4px;\n\n // use visibility instead of display, so dropdown adjusts its width\n button {\n display: flex;\n visibility: hidden;\n }\n\n &:hover,\n &:focus-within {\n button {\n visibility: visible;\n }\n }\n`\n\ntype ActionsDropdownItemProps = {\n value: string\n label: string\n icon?: IconModel\n header?: boolean\n hasConfig?: boolean\n onConfig?: (value: string) => void\n}\n\nexport const ActionsDropdownItem = ({\n value,\n label,\n icon,\n header,\n hasConfig,\n onConfig,\n}: ActionsDropdownItemProps) => {\n if (header) return <DropdownHeader>{upperFirst(label)}</DropdownHeader>\n\n const handleConfig = (e: any) => {\n onConfig?.(value)\n e.stopPropagation()\n e.preventDefault()\n }\n\n return (\n <DropdownItem>\n <ActionItemContainer>\n <ActionIcon icon={icon} />\n <span>{label}</span>\n <Spacer />\n {hasConfig && (\n <Button\n onClick={handleConfig}\n icon=\"settings_applications\"\n tabIndex={-1}\n style={{ background: 'none', padding: 0 }}\n />\n )}\n </ActionItemContainer>\n </DropdownItem>\n )\n}\n\nexport type ActionsDropdownProps = {\n options: ActionsDropdownItemProps[]\n isLoading?: boolean\n onAction: (value: string) => void\n onConfig: (e: any) => void\n}\n\nexport const ActionsDropdown = ({\n options,\n isLoading,\n onAction,\n onConfig,\n}: ActionsDropdownProps) => {\n const dropdownRef = useRef<DropdownRef>(null)\n\n const handleConfigClick = (e: any) => {\n dropdownRef.current?.close()\n onConfig(e)\n }\n\n return (\n <StyledDropdown\n ref={dropdownRef}\n disabled={isLoading}\n className={clsx('more', { loading: isLoading })}\n options={options}\n maxOptionsShown={100}\n value={[]}\n placeholder=\"\"\n itemTemplate={(option) => <ActionsDropdownItem {...option} onConfig={handleConfigClick} />}\n valueTemplate={() => <DefaultValueTemplate placeholder=\"\" value={[]} />}\n onChange={(v) => onAction(v[0])}\n // @ts-expect-error\n buttonProps={{ ['data-tooltip']: 'All actions' }}\n />\n )\n}\n"],"names":["jsx","DropdownHeader","upperFirst","DropdownItem","jsxs","Spacer","Button","useRef","StyledDropdown","DefaultValueTemplate"],"mappings":";;;;;;;;;;AASA,MAAM,sBAAsB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6B5B,MAAM,sBAAsB,CAAC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAgC;AAC9B,MAAI,OAAe,QAAAA,2BAAAA,kBAAAA,IAACC,uBAAgB,gBAAA,EAAA,UAAAC,OAAA,WAAW,KAAK,GAAE;AAEhD,QAAA,eAAe,CAAC,MAAW;AAC/B,yCAAW;AACX,MAAE,gBAAgB;AAClB,MAAE,eAAe;AAAA,EACnB;AAGE,SAAAF,2BAAAA,kBAAAA,IAACG,uBAAAA,cACC,EAAA,UAAAC,2BAAAA,kBAAAA,KAAC,qBACC,EAAA,UAAA;AAAA,IAAAJ,iDAAC,cAAW,MAAY;AAAA,IACxBA,2BAAAA,kBAAAA,IAAC,UAAM,UAAM,MAAA,CAAA;AAAA,qDACZK,oBAAO,QAAA,EAAA;AAAA,IACP,aACCL,2BAAA,kBAAA;AAAA,MAACM,oBAAA;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,MAAK;AAAA,QACL,UAAU;AAAA,QACV,OAAO,EAAE,YAAY,QAAQ,SAAS,EAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EAC1C,EAAA,CAEJ,EACF,CAAA;AAEJ;AASO,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AACpB,QAAA,cAAcC,aAAoB,IAAI;AAEtC,QAAA,oBAAoB,CAAC,MAAW;;AACpC,sBAAY,YAAZ,mBAAqB;AACrB,aAAS,CAAC;AAAA,EACZ;AAGE,SAAAP,2BAAA,kBAAA;AAAA,IAACQ,uBAAA;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,UAAU;AAAA,MACV,WAAW,KAAK,QAAQ,EAAE,SAAS,WAAW;AAAA,MAC9C;AAAA,MACA,iBAAiB;AAAA,MACjB,OAAO,CAAC;AAAA,MACR,aAAY;AAAA,MACZ,cAAc,CAAC,WAAWR,iDAAC,uBAAqB,GAAG,QAAQ,UAAU,mBAAmB;AAAA,MACxF,eAAe,MAAOA,2BAAA,kBAAA,IAAAS,0CAAA,EAAqB,aAAY,IAAG,OAAO,CAAA,GAAI;AAAA,MACrE,UAAU,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC;AAAA,MAE9B,aAAa,EAAE,CAAC,cAAc,GAAG,cAAc;AAAA,IAAA;AAAA,EACjD;AAEJ;;;"}
1
+ {"version":3,"file":"ActionsDropdown.cjs.js","sources":["../../../../../../src/containers/Actions/ActionsDropdown/ActionsDropdown.tsx"],"sourcesContent":["import { DefaultValueTemplate, Button, Spacer, DropdownRef } from '@ynput/ayon-react-components'\nimport { DropdownHeader, DropdownItem, StyledDropdown } from './ActionsDropdown.styled'\nimport clsx from 'clsx'\nimport { useRef } from 'react'\nimport { upperFirst } from 'lodash'\nimport ActionIcon from '../ActionIcon'\nimport styled from 'styled-components'\nimport { IconModel } from '@shared/api'\n\nconst ActionItemContainer = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n gap: 4px;\n\n // use visibility instead of display, so dropdown adjusts its width\n button {\n display: flex;\n visibility: hidden;\n }\n\n &:hover,\n &:focus-within {\n button {\n visibility: visible;\n }\n }\n`\n\ntype ActionsDropdownItemProps = {\n value: string\n label: string\n icon?: IconModel\n header?: boolean\n hasConfig?: boolean\n onConfig?: (value: string) => void\n}\n\nexport const ActionsDropdownItem = ({\n value,\n label,\n icon,\n header,\n hasConfig,\n onConfig,\n}: ActionsDropdownItemProps) => {\n if (header) return <DropdownHeader>{upperFirst(label)}</DropdownHeader>\n\n const handleConfig = (e: any) => {\n onConfig?.(value)\n e.stopPropagation()\n e.preventDefault()\n }\n\n return (\n <DropdownItem>\n <ActionItemContainer>\n <ActionIcon icon={icon} />\n <span>{label}</span>\n <Spacer />\n {hasConfig && (\n <Button\n onClick={handleConfig}\n icon=\"settings_applications\"\n tabIndex={-1}\n style={{ background: 'none', padding: 0 }}\n />\n )}\n </ActionItemContainer>\n </DropdownItem>\n )\n}\n\nexport type ActionsDropdownProps = {\n options: ActionsDropdownItemProps[]\n isLoading?: boolean\n onAction: (value: string) => void\n onConfig: (e: any) => void\n}\n\nexport const ActionsDropdown = ({\n options,\n isLoading,\n onAction,\n onConfig,\n}: ActionsDropdownProps) => {\n const dropdownRef = useRef<DropdownRef>(null)\n\n const handleConfigClick = (e: any) => {\n dropdownRef.current?.close()\n onConfig(e)\n }\n\n return (\n <StyledDropdown\n ref={dropdownRef}\n disabled={isLoading}\n className={clsx('more', { loading: isLoading })}\n options={options}\n maxOptionsShown={100}\n value={[]}\n placeholder=\"\"\n itemTemplate={(option) => <ActionsDropdownItem {...option} onConfig={handleConfigClick} />}\n valueTemplate={() => <DefaultValueTemplate placeholder=\"\" value={[]} dropIcon={'category'} />}\n onChange={(v) => onAction(v[0])}\n // @ts-expect-error\n buttonProps={{ ['data-tooltip']: 'Actions', ['data-tooltip-delay']: 0 }}\n />\n )\n}\n"],"names":["jsx","DropdownHeader","upperFirst","DropdownItem","jsxs","Spacer","Button","useRef","StyledDropdown","DefaultValueTemplate"],"mappings":";;;;;;;;;;AASA,MAAM,sBAAsB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6B5B,MAAM,sBAAsB,CAAC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAgC;AAC9B,MAAI,OAAe,QAAAA,2BAAAA,kBAAAA,IAACC,uBAAgB,gBAAA,EAAA,UAAAC,OAAA,WAAW,KAAK,GAAE;AAEhD,QAAA,eAAe,CAAC,MAAW;AAC/B,yCAAW;AACX,MAAE,gBAAgB;AAClB,MAAE,eAAe;AAAA,EACnB;AAGE,SAAAF,2BAAAA,kBAAAA,IAACG,uBAAAA,cACC,EAAA,UAAAC,2BAAAA,kBAAAA,KAAC,qBACC,EAAA,UAAA;AAAA,IAAAJ,iDAAC,cAAW,MAAY;AAAA,IACxBA,2BAAAA,kBAAAA,IAAC,UAAM,UAAM,MAAA,CAAA;AAAA,qDACZK,oBAAO,QAAA,EAAA;AAAA,IACP,aACCL,2BAAA,kBAAA;AAAA,MAACM,oBAAA;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,MAAK;AAAA,QACL,UAAU;AAAA,QACV,OAAO,EAAE,YAAY,QAAQ,SAAS,EAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EAC1C,EAAA,CAEJ,EACF,CAAA;AAEJ;AASO,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AACpB,QAAA,cAAcC,aAAoB,IAAI;AAEtC,QAAA,oBAAoB,CAAC,MAAW;;AACpC,sBAAY,YAAZ,mBAAqB;AACrB,aAAS,CAAC;AAAA,EACZ;AAGE,SAAAP,2BAAA,kBAAA;AAAA,IAACQ,uBAAA;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,UAAU;AAAA,MACV,WAAW,KAAK,QAAQ,EAAE,SAAS,WAAW;AAAA,MAC9C;AAAA,MACA,iBAAiB;AAAA,MACjB,OAAO,CAAC;AAAA,MACR,aAAY;AAAA,MACZ,cAAc,CAAC,WAAWR,iDAAC,uBAAqB,GAAG,QAAQ,UAAU,mBAAmB;AAAA,MACxF,eAAe,MAAMA,2BAAAA,kBAAAA,IAACS,oBAAqB,sBAAA,EAAA,aAAY,IAAG,OAAO,CAAI,GAAA,UAAU,YAAY;AAAA,MAC3F,UAAU,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC;AAAA,MAE9B,aAAa,EAAE,CAAC,cAAc,GAAG,WAAW,CAAC,oBAAoB,GAAG,EAAE;AAAA,IAAA;AAAA,EACxE;AAEJ;;;"}
@@ -77,9 +77,9 @@ const ActionsDropdown = ({
77
77
  value: [],
78
78
  placeholder: "",
79
79
  itemTemplate: (option) => /* @__PURE__ */ jsxRuntimeExports.jsx(ActionsDropdownItem, { ...option, onConfig: handleConfigClick }),
80
- valueTemplate: () => /* @__PURE__ */ jsxRuntimeExports.jsx(DefaultValueTemplate, { placeholder: "", value: [] }),
80
+ valueTemplate: () => /* @__PURE__ */ jsxRuntimeExports.jsx(DefaultValueTemplate, { placeholder: "", value: [], dropIcon: "category" }),
81
81
  onChange: (v) => onAction(v[0]),
82
- buttonProps: { ["data-tooltip"]: "All actions" }
82
+ buttonProps: { ["data-tooltip"]: "Actions", ["data-tooltip-delay"]: 0 }
83
83
  }
84
84
  );
85
85
  };