@ynput/ayon-frontend-shared 0.2.7 → 0.2.10

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 (987) 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/_virtual/index.cjs5.js +3 -5
  10. package/dist/_virtual/index.cjs5.js.map +1 -1
  11. package/dist/_virtual/index.cjs6.js +5 -3
  12. package/dist/_virtual/index.cjs6.js.map +1 -1
  13. package/dist/_virtual/index.es5.js +2 -5
  14. package/dist/_virtual/index.es5.js.map +1 -1
  15. package/dist/_virtual/index.es6.js +5 -2
  16. package/dist/_virtual/index.es6.js.map +1 -1
  17. package/dist/api.cjs.js +5 -0
  18. package/dist/api.cjs.js.map +1 -1
  19. package/dist/api.es.js +6 -1
  20. package/dist/api.es.js.map +1 -1
  21. package/dist/context.cjs.js +6 -0
  22. package/dist/context.cjs.js.map +1 -1
  23. package/dist/context.es.js +6 -0
  24. package/dist/context.es.js.map +1 -1
  25. package/dist/hooks.cjs.js +2 -0
  26. package/dist/hooks.cjs.js.map +1 -1
  27. package/dist/hooks.es.js +3 -1
  28. package/dist/hooks.es.js.map +1 -1
  29. package/dist/index.cjs.js +4 -0
  30. package/dist/index.cjs.js.map +1 -1
  31. package/dist/index.es.js +4 -0
  32. package/dist/index.es.js.map +1 -1
  33. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.cjs.js +1 -1
  34. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.cjs.js.map +1 -1
  35. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.es.js +1 -1
  36. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.es.js.map +1 -1
  37. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js +12 -12
  38. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js.map +1 -1
  39. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js +12 -12
  40. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js.map +1 -1
  41. package/dist/node_modules/decode-named-character-reference/index.dom.cjs.js +7 -3
  42. package/dist/node_modules/decode-named-character-reference/index.dom.cjs.js.map +1 -1
  43. package/dist/node_modules/decode-named-character-reference/index.dom.es.js +7 -3
  44. package/dist/node_modules/decode-named-character-reference/index.dom.es.js.map +1 -1
  45. package/dist/node_modules/graphql/language/visitor.cjs.js +1 -4
  46. package/dist/node_modules/graphql/language/visitor.cjs.js.map +1 -1
  47. package/dist/node_modules/graphql/language/visitor.es.js +1 -4
  48. package/dist/node_modules/graphql/language/visitor.es.js.map +1 -1
  49. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +17 -11
  50. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js.map +1 -1
  51. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +17 -11
  52. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js.map +1 -1
  53. package/dist/node_modules/parse-entities/lib/index.cjs.js +26 -24
  54. package/dist/node_modules/parse-entities/lib/index.cjs.js.map +1 -1
  55. package/dist/node_modules/parse-entities/lib/index.es.js +26 -24
  56. package/dist/node_modules/parse-entities/lib/index.es.js.map +1 -1
  57. package/dist/node_modules/react-intersection-observer/{index.cjs.js → dist/index.cjs.js} +4 -10
  58. package/dist/node_modules/react-intersection-observer/dist/index.cjs.js.map +1 -0
  59. package/dist/node_modules/react-intersection-observer/{index.es.js → dist/index.es.js} +4 -10
  60. package/dist/node_modules/react-intersection-observer/dist/index.es.js.map +1 -0
  61. package/dist/node_modules/refractor/lang/abap.cjs.js.map +1 -1
  62. package/dist/node_modules/refractor/lang/abap.es.js.map +1 -1
  63. package/dist/node_modules/refractor/lang/abnf.cjs.js.map +1 -1
  64. package/dist/node_modules/refractor/lang/abnf.es.js.map +1 -1
  65. package/dist/node_modules/refractor/lang/actionscript.cjs.js.map +1 -1
  66. package/dist/node_modules/refractor/lang/actionscript.es.js.map +1 -1
  67. package/dist/node_modules/refractor/lang/ada.cjs.js.map +1 -1
  68. package/dist/node_modules/refractor/lang/ada.es.js.map +1 -1
  69. package/dist/node_modules/refractor/lang/agda.cjs.js.map +1 -1
  70. package/dist/node_modules/refractor/lang/agda.es.js.map +1 -1
  71. package/dist/node_modules/refractor/lang/al.cjs.js.map +1 -1
  72. package/dist/node_modules/refractor/lang/al.es.js.map +1 -1
  73. package/dist/node_modules/refractor/lang/antlr4.cjs.js.map +1 -1
  74. package/dist/node_modules/refractor/lang/antlr4.es.js.map +1 -1
  75. package/dist/node_modules/refractor/lang/apacheconf.cjs.js.map +1 -1
  76. package/dist/node_modules/refractor/lang/apacheconf.es.js.map +1 -1
  77. package/dist/node_modules/refractor/lang/apex.cjs.js.map +1 -1
  78. package/dist/node_modules/refractor/lang/apex.es.js.map +1 -1
  79. package/dist/node_modules/refractor/lang/apl.cjs.js.map +1 -1
  80. package/dist/node_modules/refractor/lang/apl.es.js.map +1 -1
  81. package/dist/node_modules/refractor/lang/applescript.cjs.js.map +1 -1
  82. package/dist/node_modules/refractor/lang/applescript.es.js.map +1 -1
  83. package/dist/node_modules/refractor/lang/aql.cjs.js.map +1 -1
  84. package/dist/node_modules/refractor/lang/aql.es.js.map +1 -1
  85. package/dist/node_modules/refractor/lang/arduino.cjs.js.map +1 -1
  86. package/dist/node_modules/refractor/lang/arduino.es.js.map +1 -1
  87. package/dist/node_modules/refractor/lang/arff.cjs.js.map +1 -1
  88. package/dist/node_modules/refractor/lang/arff.es.js.map +1 -1
  89. package/dist/node_modules/refractor/lang/armasm.cjs.js.map +1 -1
  90. package/dist/node_modules/refractor/lang/armasm.es.js.map +1 -1
  91. package/dist/node_modules/refractor/lang/arturo.cjs.js.map +1 -1
  92. package/dist/node_modules/refractor/lang/arturo.es.js.map +1 -1
  93. package/dist/node_modules/refractor/lang/asciidoc.cjs.js.map +1 -1
  94. package/dist/node_modules/refractor/lang/asciidoc.es.js.map +1 -1
  95. package/dist/node_modules/refractor/lang/asm6502.cjs.js.map +1 -1
  96. package/dist/node_modules/refractor/lang/asm6502.es.js.map +1 -1
  97. package/dist/node_modules/refractor/lang/asmatmel.cjs.js.map +1 -1
  98. package/dist/node_modules/refractor/lang/asmatmel.es.js.map +1 -1
  99. package/dist/node_modules/refractor/lang/aspnet.cjs.js.map +1 -1
  100. package/dist/node_modules/refractor/lang/aspnet.es.js.map +1 -1
  101. package/dist/node_modules/refractor/lang/autohotkey.cjs.js.map +1 -1
  102. package/dist/node_modules/refractor/lang/autohotkey.es.js.map +1 -1
  103. package/dist/node_modules/refractor/lang/autoit.cjs.js.map +1 -1
  104. package/dist/node_modules/refractor/lang/autoit.es.js.map +1 -1
  105. package/dist/node_modules/refractor/lang/avisynth.cjs.js.map +1 -1
  106. package/dist/node_modules/refractor/lang/avisynth.es.js.map +1 -1
  107. package/dist/node_modules/refractor/lang/avro-idl.cjs.js.map +1 -1
  108. package/dist/node_modules/refractor/lang/avro-idl.es.js.map +1 -1
  109. package/dist/node_modules/refractor/lang/awk.cjs.js.map +1 -1
  110. package/dist/node_modules/refractor/lang/awk.es.js.map +1 -1
  111. package/dist/node_modules/refractor/lang/bash.cjs.js.map +1 -1
  112. package/dist/node_modules/refractor/lang/bash.es.js.map +1 -1
  113. package/dist/node_modules/refractor/lang/basic.cjs.js.map +1 -1
  114. package/dist/node_modules/refractor/lang/basic.es.js.map +1 -1
  115. package/dist/node_modules/refractor/lang/batch.cjs.js.map +1 -1
  116. package/dist/node_modules/refractor/lang/batch.es.js.map +1 -1
  117. package/dist/node_modules/refractor/lang/bbcode.cjs.js.map +1 -1
  118. package/dist/node_modules/refractor/lang/bbcode.es.js.map +1 -1
  119. package/dist/node_modules/refractor/lang/bbj.cjs.js.map +1 -1
  120. package/dist/node_modules/refractor/lang/bbj.es.js.map +1 -1
  121. package/dist/node_modules/refractor/lang/bicep.cjs.js.map +1 -1
  122. package/dist/node_modules/refractor/lang/bicep.es.js.map +1 -1
  123. package/dist/node_modules/refractor/lang/birb.cjs.js.map +1 -1
  124. package/dist/node_modules/refractor/lang/birb.es.js.map +1 -1
  125. package/dist/node_modules/refractor/lang/bison.cjs.js.map +1 -1
  126. package/dist/node_modules/refractor/lang/bison.es.js.map +1 -1
  127. package/dist/node_modules/refractor/lang/bnf.cjs.js.map +1 -1
  128. package/dist/node_modules/refractor/lang/bnf.es.js.map +1 -1
  129. package/dist/node_modules/refractor/lang/bqn.cjs.js.map +1 -1
  130. package/dist/node_modules/refractor/lang/bqn.es.js.map +1 -1
  131. package/dist/node_modules/refractor/lang/brainfuck.cjs.js.map +1 -1
  132. package/dist/node_modules/refractor/lang/brainfuck.es.js.map +1 -1
  133. package/dist/node_modules/refractor/lang/brightscript.cjs.js.map +1 -1
  134. package/dist/node_modules/refractor/lang/brightscript.es.js.map +1 -1
  135. package/dist/node_modules/refractor/lang/bro.cjs.js.map +1 -1
  136. package/dist/node_modules/refractor/lang/bro.es.js.map +1 -1
  137. package/dist/node_modules/refractor/lang/bsl.cjs.js.map +1 -1
  138. package/dist/node_modules/refractor/lang/bsl.es.js.map +1 -1
  139. package/dist/node_modules/refractor/lang/c.cjs.js.map +1 -1
  140. package/dist/node_modules/refractor/lang/c.es.js.map +1 -1
  141. package/dist/node_modules/refractor/lang/cfscript.cjs.js.map +1 -1
  142. package/dist/node_modules/refractor/lang/cfscript.es.js.map +1 -1
  143. package/dist/node_modules/refractor/lang/chaiscript.cjs.js.map +1 -1
  144. package/dist/node_modules/refractor/lang/chaiscript.es.js.map +1 -1
  145. package/dist/node_modules/refractor/lang/cil.cjs.js.map +1 -1
  146. package/dist/node_modules/refractor/lang/cil.es.js.map +1 -1
  147. package/dist/node_modules/refractor/lang/cilkc.cjs.js.map +1 -1
  148. package/dist/node_modules/refractor/lang/cilkc.es.js.map +1 -1
  149. package/dist/node_modules/refractor/lang/cilkcpp.cjs.js.map +1 -1
  150. package/dist/node_modules/refractor/lang/cilkcpp.es.js.map +1 -1
  151. package/dist/node_modules/refractor/lang/clike.cjs.js.map +1 -1
  152. package/dist/node_modules/refractor/lang/clike.es.js.map +1 -1
  153. package/dist/node_modules/refractor/lang/clojure.cjs.js.map +1 -1
  154. package/dist/node_modules/refractor/lang/clojure.es.js.map +1 -1
  155. package/dist/node_modules/refractor/lang/cmake.cjs.js.map +1 -1
  156. package/dist/node_modules/refractor/lang/cmake.es.js.map +1 -1
  157. package/dist/node_modules/refractor/lang/cobol.cjs.js.map +1 -1
  158. package/dist/node_modules/refractor/lang/cobol.es.js.map +1 -1
  159. package/dist/node_modules/refractor/lang/coffeescript.cjs.js.map +1 -1
  160. package/dist/node_modules/refractor/lang/coffeescript.es.js.map +1 -1
  161. package/dist/node_modules/refractor/lang/concurnas.cjs.js.map +1 -1
  162. package/dist/node_modules/refractor/lang/concurnas.es.js.map +1 -1
  163. package/dist/node_modules/refractor/lang/cooklang.cjs.js.map +1 -1
  164. package/dist/node_modules/refractor/lang/cooklang.es.js.map +1 -1
  165. package/dist/node_modules/refractor/lang/coq.cjs.js.map +1 -1
  166. package/dist/node_modules/refractor/lang/coq.es.js.map +1 -1
  167. package/dist/node_modules/refractor/lang/cpp.cjs.js.map +1 -1
  168. package/dist/node_modules/refractor/lang/cpp.es.js.map +1 -1
  169. package/dist/node_modules/refractor/lang/crystal.cjs.js.map +1 -1
  170. package/dist/node_modules/refractor/lang/crystal.es.js.map +1 -1
  171. package/dist/node_modules/refractor/lang/csharp.cjs.js.map +1 -1
  172. package/dist/node_modules/refractor/lang/csharp.es.js.map +1 -1
  173. package/dist/node_modules/refractor/lang/cshtml.cjs.js.map +1 -1
  174. package/dist/node_modules/refractor/lang/cshtml.es.js.map +1 -1
  175. package/dist/node_modules/refractor/lang/csp.cjs.js.map +1 -1
  176. package/dist/node_modules/refractor/lang/csp.es.js.map +1 -1
  177. package/dist/node_modules/refractor/lang/css-extras.cjs.js.map +1 -1
  178. package/dist/node_modules/refractor/lang/css-extras.es.js.map +1 -1
  179. package/dist/node_modules/refractor/lang/css.cjs.js.map +1 -1
  180. package/dist/node_modules/refractor/lang/css.es.js.map +1 -1
  181. package/dist/node_modules/refractor/lang/csv.cjs.js.map +1 -1
  182. package/dist/node_modules/refractor/lang/csv.es.js.map +1 -1
  183. package/dist/node_modules/refractor/lang/cue.cjs.js.map +1 -1
  184. package/dist/node_modules/refractor/lang/cue.es.js.map +1 -1
  185. package/dist/node_modules/refractor/lang/cypher.cjs.js.map +1 -1
  186. package/dist/node_modules/refractor/lang/cypher.es.js.map +1 -1
  187. package/dist/node_modules/refractor/lang/d.cjs.js.map +1 -1
  188. package/dist/node_modules/refractor/lang/d.es.js.map +1 -1
  189. package/dist/node_modules/refractor/lang/dart.cjs.js.map +1 -1
  190. package/dist/node_modules/refractor/lang/dart.es.js.map +1 -1
  191. package/dist/node_modules/refractor/lang/dataweave.cjs.js.map +1 -1
  192. package/dist/node_modules/refractor/lang/dataweave.es.js.map +1 -1
  193. package/dist/node_modules/refractor/lang/dax.cjs.js.map +1 -1
  194. package/dist/node_modules/refractor/lang/dax.es.js.map +1 -1
  195. package/dist/node_modules/refractor/lang/dhall.cjs.js.map +1 -1
  196. package/dist/node_modules/refractor/lang/dhall.es.js.map +1 -1
  197. package/dist/node_modules/refractor/lang/diff.cjs.js.map +1 -1
  198. package/dist/node_modules/refractor/lang/diff.es.js.map +1 -1
  199. package/dist/node_modules/refractor/lang/django.cjs.js.map +1 -1
  200. package/dist/node_modules/refractor/lang/django.es.js.map +1 -1
  201. package/dist/node_modules/refractor/lang/dns-zone-file.cjs.js.map +1 -1
  202. package/dist/node_modules/refractor/lang/dns-zone-file.es.js.map +1 -1
  203. package/dist/node_modules/refractor/lang/docker.cjs.js.map +1 -1
  204. package/dist/node_modules/refractor/lang/docker.es.js.map +1 -1
  205. package/dist/node_modules/refractor/lang/dot.cjs.js.map +1 -1
  206. package/dist/node_modules/refractor/lang/dot.es.js.map +1 -1
  207. package/dist/node_modules/refractor/lang/ebnf.cjs.js.map +1 -1
  208. package/dist/node_modules/refractor/lang/ebnf.es.js.map +1 -1
  209. package/dist/node_modules/refractor/lang/editorconfig.cjs.js.map +1 -1
  210. package/dist/node_modules/refractor/lang/editorconfig.es.js.map +1 -1
  211. package/dist/node_modules/refractor/lang/eiffel.cjs.js.map +1 -1
  212. package/dist/node_modules/refractor/lang/eiffel.es.js.map +1 -1
  213. package/dist/node_modules/refractor/lang/ejs.cjs.js.map +1 -1
  214. package/dist/node_modules/refractor/lang/ejs.es.js.map +1 -1
  215. package/dist/node_modules/refractor/lang/elixir.cjs.js.map +1 -1
  216. package/dist/node_modules/refractor/lang/elixir.es.js.map +1 -1
  217. package/dist/node_modules/refractor/lang/elm.cjs.js.map +1 -1
  218. package/dist/node_modules/refractor/lang/elm.es.js.map +1 -1
  219. package/dist/node_modules/refractor/lang/erb.cjs.js.map +1 -1
  220. package/dist/node_modules/refractor/lang/erb.es.js.map +1 -1
  221. package/dist/node_modules/refractor/lang/erlang.cjs.js.map +1 -1
  222. package/dist/node_modules/refractor/lang/erlang.es.js.map +1 -1
  223. package/dist/node_modules/refractor/lang/etlua.cjs.js.map +1 -1
  224. package/dist/node_modules/refractor/lang/etlua.es.js.map +1 -1
  225. package/dist/node_modules/refractor/lang/excel-formula.cjs.js.map +1 -1
  226. package/dist/node_modules/refractor/lang/excel-formula.es.js.map +1 -1
  227. package/dist/node_modules/refractor/lang/factor.cjs.js.map +1 -1
  228. package/dist/node_modules/refractor/lang/factor.es.js.map +1 -1
  229. package/dist/node_modules/refractor/lang/false.cjs.js.map +1 -1
  230. package/dist/node_modules/refractor/lang/false.es.js.map +1 -1
  231. package/dist/node_modules/refractor/lang/firestore-security-rules.cjs.js.map +1 -1
  232. package/dist/node_modules/refractor/lang/firestore-security-rules.es.js.map +1 -1
  233. package/dist/node_modules/refractor/lang/flow.cjs.js.map +1 -1
  234. package/dist/node_modules/refractor/lang/flow.es.js.map +1 -1
  235. package/dist/node_modules/refractor/lang/fortran.cjs.js.map +1 -1
  236. package/dist/node_modules/refractor/lang/fortran.es.js.map +1 -1
  237. package/dist/node_modules/refractor/lang/fsharp.cjs.js.map +1 -1
  238. package/dist/node_modules/refractor/lang/fsharp.es.js.map +1 -1
  239. package/dist/node_modules/refractor/lang/ftl.cjs.js.map +1 -1
  240. package/dist/node_modules/refractor/lang/ftl.es.js.map +1 -1
  241. package/dist/node_modules/refractor/lang/gap.cjs.js.map +1 -1
  242. package/dist/node_modules/refractor/lang/gap.es.js.map +1 -1
  243. package/dist/node_modules/refractor/lang/gcode.cjs.js.map +1 -1
  244. package/dist/node_modules/refractor/lang/gcode.es.js.map +1 -1
  245. package/dist/node_modules/refractor/lang/gdscript.cjs.js.map +1 -1
  246. package/dist/node_modules/refractor/lang/gdscript.es.js.map +1 -1
  247. package/dist/node_modules/refractor/lang/gedcom.cjs.js.map +1 -1
  248. package/dist/node_modules/refractor/lang/gedcom.es.js.map +1 -1
  249. package/dist/node_modules/refractor/lang/gettext.cjs.js.map +1 -1
  250. package/dist/node_modules/refractor/lang/gettext.es.js.map +1 -1
  251. package/dist/node_modules/refractor/lang/gherkin.cjs.js.map +1 -1
  252. package/dist/node_modules/refractor/lang/gherkin.es.js.map +1 -1
  253. package/dist/node_modules/refractor/lang/git.cjs.js.map +1 -1
  254. package/dist/node_modules/refractor/lang/git.es.js.map +1 -1
  255. package/dist/node_modules/refractor/lang/glsl.cjs.js.map +1 -1
  256. package/dist/node_modules/refractor/lang/glsl.es.js.map +1 -1
  257. package/dist/node_modules/refractor/lang/gml.cjs.js.map +1 -1
  258. package/dist/node_modules/refractor/lang/gml.es.js.map +1 -1
  259. package/dist/node_modules/refractor/lang/gn.cjs.js.map +1 -1
  260. package/dist/node_modules/refractor/lang/gn.es.js.map +1 -1
  261. package/dist/node_modules/refractor/lang/go-module.cjs.js.map +1 -1
  262. package/dist/node_modules/refractor/lang/go-module.es.js.map +1 -1
  263. package/dist/node_modules/refractor/lang/go.cjs.js.map +1 -1
  264. package/dist/node_modules/refractor/lang/go.es.js.map +1 -1
  265. package/dist/node_modules/refractor/lang/gradle.cjs.js.map +1 -1
  266. package/dist/node_modules/refractor/lang/gradle.es.js.map +1 -1
  267. package/dist/node_modules/refractor/lang/graphql.cjs.js.map +1 -1
  268. package/dist/node_modules/refractor/lang/graphql.es.js.map +1 -1
  269. package/dist/node_modules/refractor/lang/groovy.cjs.js.map +1 -1
  270. package/dist/node_modules/refractor/lang/groovy.es.js.map +1 -1
  271. package/dist/node_modules/refractor/lang/haml.cjs.js.map +1 -1
  272. package/dist/node_modules/refractor/lang/haml.es.js.map +1 -1
  273. package/dist/node_modules/refractor/lang/handlebars.cjs.js.map +1 -1
  274. package/dist/node_modules/refractor/lang/handlebars.es.js.map +1 -1
  275. package/dist/node_modules/refractor/lang/haskell.cjs.js.map +1 -1
  276. package/dist/node_modules/refractor/lang/haskell.es.js.map +1 -1
  277. package/dist/node_modules/refractor/lang/haxe.cjs.js.map +1 -1
  278. package/dist/node_modules/refractor/lang/haxe.es.js.map +1 -1
  279. package/dist/node_modules/refractor/lang/hcl.cjs.js.map +1 -1
  280. package/dist/node_modules/refractor/lang/hcl.es.js.map +1 -1
  281. package/dist/node_modules/refractor/lang/hlsl.cjs.js.map +1 -1
  282. package/dist/node_modules/refractor/lang/hlsl.es.js.map +1 -1
  283. package/dist/node_modules/refractor/lang/hoon.cjs.js.map +1 -1
  284. package/dist/node_modules/refractor/lang/hoon.es.js.map +1 -1
  285. package/dist/node_modules/refractor/lang/hpkp.cjs.js.map +1 -1
  286. package/dist/node_modules/refractor/lang/hpkp.es.js.map +1 -1
  287. package/dist/node_modules/refractor/lang/hsts.cjs.js.map +1 -1
  288. package/dist/node_modules/refractor/lang/hsts.es.js.map +1 -1
  289. package/dist/node_modules/refractor/lang/http.cjs.js.map +1 -1
  290. package/dist/node_modules/refractor/lang/http.es.js.map +1 -1
  291. package/dist/node_modules/refractor/lang/ichigojam.cjs.js.map +1 -1
  292. package/dist/node_modules/refractor/lang/ichigojam.es.js.map +1 -1
  293. package/dist/node_modules/refractor/lang/icon.cjs.js.map +1 -1
  294. package/dist/node_modules/refractor/lang/icon.es.js.map +1 -1
  295. package/dist/node_modules/refractor/lang/icu-message-format.cjs.js.map +1 -1
  296. package/dist/node_modules/refractor/lang/icu-message-format.es.js.map +1 -1
  297. package/dist/node_modules/refractor/lang/idris.cjs.js.map +1 -1
  298. package/dist/node_modules/refractor/lang/idris.es.js.map +1 -1
  299. package/dist/node_modules/refractor/lang/iecst.cjs.js.map +1 -1
  300. package/dist/node_modules/refractor/lang/iecst.es.js.map +1 -1
  301. package/dist/node_modules/refractor/lang/ignore.cjs.js.map +1 -1
  302. package/dist/node_modules/refractor/lang/ignore.es.js.map +1 -1
  303. package/dist/node_modules/refractor/lang/inform7.cjs.js.map +1 -1
  304. package/dist/node_modules/refractor/lang/inform7.es.js.map +1 -1
  305. package/dist/node_modules/refractor/lang/ini.cjs.js.map +1 -1
  306. package/dist/node_modules/refractor/lang/ini.es.js.map +1 -1
  307. package/dist/node_modules/refractor/lang/io.cjs.js.map +1 -1
  308. package/dist/node_modules/refractor/lang/io.es.js.map +1 -1
  309. package/dist/node_modules/refractor/lang/j.cjs.js.map +1 -1
  310. package/dist/node_modules/refractor/lang/j.es.js.map +1 -1
  311. package/dist/node_modules/refractor/lang/java.cjs.js.map +1 -1
  312. package/dist/node_modules/refractor/lang/java.es.js.map +1 -1
  313. package/dist/node_modules/refractor/lang/javadoc.cjs.js.map +1 -1
  314. package/dist/node_modules/refractor/lang/javadoc.es.js.map +1 -1
  315. package/dist/node_modules/refractor/lang/javadoclike.cjs.js.map +1 -1
  316. package/dist/node_modules/refractor/lang/javadoclike.es.js.map +1 -1
  317. package/dist/node_modules/refractor/lang/javascript.cjs.js.map +1 -1
  318. package/dist/node_modules/refractor/lang/javascript.es.js.map +1 -1
  319. package/dist/node_modules/refractor/lang/javastacktrace.cjs.js.map +1 -1
  320. package/dist/node_modules/refractor/lang/javastacktrace.es.js.map +1 -1
  321. package/dist/node_modules/refractor/lang/jexl.cjs.js.map +1 -1
  322. package/dist/node_modules/refractor/lang/jexl.es.js.map +1 -1
  323. package/dist/node_modules/refractor/lang/jolie.cjs.js.map +1 -1
  324. package/dist/node_modules/refractor/lang/jolie.es.js.map +1 -1
  325. package/dist/node_modules/refractor/lang/jq.cjs.js.map +1 -1
  326. package/dist/node_modules/refractor/lang/jq.es.js.map +1 -1
  327. package/dist/node_modules/refractor/lang/js-extras.cjs.js.map +1 -1
  328. package/dist/node_modules/refractor/lang/js-extras.es.js.map +1 -1
  329. package/dist/node_modules/refractor/lang/js-templates.cjs.js.map +1 -1
  330. package/dist/node_modules/refractor/lang/js-templates.es.js.map +1 -1
  331. package/dist/node_modules/refractor/lang/jsdoc.cjs.js.map +1 -1
  332. package/dist/node_modules/refractor/lang/jsdoc.es.js.map +1 -1
  333. package/dist/node_modules/refractor/lang/json.cjs.js.map +1 -1
  334. package/dist/node_modules/refractor/lang/json.es.js.map +1 -1
  335. package/dist/node_modules/refractor/lang/json5.cjs.js.map +1 -1
  336. package/dist/node_modules/refractor/lang/json5.es.js.map +1 -1
  337. package/dist/node_modules/refractor/lang/jsonp.cjs.js.map +1 -1
  338. package/dist/node_modules/refractor/lang/jsonp.es.js.map +1 -1
  339. package/dist/node_modules/refractor/lang/jsstacktrace.cjs.js.map +1 -1
  340. package/dist/node_modules/refractor/lang/jsstacktrace.es.js.map +1 -1
  341. package/dist/node_modules/refractor/lang/jsx.cjs.js.map +1 -1
  342. package/dist/node_modules/refractor/lang/jsx.es.js.map +1 -1
  343. package/dist/node_modules/refractor/lang/julia.cjs.js.map +1 -1
  344. package/dist/node_modules/refractor/lang/julia.es.js.map +1 -1
  345. package/dist/node_modules/refractor/lang/keepalived.cjs.js.map +1 -1
  346. package/dist/node_modules/refractor/lang/keepalived.es.js.map +1 -1
  347. package/dist/node_modules/refractor/lang/keyman.cjs.js.map +1 -1
  348. package/dist/node_modules/refractor/lang/keyman.es.js.map +1 -1
  349. package/dist/node_modules/refractor/lang/kotlin.cjs.js.map +1 -1
  350. package/dist/node_modules/refractor/lang/kotlin.es.js.map +1 -1
  351. package/dist/node_modules/refractor/lang/kumir.cjs.js.map +1 -1
  352. package/dist/node_modules/refractor/lang/kumir.es.js.map +1 -1
  353. package/dist/node_modules/refractor/lang/kusto.cjs.js.map +1 -1
  354. package/dist/node_modules/refractor/lang/kusto.es.js.map +1 -1
  355. package/dist/node_modules/refractor/lang/latex.cjs.js.map +1 -1
  356. package/dist/node_modules/refractor/lang/latex.es.js.map +1 -1
  357. package/dist/node_modules/refractor/lang/latte.cjs.js.map +1 -1
  358. package/dist/node_modules/refractor/lang/latte.es.js.map +1 -1
  359. package/dist/node_modules/refractor/lang/less.cjs.js.map +1 -1
  360. package/dist/node_modules/refractor/lang/less.es.js.map +1 -1
  361. package/dist/node_modules/refractor/lang/lilypond.cjs.js.map +1 -1
  362. package/dist/node_modules/refractor/lang/lilypond.es.js.map +1 -1
  363. package/dist/node_modules/refractor/lang/linker-script.cjs.js.map +1 -1
  364. package/dist/node_modules/refractor/lang/linker-script.es.js.map +1 -1
  365. package/dist/node_modules/refractor/lang/liquid.cjs.js.map +1 -1
  366. package/dist/node_modules/refractor/lang/liquid.es.js.map +1 -1
  367. package/dist/node_modules/refractor/lang/lisp.cjs.js.map +1 -1
  368. package/dist/node_modules/refractor/lang/lisp.es.js.map +1 -1
  369. package/dist/node_modules/refractor/lang/livescript.cjs.js.map +1 -1
  370. package/dist/node_modules/refractor/lang/livescript.es.js.map +1 -1
  371. package/dist/node_modules/refractor/lang/llvm.cjs.js.map +1 -1
  372. package/dist/node_modules/refractor/lang/llvm.es.js.map +1 -1
  373. package/dist/node_modules/refractor/lang/log.cjs.js.map +1 -1
  374. package/dist/node_modules/refractor/lang/log.es.js.map +1 -1
  375. package/dist/node_modules/refractor/lang/lolcode.cjs.js.map +1 -1
  376. package/dist/node_modules/refractor/lang/lolcode.es.js.map +1 -1
  377. package/dist/node_modules/refractor/lang/lua.cjs.js.map +1 -1
  378. package/dist/node_modules/refractor/lang/lua.es.js.map +1 -1
  379. package/dist/node_modules/refractor/lang/magma.cjs.js.map +1 -1
  380. package/dist/node_modules/refractor/lang/magma.es.js.map +1 -1
  381. package/dist/node_modules/refractor/lang/makefile.cjs.js.map +1 -1
  382. package/dist/node_modules/refractor/lang/makefile.es.js.map +1 -1
  383. package/dist/node_modules/refractor/lang/markdown.cjs.js +6 -4
  384. package/dist/node_modules/refractor/lang/markdown.cjs.js.map +1 -1
  385. package/dist/node_modules/refractor/lang/markdown.es.js +6 -4
  386. package/dist/node_modules/refractor/lang/markdown.es.js.map +1 -1
  387. package/dist/node_modules/refractor/lang/markup-templating.cjs.js.map +1 -1
  388. package/dist/node_modules/refractor/lang/markup-templating.es.js.map +1 -1
  389. package/dist/node_modules/refractor/lang/markup.cjs.js.map +1 -1
  390. package/dist/node_modules/refractor/lang/markup.es.js.map +1 -1
  391. package/dist/node_modules/refractor/lang/mata.cjs.js.map +1 -1
  392. package/dist/node_modules/refractor/lang/mata.es.js.map +1 -1
  393. package/dist/node_modules/refractor/lang/matlab.cjs.js.map +1 -1
  394. package/dist/node_modules/refractor/lang/matlab.es.js.map +1 -1
  395. package/dist/node_modules/refractor/lang/maxscript.cjs.js.map +1 -1
  396. package/dist/node_modules/refractor/lang/maxscript.es.js.map +1 -1
  397. package/dist/node_modules/refractor/lang/mel.cjs.js.map +1 -1
  398. package/dist/node_modules/refractor/lang/mel.es.js.map +1 -1
  399. package/dist/node_modules/refractor/lang/mermaid.cjs.js.map +1 -1
  400. package/dist/node_modules/refractor/lang/mermaid.es.js.map +1 -1
  401. package/dist/node_modules/refractor/lang/metafont.cjs.js.map +1 -1
  402. package/dist/node_modules/refractor/lang/metafont.es.js.map +1 -1
  403. package/dist/node_modules/refractor/lang/mizar.cjs.js.map +1 -1
  404. package/dist/node_modules/refractor/lang/mizar.es.js.map +1 -1
  405. package/dist/node_modules/refractor/lang/mongodb.cjs.js.map +1 -1
  406. package/dist/node_modules/refractor/lang/mongodb.es.js.map +1 -1
  407. package/dist/node_modules/refractor/lang/monkey.cjs.js.map +1 -1
  408. package/dist/node_modules/refractor/lang/monkey.es.js.map +1 -1
  409. package/dist/node_modules/refractor/lang/moonscript.cjs.js.map +1 -1
  410. package/dist/node_modules/refractor/lang/moonscript.es.js.map +1 -1
  411. package/dist/node_modules/refractor/lang/n1ql.cjs.js.map +1 -1
  412. package/dist/node_modules/refractor/lang/n1ql.es.js.map +1 -1
  413. package/dist/node_modules/refractor/lang/n4js.cjs.js.map +1 -1
  414. package/dist/node_modules/refractor/lang/n4js.es.js.map +1 -1
  415. package/dist/node_modules/refractor/lang/nand2tetris-hdl.cjs.js.map +1 -1
  416. package/dist/node_modules/refractor/lang/nand2tetris-hdl.es.js.map +1 -1
  417. package/dist/node_modules/refractor/lang/naniscript.cjs.js.map +1 -1
  418. package/dist/node_modules/refractor/lang/naniscript.es.js.map +1 -1
  419. package/dist/node_modules/refractor/lang/nasm.cjs.js.map +1 -1
  420. package/dist/node_modules/refractor/lang/nasm.es.js.map +1 -1
  421. package/dist/node_modules/refractor/lang/neon.cjs.js.map +1 -1
  422. package/dist/node_modules/refractor/lang/neon.es.js.map +1 -1
  423. package/dist/node_modules/refractor/lang/nevod.cjs.js.map +1 -1
  424. package/dist/node_modules/refractor/lang/nevod.es.js.map +1 -1
  425. package/dist/node_modules/refractor/lang/nginx.cjs.js.map +1 -1
  426. package/dist/node_modules/refractor/lang/nginx.es.js.map +1 -1
  427. package/dist/node_modules/refractor/lang/nim.cjs.js.map +1 -1
  428. package/dist/node_modules/refractor/lang/nim.es.js.map +1 -1
  429. package/dist/node_modules/refractor/lang/nix.cjs.js.map +1 -1
  430. package/dist/node_modules/refractor/lang/nix.es.js.map +1 -1
  431. package/dist/node_modules/refractor/lang/nsis.cjs.js.map +1 -1
  432. package/dist/node_modules/refractor/lang/nsis.es.js.map +1 -1
  433. package/dist/node_modules/refractor/lang/objectivec.cjs.js.map +1 -1
  434. package/dist/node_modules/refractor/lang/objectivec.es.js.map +1 -1
  435. package/dist/node_modules/refractor/lang/ocaml.cjs.js.map +1 -1
  436. package/dist/node_modules/refractor/lang/ocaml.es.js.map +1 -1
  437. package/dist/node_modules/refractor/lang/odin.cjs.js.map +1 -1
  438. package/dist/node_modules/refractor/lang/odin.es.js.map +1 -1
  439. package/dist/node_modules/refractor/lang/opencl.cjs.js.map +1 -1
  440. package/dist/node_modules/refractor/lang/opencl.es.js.map +1 -1
  441. package/dist/node_modules/refractor/lang/openqasm.cjs.js.map +1 -1
  442. package/dist/node_modules/refractor/lang/openqasm.es.js.map +1 -1
  443. package/dist/node_modules/refractor/lang/oz.cjs.js.map +1 -1
  444. package/dist/node_modules/refractor/lang/oz.es.js.map +1 -1
  445. package/dist/node_modules/refractor/lang/parigp.cjs.js.map +1 -1
  446. package/dist/node_modules/refractor/lang/parigp.es.js.map +1 -1
  447. package/dist/node_modules/refractor/lang/parser.cjs.js.map +1 -1
  448. package/dist/node_modules/refractor/lang/parser.es.js.map +1 -1
  449. package/dist/node_modules/refractor/lang/pascal.cjs.js.map +1 -1
  450. package/dist/node_modules/refractor/lang/pascal.es.js.map +1 -1
  451. package/dist/node_modules/refractor/lang/pascaligo.cjs.js.map +1 -1
  452. package/dist/node_modules/refractor/lang/pascaligo.es.js.map +1 -1
  453. package/dist/node_modules/refractor/lang/pcaxis.cjs.js.map +1 -1
  454. package/dist/node_modules/refractor/lang/pcaxis.es.js.map +1 -1
  455. package/dist/node_modules/refractor/lang/peoplecode.cjs.js.map +1 -1
  456. package/dist/node_modules/refractor/lang/peoplecode.es.js.map +1 -1
  457. package/dist/node_modules/refractor/lang/perl.cjs.js.map +1 -1
  458. package/dist/node_modules/refractor/lang/perl.es.js.map +1 -1
  459. package/dist/node_modules/refractor/lang/php-extras.cjs.js.map +1 -1
  460. package/dist/node_modules/refractor/lang/php-extras.es.js.map +1 -1
  461. package/dist/node_modules/refractor/lang/php.cjs.js.map +1 -1
  462. package/dist/node_modules/refractor/lang/php.es.js.map +1 -1
  463. package/dist/node_modules/refractor/lang/phpdoc.cjs.js.map +1 -1
  464. package/dist/node_modules/refractor/lang/phpdoc.es.js.map +1 -1
  465. package/dist/node_modules/refractor/lang/plant-uml.cjs.js.map +1 -1
  466. package/dist/node_modules/refractor/lang/plant-uml.es.js.map +1 -1
  467. package/dist/node_modules/refractor/lang/plsql.cjs.js.map +1 -1
  468. package/dist/node_modules/refractor/lang/plsql.es.js.map +1 -1
  469. package/dist/node_modules/refractor/lang/powerquery.cjs.js.map +1 -1
  470. package/dist/node_modules/refractor/lang/powerquery.es.js.map +1 -1
  471. package/dist/node_modules/refractor/lang/powershell.cjs.js.map +1 -1
  472. package/dist/node_modules/refractor/lang/powershell.es.js.map +1 -1
  473. package/dist/node_modules/refractor/lang/processing.cjs.js.map +1 -1
  474. package/dist/node_modules/refractor/lang/processing.es.js.map +1 -1
  475. package/dist/node_modules/refractor/lang/prolog.cjs.js.map +1 -1
  476. package/dist/node_modules/refractor/lang/prolog.es.js.map +1 -1
  477. package/dist/node_modules/refractor/lang/promql.cjs.js.map +1 -1
  478. package/dist/node_modules/refractor/lang/promql.es.js.map +1 -1
  479. package/dist/node_modules/refractor/lang/properties.cjs.js.map +1 -1
  480. package/dist/node_modules/refractor/lang/properties.es.js.map +1 -1
  481. package/dist/node_modules/refractor/lang/protobuf.cjs.js.map +1 -1
  482. package/dist/node_modules/refractor/lang/protobuf.es.js.map +1 -1
  483. package/dist/node_modules/refractor/lang/psl.cjs.js.map +1 -1
  484. package/dist/node_modules/refractor/lang/psl.es.js.map +1 -1
  485. package/dist/node_modules/refractor/lang/pug.cjs.js.map +1 -1
  486. package/dist/node_modules/refractor/lang/pug.es.js.map +1 -1
  487. package/dist/node_modules/refractor/lang/puppet.cjs.js.map +1 -1
  488. package/dist/node_modules/refractor/lang/puppet.es.js.map +1 -1
  489. package/dist/node_modules/refractor/lang/pure.cjs.js.map +1 -1
  490. package/dist/node_modules/refractor/lang/pure.es.js.map +1 -1
  491. package/dist/node_modules/refractor/lang/purebasic.cjs.js.map +1 -1
  492. package/dist/node_modules/refractor/lang/purebasic.es.js.map +1 -1
  493. package/dist/node_modules/refractor/lang/purescript.cjs.js.map +1 -1
  494. package/dist/node_modules/refractor/lang/purescript.es.js.map +1 -1
  495. package/dist/node_modules/refractor/lang/python.cjs.js.map +1 -1
  496. package/dist/node_modules/refractor/lang/python.es.js.map +1 -1
  497. package/dist/node_modules/refractor/lang/q.cjs.js.map +1 -1
  498. package/dist/node_modules/refractor/lang/q.es.js.map +1 -1
  499. package/dist/node_modules/refractor/lang/qml.cjs.js.map +1 -1
  500. package/dist/node_modules/refractor/lang/qml.es.js.map +1 -1
  501. package/dist/node_modules/refractor/lang/qore.cjs.js.map +1 -1
  502. package/dist/node_modules/refractor/lang/qore.es.js.map +1 -1
  503. package/dist/node_modules/refractor/lang/qsharp.cjs.js.map +1 -1
  504. package/dist/node_modules/refractor/lang/qsharp.es.js.map +1 -1
  505. package/dist/node_modules/refractor/lang/r.cjs.js.map +1 -1
  506. package/dist/node_modules/refractor/lang/r.es.js.map +1 -1
  507. package/dist/node_modules/refractor/lang/racket.cjs.js.map +1 -1
  508. package/dist/node_modules/refractor/lang/racket.es.js.map +1 -1
  509. package/dist/node_modules/refractor/lang/reason.cjs.js.map +1 -1
  510. package/dist/node_modules/refractor/lang/reason.es.js.map +1 -1
  511. package/dist/node_modules/refractor/lang/regex.cjs.js.map +1 -1
  512. package/dist/node_modules/refractor/lang/regex.es.js.map +1 -1
  513. package/dist/node_modules/refractor/lang/rego.cjs.js.map +1 -1
  514. package/dist/node_modules/refractor/lang/rego.es.js.map +1 -1
  515. package/dist/node_modules/refractor/lang/renpy.cjs.js.map +1 -1
  516. package/dist/node_modules/refractor/lang/renpy.es.js.map +1 -1
  517. package/dist/node_modules/refractor/lang/rescript.cjs.js.map +1 -1
  518. package/dist/node_modules/refractor/lang/rescript.es.js.map +1 -1
  519. package/dist/node_modules/refractor/lang/rest.cjs.js.map +1 -1
  520. package/dist/node_modules/refractor/lang/rest.es.js.map +1 -1
  521. package/dist/node_modules/refractor/lang/rip.cjs.js.map +1 -1
  522. package/dist/node_modules/refractor/lang/rip.es.js.map +1 -1
  523. package/dist/node_modules/refractor/lang/roboconf.cjs.js.map +1 -1
  524. package/dist/node_modules/refractor/lang/roboconf.es.js.map +1 -1
  525. package/dist/node_modules/refractor/lang/robotframework.cjs.js.map +1 -1
  526. package/dist/node_modules/refractor/lang/robotframework.es.js.map +1 -1
  527. package/dist/node_modules/refractor/lang/ruby.cjs.js.map +1 -1
  528. package/dist/node_modules/refractor/lang/ruby.es.js.map +1 -1
  529. package/dist/node_modules/refractor/lang/rust.cjs.js.map +1 -1
  530. package/dist/node_modules/refractor/lang/rust.es.js.map +1 -1
  531. package/dist/node_modules/refractor/lang/sas.cjs.js.map +1 -1
  532. package/dist/node_modules/refractor/lang/sas.es.js.map +1 -1
  533. package/dist/node_modules/refractor/lang/sass.cjs.js.map +1 -1
  534. package/dist/node_modules/refractor/lang/sass.es.js.map +1 -1
  535. package/dist/node_modules/refractor/lang/scala.cjs.js.map +1 -1
  536. package/dist/node_modules/refractor/lang/scala.es.js.map +1 -1
  537. package/dist/node_modules/refractor/lang/scheme.cjs.js.map +1 -1
  538. package/dist/node_modules/refractor/lang/scheme.es.js.map +1 -1
  539. package/dist/node_modules/refractor/lang/scss.cjs.js.map +1 -1
  540. package/dist/node_modules/refractor/lang/scss.es.js.map +1 -1
  541. package/dist/node_modules/refractor/lang/shell-session.cjs.js.map +1 -1
  542. package/dist/node_modules/refractor/lang/shell-session.es.js.map +1 -1
  543. package/dist/node_modules/refractor/lang/smali.cjs.js.map +1 -1
  544. package/dist/node_modules/refractor/lang/smali.es.js.map +1 -1
  545. package/dist/node_modules/refractor/lang/smalltalk.cjs.js.map +1 -1
  546. package/dist/node_modules/refractor/lang/smalltalk.es.js.map +1 -1
  547. package/dist/node_modules/refractor/lang/smarty.cjs.js.map +1 -1
  548. package/dist/node_modules/refractor/lang/smarty.es.js.map +1 -1
  549. package/dist/node_modules/refractor/lang/sml.cjs.js.map +1 -1
  550. package/dist/node_modules/refractor/lang/sml.es.js.map +1 -1
  551. package/dist/node_modules/refractor/lang/solidity.cjs.js.map +1 -1
  552. package/dist/node_modules/refractor/lang/solidity.es.js.map +1 -1
  553. package/dist/node_modules/refractor/lang/solution-file.cjs.js.map +1 -1
  554. package/dist/node_modules/refractor/lang/solution-file.es.js.map +1 -1
  555. package/dist/node_modules/refractor/lang/soy.cjs.js.map +1 -1
  556. package/dist/node_modules/refractor/lang/soy.es.js.map +1 -1
  557. package/dist/node_modules/refractor/lang/sparql.cjs.js.map +1 -1
  558. package/dist/node_modules/refractor/lang/sparql.es.js.map +1 -1
  559. package/dist/node_modules/refractor/lang/splunk-spl.cjs.js.map +1 -1
  560. package/dist/node_modules/refractor/lang/splunk-spl.es.js.map +1 -1
  561. package/dist/node_modules/refractor/lang/sqf.cjs.js.map +1 -1
  562. package/dist/node_modules/refractor/lang/sqf.es.js.map +1 -1
  563. package/dist/node_modules/refractor/lang/sql.cjs.js.map +1 -1
  564. package/dist/node_modules/refractor/lang/sql.es.js.map +1 -1
  565. package/dist/node_modules/refractor/lang/squirrel.cjs.js.map +1 -1
  566. package/dist/node_modules/refractor/lang/squirrel.es.js.map +1 -1
  567. package/dist/node_modules/refractor/lang/stan.cjs.js.map +1 -1
  568. package/dist/node_modules/refractor/lang/stan.es.js.map +1 -1
  569. package/dist/node_modules/refractor/lang/stata.cjs.js.map +1 -1
  570. package/dist/node_modules/refractor/lang/stata.es.js.map +1 -1
  571. package/dist/node_modules/refractor/lang/stylus.cjs.js.map +1 -1
  572. package/dist/node_modules/refractor/lang/stylus.es.js.map +1 -1
  573. package/dist/node_modules/refractor/lang/supercollider.cjs.js.map +1 -1
  574. package/dist/node_modules/refractor/lang/supercollider.es.js.map +1 -1
  575. package/dist/node_modules/refractor/lang/swift.cjs.js.map +1 -1
  576. package/dist/node_modules/refractor/lang/swift.es.js.map +1 -1
  577. package/dist/node_modules/refractor/lang/systemd.cjs.js.map +1 -1
  578. package/dist/node_modules/refractor/lang/systemd.es.js.map +1 -1
  579. package/dist/node_modules/refractor/lang/t4-cs.cjs.js.map +1 -1
  580. package/dist/node_modules/refractor/lang/t4-cs.es.js.map +1 -1
  581. package/dist/node_modules/refractor/lang/t4-templating.cjs.js.map +1 -1
  582. package/dist/node_modules/refractor/lang/t4-templating.es.js.map +1 -1
  583. package/dist/node_modules/refractor/lang/t4-vb.cjs.js.map +1 -1
  584. package/dist/node_modules/refractor/lang/t4-vb.es.js.map +1 -1
  585. package/dist/node_modules/refractor/lang/tap.cjs.js.map +1 -1
  586. package/dist/node_modules/refractor/lang/tap.es.js.map +1 -1
  587. package/dist/node_modules/refractor/lang/tcl.cjs.js.map +1 -1
  588. package/dist/node_modules/refractor/lang/tcl.es.js.map +1 -1
  589. package/dist/node_modules/refractor/lang/textile.cjs.js.map +1 -1
  590. package/dist/node_modules/refractor/lang/textile.es.js.map +1 -1
  591. package/dist/node_modules/refractor/lang/toml.cjs.js.map +1 -1
  592. package/dist/node_modules/refractor/lang/toml.es.js.map +1 -1
  593. package/dist/node_modules/refractor/lang/tremor.cjs.js.map +1 -1
  594. package/dist/node_modules/refractor/lang/tremor.es.js.map +1 -1
  595. package/dist/node_modules/refractor/lang/tsx.cjs.js.map +1 -1
  596. package/dist/node_modules/refractor/lang/tsx.es.js.map +1 -1
  597. package/dist/node_modules/refractor/lang/tt2.cjs.js.map +1 -1
  598. package/dist/node_modules/refractor/lang/tt2.es.js.map +1 -1
  599. package/dist/node_modules/refractor/lang/turtle.cjs.js.map +1 -1
  600. package/dist/node_modules/refractor/lang/turtle.es.js.map +1 -1
  601. package/dist/node_modules/refractor/lang/twig.cjs.js.map +1 -1
  602. package/dist/node_modules/refractor/lang/twig.es.js.map +1 -1
  603. package/dist/node_modules/refractor/lang/typescript.cjs.js.map +1 -1
  604. package/dist/node_modules/refractor/lang/typescript.es.js.map +1 -1
  605. package/dist/node_modules/refractor/lang/typoscript.cjs.js.map +1 -1
  606. package/dist/node_modules/refractor/lang/typoscript.es.js.map +1 -1
  607. package/dist/node_modules/refractor/lang/unrealscript.cjs.js.map +1 -1
  608. package/dist/node_modules/refractor/lang/unrealscript.es.js.map +1 -1
  609. package/dist/node_modules/refractor/lang/uorazor.cjs.js.map +1 -1
  610. package/dist/node_modules/refractor/lang/uorazor.es.js.map +1 -1
  611. package/dist/node_modules/refractor/lang/uri.cjs.js.map +1 -1
  612. package/dist/node_modules/refractor/lang/uri.es.js.map +1 -1
  613. package/dist/node_modules/refractor/lang/v.cjs.js.map +1 -1
  614. package/dist/node_modules/refractor/lang/v.es.js.map +1 -1
  615. package/dist/node_modules/refractor/lang/vala.cjs.js.map +1 -1
  616. package/dist/node_modules/refractor/lang/vala.es.js.map +1 -1
  617. package/dist/node_modules/refractor/lang/vbnet.cjs.js.map +1 -1
  618. package/dist/node_modules/refractor/lang/vbnet.es.js.map +1 -1
  619. package/dist/node_modules/refractor/lang/velocity.cjs.js.map +1 -1
  620. package/dist/node_modules/refractor/lang/velocity.es.js.map +1 -1
  621. package/dist/node_modules/refractor/lang/verilog.cjs.js.map +1 -1
  622. package/dist/node_modules/refractor/lang/verilog.es.js.map +1 -1
  623. package/dist/node_modules/refractor/lang/vhdl.cjs.js.map +1 -1
  624. package/dist/node_modules/refractor/lang/vhdl.es.js.map +1 -1
  625. package/dist/node_modules/refractor/lang/vim.cjs.js.map +1 -1
  626. package/dist/node_modules/refractor/lang/vim.es.js.map +1 -1
  627. package/dist/node_modules/refractor/lang/visual-basic.cjs.js.map +1 -1
  628. package/dist/node_modules/refractor/lang/visual-basic.es.js.map +1 -1
  629. package/dist/node_modules/refractor/lang/warpscript.cjs.js.map +1 -1
  630. package/dist/node_modules/refractor/lang/warpscript.es.js.map +1 -1
  631. package/dist/node_modules/refractor/lang/wasm.cjs.js.map +1 -1
  632. package/dist/node_modules/refractor/lang/wasm.es.js.map +1 -1
  633. package/dist/node_modules/refractor/lang/web-idl.cjs.js.map +1 -1
  634. package/dist/node_modules/refractor/lang/web-idl.es.js.map +1 -1
  635. package/dist/node_modules/refractor/lang/wgsl.cjs.js.map +1 -1
  636. package/dist/node_modules/refractor/lang/wgsl.es.js.map +1 -1
  637. package/dist/node_modules/refractor/lang/wiki.cjs.js.map +1 -1
  638. package/dist/node_modules/refractor/lang/wiki.es.js.map +1 -1
  639. package/dist/node_modules/refractor/lang/wolfram.cjs.js.map +1 -1
  640. package/dist/node_modules/refractor/lang/wolfram.es.js.map +1 -1
  641. package/dist/node_modules/refractor/lang/wren.cjs.js.map +1 -1
  642. package/dist/node_modules/refractor/lang/wren.es.js.map +1 -1
  643. package/dist/node_modules/refractor/lang/xeora.cjs.js.map +1 -1
  644. package/dist/node_modules/refractor/lang/xeora.es.js.map +1 -1
  645. package/dist/node_modules/refractor/lang/xml-doc.cjs.js.map +1 -1
  646. package/dist/node_modules/refractor/lang/xml-doc.es.js.map +1 -1
  647. package/dist/node_modules/refractor/lang/xojo.cjs.js.map +1 -1
  648. package/dist/node_modules/refractor/lang/xojo.es.js.map +1 -1
  649. package/dist/node_modules/refractor/lang/xquery.cjs.js.map +1 -1
  650. package/dist/node_modules/refractor/lang/xquery.es.js.map +1 -1
  651. package/dist/node_modules/refractor/lang/yaml.cjs.js.map +1 -1
  652. package/dist/node_modules/refractor/lang/yaml.es.js.map +1 -1
  653. package/dist/node_modules/refractor/lang/yang.cjs.js.map +1 -1
  654. package/dist/node_modules/refractor/lang/yang.es.js.map +1 -1
  655. package/dist/node_modules/refractor/lang/zig.cjs.js.map +1 -1
  656. package/dist/node_modules/refractor/lang/zig.es.js.map +1 -1
  657. package/dist/node_modules/refractor/lib/all.cjs.js.map +1 -1
  658. package/dist/node_modules/refractor/lib/all.es.js.map +1 -1
  659. package/dist/node_modules/refractor/lib/common.cjs.js.map +1 -1
  660. package/dist/node_modules/refractor/lib/common.es.js.map +1 -1
  661. package/dist/node_modules/refractor/lib/core.cjs.js +10 -10
  662. package/dist/node_modules/refractor/lib/core.cjs.js.map +1 -1
  663. package/dist/node_modules/refractor/lib/core.es.js +10 -10
  664. package/dist/node_modules/refractor/lib/core.es.js.map +1 -1
  665. package/dist/node_modules/refractor/lib/prism-core.cjs.js +6 -3
  666. package/dist/node_modules/refractor/lib/prism-core.cjs.js.map +1 -1
  667. package/dist/node_modules/refractor/lib/prism-core.es.js +6 -3
  668. package/dist/node_modules/refractor/lib/prism-core.es.js.map +1 -1
  669. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  670. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  671. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  672. package/dist/node_modules/remove-accents/index.es.js +1 -1
  673. package/dist/shared/src/api/generated/graphql.cjs.js +4 -2
  674. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  675. package/dist/shared/src/api/generated/graphql.es.js +4 -2
  676. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  677. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -0
  678. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  679. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +1 -0
  680. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  681. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -0
  682. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  683. package/dist/shared/src/api/queries/entities/updateEntity.es.js +1 -0
  684. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  685. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +6 -4
  686. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  687. package/dist/shared/src/api/queries/entityLists/getLists.es.js +6 -4
  688. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  689. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +65 -1
  690. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  691. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +65 -1
  692. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  693. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -0
  694. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  695. package/dist/shared/src/api/queries/overview/updateOverview.es.js +1 -0
  696. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  697. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js +52 -0
  698. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js.map +1 -0
  699. package/dist/shared/src/api/queries/permissions/getPermissions.es.js +52 -0
  700. package/dist/shared/src/api/queries/permissions/getPermissions.es.js.map +1 -0
  701. package/dist/shared/src/api/queries/users/getUsers.cjs.js +1 -5
  702. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  703. package/dist/shared/src/api/queries/users/getUsers.es.js +1 -5
  704. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  705. package/dist/shared/src/api/queries/users/updateUsers.cjs.js +22 -14
  706. package/dist/shared/src/api/queries/users/updateUsers.cjs.js.map +1 -1
  707. package/dist/shared/src/api/queries/users/updateUsers.es.js +22 -14
  708. package/dist/shared/src/api/queries/users/updateUsers.es.js.map +1 -1
  709. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -0
  710. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  711. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +1 -0
  712. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  713. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +1 -0
  714. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  715. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +1 -0
  716. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  717. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +2 -0
  718. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  719. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +2 -0
  720. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  721. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js +4 -0
  722. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
  723. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +4 -0
  724. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
  725. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +5 -0
  726. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  727. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +5 -0
  728. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  729. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -0
  730. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  731. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +1 -0
  732. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  733. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +4 -0
  734. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  735. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -0
  736. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  737. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +4 -0
  738. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  739. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +4 -0
  740. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  741. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +4 -0
  742. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  743. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -0
  744. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  745. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +2 -0
  746. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  747. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +2 -0
  748. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  749. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +6 -0
  750. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  751. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +6 -0
  752. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  753. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js +2 -7
  754. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js.map +1 -1
  755. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js +2 -7
  756. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js.map +1 -1
  757. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -0
  758. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  759. package/dist/shared/src/components/Watchers/Watchers.es.js +1 -0
  760. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  761. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +4 -0
  762. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  763. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -0
  764. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  765. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js +1 -1
  766. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js.map +1 -1
  767. package/dist/shared/src/containers/Actions/ActionIcon.es.js +1 -1
  768. package/dist/shared/src/containers/Actions/ActionIcon.es.js.map +1 -1
  769. package/dist/shared/src/containers/Actions/Actions.cjs.js +13 -8
  770. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  771. package/dist/shared/src/containers/Actions/Actions.es.js +13 -8
  772. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  773. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +2 -2
  774. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  775. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +2 -2
  776. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  777. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js +4 -0
  778. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js.map +1 -1
  779. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js +4 -0
  780. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js.map +1 -1
  781. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +4 -0
  782. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  783. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -0
  784. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  785. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +4 -0
  786. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  787. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -0
  788. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  789. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +4 -0
  790. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  791. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -0
  792. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  793. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +4 -0
  794. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  795. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +4 -0
  796. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  797. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +4 -0
  798. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  799. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -0
  800. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  801. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +3 -0
  802. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  803. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -0
  804. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  805. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +2 -0
  806. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
  807. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +2 -0
  808. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
  809. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -0
  810. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  811. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +1 -0
  812. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  813. package/dist/shared/src/containers/Feed/Feed.cjs.js +24 -3
  814. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  815. package/dist/shared/src/containers/Feed/Feed.es.js +25 -4
  816. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  817. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +18 -0
  818. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  819. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +19 -1
  820. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  821. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +2 -0
  822. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  823. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +2 -0
  824. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  825. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +7 -4
  826. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  827. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +7 -4
  828. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  829. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  830. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  831. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +3 -1
  832. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  833. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +3 -1
  834. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  835. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.cjs.js +27 -15
  836. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.cjs.js.map +1 -1
  837. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.es.js +27 -15
  838. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.es.js.map +1 -1
  839. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +2 -0
  840. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  841. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +2 -0
  842. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  843. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +40 -12
  844. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  845. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +41 -13
  846. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  847. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js +33 -19
  848. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js.map +1 -1
  849. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.es.js +33 -19
  850. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.es.js.map +1 -1
  851. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js +14 -12
  852. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js.map +1 -1
  853. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js +14 -12
  854. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js.map +1 -1
  855. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +8 -6
  856. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  857. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +8 -6
  858. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  859. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +3 -0
  860. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  861. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +3 -0
  862. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  863. package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.cjs.js +18 -0
  864. package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.cjs.js.map +1 -0
  865. package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.es.js +19 -0
  866. package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.es.js.map +1 -0
  867. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +12 -3
  868. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  869. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +12 -3
  870. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  871. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -0
  872. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  873. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +1 -0
  874. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  875. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.cjs.js.map +1 -1
  876. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.es.js.map +1 -1
  877. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +275 -53
  878. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  879. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +277 -55
  880. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  881. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +38 -4
  882. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  883. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +38 -4
  884. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  885. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +49 -21
  886. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  887. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +49 -21
  888. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  889. package/dist/shared/src/containers/ProjectTreeTable/components/RowDragHandleCellContent.cjs.js +33 -0
  890. package/dist/shared/src/containers/ProjectTreeTable/components/RowDragHandleCellContent.cjs.js.map +1 -0
  891. package/dist/shared/src/containers/ProjectTreeTable/components/RowDragHandleCellContent.es.js +34 -0
  892. package/dist/shared/src/containers/ProjectTreeTable/components/RowDragHandleCellContent.es.js.map +1 -0
  893. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  894. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  895. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +116 -0
  896. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -0
  897. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +116 -0
  898. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -0
  899. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +2 -1
  900. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  901. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +2 -1
  902. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  903. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +84 -0
  904. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -0
  905. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +85 -0
  906. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -0
  907. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js +0 -36
  908. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js.map +1 -1
  909. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js +0 -36
  910. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js.map +1 -1
  911. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +3 -2
  912. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  913. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +3 -2
  914. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  915. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +4 -0
  916. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  917. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -0
  918. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  919. package/dist/shared/src/context/AddonContext.cjs.js +18 -0
  920. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -0
  921. package/dist/shared/src/context/AddonContext.es.js +18 -0
  922. package/dist/shared/src/context/AddonContext.es.js.map +1 -0
  923. package/dist/shared/src/context/AddonProjectContext.cjs.js +91 -0
  924. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -0
  925. package/dist/shared/src/context/AddonProjectContext.es.js +91 -0
  926. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -0
  927. package/dist/shared/src/context/DetailsPanelContext.cjs.js +6 -0
  928. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  929. package/dist/shared/src/context/DetailsPanelContext.es.js +6 -0
  930. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  931. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -0
  932. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  933. package/dist/shared/src/context/RemoteModulesContext.es.js +1 -0
  934. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  935. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +3 -0
  936. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  937. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -0
  938. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  939. package/dist/shared/src/hooks/useLoadModule.cjs.js +19 -4
  940. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  941. package/dist/shared/src/hooks/useLoadModule.es.js +19 -4
  942. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  943. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -0
  944. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  945. package/dist/shared/src/hooks/useScopedStatuses.es.js +1 -0
  946. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  947. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +108 -0
  948. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -0
  949. package/dist/shared/src/hooks/useUserProjectConfig.es.js +108 -0
  950. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -0
  951. package/dist/types/SimpleTable/context/SimpleTableContext.d.ts +7 -5
  952. package/dist/types/api/generated/graphql.d.ts +9 -4
  953. package/dist/types/api/queries/entityLists/getLists.d.ts +2 -1
  954. package/dist/types/api/queries/entityLists/types.d.ts +1 -0
  955. package/dist/types/api/queries/index.d.ts +1 -0
  956. package/dist/types/api/queries/permissions/getPermissions.d.ts +294 -0
  957. package/dist/types/api/queries/permissions/index.d.ts +1 -0
  958. package/dist/types/api/queries/users/getUsers.d.ts +0 -1
  959. package/dist/types/containers/Actions/Actions.d.ts +2 -1
  960. package/dist/types/containers/Feed/components/CommentInput/CommentInput.d.ts +1 -1
  961. package/dist/types/containers/Feed/components/CommentInput/helpers.d.ts +6 -1
  962. package/dist/types/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.d.ts +1 -1
  963. package/dist/types/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.d.ts +5 -1
  964. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +5 -2
  965. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.styled.d.ts +4 -0
  966. package/dist/types/containers/Feed/components/FilesGrid/FilesGrid.d.ts +1 -1
  967. package/dist/types/containers/Feed/helpers/mergeAnnotationAttachments.d.ts +2 -0
  968. package/dist/types/containers/Feed/hooks/useCommentMutations.d.ts +1 -1
  969. package/dist/types/containers/Feed/index.d.ts +6 -0
  970. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +8 -1
  971. package/dist/types/containers/ProjectTreeTable/components/RowDragHandleCellContent.d.ts +5 -0
  972. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +1 -1
  973. package/dist/types/containers/ProjectTreeTable/context/ProjectDataContext.d.ts +22 -0
  974. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +1 -0
  975. package/dist/types/containers/ProjectTreeTable/hooks/useAttributesList.d.ts +12 -0
  976. package/dist/types/containers/ProjectTreeTable/index.d.ts +1 -0
  977. package/dist/types/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +1 -1
  978. package/dist/types/context/AddonContext.d.ts +18 -0
  979. package/dist/types/context/AddonProjectContext.d.ts +28 -0
  980. package/dist/types/context/DetailsPanelContext.d.ts +5 -2
  981. package/dist/types/context/index.d.ts +2 -0
  982. package/dist/types/hooks/index.d.ts +1 -0
  983. package/dist/types/hooks/useLoadModule.d.ts +1 -0
  984. package/dist/types/hooks/useUserProjectConfig.d.ts +13 -0
  985. package/package.json +1 -1
  986. package/dist/node_modules/react-intersection-observer/index.cjs.js.map +0 -1
  987. package/dist/node_modules/react-intersection-observer/index.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.es.js","sources":["../../../../../src/containers/Feed/Feed.tsx"],"sourcesContent":["import { useMemo, useRef } from 'react'\nimport ActivityItem from './components/ActivityItem'\nimport CommentInput from './components/CommentInput/CommentInput'\nimport * as Styled from './Feed.styled'\nimport useCommentMutations, { Activity } from './hooks/useCommentMutations'\nimport useTransformActivities from './hooks/useTransformActivities'\nimport { InView } from 'react-intersection-observer'\nimport useSaveScrollPos from './hooks/useSaveScrollPos'\nimport useScrollOnInputOpen from './hooks/useScrollOnInputOpen'\nimport { getLoadingPlaceholders } from './feedHelpers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport useScrollToHighlighted from './hooks/useScrollToHighlighted'\nimport { isFilePreviewable } from './components/FileUploadPreview/FileUploadPreview'\nimport EmptyPlaceholder from '@shared/components/EmptyPlaceholder'\nimport { useFeedContext, FEED_NEW_COMMENT } from './context/FeedContext'\nimport { Status } from '../ProjectTreeTable/types/project'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { DetailsPanelEntityType } from '@shared/api'\n\n// number of activities to get\nexport const activitiesLast = 30\n\nexport type FeedProps = {\n isMultiProjects: boolean\n readOnly: boolean\n statuses: Status[]\n}\n\nexport const Feed = ({ isMultiProjects, readOnly, statuses = [] }: FeedProps) => {\n const {\n projectName,\n entities,\n entityType,\n editingId,\n projectInfo,\n setEditingId,\n userName,\n activitiesData,\n isLoadingNew,\n isLoadingNextPage,\n loadNextPage,\n hasNextPage,\n users,\n currentTab,\n } = useFeedContext()\n\n const { openSlideOut, highlightedActivities, setHighlightedActivities, onOpenImage } =\n useDetailsPanelContext()\n\n // hide comment input for specific filters\n const hideCommentInput = ['versions'].includes(currentTab)\n\n // do any transformation on activities data\n // 1. status change activities, attach status data based on projectName\n // 2. reverse the order\n // 3. is this activity from the current user?\n const transformedActivitiesData = useTransformActivities(\n // @ts-ignore\n activitiesData,\n users,\n projectInfo,\n entityType,\n userName,\n ) as any[]\n\n // REFS\n const feedRef = useRef(null)\n // const commentInputRef = useRef(null)\n\n // scroll by height of comment input when it opens or closes\n useScrollOnInputOpen({ feedRef, isInputOpen: editingId === FEED_NEW_COMMENT, height: 93 })\n\n // save scroll position of a feed\n useSaveScrollPos({\n entities,\n feedRef,\n filter: currentTab,\n disabled: !!highlightedActivities.length,\n isLoading: isLoadingNew,\n })\n\n // try and scroll to highlightedActivities activity\n useScrollToHighlighted({\n feedRef,\n highlighted: highlightedActivities,\n isLoading: isLoadingNew,\n loadNextPage,\n hasNextPage: !!loadNextPage,\n })\n\n // comment mutations here!\n const { submitComment, updateComment, deleteComment, isSaving } = useCommentMutations({\n projectName,\n entityType: entityType,\n entities,\n filter: currentTab,\n })\n\n // When a checkbox is clicked, update the body to add/remove \"x\" in [ ] markdown\n // Then update comment with new body\n const handleCommentChecked = (e: React.ChangeEvent<HTMLInputElement>, activity: Activity) => {\n const target = e?.target\n if (!target || !activity) return console.log('no target or activity')\n\n // the value that it's changing to\n const checked: boolean = target.checked\n const currentMarkdown: string = checked ? '[ ]' : '[x]'\n const newMarkdown: string = checked ? '[x]' : '[ ]'\n\n const { body } = activity\n\n // based on all li elements in the whole className 'comment-body' with className 'task-list-item'\n // find the index of the task that was checked\n const taskIndex: number = Array.from(\n target.closest('.comment-body')?.querySelectorAll('.task-list-item') || [],\n ).findIndex((li: Element) => li === target.closest('li'))\n\n let replaceIndex: number = taskIndex\n\n // count the number of current markdowns in the body\n const allMarkdowns: string[] = body.match(/\\[.\\]/g) || []\n\n allMarkdowns.forEach((markdown: string, index: number) => {\n // does it match the current markdown?\n if (markdown !== currentMarkdown && index < taskIndex) replaceIndex--\n })\n\n // now find the indexes of the current markdown to replace\n const indexesOfCurrentMarkdownInBody: number[] = []\n let index: number = -1\n while ((index = body.indexOf(currentMarkdown, index + 1)) > -1) {\n indexesOfCurrentMarkdownInBody.push(index)\n }\n\n const indexToReplaceInBody: number | undefined = indexesOfCurrentMarkdownInBody[replaceIndex]\n if (indexToReplaceInBody === undefined) return\n\n const endReplaceIndex: number = indexToReplaceInBody + currentMarkdown.length\n\n // replace the current markdown with the new markdown\n const newBody: string =\n body.slice(0, indexToReplaceInBody) + newMarkdown + body.slice(endReplaceIndex)\n\n if (!newBody) return\n\n updateComment(activity, newBody, activity.files)\n }\n\n const handleRefClick = (ref: {\n entityId: string\n entityType: DetailsPanelEntityType\n activityId: string\n }) => {\n const { entityId, entityType, activityId } = ref\n const supportedTypes = ['version', 'task', 'folder']\n\n if (!entityType || !supportedTypes.includes(entityType))\n return console.log('Entity type not supported yet')\n\n if (!entityId || !entityType || !projectName) return console.log('No entity id or type found')\n\n // open the slide out\n openSlideOut({ entityId, entityType, projectName })\n // set highlighted activity\n setHighlightedActivities([activityId])\n }\n\n const handleFileExpand = ({ index, activityId }: { index: number; activityId: string }) => {\n const previewableFiles = Object.values(transformedActivitiesData)\n .reverse()\n .filter((a) => a.activityType == 'comment')\n .map((a) => ({\n id: a.activityId,\n files: a.files.filter((file: any) => isFilePreviewable(file.mime, file.ext)),\n }))\n .filter((a) => a.files.length > 0)\n\n // open image callback\n onOpenImage?.({ files: previewableFiles, activityId, index, projectName })\n }\n\n const loadingPlaceholders = useMemo(() => getLoadingPlaceholders(10), [])\n\n let warningMessage\n\n // only viewing activities from one project\n if (isMultiProjects)\n warningMessage = `You are only viewing activities from one project: ${projectName}.`\n\n return (\n <>\n <Styled.FeedContainer className=\"feed\">\n {warningMessage && (\n <Styled.Warning>\n <Icon icon=\"info\" />\n {warningMessage}\n </Styled.Warning>\n )}\n <Styled.FeedContent ref={feedRef} className={clsx({ loading: isLoadingNew }, 'no-shimmer')}>\n {isLoadingNew\n ? loadingPlaceholders\n : transformedActivitiesData.map((activity) => (\n <ActivityItem\n key={activity.activityId}\n activity={activity}\n onCheckChange={handleCommentChecked}\n onDelete={deleteComment}\n onUpdate={async (value, files, _refs) =>\n await updateComment(activity, value, files)\n }\n projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={handleRefClick}\n createdAts={entities.map((e) => e.createdAt)}\n onFileExpand={handleFileExpand}\n showOrigin={entities.length > 1}\n filter={currentTab}\n editProps={{\n projectName,\n entities: entities,\n entityType,\n }}\n isHighlighted={highlightedActivities.includes(activity.activityId)}\n readOnly={readOnly}\n statuses={statuses}\n />\n ))}\n {/* message when no versions published */}\n {transformedActivitiesData.length === 1 && currentTab === 'versions' && !isLoadingNew && (\n <EmptyPlaceholder message=\"No versions published yet\" icon=\"layers\" />\n )}\n {hasNextPage && loadNextPage && (\n <InView\n root={feedRef.current}\n onChange={(inView) => inView && loadNextPage()}\n rootMargin={'400px 0px 0px 0px'}\n >\n <Styled.LoadMore style={{ height: 0 }} onClick={() => loadNextPage()}>\n {isLoadingNextPage ? 'Loading more...' : 'Click to load more'}\n </Styled.LoadMore>\n </InView>\n )}\n </Styled.FeedContent>\n {!hideCommentInput && (\n <CommentInput\n initValue={null}\n onSubmit={submitComment}\n isOpen={editingId === FEED_NEW_COMMENT}\n onClose={() => setEditingId(null)}\n onOpen={() => setEditingId(FEED_NEW_COMMENT)}\n disabled={isMultiProjects}\n isLoading={isLoadingNew || !entities.length || isSaving}\n />\n )}\n </Styled.FeedContainer>\n </>\n )\n}\n"],"names":["index","entityType","jsxs","Styled.FeedContainer","Styled.Warning","jsx","Styled.FeedContent","Styled.LoadMore"],"mappings":"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"}
1
+ {"version":3,"file":"Feed.es.js","sources":["../../../../../src/containers/Feed/Feed.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react'\nimport ActivityItem from './components/ActivityItem'\nimport CommentInput from './components/CommentInput/CommentInput'\nimport * as Styled from './Feed.styled'\nimport useCommentMutations, { Activity } from './hooks/useCommentMutations'\nimport useTransformActivities from './hooks/useTransformActivities'\nimport { InView } from 'react-intersection-observer'\nimport useSaveScrollPos from './hooks/useSaveScrollPos'\nimport useScrollOnInputOpen from './hooks/useScrollOnInputOpen'\nimport { getLoadingPlaceholders } from './feedHelpers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport useScrollToHighlighted from './hooks/useScrollToHighlighted'\nimport { isFilePreviewable } from './components/FileUploadPreview/FileUploadPreview'\nimport EmptyPlaceholder from '@shared/components/EmptyPlaceholder'\nimport { useFeedContext, FEED_NEW_COMMENT } from './context/FeedContext'\nimport { Status } from '../ProjectTreeTable/types/project'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { DetailsPanelEntityType } from '@shared/api'\nimport mergeAnnotationAttachments from './helpers/mergeAnnotationAttachments'\n\n// number of activities to get\nexport const activitiesLast = 30\n\nexport type FeedProps = {\n isMultiProjects: boolean\n readOnly: boolean\n statuses: Status[]\n}\n\nexport const Feed = ({ isMultiProjects, readOnly, statuses = [] }: FeedProps) => {\n const {\n projectName,\n entities,\n entityType,\n editingId,\n projectInfo,\n setEditingId,\n userName,\n activitiesData,\n isLoadingNew,\n isLoadingNextPage,\n loadNextPage,\n hasNextPage,\n users,\n currentTab,\n } = useFeedContext()\n\n const {\n openSlideOut,\n highlightedActivities,\n setHighlightedActivities,\n onOpenImage,\n setFeedAnnotations,\n } = useDetailsPanelContext()\n\n // hide comment input for specific filters\n const hideCommentInput = ['versions'].includes(currentTab)\n\n const activitiesWithMergedAnnotations = useMemo(\n () => mergeAnnotationAttachments(activitiesData),\n [activitiesData],\n )\n\n useEffect(() => {\n if (!activitiesWithMergedAnnotations.length) return\n const annotations = activitiesWithMergedAnnotations\n .map((activity) => activity.activityData?.annotations)\n .filter(Boolean)\n .flat()\n\n setFeedAnnotations(annotations)\n }, [activitiesWithMergedAnnotations])\n\n // do any transformation on activities data\n // 1. status change activities, attach status data based on projectName\n // 2. reverse the order\n // 3. is this activity from the current user?\n const transformedActivitiesData = useTransformActivities(\n // @ts-ignore\n activitiesWithMergedAnnotations,\n users,\n projectInfo,\n entityType,\n userName,\n ) as any[]\n\n // REFS\n const feedRef = useRef(null)\n // const commentInputRef = useRef(null)\n\n // scroll by height of comment input when it opens or closes\n useScrollOnInputOpen({ feedRef, isInputOpen: editingId === FEED_NEW_COMMENT, height: 93 })\n\n // save scroll position of a feed\n useSaveScrollPos({\n entities,\n feedRef,\n filter: currentTab,\n disabled: !!highlightedActivities.length,\n isLoading: isLoadingNew,\n })\n\n // try and scroll to highlightedActivities activity\n useScrollToHighlighted({\n feedRef,\n highlighted: highlightedActivities,\n isLoading: isLoadingNew,\n loadNextPage,\n hasNextPage: !!loadNextPage,\n })\n\n // comment mutations here!\n const { submitComment, updateComment, deleteComment, isSaving } = useCommentMutations({\n projectName,\n entityType: entityType,\n entities,\n filter: currentTab,\n })\n\n // When a checkbox is clicked, update the body to add/remove \"x\" in [ ] markdown\n // Then update comment with new body\n const handleCommentChecked = (e: React.ChangeEvent<HTMLInputElement>, activity: Activity) => {\n const target = e?.target\n if (!target || !activity) return console.log('no target or activity')\n\n // the value that it's changing to\n const checked: boolean = target.checked\n const currentMarkdown: string = checked ? '[ ]' : '[x]'\n const newMarkdown: string = checked ? '[x]' : '[ ]'\n\n const { body } = activity\n\n // based on all li elements in the whole className 'comment-body' with className 'task-list-item'\n // find the index of the task that was checked\n const taskIndex: number = Array.from(\n target.closest('.comment-body')?.querySelectorAll('.task-list-item') || [],\n ).findIndex((li: Element) => li === target.closest('li'))\n\n let replaceIndex: number = taskIndex\n\n // count the number of current markdowns in the body\n const allMarkdowns: string[] = body.match(/\\[.\\]/g) || []\n\n allMarkdowns.forEach((markdown: string, index: number) => {\n // does it match the current markdown?\n if (markdown !== currentMarkdown && index < taskIndex) replaceIndex--\n })\n\n // now find the indexes of the current markdown to replace\n const indexesOfCurrentMarkdownInBody: number[] = []\n let index: number = -1\n while ((index = body.indexOf(currentMarkdown, index + 1)) > -1) {\n indexesOfCurrentMarkdownInBody.push(index)\n }\n\n const indexToReplaceInBody: number | undefined = indexesOfCurrentMarkdownInBody[replaceIndex]\n if (indexToReplaceInBody === undefined) return\n\n const endReplaceIndex: number = indexToReplaceInBody + currentMarkdown.length\n\n // replace the current markdown with the new markdown\n const newBody: string =\n body.slice(0, indexToReplaceInBody) + newMarkdown + body.slice(endReplaceIndex)\n\n if (!newBody) return\n\n updateComment(activity, newBody, activity.files)\n }\n\n const handleRefClick = (ref: {\n entityId: string\n entityType: DetailsPanelEntityType\n activityId: string\n }) => {\n const { entityId, entityType, activityId } = ref\n const supportedTypes = ['version', 'task', 'folder']\n\n if (!entityType || !supportedTypes.includes(entityType))\n return console.log('Entity type not supported yet')\n\n if (!entityId || !entityType || !projectName) return console.log('No entity id or type found')\n\n // open the slide out\n openSlideOut({ entityId, entityType, projectName })\n // set highlighted activity\n setHighlightedActivities([activityId])\n }\n\n const handleFileExpand = ({ index, activityId }: { index: number; activityId: string }) => {\n const previewableFiles = Object.values(transformedActivitiesData)\n .reverse()\n .filter((a) => a.activityType == 'comment')\n .map((a) => ({\n id: a.activityId,\n files: a.files.filter((file: any) => isFilePreviewable(file.mime, file.ext)),\n }))\n .filter((a) => a.files.length > 0)\n\n // open image callback\n onOpenImage?.({ files: previewableFiles, activityId, index, projectName })\n }\n\n const loadingPlaceholders = useMemo(() => getLoadingPlaceholders(10), [])\n\n let warningMessage\n\n // only viewing activities from one project\n if (isMultiProjects)\n warningMessage = `You are only viewing activities from one project: ${projectName}.`\n\n return (\n <>\n <Styled.FeedContainer className=\"feed\">\n {warningMessage && (\n <Styled.Warning>\n <Icon icon=\"info\" />\n {warningMessage}\n </Styled.Warning>\n )}\n <Styled.FeedContent ref={feedRef} className={clsx({ loading: isLoadingNew }, 'no-shimmer')}>\n {isLoadingNew\n ? loadingPlaceholders\n : transformedActivitiesData.map((activity) => (\n <ActivityItem\n key={activity.activityId}\n activity={activity}\n onCheckChange={handleCommentChecked}\n onDelete={deleteComment}\n onUpdate={async (value, files, _refs) =>\n await updateComment(activity, value, files)\n }\n projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={handleRefClick}\n createdAts={entities.map((e) => e.createdAt)}\n onFileExpand={handleFileExpand}\n showOrigin={entities.length > 1}\n filter={currentTab}\n editProps={{\n projectName,\n entities: entities,\n entityType,\n }}\n isHighlighted={highlightedActivities.includes(activity.activityId)}\n readOnly={readOnly}\n statuses={statuses}\n />\n ))}\n {/* message when no versions published */}\n {transformedActivitiesData.length === 1 && currentTab === 'versions' && !isLoadingNew && (\n <EmptyPlaceholder message=\"No versions published yet\" icon=\"layers\" />\n )}\n {hasNextPage && loadNextPage && (\n <InView\n root={feedRef.current}\n onChange={(inView) => inView && loadNextPage()}\n rootMargin={'400px 0px 0px 0px'}\n >\n <Styled.LoadMore style={{ height: 0 }} onClick={() => loadNextPage()}>\n {isLoadingNextPage ? 'Loading more...' : 'Click to load more'}\n </Styled.LoadMore>\n </InView>\n )}\n </Styled.FeedContent>\n {!hideCommentInput && (\n <CommentInput\n initValue={null}\n onSubmit={submitComment}\n isOpen={editingId === FEED_NEW_COMMENT}\n onClose={() => setEditingId(null)}\n onOpen={() => setEditingId(FEED_NEW_COMMENT)}\n disabled={isMultiProjects}\n isLoading={isLoadingNew || !entities.length || isSaving}\n />\n )}\n </Styled.FeedContainer>\n </>\n )\n}\n"],"names":["index","entityType","jsxs","Styled.FeedContainer","Styled.Warning","jsx","Styled.FeedContent","Styled.LoadMore"],"mappings":"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"}
@@ -23,6 +23,15 @@ const confirmDelete = require("../../../../util/confirmDelete.cjs.js");
23
23
  require("react-toastify");
24
24
  require("../../../../util/pubsub.cjs.js");
25
25
  const ActivityHeader = require("../ActivityHeader/ActivityHeader.cjs.js");
26
+ require("../../../../context/RemoteModulesContext.cjs.js");
27
+ const DetailsPanelContext = require("../../../../context/DetailsPanelContext.cjs.js");
28
+ require("../../../../context/ThumbnailUploaderContext.cjs.js");
29
+ require("../../../../context/SettingsPanelContext.cjs.js");
30
+ require("../../../../context/pip/PiPProvider.cjs.js");
31
+ require("react-dom");
32
+ require("../../../../context/pip/PiPWrapper.cjs.js");
33
+ require("../../../../context/AddonProjectContext.cjs.js");
34
+ require("../../../../context/AddonContext.cjs.js");
26
35
  const ActivityComment = ({
27
36
  activity = {},
28
37
  onCheckChange,
@@ -56,6 +65,7 @@ const ActivityComment = ({
56
65
  if (!authorName) authorName = (author == null ? void 0 : author.name) || "";
57
66
  if (!authorFullName) authorFullName = (author == null ? void 0 : author.fullName) || authorName;
58
67
  const { editingId, setEditingId } = FeedContext.useFeedContext();
68
+ const { onGoToFrame } = DetailsPanelContext.useDetailsPanelContext();
59
69
  const handleEditComment = () => {
60
70
  setEditingId(activityId);
61
71
  };
@@ -110,6 +120,13 @@ const ActivityComment = ({
110
120
  });
111
121
  }
112
122
  };
123
+ const onAnnotationClick = React.useCallback(
124
+ (file) => {
125
+ if (!file.annotation) return;
126
+ onGoToFrame == null ? void 0 : onGoToFrame(file.annotation.range[0] - 1);
127
+ },
128
+ [onGoToFrame]
129
+ );
113
130
  return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(jsxRuntime.jsxRuntimeExports.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(
114
131
  ActivityComment_styled.Comment,
115
132
  {
@@ -204,6 +221,7 @@ const ActivityComment = ({
204
221
  projectName,
205
222
  isDownloadable: true,
206
223
  onExpand: onFileExpand,
224
+ onAnnotationClick,
207
225
  onRemove: void 0
208
226
  }
209
227
  )
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityComment.cjs.js","sources":["../../../../../../../src/containers/Feed/components/ActivityComment/ActivityComment.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useMemo } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport emoji from 'remark-emoji'\nimport remarkGfm from 'remark-gfm'\nimport remarkDirective from 'remark-directive'\nimport remarkDirectiveRehype from 'remark-directive-rehype'\n\nimport CommentInput from '../CommentInput/CommentInput'\nimport Reactions from '../ReactionContainer/Reactions'\nimport { Reaction } from '../ReactionContainer/types'\nimport useReferenceTooltip from '../../hooks/useReferenceTooltip'\nimport FilesGrid, { FilesGridProps } from '../FilesGrid/FilesGrid'\n\nimport { getTextRefs } from '../CommentInput/quillToMarkdown'\nimport * as Styled from './ActivityComment.styled'\nimport CommentWrapper from './CommentWrapper'\nimport { aTag, blockquoteTag, codeTag, inputTag } from './ActivityMarkdownComponents'\nimport { mapGraphQLReactions } from './mappers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityStatus from '../ActivityStatus/ActivityStatus'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { confirmDelete } from '../../../../util'\nimport ActivityHeader, { ActivityHeaderProps } from '../ActivityHeader/ActivityHeader'\nimport type { Status } from '../../../ProjectTreeTable/types/project'\n\ntype Props = {\n activity: any\n onCheckChange?: Function\n onDelete?: (activityId: string, entityId: string, refs: any) => Promise<void>\n onUpdate?: Function\n projectInfo: any\n editProps?: {\n disabled: boolean\n isLoading: boolean\n }\n projectName: string\n entityType: string\n onReferenceClick?: ActivityHeaderProps['onReferenceClick']\n onFileExpand?: FilesGridProps['onExpand']\n showOrigin?: boolean\n isHighlighted?: boolean\n readOnly?: boolean\n statuses: Status[]\n}\n\nconst ActivityComment = ({\n activity = {},\n onCheckChange,\n onDelete,\n onUpdate,\n projectInfo,\n editProps,\n projectName,\n entityType,\n onReferenceClick,\n onFileExpand,\n showOrigin,\n isHighlighted,\n readOnly,\n statuses = [],\n}: Props) => {\n const { userName, createReaction, deleteReaction } = useFeedContext()\n\n let {\n body,\n authorName,\n authorFullName,\n createdAt,\n referenceType,\n entityId,\n activityId,\n author,\n isOwner,\n files = [],\n origin,\n } = activity\n if (!authorName) authorName = author?.name || ''\n if (!authorFullName) authorFullName = author?.fullName || authorName\n\n const { editingId, setEditingId } = useFeedContext()\n\n const handleEditComment = () => {\n setEditingId(activityId)\n }\n\n const handleEditCancel = () => {\n // close the edit comment\n setEditingId(null)\n }\n\n const handleSave = async (value: any, files: any) => {\n await onUpdate?.(value, files)\n setEditingId(null)\n }\n\n const isEditing = editingId === activityId\n\n const isRef = referenceType !== 'origin' || showOrigin\n\n const handleDelete = async () => {\n const refs = getTextRefs(body)\n\n // if the comment is a reference, (it's origin is not the entity)\n // we need to delete the reference from the origin as well\n // add it to the refs to delete\n if (isRef && origin) {\n refs.push({ id: origin.id, type: origin.type })\n }\n\n // note: body is used to match other refs to delete\n onDelete && (await onDelete(activityId, entityId, refs))\n }\n\n const deleteConfirmation = () => {\n confirmDelete({\n title: 'Delete comment',\n message: 'Are you sure you want to delete this comment?',\n accept: async () => {\n await handleDelete()\n },\n })\n }\n\n const [, setRefTooltip] = useReferenceTooltip()\n\n const mappedReactions = useMemo(\n () => mapGraphQLReactions(activity.reactions, userName),\n [[...(activity.reactions || [])]],\n )\n\n const reactionChangeHandler = (reaction: Reaction) => {\n if (reaction.isActive) {\n createReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n createReactionModel: {\n reaction: reaction.type,\n },\n })\n } else {\n deleteReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n reaction: reaction.type,\n })\n }\n }\n\n return (\n <>\n <Styled.Comment\n className={clsx('comment', { isOwner, isEditing, isHighlighted })}\n id={activityId}\n >\n <ActivityHeader\n name={authorName}\n fullName={authorFullName}\n date={createdAt}\n isRef={isRef}\n activity={activity}\n // projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n onReferenceTooltip={setRefTooltip}\n children={undefined}\n />\n <Styled.Body className={clsx('comment-body', { isEditing })}>\n {!readOnly && (\n <Styled.Tools className={'tools'}>\n {isOwner && onDelete && (\n <Styled.ToolButton\n icon=\"delete\"\n onClick={deleteConfirmation}\n tooltip=\"Delete comment\"\n />\n )}\n {isOwner && handleEditComment && (\n <Styled.ToolButton icon=\"edit_square\" onClick={handleEditComment} />\n )}\n </Styled.Tools>\n )}\n {isEditing ? (\n <CommentInput\n initValue={body}\n initFiles={files}\n isEditing\n onClose={handleEditCancel}\n onSubmit={handleSave}\n isOpen={true}\n {...editProps}\n />\n ) : (\n <>\n <CommentWrapper>\n <ReactMarkdown\n remarkPlugins={[remarkGfm, emoji, remarkDirective, remarkDirectiveRehype]}\n urlTransform={(url) => url}\n components={{\n // a links\n // @ts-ignore\n a: (props) =>\n // @ts-ignore\n aTag(props, {\n entityId,\n projectName,\n projectInfo,\n onReferenceClick,\n onReferenceTooltip: setRefTooltip,\n activityId,\n }),\n // checkbox inputs\n // @ts-ignore\n input: (props) => inputTag(props, { activity, onCheckChange }),\n // code syntax highlighting\n // eslint-disable-next-line\n // @ts-ignore\n code: (props) => codeTag(props),\n // @ts-ignore\n blockquote: (props) => blockquoteTag(props),\n // @ts-ignore\n tip: (props) => (\n <Styled.Tip>\n <Icon icon=\"info\" />\n {props.children}\n </Styled.Tip>\n ),\n // @ts-ignore\n status: (props) => {\n return (\n <ActivityStatus name={props.id} statuses={statuses}>\n {props.children}\n </ActivityStatus>\n )\n },\n }}\n >\n {body}\n </ReactMarkdown>\n </CommentWrapper>\n {/* file uploads */}\n {/* @ts-ignore */}\n <FilesGrid\n files={files}\n isCompact={files.length > 6}\n activityId={activityId}\n projectName={projectName}\n isDownloadable\n onExpand={onFileExpand}\n onRemove={undefined}\n />\n </>\n )}\n\n {!isEditing && (\n <div style={{ marginTop: '16px' }}>\n {mappedReactions && (\n <Reactions\n reactions={mappedReactions}\n changeHandler={reactionChangeHandler}\n readOnly={readOnly}\n />\n )}\n </div>\n )}\n </Styled.Body>\n </Styled.Comment>\n </>\n )\n}\n\nexport default ActivityComment\n"],"names":["useFeedContext","files","getTextRefs","confirmDelete","useMemo","mapGraphQLReactions","jsx","Fragment","jsxs","Styled.Comment","Styled.Body","Styled.Tools","Styled.ToolButton","CommentInput","aTag","inputTag","codeTag","blockquoteTag","Styled.Tip","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"ActivityComment.cjs.js","sources":["../../../../../../../src/containers/Feed/components/ActivityComment/ActivityComment.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useCallback, useMemo } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport emoji from 'remark-emoji'\nimport remarkGfm from 'remark-gfm'\nimport remarkDirective from 'remark-directive'\nimport remarkDirectiveRehype from 'remark-directive-rehype'\n\nimport CommentInput from '../CommentInput/CommentInput'\nimport Reactions from '../ReactionContainer/Reactions'\nimport { Reaction } from '../ReactionContainer/types'\nimport useReferenceTooltip from '../../hooks/useReferenceTooltip'\nimport FilesGrid, { FilesGridProps } from '../FilesGrid/FilesGrid'\n\nimport { getTextRefs } from '../CommentInput/quillToMarkdown'\nimport * as Styled from './ActivityComment.styled'\nimport CommentWrapper from './CommentWrapper'\nimport { aTag, blockquoteTag, codeTag, inputTag } from './ActivityMarkdownComponents'\nimport { mapGraphQLReactions } from './mappers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityStatus from '../ActivityStatus/ActivityStatus'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { confirmDelete } from '../../../../util'\nimport ActivityHeader, { ActivityHeaderProps } from '../ActivityHeader/ActivityHeader'\nimport type { Status } from '../../../ProjectTreeTable/types/project'\nimport { SavedAnnotationMetadata } from '../../index'\nimport { useDetailsPanelContext } from '@shared/context'\n\ntype Props = {\n activity: any\n onCheckChange?: Function\n onDelete?: (activityId: string, entityId: string, refs: any) => Promise<void>\n onUpdate?: Function\n projectInfo: any\n editProps?: {\n disabled: boolean\n isLoading: boolean\n }\n projectName: string\n entityType: string\n onReferenceClick?: ActivityHeaderProps['onReferenceClick']\n onFileExpand?: FilesGridProps['onExpand']\n showOrigin?: boolean\n isHighlighted?: boolean\n readOnly?: boolean\n statuses: Status[]\n}\n\nconst ActivityComment = ({\n activity = {},\n onCheckChange,\n onDelete,\n onUpdate,\n projectInfo,\n editProps,\n projectName,\n entityType,\n onReferenceClick,\n onFileExpand,\n showOrigin,\n isHighlighted,\n readOnly,\n statuses = [],\n}: Props) => {\n const { userName, createReaction, deleteReaction } = useFeedContext()\n\n let {\n body,\n authorName,\n authorFullName,\n createdAt,\n referenceType,\n entityId,\n activityId,\n author,\n isOwner,\n files = [],\n origin,\n } = activity\n if (!authorName) authorName = author?.name || ''\n if (!authorFullName) authorFullName = author?.fullName || authorName\n\n const { editingId, setEditingId } = useFeedContext()\n const { onGoToFrame } = useDetailsPanelContext()\n\n const handleEditComment = () => {\n setEditingId(activityId)\n }\n\n const handleEditCancel = () => {\n // close the edit comment\n setEditingId(null)\n }\n\n const handleSave = async (value: any, files: any) => {\n await onUpdate?.(value, files)\n setEditingId(null)\n }\n\n const isEditing = editingId === activityId\n\n const isRef = referenceType !== 'origin' || showOrigin\n\n const handleDelete = async () => {\n const refs = getTextRefs(body)\n\n // if the comment is a reference, (it's origin is not the entity)\n // we need to delete the reference from the origin as well\n // add it to the refs to delete\n if (isRef && origin) {\n refs.push({ id: origin.id, type: origin.type })\n }\n\n // note: body is used to match other refs to delete\n onDelete && (await onDelete(activityId, entityId, refs))\n }\n\n const deleteConfirmation = () => {\n confirmDelete({\n title: 'Delete comment',\n message: 'Are you sure you want to delete this comment?',\n accept: async () => {\n await handleDelete()\n },\n })\n }\n\n const [, setRefTooltip] = useReferenceTooltip()\n\n const mappedReactions = useMemo(\n () => mapGraphQLReactions(activity.reactions, userName),\n [[...(activity.reactions || [])]],\n )\n\n const reactionChangeHandler = (reaction: Reaction) => {\n if (reaction.isActive) {\n createReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n createReactionModel: {\n reaction: reaction.type,\n },\n })\n } else {\n deleteReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n reaction: reaction.type,\n })\n }\n }\n\n const onAnnotationClick = useCallback(\n (file: any) => {\n if (!file.annotation) return\n // annotation frame numbers are 1-based\n onGoToFrame?.((file.annotation as SavedAnnotationMetadata).range[0] - 1)\n },\n [onGoToFrame],\n )\n\n return (\n <>\n <Styled.Comment\n className={clsx('comment', { isOwner, isEditing, isHighlighted })}\n id={activityId}\n >\n <ActivityHeader\n name={authorName}\n fullName={authorFullName}\n date={createdAt}\n isRef={isRef}\n activity={activity}\n // projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n onReferenceTooltip={setRefTooltip}\n children={undefined}\n />\n <Styled.Body className={clsx('comment-body', { isEditing })}>\n {!readOnly && (\n <Styled.Tools className={'tools'}>\n {isOwner && onDelete && (\n <Styled.ToolButton\n icon=\"delete\"\n onClick={deleteConfirmation}\n tooltip=\"Delete comment\"\n />\n )}\n {isOwner && handleEditComment && (\n <Styled.ToolButton icon=\"edit_square\" onClick={handleEditComment} />\n )}\n </Styled.Tools>\n )}\n {isEditing ? (\n <CommentInput\n initValue={body}\n initFiles={files}\n isEditing\n onClose={handleEditCancel}\n onSubmit={handleSave}\n isOpen={true}\n {...editProps}\n />\n ) : (\n <>\n <CommentWrapper>\n <ReactMarkdown\n remarkPlugins={[remarkGfm, emoji, remarkDirective, remarkDirectiveRehype]}\n urlTransform={(url) => url}\n components={{\n // a links\n // @ts-ignore\n a: (props) =>\n // @ts-ignore\n aTag(props, {\n entityId,\n projectName,\n projectInfo,\n onReferenceClick,\n onReferenceTooltip: setRefTooltip,\n activityId,\n }),\n // checkbox inputs\n // @ts-ignore\n input: (props) => inputTag(props, { activity, onCheckChange }),\n // code syntax highlighting\n // eslint-disable-next-line\n // @ts-ignore\n code: (props) => codeTag(props),\n // @ts-ignore\n blockquote: (props) => blockquoteTag(props),\n // @ts-ignore\n tip: (props) => (\n <Styled.Tip>\n <Icon icon=\"info\" />\n {props.children}\n </Styled.Tip>\n ),\n // @ts-ignore\n status: (props) => {\n return (\n <ActivityStatus name={props.id} statuses={statuses}>\n {props.children}\n </ActivityStatus>\n )\n },\n }}\n >\n {body}\n </ReactMarkdown>\n </CommentWrapper>\n {/* file uploads */}\n {/* @ts-ignore */}\n <FilesGrid\n files={files}\n isCompact={files.length > 6}\n activityId={activityId}\n projectName={projectName}\n isDownloadable\n onExpand={onFileExpand}\n onAnnotationClick={onAnnotationClick}\n onRemove={undefined}\n />\n </>\n )}\n\n {!isEditing && (\n <div style={{ marginTop: '16px' }}>\n {mappedReactions && (\n <Reactions\n reactions={mappedReactions}\n changeHandler={reactionChangeHandler}\n readOnly={readOnly}\n />\n )}\n </div>\n )}\n </Styled.Body>\n </Styled.Comment>\n </>\n )\n}\n\nexport default ActivityComment\n"],"names":["useFeedContext","useDetailsPanelContext","files","getTextRefs","confirmDelete","useMemo","mapGraphQLReactions","useCallback","jsx","Fragment","jsxs","Styled.Comment","Styled.Body","Styled.Tools","Styled.ToolButton","CommentInput","aTag","inputTag","codeTag","blockquoteTag","Styled.Tip","Icon"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { j as jsxRuntimeExports } from "../../../../../../_virtual/jsx-runtime.es.js";
2
2
  import clsx from "clsx";
3
- import { useMemo } from "react";
3
+ import { useMemo, useCallback } from "react";
4
4
  import ReactMarkdown from "react-markdown";
5
5
  import emoji from "remark-emoji";
6
6
  import remarkGfm from "remark-gfm";
@@ -22,6 +22,15 @@ import { confirmDelete } from "../../../../util/confirmDelete.es.js";
22
22
  import "react-toastify";
23
23
  import "../../../../util/pubsub.es.js";
24
24
  import ActivityHeader from "../ActivityHeader/ActivityHeader.es.js";
25
+ import "../../../../context/RemoteModulesContext.es.js";
26
+ import { useDetailsPanelContext } from "../../../../context/DetailsPanelContext.es.js";
27
+ import "../../../../context/ThumbnailUploaderContext.es.js";
28
+ import "../../../../context/SettingsPanelContext.es.js";
29
+ import "../../../../context/pip/PiPProvider.es.js";
30
+ import "react-dom";
31
+ import "../../../../context/pip/PiPWrapper.es.js";
32
+ import "../../../../context/AddonProjectContext.es.js";
33
+ import "../../../../context/AddonContext.es.js";
25
34
  const ActivityComment = ({
26
35
  activity = {},
27
36
  onCheckChange,
@@ -55,6 +64,7 @@ const ActivityComment = ({
55
64
  if (!authorName) authorName = (author == null ? void 0 : author.name) || "";
56
65
  if (!authorFullName) authorFullName = (author == null ? void 0 : author.fullName) || authorName;
57
66
  const { editingId, setEditingId } = useFeedContext();
67
+ const { onGoToFrame } = useDetailsPanelContext();
58
68
  const handleEditComment = () => {
59
69
  setEditingId(activityId);
60
70
  };
@@ -109,6 +119,13 @@ const ActivityComment = ({
109
119
  });
110
120
  }
111
121
  };
122
+ const onAnnotationClick = useCallback(
123
+ (file) => {
124
+ if (!file.annotation) return;
125
+ onGoToFrame == null ? void 0 : onGoToFrame(file.annotation.range[0] - 1);
126
+ },
127
+ [onGoToFrame]
128
+ );
112
129
  return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
113
130
  Comment,
114
131
  {
@@ -203,6 +220,7 @@ const ActivityComment = ({
203
220
  projectName,
204
221
  isDownloadable: true,
205
222
  onExpand: onFileExpand,
223
+ onAnnotationClick,
206
224
  onRemove: void 0
207
225
  }
208
226
  )
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityComment.es.js","sources":["../../../../../../../src/containers/Feed/components/ActivityComment/ActivityComment.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useMemo } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport emoji from 'remark-emoji'\nimport remarkGfm from 'remark-gfm'\nimport remarkDirective from 'remark-directive'\nimport remarkDirectiveRehype from 'remark-directive-rehype'\n\nimport CommentInput from '../CommentInput/CommentInput'\nimport Reactions from '../ReactionContainer/Reactions'\nimport { Reaction } from '../ReactionContainer/types'\nimport useReferenceTooltip from '../../hooks/useReferenceTooltip'\nimport FilesGrid, { FilesGridProps } from '../FilesGrid/FilesGrid'\n\nimport { getTextRefs } from '../CommentInput/quillToMarkdown'\nimport * as Styled from './ActivityComment.styled'\nimport CommentWrapper from './CommentWrapper'\nimport { aTag, blockquoteTag, codeTag, inputTag } from './ActivityMarkdownComponents'\nimport { mapGraphQLReactions } from './mappers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityStatus from '../ActivityStatus/ActivityStatus'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { confirmDelete } from '../../../../util'\nimport ActivityHeader, { ActivityHeaderProps } from '../ActivityHeader/ActivityHeader'\nimport type { Status } from '../../../ProjectTreeTable/types/project'\n\ntype Props = {\n activity: any\n onCheckChange?: Function\n onDelete?: (activityId: string, entityId: string, refs: any) => Promise<void>\n onUpdate?: Function\n projectInfo: any\n editProps?: {\n disabled: boolean\n isLoading: boolean\n }\n projectName: string\n entityType: string\n onReferenceClick?: ActivityHeaderProps['onReferenceClick']\n onFileExpand?: FilesGridProps['onExpand']\n showOrigin?: boolean\n isHighlighted?: boolean\n readOnly?: boolean\n statuses: Status[]\n}\n\nconst ActivityComment = ({\n activity = {},\n onCheckChange,\n onDelete,\n onUpdate,\n projectInfo,\n editProps,\n projectName,\n entityType,\n onReferenceClick,\n onFileExpand,\n showOrigin,\n isHighlighted,\n readOnly,\n statuses = [],\n}: Props) => {\n const { userName, createReaction, deleteReaction } = useFeedContext()\n\n let {\n body,\n authorName,\n authorFullName,\n createdAt,\n referenceType,\n entityId,\n activityId,\n author,\n isOwner,\n files = [],\n origin,\n } = activity\n if (!authorName) authorName = author?.name || ''\n if (!authorFullName) authorFullName = author?.fullName || authorName\n\n const { editingId, setEditingId } = useFeedContext()\n\n const handleEditComment = () => {\n setEditingId(activityId)\n }\n\n const handleEditCancel = () => {\n // close the edit comment\n setEditingId(null)\n }\n\n const handleSave = async (value: any, files: any) => {\n await onUpdate?.(value, files)\n setEditingId(null)\n }\n\n const isEditing = editingId === activityId\n\n const isRef = referenceType !== 'origin' || showOrigin\n\n const handleDelete = async () => {\n const refs = getTextRefs(body)\n\n // if the comment is a reference, (it's origin is not the entity)\n // we need to delete the reference from the origin as well\n // add it to the refs to delete\n if (isRef && origin) {\n refs.push({ id: origin.id, type: origin.type })\n }\n\n // note: body is used to match other refs to delete\n onDelete && (await onDelete(activityId, entityId, refs))\n }\n\n const deleteConfirmation = () => {\n confirmDelete({\n title: 'Delete comment',\n message: 'Are you sure you want to delete this comment?',\n accept: async () => {\n await handleDelete()\n },\n })\n }\n\n const [, setRefTooltip] = useReferenceTooltip()\n\n const mappedReactions = useMemo(\n () => mapGraphQLReactions(activity.reactions, userName),\n [[...(activity.reactions || [])]],\n )\n\n const reactionChangeHandler = (reaction: Reaction) => {\n if (reaction.isActive) {\n createReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n createReactionModel: {\n reaction: reaction.type,\n },\n })\n } else {\n deleteReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n reaction: reaction.type,\n })\n }\n }\n\n return (\n <>\n <Styled.Comment\n className={clsx('comment', { isOwner, isEditing, isHighlighted })}\n id={activityId}\n >\n <ActivityHeader\n name={authorName}\n fullName={authorFullName}\n date={createdAt}\n isRef={isRef}\n activity={activity}\n // projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n onReferenceTooltip={setRefTooltip}\n children={undefined}\n />\n <Styled.Body className={clsx('comment-body', { isEditing })}>\n {!readOnly && (\n <Styled.Tools className={'tools'}>\n {isOwner && onDelete && (\n <Styled.ToolButton\n icon=\"delete\"\n onClick={deleteConfirmation}\n tooltip=\"Delete comment\"\n />\n )}\n {isOwner && handleEditComment && (\n <Styled.ToolButton icon=\"edit_square\" onClick={handleEditComment} />\n )}\n </Styled.Tools>\n )}\n {isEditing ? (\n <CommentInput\n initValue={body}\n initFiles={files}\n isEditing\n onClose={handleEditCancel}\n onSubmit={handleSave}\n isOpen={true}\n {...editProps}\n />\n ) : (\n <>\n <CommentWrapper>\n <ReactMarkdown\n remarkPlugins={[remarkGfm, emoji, remarkDirective, remarkDirectiveRehype]}\n urlTransform={(url) => url}\n components={{\n // a links\n // @ts-ignore\n a: (props) =>\n // @ts-ignore\n aTag(props, {\n entityId,\n projectName,\n projectInfo,\n onReferenceClick,\n onReferenceTooltip: setRefTooltip,\n activityId,\n }),\n // checkbox inputs\n // @ts-ignore\n input: (props) => inputTag(props, { activity, onCheckChange }),\n // code syntax highlighting\n // eslint-disable-next-line\n // @ts-ignore\n code: (props) => codeTag(props),\n // @ts-ignore\n blockquote: (props) => blockquoteTag(props),\n // @ts-ignore\n tip: (props) => (\n <Styled.Tip>\n <Icon icon=\"info\" />\n {props.children}\n </Styled.Tip>\n ),\n // @ts-ignore\n status: (props) => {\n return (\n <ActivityStatus name={props.id} statuses={statuses}>\n {props.children}\n </ActivityStatus>\n )\n },\n }}\n >\n {body}\n </ReactMarkdown>\n </CommentWrapper>\n {/* file uploads */}\n {/* @ts-ignore */}\n <FilesGrid\n files={files}\n isCompact={files.length > 6}\n activityId={activityId}\n projectName={projectName}\n isDownloadable\n onExpand={onFileExpand}\n onRemove={undefined}\n />\n </>\n )}\n\n {!isEditing && (\n <div style={{ marginTop: '16px' }}>\n {mappedReactions && (\n <Reactions\n reactions={mappedReactions}\n changeHandler={reactionChangeHandler}\n readOnly={readOnly}\n />\n )}\n </div>\n )}\n </Styled.Body>\n </Styled.Comment>\n </>\n )\n}\n\nexport default ActivityComment\n"],"names":["files","jsx","Fragment","jsxs","Styled.Comment","Styled.Body","Styled.Tools","Styled.ToolButton","Styled.Tip"],"mappings":"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"}
1
+ {"version":3,"file":"ActivityComment.es.js","sources":["../../../../../../../src/containers/Feed/components/ActivityComment/ActivityComment.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useCallback, useMemo } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport emoji from 'remark-emoji'\nimport remarkGfm from 'remark-gfm'\nimport remarkDirective from 'remark-directive'\nimport remarkDirectiveRehype from 'remark-directive-rehype'\n\nimport CommentInput from '../CommentInput/CommentInput'\nimport Reactions from '../ReactionContainer/Reactions'\nimport { Reaction } from '../ReactionContainer/types'\nimport useReferenceTooltip from '../../hooks/useReferenceTooltip'\nimport FilesGrid, { FilesGridProps } from '../FilesGrid/FilesGrid'\n\nimport { getTextRefs } from '../CommentInput/quillToMarkdown'\nimport * as Styled from './ActivityComment.styled'\nimport CommentWrapper from './CommentWrapper'\nimport { aTag, blockquoteTag, codeTag, inputTag } from './ActivityMarkdownComponents'\nimport { mapGraphQLReactions } from './mappers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityStatus from '../ActivityStatus/ActivityStatus'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { confirmDelete } from '../../../../util'\nimport ActivityHeader, { ActivityHeaderProps } from '../ActivityHeader/ActivityHeader'\nimport type { Status } from '../../../ProjectTreeTable/types/project'\nimport { SavedAnnotationMetadata } from '../../index'\nimport { useDetailsPanelContext } from '@shared/context'\n\ntype Props = {\n activity: any\n onCheckChange?: Function\n onDelete?: (activityId: string, entityId: string, refs: any) => Promise<void>\n onUpdate?: Function\n projectInfo: any\n editProps?: {\n disabled: boolean\n isLoading: boolean\n }\n projectName: string\n entityType: string\n onReferenceClick?: ActivityHeaderProps['onReferenceClick']\n onFileExpand?: FilesGridProps['onExpand']\n showOrigin?: boolean\n isHighlighted?: boolean\n readOnly?: boolean\n statuses: Status[]\n}\n\nconst ActivityComment = ({\n activity = {},\n onCheckChange,\n onDelete,\n onUpdate,\n projectInfo,\n editProps,\n projectName,\n entityType,\n onReferenceClick,\n onFileExpand,\n showOrigin,\n isHighlighted,\n readOnly,\n statuses = [],\n}: Props) => {\n const { userName, createReaction, deleteReaction } = useFeedContext()\n\n let {\n body,\n authorName,\n authorFullName,\n createdAt,\n referenceType,\n entityId,\n activityId,\n author,\n isOwner,\n files = [],\n origin,\n } = activity\n if (!authorName) authorName = author?.name || ''\n if (!authorFullName) authorFullName = author?.fullName || authorName\n\n const { editingId, setEditingId } = useFeedContext()\n const { onGoToFrame } = useDetailsPanelContext()\n\n const handleEditComment = () => {\n setEditingId(activityId)\n }\n\n const handleEditCancel = () => {\n // close the edit comment\n setEditingId(null)\n }\n\n const handleSave = async (value: any, files: any) => {\n await onUpdate?.(value, files)\n setEditingId(null)\n }\n\n const isEditing = editingId === activityId\n\n const isRef = referenceType !== 'origin' || showOrigin\n\n const handleDelete = async () => {\n const refs = getTextRefs(body)\n\n // if the comment is a reference, (it's origin is not the entity)\n // we need to delete the reference from the origin as well\n // add it to the refs to delete\n if (isRef && origin) {\n refs.push({ id: origin.id, type: origin.type })\n }\n\n // note: body is used to match other refs to delete\n onDelete && (await onDelete(activityId, entityId, refs))\n }\n\n const deleteConfirmation = () => {\n confirmDelete({\n title: 'Delete comment',\n message: 'Are you sure you want to delete this comment?',\n accept: async () => {\n await handleDelete()\n },\n })\n }\n\n const [, setRefTooltip] = useReferenceTooltip()\n\n const mappedReactions = useMemo(\n () => mapGraphQLReactions(activity.reactions, userName),\n [[...(activity.reactions || [])]],\n )\n\n const reactionChangeHandler = (reaction: Reaction) => {\n if (reaction.isActive) {\n createReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n createReactionModel: {\n reaction: reaction.type,\n },\n })\n } else {\n deleteReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n reaction: reaction.type,\n })\n }\n }\n\n const onAnnotationClick = useCallback(\n (file: any) => {\n if (!file.annotation) return\n // annotation frame numbers are 1-based\n onGoToFrame?.((file.annotation as SavedAnnotationMetadata).range[0] - 1)\n },\n [onGoToFrame],\n )\n\n return (\n <>\n <Styled.Comment\n className={clsx('comment', { isOwner, isEditing, isHighlighted })}\n id={activityId}\n >\n <ActivityHeader\n name={authorName}\n fullName={authorFullName}\n date={createdAt}\n isRef={isRef}\n activity={activity}\n // projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n onReferenceTooltip={setRefTooltip}\n children={undefined}\n />\n <Styled.Body className={clsx('comment-body', { isEditing })}>\n {!readOnly && (\n <Styled.Tools className={'tools'}>\n {isOwner && onDelete && (\n <Styled.ToolButton\n icon=\"delete\"\n onClick={deleteConfirmation}\n tooltip=\"Delete comment\"\n />\n )}\n {isOwner && handleEditComment && (\n <Styled.ToolButton icon=\"edit_square\" onClick={handleEditComment} />\n )}\n </Styled.Tools>\n )}\n {isEditing ? (\n <CommentInput\n initValue={body}\n initFiles={files}\n isEditing\n onClose={handleEditCancel}\n onSubmit={handleSave}\n isOpen={true}\n {...editProps}\n />\n ) : (\n <>\n <CommentWrapper>\n <ReactMarkdown\n remarkPlugins={[remarkGfm, emoji, remarkDirective, remarkDirectiveRehype]}\n urlTransform={(url) => url}\n components={{\n // a links\n // @ts-ignore\n a: (props) =>\n // @ts-ignore\n aTag(props, {\n entityId,\n projectName,\n projectInfo,\n onReferenceClick,\n onReferenceTooltip: setRefTooltip,\n activityId,\n }),\n // checkbox inputs\n // @ts-ignore\n input: (props) => inputTag(props, { activity, onCheckChange }),\n // code syntax highlighting\n // eslint-disable-next-line\n // @ts-ignore\n code: (props) => codeTag(props),\n // @ts-ignore\n blockquote: (props) => blockquoteTag(props),\n // @ts-ignore\n tip: (props) => (\n <Styled.Tip>\n <Icon icon=\"info\" />\n {props.children}\n </Styled.Tip>\n ),\n // @ts-ignore\n status: (props) => {\n return (\n <ActivityStatus name={props.id} statuses={statuses}>\n {props.children}\n </ActivityStatus>\n )\n },\n }}\n >\n {body}\n </ReactMarkdown>\n </CommentWrapper>\n {/* file uploads */}\n {/* @ts-ignore */}\n <FilesGrid\n files={files}\n isCompact={files.length > 6}\n activityId={activityId}\n projectName={projectName}\n isDownloadable\n onExpand={onFileExpand}\n onAnnotationClick={onAnnotationClick}\n onRemove={undefined}\n />\n </>\n )}\n\n {!isEditing && (\n <div style={{ marginTop: '16px' }}>\n {mappedReactions && (\n <Reactions\n reactions={mappedReactions}\n changeHandler={reactionChangeHandler}\n readOnly={readOnly}\n />\n )}\n </div>\n )}\n </Styled.Body>\n </Styled.Comment>\n </>\n )\n}\n\nexport default ActivityComment\n"],"names":["files","jsx","Fragment","jsxs","Styled.Comment","Styled.Body","Styled.Tools","Styled.ToolButton","Styled.Tip"],"mappings":"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"}
@@ -13,6 +13,8 @@ require("../../../../context/SettingsPanelContext.cjs.js");
13
13
  require("../../../../context/pip/PiPProvider.cjs.js");
14
14
  require("react-dom");
15
15
  require("../../../../context/pip/PiPWrapper.cjs.js");
16
+ require("../../../../context/AddonProjectContext.cjs.js");
17
+ require("../../../../context/AddonContext.cjs.js");
16
18
  const ActivityVersions = ({
17
19
  activity,
18
20
  projectName,
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityVersions.cjs.js","sources":["../../../../../../../src/containers/Feed/components/ActivityVersions/ActivityVersions.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityHeader from '../ActivityHeader/ActivityHeader'\nimport * as Styled from './ActivityVersions.styled'\nimport { More } from '../ActivityGroup/ActivityGroup.styled'\nimport ActivityDate from '../ActivityDate'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Version {\n name: string\n id: string\n productId: string\n productName: string\n updatedAt: string\n comment?: string\n}\n\ninterface ActivityVersionsProps {\n activity: {\n authorName?: string\n authorFullName?: string\n createdAt?: string\n versions?: Version[]\n [key: string]: any\n }\n projectName: string\n entityType?: string\n onReferenceClick?: (ref: any) => void\n filter?: string\n}\n\nconst ActivityVersions: React.FC<ActivityVersionsProps> = ({\n activity,\n projectName,\n entityType,\n onReferenceClick,\n filter,\n}) => {\n const { onOpenViewer } = useDetailsPanelContext()\n let { authorName, authorFullName, createdAt, versions = [] } = activity\n\n const [showAll, setShowAll] = useState(filter === 'versions')\n const limit = 2\n\n const [thumbnailError, setThumbnailError] = useState(false)\n\n const handleClick = (versionId: string, productId: string) =>\n onOpenViewer?.({ versionIds: [versionId], productId, projectName })\n\n return (\n <Styled.Container>\n <ActivityHeader\n name={authorName}\n fullName={authorFullName || authorName}\n date={createdAt}\n activity={activity}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n />\n {versions.flatMap((version, index) => {\n const { name, id, productId, productName, updatedAt, comment } = version\n return (\n (index < limit || showAll) && (\n <Styled.Card onClick={() => handleClick(id, productId)} key={id}>\n <Styled.Content>\n <div>\n <Styled.Title>\n <span>{productName}</span>\n <ActivityDate date={createdAt} isExact />\n </Styled.Title>\n <span className=\"version\">{name}</span>\n </div>\n <Styled.Thumbnail\n {...{ projectName }}\n entityId={id}\n entityType=\"version\"\n onError={() => setThumbnailError(true)}\n iconOnly={thumbnailError}\n entityUpdatedAt={updatedAt}\n icon={'play_circle'}\n />\n </Styled.Content>\n {comment && <Styled.Comment>{comment}</Styled.Comment>}\n </Styled.Card>\n )\n )\n })}\n {filter !== 'versions' && versions.length > limit && (\n <More onClick={() => setShowAll(!showAll)}>\n <Icon icon=\"more\" />\n <span>{showAll ? `Show less` : `Show ${versions.length - limit} more versions`}</span>\n </More>\n )}\n </Styled.Container>\n )\n}\n\nexport default ActivityVersions\n"],"names":["useDetailsPanelContext","useState","jsxs","Styled.Container","jsx","Styled.Card","Styled.Content","Styled.Title","ActivityDate","Styled.Thumbnail","Styled.Comment","More","Icon"],"mappings":";;;;;;;;;;;;;;;AA+BA,MAAM,mBAAoD,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,aAAa,IAAIA,2CAAuB;AAChD,MAAI,EAAE,YAAY,gBAAgB,WAAW,WAAW,OAAO;AAE/D,QAAM,CAAC,SAAS,UAAU,IAAIC,MAAAA,SAAS,WAAW,UAAU;AAC5D,QAAM,QAAQ;AAEd,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAS,KAAK;AAE1D,QAAM,cAAc,CAAC,WAAmB,cACtC,6CAAe,EAAE,YAAY,CAAC,SAAS,GAAG,WAAW,YAAA;AAGrD,SAAAC,2BAAA,kBAAA,KAACC,mCAAA,EACC,UAAA;AAAA,IAAAC,2BAAA,kBAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,UAAU,kBAAkB;AAAA,QAC5B,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IACC,SAAS,QAAQ,CAAC,SAAS,UAAU;AACpC,YAAM,EAAE,MAAM,IAAI,WAAW,aAAa,WAAW,YAAY;AACjE,cACG,QAAQ,SAAS,YAChBF,2BAAA,kBAAA,KAACG,wBAAO,MAAP,EAAY,SAAS,MAAM,YAAY,IAAI,SAAS,GACnD,UAAA;AAAA,QAACH,kDAAAI,wBAAAA,SAAA,EACC,UAAA;AAAA,UAAAJ,kDAAC,OACC,EAAA,UAAA;AAAA,YAACA,kDAAAK,wBAAAA,OAAA,EACC,UAAA;AAAA,cAAAH,2BAAAA,kBAAAA,IAAC,UAAM,UAAY,YAAA,CAAA;AAAA,cAClBA,2BAAA,kBAAA,IAAAI,aAAA,SAAA,EAAa,MAAM,WAAW,SAAO,KAAC,CAAA;AAAA,YAAA,GACzC;AAAA,YACCJ,2BAAA,kBAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAK,KAAA,CAAA;AAAA,UAAA,GAClC;AAAA,UACAA,2BAAA,kBAAA;AAAA,YAACK,wBAAO;AAAA,YAAP;AAAA,cACE,GAAG,EAAE,YAAY;AAAA,cAClB,UAAU;AAAA,cACV,YAAW;AAAA,cACX,SAAS,MAAM,kBAAkB,IAAI;AAAA,cACrC,UAAU;AAAA,cACV,iBAAiB;AAAA,cACjB,MAAM;AAAA,YAAA;AAAA,UAAA;AAAA,QACR,GACF;AAAA,QACC,WAAWL,2BAAAA,kBAAAA,IAACM,wBAAAA,SAAA,EAAgB,UAAQ,QAAA,CAAA;AAAA,MAAA,EAAA,GAnBsB,EAoB7D;AAAA,IAAA,CAGL;AAAA,IACA,WAAW,cAAc,SAAS,SAAS,SAC1CR,2BAAA,kBAAA,KAACS,2BAAK,EAAA,SAAS,MAAM,WAAW,CAAC,OAAO,GACtC,UAAA;AAAA,MAACP,2BAAAA,kBAAAA,IAAAQ,oBAAA,MAAA,EAAK,MAAK,OAAO,CAAA;AAAA,MAClBR,2BAAAA,kBAAAA,IAAC,UAAM,UAAU,UAAA,cAAc,QAAQ,SAAS,SAAS,KAAK,iBAAiB,CAAA;AAAA,IAAA,EACjF,CAAA;AAAA,EAAA,GAEJ;AAEJ;;"}
1
+ {"version":3,"file":"ActivityVersions.cjs.js","sources":["../../../../../../../src/containers/Feed/components/ActivityVersions/ActivityVersions.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityHeader from '../ActivityHeader/ActivityHeader'\nimport * as Styled from './ActivityVersions.styled'\nimport { More } from '../ActivityGroup/ActivityGroup.styled'\nimport ActivityDate from '../ActivityDate'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Version {\n name: string\n id: string\n productId: string\n productName: string\n updatedAt: string\n comment?: string\n}\n\ninterface ActivityVersionsProps {\n activity: {\n authorName?: string\n authorFullName?: string\n createdAt?: string\n versions?: Version[]\n [key: string]: any\n }\n projectName: string\n entityType?: string\n onReferenceClick?: (ref: any) => void\n filter?: string\n}\n\nconst ActivityVersions: React.FC<ActivityVersionsProps> = ({\n activity,\n projectName,\n entityType,\n onReferenceClick,\n filter,\n}) => {\n const { onOpenViewer } = useDetailsPanelContext()\n let { authorName, authorFullName, createdAt, versions = [] } = activity\n\n const [showAll, setShowAll] = useState(filter === 'versions')\n const limit = 2\n\n const [thumbnailError, setThumbnailError] = useState(false)\n\n const handleClick = (versionId: string, productId: string) =>\n onOpenViewer?.({ versionIds: [versionId], productId, projectName })\n\n return (\n <Styled.Container>\n <ActivityHeader\n name={authorName}\n fullName={authorFullName || authorName}\n date={createdAt}\n activity={activity}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n />\n {versions.flatMap((version, index) => {\n const { name, id, productId, productName, updatedAt, comment } = version\n return (\n (index < limit || showAll) && (\n <Styled.Card onClick={() => handleClick(id, productId)} key={id}>\n <Styled.Content>\n <div>\n <Styled.Title>\n <span>{productName}</span>\n <ActivityDate date={createdAt} isExact />\n </Styled.Title>\n <span className=\"version\">{name}</span>\n </div>\n <Styled.Thumbnail\n {...{ projectName }}\n entityId={id}\n entityType=\"version\"\n onError={() => setThumbnailError(true)}\n iconOnly={thumbnailError}\n entityUpdatedAt={updatedAt}\n icon={'play_circle'}\n />\n </Styled.Content>\n {comment && <Styled.Comment>{comment}</Styled.Comment>}\n </Styled.Card>\n )\n )\n })}\n {filter !== 'versions' && versions.length > limit && (\n <More onClick={() => setShowAll(!showAll)}>\n <Icon icon=\"more\" />\n <span>{showAll ? `Show less` : `Show ${versions.length - limit} more versions`}</span>\n </More>\n )}\n </Styled.Container>\n )\n}\n\nexport default ActivityVersions\n"],"names":["useDetailsPanelContext","useState","jsxs","Styled.Container","jsx","Styled.Card","Styled.Content","Styled.Title","ActivityDate","Styled.Thumbnail","Styled.Comment","More","Icon"],"mappings":";;;;;;;;;;;;;;;;;AA+BA,MAAM,mBAAoD,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,aAAa,IAAIA,2CAAuB;AAChD,MAAI,EAAE,YAAY,gBAAgB,WAAW,WAAW,OAAO;AAE/D,QAAM,CAAC,SAAS,UAAU,IAAIC,MAAAA,SAAS,WAAW,UAAU;AAC5D,QAAM,QAAQ;AAEd,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAS,KAAK;AAE1D,QAAM,cAAc,CAAC,WAAmB,cACtC,6CAAe,EAAE,YAAY,CAAC,SAAS,GAAG,WAAW,YAAA;AAGrD,SAAAC,2BAAA,kBAAA,KAACC,mCAAA,EACC,UAAA;AAAA,IAAAC,2BAAA,kBAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,UAAU,kBAAkB;AAAA,QAC5B,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IACC,SAAS,QAAQ,CAAC,SAAS,UAAU;AACpC,YAAM,EAAE,MAAM,IAAI,WAAW,aAAa,WAAW,YAAY;AACjE,cACG,QAAQ,SAAS,YAChBF,2BAAA,kBAAA,KAACG,wBAAO,MAAP,EAAY,SAAS,MAAM,YAAY,IAAI,SAAS,GACnD,UAAA;AAAA,QAACH,kDAAAI,wBAAAA,SAAA,EACC,UAAA;AAAA,UAAAJ,kDAAC,OACC,EAAA,UAAA;AAAA,YAACA,kDAAAK,wBAAAA,OAAA,EACC,UAAA;AAAA,cAAAH,2BAAAA,kBAAAA,IAAC,UAAM,UAAY,YAAA,CAAA;AAAA,cAClBA,2BAAA,kBAAA,IAAAI,aAAA,SAAA,EAAa,MAAM,WAAW,SAAO,KAAC,CAAA;AAAA,YAAA,GACzC;AAAA,YACCJ,2BAAA,kBAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAK,KAAA,CAAA;AAAA,UAAA,GAClC;AAAA,UACAA,2BAAA,kBAAA;AAAA,YAACK,wBAAO;AAAA,YAAP;AAAA,cACE,GAAG,EAAE,YAAY;AAAA,cAClB,UAAU;AAAA,cACV,YAAW;AAAA,cACX,SAAS,MAAM,kBAAkB,IAAI;AAAA,cACrC,UAAU;AAAA,cACV,iBAAiB;AAAA,cACjB,MAAM;AAAA,YAAA;AAAA,UAAA;AAAA,QACR,GACF;AAAA,QACC,WAAWL,2BAAAA,kBAAAA,IAACM,wBAAAA,SAAA,EAAgB,UAAQ,QAAA,CAAA;AAAA,MAAA,EAAA,GAnBsB,EAoB7D;AAAA,IAAA,CAGL;AAAA,IACA,WAAW,cAAc,SAAS,SAAS,SAC1CR,2BAAA,kBAAA,KAACS,2BAAK,EAAA,SAAS,MAAM,WAAW,CAAC,OAAO,GACtC,UAAA;AAAA,MAACP,2BAAAA,kBAAAA,IAAAQ,oBAAA,MAAA,EAAK,MAAK,OAAO,CAAA;AAAA,MAClBR,2BAAAA,kBAAAA,IAAC,UAAM,UAAU,UAAA,cAAc,QAAQ,SAAS,SAAS,KAAK,iBAAiB,CAAA;AAAA,IAAA,EACjF,CAAA;AAAA,EAAA,GAEJ;AAEJ;;"}
@@ -12,6 +12,8 @@ import "../../../../context/SettingsPanelContext.es.js";
12
12
  import "../../../../context/pip/PiPProvider.es.js";
13
13
  import "react-dom";
14
14
  import "../../../../context/pip/PiPWrapper.es.js";
15
+ import "../../../../context/AddonProjectContext.es.js";
16
+ import "../../../../context/AddonContext.es.js";
15
17
  const ActivityVersions = ({
16
18
  activity,
17
19
  projectName,
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityVersions.es.js","sources":["../../../../../../../src/containers/Feed/components/ActivityVersions/ActivityVersions.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityHeader from '../ActivityHeader/ActivityHeader'\nimport * as Styled from './ActivityVersions.styled'\nimport { More } from '../ActivityGroup/ActivityGroup.styled'\nimport ActivityDate from '../ActivityDate'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Version {\n name: string\n id: string\n productId: string\n productName: string\n updatedAt: string\n comment?: string\n}\n\ninterface ActivityVersionsProps {\n activity: {\n authorName?: string\n authorFullName?: string\n createdAt?: string\n versions?: Version[]\n [key: string]: any\n }\n projectName: string\n entityType?: string\n onReferenceClick?: (ref: any) => void\n filter?: string\n}\n\nconst ActivityVersions: React.FC<ActivityVersionsProps> = ({\n activity,\n projectName,\n entityType,\n onReferenceClick,\n filter,\n}) => {\n const { onOpenViewer } = useDetailsPanelContext()\n let { authorName, authorFullName, createdAt, versions = [] } = activity\n\n const [showAll, setShowAll] = useState(filter === 'versions')\n const limit = 2\n\n const [thumbnailError, setThumbnailError] = useState(false)\n\n const handleClick = (versionId: string, productId: string) =>\n onOpenViewer?.({ versionIds: [versionId], productId, projectName })\n\n return (\n <Styled.Container>\n <ActivityHeader\n name={authorName}\n fullName={authorFullName || authorName}\n date={createdAt}\n activity={activity}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n />\n {versions.flatMap((version, index) => {\n const { name, id, productId, productName, updatedAt, comment } = version\n return (\n (index < limit || showAll) && (\n <Styled.Card onClick={() => handleClick(id, productId)} key={id}>\n <Styled.Content>\n <div>\n <Styled.Title>\n <span>{productName}</span>\n <ActivityDate date={createdAt} isExact />\n </Styled.Title>\n <span className=\"version\">{name}</span>\n </div>\n <Styled.Thumbnail\n {...{ projectName }}\n entityId={id}\n entityType=\"version\"\n onError={() => setThumbnailError(true)}\n iconOnly={thumbnailError}\n entityUpdatedAt={updatedAt}\n icon={'play_circle'}\n />\n </Styled.Content>\n {comment && <Styled.Comment>{comment}</Styled.Comment>}\n </Styled.Card>\n )\n )\n })}\n {filter !== 'versions' && versions.length > limit && (\n <More onClick={() => setShowAll(!showAll)}>\n <Icon icon=\"more\" />\n <span>{showAll ? `Show less` : `Show ${versions.length - limit} more versions`}</span>\n </More>\n )}\n </Styled.Container>\n )\n}\n\nexport default ActivityVersions\n"],"names":["jsxs","Styled.Container","jsx","Styled.Card","Styled.Content","Styled.Title","Styled.Thumbnail","Styled.Comment"],"mappings":";;;;;;;;;;;;;;AA+BA,MAAM,mBAAoD,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,aAAa,IAAI,uBAAuB;AAChD,MAAI,EAAE,YAAY,gBAAgB,WAAW,WAAW,OAAO;AAE/D,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,WAAW,UAAU;AAC5D,QAAM,QAAQ;AAEd,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAE1D,QAAM,cAAc,CAAC,WAAmB,cACtC,6CAAe,EAAE,YAAY,CAAC,SAAS,GAAG,WAAW,YAAA;AAGrD,SAAAA,kCAAA,KAACC,WAAA,EACC,UAAA;AAAA,IAAAC,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,UAAU,kBAAkB;AAAA,QAC5B,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IACC,SAAS,QAAQ,CAAC,SAAS,UAAU;AACpC,YAAM,EAAE,MAAM,IAAI,WAAW,aAAa,WAAW,YAAY;AACjE,cACG,QAAQ,SAAS,YAChBF,kCAAA,KAACG,MAAA,EAAY,SAAS,MAAM,YAAY,IAAI,SAAS,GACnD,UAAA;AAAA,QAACH,uCAAAI,SAAA,EACC,UAAA;AAAA,UAAAJ,uCAAC,OACC,EAAA,UAAA;AAAA,YAACA,uCAAAK,OAAA,EACC,UAAA;AAAA,cAAAH,kCAAAA,IAAC,UAAM,UAAY,YAAA,CAAA;AAAA,cAClBA,kCAAA,IAAA,cAAA,EAAa,MAAM,WAAW,SAAO,KAAC,CAAA;AAAA,YAAA,GACzC;AAAA,YACCA,kCAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAK,KAAA,CAAA;AAAA,UAAA,GAClC;AAAA,UACAA,kCAAA;AAAA,YAACI;AAAAA,YAAA;AAAA,cACE,GAAG,EAAE,YAAY;AAAA,cAClB,UAAU;AAAA,cACV,YAAW;AAAA,cACX,SAAS,MAAM,kBAAkB,IAAI;AAAA,cACrC,UAAU;AAAA,cACV,iBAAiB;AAAA,cACjB,MAAM;AAAA,YAAA;AAAA,UAAA;AAAA,QACR,GACF;AAAA,QACC,WAAWJ,kCAAAA,IAACK,SAAA,EAAgB,UAAQ,QAAA,CAAA;AAAA,MAAA,EAAA,GAnBsB,EAoB7D;AAAA,IAAA,CAGL;AAAA,IACA,WAAW,cAAc,SAAS,SAAS,SAC1CP,kCAAA,KAAC,MAAK,EAAA,SAAS,MAAM,WAAW,CAAC,OAAO,GACtC,UAAA;AAAA,MAACE,kCAAAA,IAAA,MAAA,EAAK,MAAK,OAAO,CAAA;AAAA,MAClBA,kCAAAA,IAAC,UAAM,UAAU,UAAA,cAAc,QAAQ,SAAS,SAAS,KAAK,iBAAiB,CAAA;AAAA,IAAA,EACjF,CAAA;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"ActivityVersions.es.js","sources":["../../../../../../../src/containers/Feed/components/ActivityVersions/ActivityVersions.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityHeader from '../ActivityHeader/ActivityHeader'\nimport * as Styled from './ActivityVersions.styled'\nimport { More } from '../ActivityGroup/ActivityGroup.styled'\nimport ActivityDate from '../ActivityDate'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Version {\n name: string\n id: string\n productId: string\n productName: string\n updatedAt: string\n comment?: string\n}\n\ninterface ActivityVersionsProps {\n activity: {\n authorName?: string\n authorFullName?: string\n createdAt?: string\n versions?: Version[]\n [key: string]: any\n }\n projectName: string\n entityType?: string\n onReferenceClick?: (ref: any) => void\n filter?: string\n}\n\nconst ActivityVersions: React.FC<ActivityVersionsProps> = ({\n activity,\n projectName,\n entityType,\n onReferenceClick,\n filter,\n}) => {\n const { onOpenViewer } = useDetailsPanelContext()\n let { authorName, authorFullName, createdAt, versions = [] } = activity\n\n const [showAll, setShowAll] = useState(filter === 'versions')\n const limit = 2\n\n const [thumbnailError, setThumbnailError] = useState(false)\n\n const handleClick = (versionId: string, productId: string) =>\n onOpenViewer?.({ versionIds: [versionId], productId, projectName })\n\n return (\n <Styled.Container>\n <ActivityHeader\n name={authorName}\n fullName={authorFullName || authorName}\n date={createdAt}\n activity={activity}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n />\n {versions.flatMap((version, index) => {\n const { name, id, productId, productName, updatedAt, comment } = version\n return (\n (index < limit || showAll) && (\n <Styled.Card onClick={() => handleClick(id, productId)} key={id}>\n <Styled.Content>\n <div>\n <Styled.Title>\n <span>{productName}</span>\n <ActivityDate date={createdAt} isExact />\n </Styled.Title>\n <span className=\"version\">{name}</span>\n </div>\n <Styled.Thumbnail\n {...{ projectName }}\n entityId={id}\n entityType=\"version\"\n onError={() => setThumbnailError(true)}\n iconOnly={thumbnailError}\n entityUpdatedAt={updatedAt}\n icon={'play_circle'}\n />\n </Styled.Content>\n {comment && <Styled.Comment>{comment}</Styled.Comment>}\n </Styled.Card>\n )\n )\n })}\n {filter !== 'versions' && versions.length > limit && (\n <More onClick={() => setShowAll(!showAll)}>\n <Icon icon=\"more\" />\n <span>{showAll ? `Show less` : `Show ${versions.length - limit} more versions`}</span>\n </More>\n )}\n </Styled.Container>\n )\n}\n\nexport default ActivityVersions\n"],"names":["jsxs","Styled.Container","jsx","Styled.Card","Styled.Content","Styled.Title","Styled.Thumbnail","Styled.Comment"],"mappings":";;;;;;;;;;;;;;;;AA+BA,MAAM,mBAAoD,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,aAAa,IAAI,uBAAuB;AAChD,MAAI,EAAE,YAAY,gBAAgB,WAAW,WAAW,OAAO;AAE/D,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,WAAW,UAAU;AAC5D,QAAM,QAAQ;AAEd,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAE1D,QAAM,cAAc,CAAC,WAAmB,cACtC,6CAAe,EAAE,YAAY,CAAC,SAAS,GAAG,WAAW,YAAA;AAGrD,SAAAA,kCAAA,KAACC,WAAA,EACC,UAAA;AAAA,IAAAC,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,UAAU,kBAAkB;AAAA,QAC5B,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IACC,SAAS,QAAQ,CAAC,SAAS,UAAU;AACpC,YAAM,EAAE,MAAM,IAAI,WAAW,aAAa,WAAW,YAAY;AACjE,cACG,QAAQ,SAAS,YAChBF,kCAAA,KAACG,MAAA,EAAY,SAAS,MAAM,YAAY,IAAI,SAAS,GACnD,UAAA;AAAA,QAACH,uCAAAI,SAAA,EACC,UAAA;AAAA,UAAAJ,uCAAC,OACC,EAAA,UAAA;AAAA,YAACA,uCAAAK,OAAA,EACC,UAAA;AAAA,cAAAH,kCAAAA,IAAC,UAAM,UAAY,YAAA,CAAA;AAAA,cAClBA,kCAAA,IAAA,cAAA,EAAa,MAAM,WAAW,SAAO,KAAC,CAAA;AAAA,YAAA,GACzC;AAAA,YACCA,kCAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAK,KAAA,CAAA;AAAA,UAAA,GAClC;AAAA,UACAA,kCAAA;AAAA,YAACI;AAAAA,YAAA;AAAA,cACE,GAAG,EAAE,YAAY;AAAA,cAClB,UAAU;AAAA,cACV,YAAW;AAAA,cACX,SAAS,MAAM,kBAAkB,IAAI;AAAA,cACrC,UAAU;AAAA,cACV,iBAAiB;AAAA,cACjB,MAAM;AAAA,YAAA;AAAA,UAAA;AAAA,QACR,GACF;AAAA,QACC,WAAWJ,kCAAAA,IAACK,SAAA,EAAgB,UAAQ,QAAA,CAAA;AAAA,MAAA,EAAA,GAnBsB,EAoB7D;AAAA,IAAA,CAGL;AAAA,IACA,WAAW,cAAc,SAAS,SAAS,SAC1CP,kCAAA,KAAC,MAAK,EAAA,SAAS,MAAM,WAAW,CAAC,OAAO,GACtC,UAAA;AAAA,MAACE,kCAAAA,IAAA,MAAA,EAAK,MAAK,OAAO,CAAA;AAAA,MAClBA,kCAAAA,IAAC,UAAM,UAAU,UAAA,cAAc,QAAQ,SAAS,SAAS,KAAK,iBAAiB,CAAA;AAAA,IAAA,EACjF,CAAA;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -271,8 +271,8 @@ const CommentInput = ({
271
271
  setFilesUploading((prev) => prev.filter((uploading) => uploading.name !== file.name));
272
272
  return newFile;
273
273
  };
274
- const handleFileRemove = (id, name, isAnnotation) => {
275
- if (isAnnotation) {
274
+ const handleFileRemove = (id, name, isUnsavedAnnotation) => {
275
+ if (isUnsavedAnnotation) {
276
276
  removeAnnotation == null ? void 0 : removeAnnotation(id);
277
277
  } else {
278
278
  setFiles((prev) => prev.filter((file) => file.id !== id));
@@ -313,15 +313,18 @@ const CommentInput = ({
313
313
  try {
314
314
  setIsSubmitting(true);
315
315
  let annotationFiles = [];
316
+ let annotationMetadata = [];
316
317
  if (annotations.length) {
317
- annotationFiles = await uploadAnnotations(annotations);
318
+ const { files: files2, metadata } = await uploadAnnotations(annotations);
319
+ annotationFiles = files2;
320
+ annotationMetadata = metadata;
318
321
  }
319
322
  const [markdown] = quillToMarkdown.convertToMarkdown(editorValue);
320
323
  const markdownParsed = helpers.parseImages(markdown);
321
324
  const uploadedFiles = [...files, ...annotationFiles];
322
325
  if ((markdownParsed || uploadedFiles.length) && onSubmit) {
323
326
  try {
324
- await onSubmit(markdownParsed, uploadedFiles);
327
+ await onSubmit(markdownParsed, uploadedFiles, { annotations: annotationMetadata });
325
328
  setEditorValue("");
326
329
  setFiles([]);
327
330
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"CommentInput.cjs.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.tsx"],"sourcesContent":["// React and related hooks\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react'\n\n// Third-party libraries\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport ReactQuill, { Quill } from 'react-quill-ayon'\n\n// Components\nimport { Button, Icon, SaveButton } from '@ynput/ayon-react-components'\nimport CommentMentionSelect from '../CommentMentionSelect/CommentMentionSelect'\nimport InputMarkdownConvert from './InputMarkdownConvert'\nimport FilesGrid from '../FilesGrid'\n\n// Styled components\nimport * as Styled from './CommentInput.styled'\n\n// Helpers and utilities\nimport getMentionOptions from '../../mentionHelpers/getMentionOptions'\nimport getMentionUsers from '../../mentionHelpers/getMentionUsers'\nimport getMentionTasks from '../../mentionHelpers/getMentionTasks'\nimport getMentionVersions from '../../mentionHelpers/getMentionVersions'\nimport { convertToMarkdown } from './quillToMarkdown'\nimport { handleFileDrop, parseImages, typeWithDelay } from './helpers'\nimport { getModules, quillFormats } from './modules'\n\n// Hooks\nimport useInitialValue from './hooks/useInitialValue'\nimport useSetCursorEnd from './hooks/useSetCursorEnd'\nimport useMentionLink from './hooks/useMentionLink'\nimport useAnnotationsSync from './hooks/useAnnotationsSync'\n\n// State management\nimport useAnnotationsUpload from './hooks/useAnnotationsUpload'\nimport { useFeedContext } from '../../context/FeedContext'\n\nvar Delta = Quill.import('delta')\n\nconst mentionTypes = ['@', '@@', '@@@']\nexport const mentionTypeOptions = {\n '@@@': {\n id: 'task',\n },\n '@@': {\n id: 'version',\n },\n '@': {\n id: 'user',\n isCircle: true,\n },\n}\n\ninterface CommentInputProps {\n initValue: string | null\n initFiles?: any[]\n onSubmit: (markdown: string, files: any[]) => Promise<void>\n isEditing?: boolean\n disabled?: boolean\n isLoading?: boolean\n isOpen: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nconst CommentInput: FC<CommentInputProps> = ({\n initValue,\n initFiles = [],\n onSubmit,\n isEditing,\n disabled,\n isLoading,\n isOpen,\n onOpen,\n onClose,\n}) => {\n const { projectName, entities, projectInfo, scope, currentTab, mentionSuggestionsData } =\n useFeedContext()\n\n const {\n users: mentionUsers,\n versions: mentionVersions,\n tasks: mentionTasks,\n } = mentionSuggestionsData || {}\n\n const [initHeight, setInitHeight] = useState(88)\n const [editorValue, setEditorValue] = useState('')\n // file uploads\n const [files, setFiles] = useState(initFiles)\n const [filesUploading, setFilesUploading] = useState([])\n const [isDropping, setIsDropping] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const { annotations, removeAnnotation, goToAnnotation } = useAnnotationsSync({\n entityId: entities[0]?.id,\n filesUploading,\n })\n\n // MENTION STATES\n const [mention, setMention] = useState<null | any>(null)\n const [mentionSelectedIndex, setMentionSelectedIndex] = useState(0)\n // REFS\n const editorRef = useRef<any>(null)\n const markdownRef = useRef<HTMLDivElement>(null)\n\n // if there is an initial value, set it so the editor is prefilled\n useInitialValue({\n markdownRef,\n initValue,\n setEditorValue,\n setInitHeight,\n isOpen: isOpen,\n filter: currentTab,\n })\n\n // When editing, set selection to the end of the editor\n useSetCursorEnd({ initHeight, editorRef, isEditing })\n // create a new quill format for mentions and registers it\n useMentionLink({ projectName })\n\n // focus on editor when opened\n useEffect(() => {\n if (isOpen) {\n editorRef.current?.getEditor()?.enable()\n // block autofocus if opened from an annotation\n if (annotations.length > 0 && files.length === 0) {\n return\n }\n\n editorRef.current?.focus()\n }\n // We don't set annotations or files as useEffect dependencies, because we don't want to focus\n // the input if it's already open but annotations change (e.g. are removed).\n }, [isOpen, editorRef])\n\n mentionTypes.sort((a, b) => b.length - a.length)\n\n const mentionOptions = useMemo(\n () =>\n getMentionOptions(\n mention?.type,\n {\n '@': () => getMentionUsers(mentionUsers),\n '@@': () => getMentionVersions(mentionVersions),\n '@@@': () => getMentionTasks(mentionTasks, projectInfo.taskTypes),\n },\n mention?.search,\n ),\n [mentionTasks, mentionVersions, mentionUsers, mention?.type, mention?.search],\n )\n\n // show first 5 and filter itself out\n const shownMentionOptions = mentionOptions.slice(0, 5)\n\n // triggered when a mention is selected\n const [newSelection, setNewSelection] = useState<null | number>()\n\n useEffect(() => {\n if (newSelection) {\n setNewSelection(null)\n // now we set selection to the end of the mention\n const quill = editorRef.current.getEditor()\n quill.setSelection(newSelection)\n }\n }, [newSelection])\n\n const handleSelectMention = (selectedOption: any) => {\n // get option text\n const quill = editorRef.current.getEditor()\n\n const typePrefix = mention.type // the type of mention: @, @@, @@@\n const search = typePrefix + (mention.search || '') // the full search string: @Tim\n const mentionLabel = typePrefix + selectedOption.label // the label of the mention: @Tim Bailey\n // @ts-expect-error\n const type = mentionTypeOptions[typePrefix] // the type of mention: user, version, task\n const href = `${type?.id}:${selectedOption.id}` // the href of the mention: user:user.123\n\n // get selection delta\n const selection = quill.getSelection(true)\n const selectionIndex = selection?.index || 0\n const startIndex = selectionIndex - search.length // the start index of the search\n\n // first delete the search string\n quill.deleteText(startIndex, search.length)\n\n // insert embed link\n quill.insertText(startIndex, mentionLabel, 'mention', href)\n\n const endIndex = startIndex + mentionLabel.length\n\n // insert a space after the mention\n quill.updateContents(new Delta().retain(endIndex).insert(' '))\n\n // remove single \\n after mention\n quill.updateContents(new Delta().retain(endIndex + 1).delete(1))\n\n // set selection to the end of the mention + 1\n setNewSelection(endIndex + 1)\n\n // reset mention state\n setMention(null)\n setMentionSelectedIndex(0)\n }\n\n const handleSelectChange = (option: any) => {\n handleSelectMention(option)\n }\n\n const handleChange = (content: string, delta: any, _: any, editor: any) => {\n let currentCharacter =\n (delta.ops[0] && delta.ops[0].insert) || (delta.ops[1] && delta.ops[1].insert)\n\n const tabOrEnter = currentCharacter === '\\n' || currentCharacter === '\\t'\n // find the first option\n const selectedOption = mentionOptions[mentionSelectedIndex]\n\n if (mention && tabOrEnter && selectedOption) {\n // get option text\n const retain = (delta.ops[0] && delta.ops[0].retain) || 0\n // prevent default\n\n // @ts-ignore\n handleSelectMention(selectedOption, retain)\n\n return\n }\n\n setEditorValue(content)\n\n const isDelete = delta.ops.length === 2 && !!delta.ops[1].delete\n\n if (!currentCharacter && isDelete) {\n currentCharacter = editor.getText(delta.ops[0].retain - 1, 1)\n }\n\n const isMention = mentionTypes.includes(currentCharacter)\n\n if (isMention) {\n const mentionIndex = delta.ops.findIndex((op: any) => 'insert' in op || 'delete' in op)\n const mention = currentCharacter\n let retain = mentionIndex === 0 ? 0 : delta.ops[mentionIndex - 1].retain\n if (isDelete) retain = retain - 1\n\n // for each mention denotation char, check if it is a mention\n // sort by length of mention denotation char\n let mentionMatch = null\n\n // loop through each mention denotation char, with longest first. First one to match is the one we want\n for (const chars of mentionTypes) {\n let isMatch = true\n // start with the last character\n if (chars.endsWith(mention)) {\n // loop through the chars backwards\n for (let i = chars.length - 1; i >= 0; i--) {\n // skip first character as that's already been checked\n if (i === 0) continue\n const char = chars[i - 1]\n const indexInDelta = retain - (chars.length - i)\n const valueCharAtIndex = editor.getText(indexInDelta, 1)\n if (valueCharAtIndex !== char) {\n isMatch = false\n break\n }\n }\n } else {\n isMatch = false\n }\n\n if (isMatch) {\n // console.log('match!!!', chars)\n mentionMatch = chars\n break\n }\n }\n\n if (mentionMatch) {\n setMention({\n type: mentionMatch,\n retain: retain,\n })\n } else {\n setMention(null)\n setMentionSelectedIndex(0)\n }\n } else {\n // get full string between mention and new delta\n // This is where SEARCH is handled\n if (mention) {\n const retain = delta.ops[0].retain\n // if space is pressed, remove mention\n if (currentCharacter === ' ' || !retain) {\n setMention(null)\n setMentionSelectedIndex(0)\n return\n }\n\n let distanceMentionToRetain = retain - mention.retain\n if (!isDelete) distanceMentionToRetain++\n const mentionFull = editor.getText(mention.retain, distanceMentionToRetain)\n const mentionSearch = mentionFull.replace(mention.type.slice(-1), '')\n // check for space in mentionFull\n if (mentionFull.includes(' ')) {\n setMention(null)\n setMentionSelectedIndex(0)\n } else {\n setMention({\n ...mention,\n search: mentionSearch?.toLowerCase(),\n })\n }\n } else {\n // just deleting any text\n const quill = editorRef.current.getEditor()\n const currentSelection = quill.getSelection(false)\n const currentFormat = quill.getFormat(currentSelection?.index, currentSelection?.length)\n if (currentFormat.mention) {\n // if format is mention, delete the whole mention\n const [lineBlock] = quill.getLine(currentSelection.index - 1) || []\n const ops = lineBlock?.cache?.delta?.ops || []\n // get last op with attributes mention: true\n const lastMentionOp = ops.reverse().find((op: any) => op.attributes?.mention)\n if (lastMentionOp) {\n const mentionLength = lastMentionOp.insert.length\n quill.deleteText(currentSelection.index - mentionLength, mentionLength)\n }\n }\n }\n }\n }\n\n const addTextToEditor = (type: string) => {\n // get editor retain\n const quill = editorRef.current.getEditor()\n\n let retain = quill.getSelection(true)?.index || 0\n\n // get character at retain\n const currentCharacter = quill.getText(retain - 1, 1)\n\n // if the current character is a character, increment retain\n const addSpace = currentCharacter !== ' ' && currentCharacter\n if (addSpace) {\n quill.insertText(retain, ' ')\n retain++\n }\n\n // This is hack AF, but it works\n typeWithDelay(quill, retain, type)\n }\n\n const handleMentionButton = (type: string) => {\n // first check if mention is already open\n if (mention) {\n const { type, retain, search = '' } = mention\n\n const quill = editorRef.current.getEditor()\n const length = type.length + search.length\n const start = retain - type.length + 1\n // delete the mention\n quill.deleteText(start, length)\n }\n\n addTextToEditor(type)\n }\n\n const handleOpenClick = () => {\n if (isOpen || disabled) return\n\n onOpen && onOpen()\n }\n\n const handleClose = () => {\n // get editor value\n const editor = editorRef.current.getEditor()\n const text = editor.getText()\n if (text.length < 2 || isEditing) {\n setEditorValue('')\n }\n\n // always close editor\n onClose && onClose()\n }\n\n const handleFileUploaded = ({ file, data }: any) => {\n const newFile = {\n id: data.id,\n name: file.name,\n mime: file.type,\n size: file.size,\n order: files.length,\n }\n\n setFiles((prev) => [...prev, newFile])\n // remove from uploading\n setFilesUploading((prev) => prev.filter((uploading: any) => uploading.name !== file.name))\n\n return newFile\n }\n\n const handleFileRemove = (id: string, name: string, isAnnotation: boolean) => {\n if (isAnnotation) {\n // remove from annotations (if it's an annotation)\n removeAnnotation?.(id)\n } else {\n // remove file from files\n setFiles((prev) => prev.filter((file) => file.id !== id))\n // remove from uploading\n setFilesUploading((prev) => {\n return prev.filter((file: any) => file.name !== name)\n })\n }\n }\n\n const handleFileProgress = (e: any, file: any) => {\n const progress = Math.round((e.loaded * 100) / e.total)\n if (progress !== 100) {\n const uploadProgress = {\n name: file.name,\n progress,\n type: file.type,\n order: files.length + filesUploading.length,\n }\n\n // @ts-ignore\n setFilesUploading((prev) => {\n // replace or add new progress\n const newProgress = prev.filter((name: any) => name.name !== file.name)\n return [...newProgress, uploadProgress]\n })\n }\n }\n\n // when a file is not dropped onto the comment input\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n setIsDropping(false)\n // upload file\n handleFileDrop(e, projectName, handleFileProgress, handleFileUploaded)\n }\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDropping(true)\n }\n\n const uploadAnnotations = useAnnotationsUpload({\n projectName,\n onSuccess: handleFileUploaded,\n })\n\n const handleSubmit = async () => {\n try {\n setIsSubmitting(true)\n // upload any annotations first\n let annotationFiles = []\n if (annotations.length) {\n annotationFiles = await uploadAnnotations(annotations)\n }\n\n // convert to markdown\n const [markdown] = convertToMarkdown(editorValue)\n\n // remove img query params\n const markdownParsed = parseImages(markdown)\n\n const uploadedFiles = [...files, ...annotationFiles]\n\n if ((markdownParsed || uploadedFiles.length) && onSubmit) {\n try {\n await onSubmit(markdownParsed, uploadedFiles)\n // only clear if onSubmit is successful\n setEditorValue('')\n setFiles([])\n } catch (error) {\n // error is handled in rtk query mutation\n return\n }\n }\n } catch (error) {\n console.error(error)\n toast.error('Something went wrong')\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (mention) {\n // close mention on escape\n if (e.key === 'Escape') {\n setMention(null)\n setMentionSelectedIndex(0)\n return\n }\n\n // add top search of mention\n if (mention && e.key === 'Tab') {\n // we handle this in the onChange\n }\n\n const arrowDirection = e.key === 'ArrowUp' ? -1 : e.key === 'ArrowDown' ? 1 : 0\n\n if (arrowDirection) {\n // navigate through mentions\n e.preventDefault()\n let newIndex = mentionSelectedIndex + arrowDirection\n if (newIndex < 0) newIndex = shownMentionOptions.length - 1\n if (newIndex >= shownMentionOptions.length) newIndex = 0\n setMentionSelectedIndex(newIndex)\n }\n\n if (e.key === 'Enter') {\n // we handle this in the onChange\n }\n }\n\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n handleSubmit()\n }\n\n if (e.key === 'Escape') {\n handleClose()\n }\n }\n\n let quillMinHeight: number | undefined = isOpen ? initHeight + 41 : 44\n if (isEditing) quillMinHeight = undefined\n\n // QUILL CONFIG\n const modules = useMemo(\n () =>\n getModules({\n imageUploader: {\n projectName,\n onUpload: handleFileUploaded,\n onUploadProgress: handleFileProgress,\n },\n }),\n [projectName, setFiles, setFilesUploading],\n )\n\n const allFiles = [...annotations, ...(files || []), ...filesUploading].sort(\n (a, b) => a.order - b.order,\n )\n const compactGrid = allFiles.length > 6\n\n // disable version mentions for folders\n let mentionsError = null\n if (entities.length && entities[0].entityType === 'folder') {\n if (mention?.type === '@@') {\n mentionsError = 'Version mentions are disabled for folders'\n }\n }\n\n return (\n <>\n <Styled.AutoHeight\n className={clsx('comment-container', { isOpen, isEditing })}\n onDragOver={handleDragOver}\n onDragLeave={() => setIsDropping(false)}\n onDrop={handleDrop}\n onClick={() => setIsDropping(false)}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Styled.Comment\n className={clsx('block-shortcuts', {\n isOpen,\n isClosed: !isOpen || disabled,\n isEditing,\n isDropping,\n disabled,\n isLoading,\n isSubmitting,\n })}\n onKeyDown={handleKeyDown}\n onClick={handleOpenClick}\n >\n <Styled.Markdown ref={markdownRef}>\n {/* this is purely used to translate the markdown into html for Editor */}\n <InputMarkdownConvert typeOptions={mentionTypeOptions} initValue={initValue} />\n </Styled.Markdown>\n\n {/* file uploads */}\n {isOpen && (\n <FilesGrid\n files={allFiles}\n isCompact={compactGrid}\n onRemove={handleFileRemove}\n style={{ borderBottom: '1px solid var(--md-sys-color-outline-variant)' }}\n projectName={projectName}\n onAnnotationClick={goToAnnotation}\n />\n )}\n {isOpen && !disabled ? (\n <ReactQuill\n theme=\"snow\"\n style={{ minHeight: quillMinHeight, maxHeight: 300 }}\n ref={editorRef}\n value={editorValue}\n onChange={handleChange}\n readOnly={!isOpen}\n placeholder={'Comment or mention with @user, @@version, @@@task...'}\n modules={modules}\n formats={quillFormats}\n />\n ) : (\n <Styled.Placeholder>\n {disabled ? 'Commenting is disabled across multiple projects.' : 'Add a comment...'}\n </Styled.Placeholder>\n )}\n\n <Styled.Footer>\n <Styled.Buttons>\n {/* mention a user */}\n <Button\n icon=\"person\"\n variant=\"text\"\n onClick={() => handleMentionButton('@')}\n data-tooltip={'Mention user'}\n data-shortcut={'@'}\n />\n {/* mention a version */}\n <Button\n icon=\"layers\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@')}\n data-tooltip={'Mention version'}\n data-shortcut={'@@'}\n />\n {/* mention a task */}\n <Button\n icon=\"check_circle\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@@')}\n data-tooltip={'Mention task'}\n data-shortcut={'@@@'}\n />\n </Styled.Buttons>\n <Styled.Buttons>\n {isEditing && (\n <Button variant=\"text\" onClick={handleClose}>\n Cancel\n </Button>\n )}\n <SaveButton\n label={isEditing ? 'Save' : 'Comment'}\n className=\"comment\"\n active={!!editorValue || !!files.length}\n onClick={handleSubmit}\n disabled={isLoading}\n />\n </Styled.Buttons>\n </Styled.Footer>\n\n <Styled.Dropzone className={clsx({ show: isDropping && isOpen })}>\n <Icon icon=\"cloud_upload\" />\n </Styled.Dropzone>\n </Styled.Comment>\n <CommentMentionSelect\n mention={mention}\n options={shownMentionOptions}\n onChange={handleSelectChange}\n types={mentionTypes}\n z\n // @ts-ignore\n config={mentionTypeOptions[mention?.type]}\n noneFound={!shownMentionOptions.length && mention?.search}\n noneFoundAtAll={!shownMentionOptions.length && !mention?.search}\n selectedIndex={mentionSelectedIndex}\n // @ts-ignore\n error={mentionsError}\n />\n </Styled.AutoHeight>\n </>\n )\n}\n\nexport default CommentInput\n"],"names":["Quill","useFeedContext","useState","useAnnotationsSync","useRef","useEffect","_a","useMemo","mention","typeWithDelay","type","handleFileDrop","convertToMarkdown","parseImages","toast","getModules","jsx","Fragment","jsxs","Styled.AutoHeight","Styled.Comment","Styled.Markdown","quillFormats","Styled.Placeholder","Styled.Footer","Styled.Buttons","Button","SaveButton","Styled.Dropzone","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"CommentInput.cjs.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.tsx"],"sourcesContent":["// React and related hooks\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react'\n\n// Third-party libraries\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport ReactQuill, { Quill } from 'react-quill-ayon'\n\n// Components\nimport { Button, Icon, SaveButton } from '@ynput/ayon-react-components'\nimport CommentMentionSelect from '../CommentMentionSelect/CommentMentionSelect'\nimport InputMarkdownConvert from './InputMarkdownConvert'\nimport FilesGrid from '../FilesGrid'\n\n// Styled components\nimport * as Styled from './CommentInput.styled'\n\n// Helpers and utilities\nimport getMentionOptions from '../../mentionHelpers/getMentionOptions'\nimport getMentionUsers from '../../mentionHelpers/getMentionUsers'\nimport getMentionTasks from '../../mentionHelpers/getMentionTasks'\nimport getMentionVersions from '../../mentionHelpers/getMentionVersions'\nimport { convertToMarkdown } from './quillToMarkdown'\nimport { handleFileDrop, parseImages, typeWithDelay } from './helpers'\nimport { getModules, quillFormats } from './modules'\n\n// Hooks\nimport useInitialValue from './hooks/useInitialValue'\nimport useSetCursorEnd from './hooks/useSetCursorEnd'\nimport useMentionLink from './hooks/useMentionLink'\nimport useAnnotationsSync from './hooks/useAnnotationsSync'\n\n// State management\nimport useAnnotationsUpload from './hooks/useAnnotationsUpload'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { SavedAnnotationMetadata } from '../../index'\n\nvar Delta = Quill.import('delta')\n\nconst mentionTypes = ['@', '@@', '@@@']\nexport const mentionTypeOptions = {\n '@@@': {\n id: 'task',\n },\n '@@': {\n id: 'version',\n },\n '@': {\n id: 'user',\n isCircle: true,\n },\n}\n\ninterface CommentInputProps {\n initValue: string | null\n initFiles?: any[]\n onSubmit: (markdown: string, files: any[], data?: any) => Promise<void>\n isEditing?: boolean\n disabled?: boolean\n isLoading?: boolean\n isOpen: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nconst CommentInput: FC<CommentInputProps> = ({\n initValue,\n initFiles = [],\n onSubmit,\n isEditing,\n disabled,\n isLoading,\n isOpen,\n onOpen,\n onClose,\n}) => {\n const { projectName, entities, projectInfo, scope, currentTab, mentionSuggestionsData } =\n useFeedContext()\n\n const {\n users: mentionUsers,\n versions: mentionVersions,\n tasks: mentionTasks,\n } = mentionSuggestionsData || {}\n\n const [initHeight, setInitHeight] = useState(88)\n const [editorValue, setEditorValue] = useState('')\n // file uploads\n const [files, setFiles] = useState(initFiles)\n const [filesUploading, setFilesUploading] = useState([])\n const [isDropping, setIsDropping] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const { annotations, removeAnnotation, goToAnnotation } = useAnnotationsSync({\n entityId: entities[0]?.id,\n filesUploading,\n })\n\n // MENTION STATES\n const [mention, setMention] = useState<null | any>(null)\n const [mentionSelectedIndex, setMentionSelectedIndex] = useState(0)\n // REFS\n const editorRef = useRef<any>(null)\n const markdownRef = useRef<HTMLDivElement>(null)\n\n // if there is an initial value, set it so the editor is prefilled\n useInitialValue({\n markdownRef,\n initValue,\n setEditorValue,\n setInitHeight,\n isOpen: isOpen,\n filter: currentTab,\n })\n\n // When editing, set selection to the end of the editor\n useSetCursorEnd({ initHeight, editorRef, isEditing })\n // create a new quill format for mentions and registers it\n useMentionLink({ projectName })\n\n // focus on editor when opened\n useEffect(() => {\n if (isOpen) {\n editorRef.current?.getEditor()?.enable()\n // block autofocus if opened from an annotation\n if (annotations.length > 0 && files.length === 0) {\n return\n }\n\n editorRef.current?.focus()\n }\n // We don't set annotations or files as useEffect dependencies, because we don't want to focus\n // the input if it's already open but annotations change (e.g. are removed).\n }, [isOpen, editorRef])\n\n mentionTypes.sort((a, b) => b.length - a.length)\n\n const mentionOptions = useMemo(\n () =>\n getMentionOptions(\n mention?.type,\n {\n '@': () => getMentionUsers(mentionUsers),\n '@@': () => getMentionVersions(mentionVersions),\n '@@@': () => getMentionTasks(mentionTasks, projectInfo.taskTypes),\n },\n mention?.search,\n ),\n [mentionTasks, mentionVersions, mentionUsers, mention?.type, mention?.search],\n )\n\n // show first 5 and filter itself out\n const shownMentionOptions = mentionOptions.slice(0, 5)\n\n // triggered when a mention is selected\n const [newSelection, setNewSelection] = useState<null | number>()\n\n useEffect(() => {\n if (newSelection) {\n setNewSelection(null)\n // now we set selection to the end of the mention\n const quill = editorRef.current.getEditor()\n quill.setSelection(newSelection)\n }\n }, [newSelection])\n\n const handleSelectMention = (selectedOption: any) => {\n // get option text\n const quill = editorRef.current.getEditor()\n\n const typePrefix = mention.type // the type of mention: @, @@, @@@\n const search = typePrefix + (mention.search || '') // the full search string: @Tim\n const mentionLabel = typePrefix + selectedOption.label // the label of the mention: @Tim Bailey\n // @ts-expect-error\n const type = mentionTypeOptions[typePrefix] // the type of mention: user, version, task\n const href = `${type?.id}:${selectedOption.id}` // the href of the mention: user:user.123\n\n // get selection delta\n const selection = quill.getSelection(true)\n const selectionIndex = selection?.index || 0\n const startIndex = selectionIndex - search.length // the start index of the search\n\n // first delete the search string\n quill.deleteText(startIndex, search.length)\n\n // insert embed link\n quill.insertText(startIndex, mentionLabel, 'mention', href)\n\n const endIndex = startIndex + mentionLabel.length\n\n // insert a space after the mention\n quill.updateContents(new Delta().retain(endIndex).insert(' '))\n\n // remove single \\n after mention\n quill.updateContents(new Delta().retain(endIndex + 1).delete(1))\n\n // set selection to the end of the mention + 1\n setNewSelection(endIndex + 1)\n\n // reset mention state\n setMention(null)\n setMentionSelectedIndex(0)\n }\n\n const handleSelectChange = (option: any) => {\n handleSelectMention(option)\n }\n\n const handleChange = (content: string, delta: any, _: any, editor: any) => {\n let currentCharacter =\n (delta.ops[0] && delta.ops[0].insert) || (delta.ops[1] && delta.ops[1].insert)\n\n const tabOrEnter = currentCharacter === '\\n' || currentCharacter === '\\t'\n // find the first option\n const selectedOption = mentionOptions[mentionSelectedIndex]\n\n if (mention && tabOrEnter && selectedOption) {\n // get option text\n const retain = (delta.ops[0] && delta.ops[0].retain) || 0\n // prevent default\n\n // @ts-ignore\n handleSelectMention(selectedOption, retain)\n\n return\n }\n\n setEditorValue(content)\n\n const isDelete = delta.ops.length === 2 && !!delta.ops[1].delete\n\n if (!currentCharacter && isDelete) {\n currentCharacter = editor.getText(delta.ops[0].retain - 1, 1)\n }\n\n const isMention = mentionTypes.includes(currentCharacter)\n\n if (isMention) {\n const mentionIndex = delta.ops.findIndex((op: any) => 'insert' in op || 'delete' in op)\n const mention = currentCharacter\n let retain = mentionIndex === 0 ? 0 : delta.ops[mentionIndex - 1].retain\n if (isDelete) retain = retain - 1\n\n // for each mention denotation char, check if it is a mention\n // sort by length of mention denotation char\n let mentionMatch = null\n\n // loop through each mention denotation char, with longest first. First one to match is the one we want\n for (const chars of mentionTypes) {\n let isMatch = true\n // start with the last character\n if (chars.endsWith(mention)) {\n // loop through the chars backwards\n for (let i = chars.length - 1; i >= 0; i--) {\n // skip first character as that's already been checked\n if (i === 0) continue\n const char = chars[i - 1]\n const indexInDelta = retain - (chars.length - i)\n const valueCharAtIndex = editor.getText(indexInDelta, 1)\n if (valueCharAtIndex !== char) {\n isMatch = false\n break\n }\n }\n } else {\n isMatch = false\n }\n\n if (isMatch) {\n // console.log('match!!!', chars)\n mentionMatch = chars\n break\n }\n }\n\n if (mentionMatch) {\n setMention({\n type: mentionMatch,\n retain: retain,\n })\n } else {\n setMention(null)\n setMentionSelectedIndex(0)\n }\n } else {\n // get full string between mention and new delta\n // This is where SEARCH is handled\n if (mention) {\n const retain = delta.ops[0].retain\n // if space is pressed, remove mention\n if (currentCharacter === ' ' || !retain) {\n setMention(null)\n setMentionSelectedIndex(0)\n return\n }\n\n let distanceMentionToRetain = retain - mention.retain\n if (!isDelete) distanceMentionToRetain++\n const mentionFull = editor.getText(mention.retain, distanceMentionToRetain)\n const mentionSearch = mentionFull.replace(mention.type.slice(-1), '')\n // check for space in mentionFull\n if (mentionFull.includes(' ')) {\n setMention(null)\n setMentionSelectedIndex(0)\n } else {\n setMention({\n ...mention,\n search: mentionSearch?.toLowerCase(),\n })\n }\n } else {\n // just deleting any text\n const quill = editorRef.current.getEditor()\n const currentSelection = quill.getSelection(false)\n const currentFormat = quill.getFormat(currentSelection?.index, currentSelection?.length)\n if (currentFormat.mention) {\n // if format is mention, delete the whole mention\n const [lineBlock] = quill.getLine(currentSelection.index - 1) || []\n const ops = lineBlock?.cache?.delta?.ops || []\n // get last op with attributes mention: true\n const lastMentionOp = ops.reverse().find((op: any) => op.attributes?.mention)\n if (lastMentionOp) {\n const mentionLength = lastMentionOp.insert.length\n quill.deleteText(currentSelection.index - mentionLength, mentionLength)\n }\n }\n }\n }\n }\n\n const addTextToEditor = (type: string) => {\n // get editor retain\n const quill = editorRef.current.getEditor()\n\n let retain = quill.getSelection(true)?.index || 0\n\n // get character at retain\n const currentCharacter = quill.getText(retain - 1, 1)\n\n // if the current character is a character, increment retain\n const addSpace = currentCharacter !== ' ' && currentCharacter\n if (addSpace) {\n quill.insertText(retain, ' ')\n retain++\n }\n\n // This is hack AF, but it works\n typeWithDelay(quill, retain, type)\n }\n\n const handleMentionButton = (type: string) => {\n // first check if mention is already open\n if (mention) {\n const { type, retain, search = '' } = mention\n\n const quill = editorRef.current.getEditor()\n const length = type.length + search.length\n const start = retain - type.length + 1\n // delete the mention\n quill.deleteText(start, length)\n }\n\n addTextToEditor(type)\n }\n\n const handleOpenClick = () => {\n if (isOpen || disabled) return\n\n onOpen && onOpen()\n }\n\n const handleClose = () => {\n // get editor value\n const editor = editorRef.current.getEditor()\n const text = editor.getText()\n if (text.length < 2 || isEditing) {\n setEditorValue('')\n }\n\n // always close editor\n onClose && onClose()\n }\n\n const handleFileUploaded = ({ file, data }: any) => {\n const newFile = {\n id: data.id,\n name: file.name,\n mime: file.type,\n size: file.size,\n order: files.length,\n }\n\n setFiles((prev) => [...prev, newFile])\n // remove from uploading\n setFilesUploading((prev) => prev.filter((uploading: any) => uploading.name !== file.name))\n\n return newFile\n }\n\n const handleFileRemove = (id: string, name: string, isUnsavedAnnotation: boolean) => {\n if (isUnsavedAnnotation) {\n // remove from annotations (if it's an unsaved annotation)\n removeAnnotation?.(id)\n } else {\n // remove file from files\n setFiles((prev) => prev.filter((file) => file.id !== id))\n // remove from uploading\n setFilesUploading((prev) => {\n return prev.filter((file: any) => file.name !== name)\n })\n }\n }\n\n const handleFileProgress = (e: any, file: any) => {\n const progress = Math.round((e.loaded * 100) / e.total)\n if (progress !== 100) {\n const uploadProgress = {\n name: file.name,\n progress,\n type: file.type,\n order: files.length + filesUploading.length,\n }\n\n // @ts-ignore\n setFilesUploading((prev) => {\n // replace or add new progress\n const newProgress = prev.filter((name: any) => name.name !== file.name)\n return [...newProgress, uploadProgress]\n })\n }\n }\n\n // when a file is not dropped onto the comment input\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n setIsDropping(false)\n // upload file\n handleFileDrop(e, projectName, handleFileProgress, handleFileUploaded)\n }\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDropping(true)\n }\n\n const uploadAnnotations = useAnnotationsUpload({\n projectName,\n onSuccess: handleFileUploaded,\n })\n\n const handleSubmit = async () => {\n try {\n setIsSubmitting(true)\n // upload any annotations first\n let annotationFiles = []\n let annotationMetadata: SavedAnnotationMetadata[] = []\n\n if (annotations.length) {\n const { files, metadata } = await uploadAnnotations(annotations)\n annotationFiles = files\n annotationMetadata = metadata\n }\n\n // convert to markdown\n const [markdown] = convertToMarkdown(editorValue)\n\n // remove img query params\n const markdownParsed = parseImages(markdown)\n\n const uploadedFiles = [...files, ...annotationFiles]\n\n if ((markdownParsed || uploadedFiles.length) && onSubmit) {\n try {\n await onSubmit(markdownParsed, uploadedFiles, { annotations: annotationMetadata })\n // only clear if onSubmit is successful\n setEditorValue('')\n setFiles([])\n } catch (error) {\n // error is handled in rtk query mutation\n return\n }\n }\n } catch (error) {\n console.error(error)\n toast.error('Something went wrong')\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (mention) {\n // close mention on escape\n if (e.key === 'Escape') {\n setMention(null)\n setMentionSelectedIndex(0)\n return\n }\n\n // add top search of mention\n if (mention && e.key === 'Tab') {\n // we handle this in the onChange\n }\n\n const arrowDirection = e.key === 'ArrowUp' ? -1 : e.key === 'ArrowDown' ? 1 : 0\n\n if (arrowDirection) {\n // navigate through mentions\n e.preventDefault()\n let newIndex = mentionSelectedIndex + arrowDirection\n if (newIndex < 0) newIndex = shownMentionOptions.length - 1\n if (newIndex >= shownMentionOptions.length) newIndex = 0\n setMentionSelectedIndex(newIndex)\n }\n\n if (e.key === 'Enter') {\n // we handle this in the onChange\n }\n }\n\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n handleSubmit()\n }\n\n if (e.key === 'Escape') {\n handleClose()\n }\n }\n\n let quillMinHeight: number | undefined = isOpen ? initHeight + 41 : 44\n if (isEditing) quillMinHeight = undefined\n\n // QUILL CONFIG\n const modules = useMemo(\n () =>\n getModules({\n imageUploader: {\n projectName,\n onUpload: handleFileUploaded,\n onUploadProgress: handleFileProgress,\n },\n }),\n [projectName, setFiles, setFilesUploading],\n )\n\n const allFiles = [...annotations, ...(files || []), ...filesUploading].sort(\n (a, b) => a.order - b.order,\n )\n const compactGrid = allFiles.length > 6\n\n // disable version mentions for folders\n let mentionsError = null\n if (entities.length && entities[0].entityType === 'folder') {\n if (mention?.type === '@@') {\n mentionsError = 'Version mentions are disabled for folders'\n }\n }\n\n return (\n <>\n <Styled.AutoHeight\n className={clsx('comment-container', { isOpen, isEditing })}\n onDragOver={handleDragOver}\n onDragLeave={() => setIsDropping(false)}\n onDrop={handleDrop}\n onClick={() => setIsDropping(false)}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Styled.Comment\n className={clsx('block-shortcuts', {\n isOpen,\n isClosed: !isOpen || disabled,\n isEditing,\n isDropping,\n disabled,\n isLoading,\n isSubmitting,\n })}\n onKeyDown={handleKeyDown}\n onClick={handleOpenClick}\n >\n <Styled.Markdown ref={markdownRef}>\n {/* this is purely used to translate the markdown into html for Editor */}\n <InputMarkdownConvert typeOptions={mentionTypeOptions} initValue={initValue} />\n </Styled.Markdown>\n\n {/* file uploads */}\n {isOpen && (\n <FilesGrid\n files={allFiles}\n isCompact={compactGrid}\n onRemove={handleFileRemove}\n style={{ borderBottom: '1px solid var(--md-sys-color-outline-variant)' }}\n projectName={projectName}\n onAnnotationClick={goToAnnotation}\n />\n )}\n {isOpen && !disabled ? (\n <ReactQuill\n theme=\"snow\"\n style={{ minHeight: quillMinHeight, maxHeight: 300 }}\n ref={editorRef}\n value={editorValue}\n onChange={handleChange}\n readOnly={!isOpen}\n placeholder={'Comment or mention with @user, @@version, @@@task...'}\n modules={modules}\n formats={quillFormats}\n />\n ) : (\n <Styled.Placeholder>\n {disabled ? 'Commenting is disabled across multiple projects.' : 'Add a comment...'}\n </Styled.Placeholder>\n )}\n\n <Styled.Footer>\n <Styled.Buttons>\n {/* mention a user */}\n <Button\n icon=\"person\"\n variant=\"text\"\n onClick={() => handleMentionButton('@')}\n data-tooltip={'Mention user'}\n data-shortcut={'@'}\n />\n {/* mention a version */}\n <Button\n icon=\"layers\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@')}\n data-tooltip={'Mention version'}\n data-shortcut={'@@'}\n />\n {/* mention a task */}\n <Button\n icon=\"check_circle\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@@')}\n data-tooltip={'Mention task'}\n data-shortcut={'@@@'}\n />\n </Styled.Buttons>\n <Styled.Buttons>\n {isEditing && (\n <Button variant=\"text\" onClick={handleClose}>\n Cancel\n </Button>\n )}\n <SaveButton\n label={isEditing ? 'Save' : 'Comment'}\n className=\"comment\"\n active={!!editorValue || !!files.length}\n onClick={handleSubmit}\n disabled={isLoading}\n />\n </Styled.Buttons>\n </Styled.Footer>\n\n <Styled.Dropzone className={clsx({ show: isDropping && isOpen })}>\n <Icon icon=\"cloud_upload\" />\n </Styled.Dropzone>\n </Styled.Comment>\n <CommentMentionSelect\n mention={mention}\n options={shownMentionOptions}\n onChange={handleSelectChange}\n types={mentionTypes}\n z\n // @ts-ignore\n config={mentionTypeOptions[mention?.type]}\n noneFound={!shownMentionOptions.length && mention?.search}\n noneFoundAtAll={!shownMentionOptions.length && !mention?.search}\n selectedIndex={mentionSelectedIndex}\n // @ts-ignore\n error={mentionsError}\n />\n </Styled.AutoHeight>\n </>\n )\n}\n\nexport default CommentInput\n"],"names":["Quill","useFeedContext","useState","useAnnotationsSync","useRef","useEffect","_a","useMemo","mention","typeWithDelay","type","handleFileDrop","files","convertToMarkdown","parseImages","toast","getModules","jsx","Fragment","jsxs","Styled.AutoHeight","Styled.Comment","Styled.Markdown","quillFormats","Styled.Placeholder","Styled.Footer","Styled.Buttons","Button","SaveButton","Styled.Dropzone","Icon"],"mappings":"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"}