@ynput/ayon-frontend-shared 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/dist/EmptyPlaceholderFlex.styled-C3tjIk5V.mjs +121 -0
  2. package/dist/EmptyPlaceholderFlex.styled-C3tjIk5V.mjs.map +1 -0
  3. package/dist/EmptyPlaceholderFlex.styled-D_9k5mMH.js +78 -0
  4. package/dist/EmptyPlaceholderFlex.styled-D_9k5mMH.js.map +1 -0
  5. package/dist/ThumbnailSimple-DbSmXCNa.js +34 -0
  6. package/dist/ThumbnailSimple-DbSmXCNa.js.map +1 -0
  7. package/dist/ThumbnailSimple-DotCInch.mjs +78 -0
  8. package/dist/ThumbnailSimple-DotCInch.mjs.map +1 -0
  9. package/dist/ayon-frontend-shared.css +1 -0
  10. package/dist/confirmDelete-BSaFL2RH.mjs +6279 -0
  11. package/dist/confirmDelete-BSaFL2RH.mjs.map +1 -0
  12. package/dist/confirmDelete-BoRH88hw.js +43 -0
  13. package/dist/confirmDelete-BoRH88hw.js.map +1 -0
  14. package/dist/csstransition.esm-CzUZfsIt.mjs +3101 -0
  15. package/dist/csstransition.esm-CzUZfsIt.mjs.map +1 -0
  16. package/dist/csstransition.esm-Riwtyc4r.js +32 -0
  17. package/dist/csstransition.esm-Riwtyc4r.js.map +1 -0
  18. package/dist/format-DUCu0Y-3.mjs +1289 -0
  19. package/dist/format-DUCu0Y-3.mjs.map +1 -0
  20. package/dist/format-v4Hpvya-.js +2 -0
  21. package/dist/format-v4Hpvya-.js.map +1 -0
  22. package/dist/getEntityTypeIcon-BvwosBHR.js +2 -0
  23. package/dist/getEntityTypeIcon-BvwosBHR.js.map +1 -0
  24. package/dist/getEntityTypeIcon-BxTCKGSi.mjs +50 -0
  25. package/dist/getEntityTypeIcon-BxTCKGSi.mjs.map +1 -0
  26. package/dist/index.cjs.js +2 -0
  27. package/dist/index.cjs.js.map +1 -0
  28. package/dist/index.cjs2.js +2 -0
  29. package/dist/index.cjs2.js.map +1 -0
  30. package/dist/index.cjs3.js +2 -0
  31. package/dist/index.cjs3.js.map +1 -0
  32. package/dist/index.cjs4.js +2 -0
  33. package/dist/index.cjs4.js.map +1 -0
  34. package/dist/index.cjs5.js +2 -0
  35. package/dist/index.cjs5.js.map +1 -0
  36. package/dist/index.cjs6.js +2 -0
  37. package/dist/index.cjs6.js.map +1 -0
  38. package/dist/index.cjs7.js +29 -0
  39. package/dist/index.cjs7.js.map +1 -0
  40. package/dist/index.cjs8.js +549 -0
  41. package/dist/index.cjs8.js.map +1 -0
  42. package/dist/index.cjs9.js +1753 -0
  43. package/dist/index.cjs9.js.map +1 -0
  44. package/dist/index.es.js +8 -0
  45. package/dist/index.es.js.map +1 -0
  46. package/dist/index.es2.js +11 -0
  47. package/dist/index.es2.js.map +1 -0
  48. package/dist/index.es3.js +12 -0
  49. package/dist/index.es3.js.map +1 -0
  50. package/dist/index.es4.js +5 -0
  51. package/dist/index.es4.js.map +1 -0
  52. package/dist/index.es5.js +5 -0
  53. package/dist/index.es5.js.map +1 -0
  54. package/dist/index.es6.js +37 -0
  55. package/dist/index.es6.js.map +1 -0
  56. package/dist/index.es7.js +361 -0
  57. package/dist/index.es7.js.map +1 -0
  58. package/dist/index.es8.js +4340 -0
  59. package/dist/index.es8.js.map +1 -0
  60. package/dist/index.es9.js +56950 -0
  61. package/dist/index.es9.js.map +1 -0
  62. package/dist/jsx-runtime-Drh4NO5G.mjs +634 -0
  63. package/dist/jsx-runtime-Drh4NO5G.mjs.map +1 -0
  64. package/dist/jsx-runtime-qcKc-DpB.js +31 -0
  65. package/dist/jsx-runtime-qcKc-DpB.js.map +1 -0
  66. package/dist/platform-C5rgawOb.js +2 -0
  67. package/dist/platform-C5rgawOb.js.map +1 -0
  68. package/dist/platform-DNAvZtra.mjs +36 -0
  69. package/dist/platform-DNAvZtra.mjs.map +1 -0
  70. package/dist/types/ContextMenu.d.ts +1 -0
  71. package/dist/types/Feed.d.ts +1 -0
  72. package/dist/types/ProjectTreeTable.d.ts +1 -0
  73. package/dist/types/Slicer.d.ts +1 -0
  74. package/dist/types/api/activities/index.d.ts +1 -0
  75. package/dist/types/api/activities/transformations.d.ts +0 -0
  76. package/dist/types/api/activities/types.d.ts +10 -0
  77. package/dist/types/api/graphql.d.ts +2096 -0
  78. package/dist/types/api/index.d.ts +2 -0
  79. package/dist/types/api.d.ts +1 -0
  80. package/dist/types/components/EmptyPlaceholder/EmptyPlaceholder.d.ts +11 -0
  81. package/dist/types/components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.d.ts +2 -0
  82. package/dist/types/components/EmptyPlaceholder/index.d.ts +4 -0
  83. package/dist/types/components/ThumbnailSimple/ThumbnailSimple.d.ts +15 -0
  84. package/dist/types/components/ThumbnailSimple/index.d.ts +3 -0
  85. package/dist/types/components/UserImage/UserImage.d.ts +11 -0
  86. package/dist/types/components/UserImage/index.d.ts +3 -0
  87. package/dist/types/components/index.d.ts +3 -0
  88. package/dist/types/components.d.ts +1 -0
  89. package/dist/types/containers/ContextMenu/ContextMenuContext.d.ts +21 -0
  90. package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +27 -0
  91. package/dist/types/containers/ContextMenu/GlobalContextMenu.d.ts +1 -0
  92. package/dist/types/containers/ContextMenu/index.d.ts +4 -0
  93. package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +17 -0
  94. package/dist/types/containers/Feed/Feed.d.ts +10 -0
  95. package/dist/types/containers/Feed/Feed.styled.d.ts +5 -0
  96. package/dist/types/containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.d.ts +15 -0
  97. package/dist/types/containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.d.ts +3 -0
  98. package/dist/types/containers/Feed/components/ActivityAssigneeChange/index.d.ts +3 -0
  99. package/dist/types/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.d.ts +6 -0
  100. package/dist/types/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.d.ts +1 -0
  101. package/dist/types/containers/Feed/components/ActivityCheckbox/index.d.ts +3 -0
  102. package/dist/types/containers/Feed/components/ActivityComment/ActivityComment.d.ts +24 -0
  103. package/dist/types/containers/Feed/components/ActivityComment/ActivityComment.styled.d.ts +14 -0
  104. package/dist/types/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.d.ts +43 -0
  105. package/dist/types/containers/Feed/components/ActivityComment/CommentWrapper.d.ts +5 -0
  106. package/dist/types/containers/Feed/components/ActivityComment/mappers.d.ts +9 -0
  107. package/dist/types/containers/Feed/components/ActivityDate.d.ts +7 -0
  108. package/dist/types/containers/Feed/components/ActivityGroup/ActivityGroup.d.ts +9 -0
  109. package/dist/types/containers/Feed/components/ActivityGroup/ActivityGroup.styled.d.ts +2 -0
  110. package/dist/types/containers/Feed/components/ActivityHeader/ActivityHeader.d.ts +40 -0
  111. package/dist/types/containers/Feed/components/ActivityHeader/ActivityHeader.styled.d.ts +4 -0
  112. package/dist/types/containers/Feed/components/ActivityItem.d.ts +27 -0
  113. package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.d.ts +14 -0
  114. package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +3 -0
  115. package/dist/types/containers/Feed/components/ActivityReferenceTooltip/ActivityReferenceTooltip.d.ts +4 -0
  116. package/dist/types/containers/Feed/components/ActivityReferenceTooltip/index.d.ts +2 -0
  117. package/dist/types/containers/Feed/components/ActivityStatus/ActivityStatus.d.ts +9 -0
  118. package/dist/types/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.d.ts +18 -0
  119. package/dist/types/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.d.ts +3 -0
  120. package/dist/types/containers/Feed/components/ActivityStatusChange/hooks/getContextParents.d.ts +2 -0
  121. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.d.ts +24 -0
  122. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.styled.d.ts +6 -0
  123. package/dist/types/containers/Feed/components/CommentInput/CommentInput.d.ts +26 -0
  124. package/dist/types/containers/Feed/components/CommentInput/CommentInput.styled.d.ts +7 -0
  125. package/dist/types/containers/Feed/components/CommentInput/InputMarkdownConvert.d.ts +11 -0
  126. package/dist/types/containers/Feed/components/CommentInput/helpers.d.ts +4 -0
  127. package/dist/types/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.d.ts +14 -0
  128. package/dist/types/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.d.ts +6 -0
  129. package/dist/types/containers/Feed/components/CommentInput/hooks/useInitialValue.d.ts +11 -0
  130. package/dist/types/containers/Feed/components/CommentInput/hooks/useMentionLink.d.ts +7 -0
  131. package/dist/types/containers/Feed/components/CommentInput/hooks/useSetCursorEnd.d.ts +7 -0
  132. package/dist/types/containers/Feed/components/CommentInput/index.d.ts +0 -0
  133. package/dist/types/containers/Feed/components/CommentInput/modules/ImageUploader.d.ts +8 -0
  134. package/dist/types/containers/Feed/components/CommentInput/modules/index.d.ts +12 -0
  135. package/dist/types/containers/Feed/components/CommentInput/quillToMarkdown.d.ts +5 -0
  136. package/dist/types/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.d.ts +28 -0
  137. package/dist/types/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.styled.d.ts +6 -0
  138. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +14 -0
  139. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.styled.d.ts +4 -0
  140. package/dist/types/containers/Feed/components/FileUploadCard/index.d.ts +3 -0
  141. package/dist/types/containers/Feed/components/FileUploadPreview/FileUploadPreview.d.ts +22 -0
  142. package/dist/types/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.d.ts +4 -0
  143. package/dist/types/containers/Feed/components/FileUploadPreview/Mimes/ImageMime.d.ts +9 -0
  144. package/dist/types/containers/Feed/components/FileUploadPreview/Mimes/TextMime.d.ts +10 -0
  145. package/dist/types/containers/Feed/components/FileUploadPreview/hooks/useAttachmentNavigation.d.ts +19 -0
  146. package/dist/types/containers/Feed/components/FileUploadPreview/index.d.ts +3 -0
  147. package/dist/types/containers/Feed/components/FilesGrid/FilesGrid.d.ts +17 -0
  148. package/dist/types/containers/Feed/components/FilesGrid/FilesGrid.styled.d.ts +1 -0
  149. package/dist/types/containers/Feed/components/FilesGrid/index.d.ts +3 -0
  150. package/dist/types/containers/Feed/components/ReactionContainer/ExistingReactions.d.ts +7 -0
  151. package/dist/types/containers/Feed/components/ReactionContainer/Reaction.d.ts +10 -0
  152. package/dist/types/containers/Feed/components/ReactionContainer/ReactionPanelOpener.d.ts +7 -0
  153. package/dist/types/containers/Feed/components/ReactionContainer/Reactions.d.ts +8 -0
  154. package/dist/types/containers/Feed/components/ReactionContainer/Reactions.styled.d.ts +7 -0
  155. package/dist/types/containers/Feed/components/ReactionContainer/helpers.d.ts +11 -0
  156. package/dist/types/containers/Feed/components/ReactionContainer/types.d.ts +8 -0
  157. package/dist/types/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.d.ts +12 -0
  158. package/dist/types/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.d.ts +3 -0
  159. package/dist/types/containers/Feed/components/Tooltips/UserTooltip/UserTooltip.d.ts +10 -0
  160. package/dist/types/containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.d.ts +2 -0
  161. package/dist/types/containers/Feed/context/FeedContext.d.ts +58 -0
  162. package/dist/types/containers/Feed/feedHelpers.d.ts +1 -0
  163. package/dist/types/containers/Feed/helpers/groupActivityVersions.d.ts +2 -0
  164. package/dist/types/containers/Feed/helpers/groupMinorActivities.d.ts +2 -0
  165. package/dist/types/containers/Feed/helpers/mergeSimilarActivities.d.ts +2 -0
  166. package/dist/types/containers/Feed/hooks/useCommentMutations.d.ts +30 -0
  167. package/dist/types/containers/Feed/hooks/useReferenceTooltip.d.ts +3 -0
  168. package/dist/types/containers/Feed/hooks/useSaveScrollPos.d.ts +13 -0
  169. package/dist/types/containers/Feed/hooks/useScrollOnInputOpen.d.ts +8 -0
  170. package/dist/types/containers/Feed/hooks/useScrollToHighlighted.d.ts +10 -0
  171. package/dist/types/containers/Feed/hooks/useTableKeyboardNavigation.d.ts +22 -0
  172. package/dist/types/containers/Feed/hooks/useTransformActivities.d.ts +4 -0
  173. package/dist/types/containers/Feed/index.d.ts +7 -0
  174. package/dist/types/containers/Feed/mentionHelpers/getMentionOptions.d.ts +2 -0
  175. package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +10 -0
  176. package/dist/types/containers/Feed/mentionHelpers/getMentionUsers.d.ts +8 -0
  177. package/dist/types/containers/Feed/mentionHelpers/getMentionVersions.d.ts +12 -0
  178. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +15 -0
  179. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.styled.d.ts +14 -0
  180. package/dist/types/containers/ProjectTreeTable/ProjectTreeTableColumns.d.ts +16 -0
  181. package/dist/types/containers/ProjectTreeTable/components/HeaderActionButton.d.ts +6 -0
  182. package/dist/types/containers/ProjectTreeTable/components/RowSelectionHeader.d.ts +3 -0
  183. package/dist/types/containers/ProjectTreeTable/components/SelectionCell.d.ts +5 -0
  184. package/dist/types/containers/ProjectTreeTable/context/CellEditingContext.d.ts +18 -0
  185. package/dist/types/containers/ProjectTreeTable/context/ClipboardContext.d.ts +4 -0
  186. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +30 -0
  187. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +76 -0
  188. package/dist/types/containers/ProjectTreeTable/context/ProjectTableQueriesContext.d.ts +21 -0
  189. package/dist/types/containers/ProjectTreeTable/context/SelectedRowsContext.d.ts +15 -0
  190. package/dist/types/containers/ProjectTreeTable/context/SelectionContext.d.ts +35 -0
  191. package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardTypes.d.ts +27 -0
  192. package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardUtils.d.ts +6 -0
  193. package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardValidation.d.ts +12 -0
  194. package/dist/types/containers/ProjectTreeTable/context/clipboard/index.d.ts +3 -0
  195. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +8 -0
  196. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +10 -0
  197. package/dist/types/containers/ProjectTreeTable/hooks/useColumnVirtualization.d.ts +17 -0
  198. package/dist/types/containers/ProjectTreeTable/hooks/useCustomColumnWidthVars.d.ts +6 -0
  199. package/dist/types/containers/ProjectTreeTable/hooks/useDeleteEntities.d.ts +5 -0
  200. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +29 -0
  201. package/dist/types/containers/ProjectTreeTable/hooks/useHistory.d.ts +17 -0
  202. package/dist/types/containers/ProjectTreeTable/hooks/useKeyboardNavigation.d.ts +10 -0
  203. package/dist/types/containers/ProjectTreeTable/hooks/useOverviewTable.d.ts +32 -0
  204. package/dist/types/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.d.ts +4 -0
  205. package/dist/types/containers/ProjectTreeTable/hooks/useUpdateOverview.d.ts +30 -0
  206. package/dist/types/containers/ProjectTreeTable/hooks/useValidateUpdates.d.ts +3 -0
  207. package/dist/types/containers/ProjectTreeTable/index.d.ts +14 -0
  208. package/dist/types/containers/ProjectTreeTable/types/folders.d.ts +14 -0
  209. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +62 -0
  210. package/dist/types/containers/ProjectTreeTable/types/operations.d.ts +99 -0
  211. package/dist/types/containers/ProjectTreeTable/types/project.d.ts +223 -0
  212. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +83 -0
  213. package/dist/types/containers/ProjectTreeTable/utils/cellUtils.d.ts +42 -0
  214. package/dist/types/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.d.ts +4 -0
  215. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +3 -0
  216. package/dist/types/containers/ProjectTreeTable/utils/loadingUtils.d.ts +36 -0
  217. package/dist/types/containers/ProjectTreeTable/widgets/BooleanWidget.d.ts +7 -0
  218. package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +24 -0
  219. package/dist/types/containers/ProjectTreeTable/widgets/CollapsedWidget.d.ts +5 -0
  220. package/dist/types/containers/ProjectTreeTable/widgets/DateWidget.d.ts +8 -0
  221. package/dist/types/containers/ProjectTreeTable/widgets/DateWidgetInput.d.ts +8 -0
  222. package/dist/types/containers/ProjectTreeTable/widgets/EntityNameWidget.d.ts +14 -0
  223. package/dist/types/containers/ProjectTreeTable/widgets/EnumWidget.d.ts +28 -0
  224. package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +10 -0
  225. package/dist/types/containers/ProjectTreeTable/widgets/TextWidgetInput.d.ts +9 -0
  226. package/dist/types/containers/ProjectTreeTable/widgets/index.d.ts +7 -0
  227. package/dist/types/containers/Slicer/createFilterFromSlicer.d.ts +6 -0
  228. package/dist/types/containers/Slicer/index.d.ts +2 -0
  229. package/dist/types/containers/Slicer/types.d.ts +18 -0
  230. package/dist/types/hooks/index.d.ts +1 -0
  231. package/dist/types/hooks/useLocalStorage.d.ts +1 -0
  232. package/dist/types/hooks.d.ts +1 -0
  233. package/dist/types/index.d.ts +2 -0
  234. package/dist/types/util/confirmDelete.d.ts +13 -0
  235. package/dist/types/util/getEntityTypeIcon.d.ts +1 -0
  236. package/dist/types/util/index.d.ts +5 -0
  237. package/dist/types/util/platform.d.ts +8 -0
  238. package/dist/types/util/productTypes.d.ts +8 -0
  239. package/dist/types/util.d.ts +1 -0
  240. package/dist/useCreateContextMenu-CDRv1ybg.js +2 -0
  241. package/dist/useCreateContextMenu-CDRv1ybg.js.map +1 -0
  242. package/dist/useCreateContextMenu-DvOhPycB.mjs +118 -0
  243. package/dist/useCreateContextMenu-DvOhPycB.mjs.map +1 -0
  244. package/dist/useLocalStorage-BQSzWJ4Q.mjs +39 -0
  245. package/dist/useLocalStorage-BQSzWJ4Q.mjs.map +1 -0
  246. package/dist/useLocalStorage-BRHTBlxR.js +2 -0
  247. package/dist/useLocalStorage-BRHTBlxR.js.map +1 -0
  248. package/package.json +91 -0
@@ -0,0 +1,13 @@
1
+ import { confirmDialog, ConfirmDialogOptions } from 'primereact/confirmdialog';
2
+ interface ConfirmDeleteOptions extends Omit<ConfirmDialogOptions, 'accept'> {
3
+ label?: string;
4
+ message?: string;
5
+ deleteLabel?: string;
6
+ accept?: () => Promise<any>;
7
+ showToasts?: boolean;
8
+ isArchive?: boolean;
9
+ onSuccess?: () => void;
10
+ onError?: (error: any) => void;
11
+ }
12
+ export declare const confirmDelete: ({ label, message, deleteLabel, accept, showToasts, isArchive, onSuccess, onError, ...props }: ConfirmDeleteOptions) => ReturnType<typeof confirmDialog>;
13
+ export {};
@@ -0,0 +1 @@
1
+ export declare const getEntityTypeIcon: (type: string, fallback?: string) => string;
@@ -0,0 +1,5 @@
1
+ import { default as productTypes } from './productTypes';
2
+ export * from './platform';
3
+ export * from './confirmDelete';
4
+ export * from './getEntityTypeIcon';
5
+ export { productTypes };
@@ -0,0 +1,8 @@
1
+ export declare enum KeyMode {
2
+ Ctrl = "ctrl",
3
+ Alt = "alt",
4
+ Shift = "shift"
5
+ }
6
+ declare const getCurrentPlatform: () => "other" | "windows" | "darwin" | "linux";
7
+ declare const getPlatformShortcutKey: (key: string, modes: KeyMode[], prefix?: string) => string;
8
+ export { getCurrentPlatform, getPlatformShortcutKey };
@@ -0,0 +1,8 @@
1
+ type ProductTypes = {
2
+ [key: string]: {
3
+ name: string;
4
+ icon: string;
5
+ };
6
+ };
7
+ declare const productTypes: ProductTypes;
8
+ export default productTypes;
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ "use strict";const x=require("./jsx-runtime-qcKc-DpB.js"),a=require("react"),m=require("@ynput/ayon-react-components"),f=a.createContext(void 0);function E({children:n}){const[u,t]=a.useState(!1),e=a.useRef(null),[l,c]=a.useState([]);function C(r,o){!r||!e.current||!(o!=null&&o.length)||(r.preventDefault(),c(o),e.current.show(r))}function i(){e.current&&e.current.hide()}return x.jsxRuntimeExports.jsx(f.Provider,{value:{openContext:C,closeContext:i,ref:e,model:l,isContextOpen:u,setIsContextOpen:t},children:n})}function h(){const n=a.useContext(f);if(n===void 0)throw new Error("useContextMenu must be used within a ContextMenuProvider");return n}const j=({icon:n,label:u,shortcut:t,command:e,children:l,contextMenuRef:c,disabled:C,items:i,isSave:r,danger:o,...s})=>{const p=v=>{var d;(d=c.current)==null||d.hide(),e==null||e({originalEvent:v,item:{label:u||"",command:e||(()=>{}),shortcut:t}})},R=i&&i.length===0;return x.jsxRuntimeExports.jsxs("a",{className:`p-menuitem-link ${C||R?"p-disabled":""} ${o?"danger":""} ${r?"save":""}`,role:"menuitem",href:"#",onClick:p,style:{...s==null?void 0:s.style},...s,children:[n&&x.jsxRuntimeExports.jsx(m.Icon,{className:"p-menuitem-icon",icon:n}),u&&x.jsxRuntimeExports.jsx("span",{className:"p-menuitem-text",style:{whiteSpace:"nowrap"},children:u}),l,t&&x.jsxRuntimeExports.jsx("div",{className:"p-menuitem-shortcut",children:x.jsxRuntimeExports.jsx(m.ShortcutTag,{children:t})}),!!(i!=null&&i.length)&&x.jsxRuntimeExports.jsx(m.Icon,{icon:"chevron_right",style:{marginLeft:"auto",fontSize:"1.5rem"}})]})},M=(n,u)=>n.map(t=>{const e={...t,template:x.jsxRuntimeExports.jsx(j,{contextMenuRef:u,...t},t.label)};return e.items&&(e.items=M(e.items,u)),e}),g=(n=[])=>{const{openContext:u,ref:t,isContextOpen:e,closeContext:l}=h(),c=a.useCallback((r,o)=>r.map(s=>{var p;return{template:x.jsxRuntimeExports.jsx(j,{contextMenuRef:o,...s},s.label),items:(p=s.items)!=null&&p.length?M(s.items,o):void 0}}),[]),C=a.useMemo(()=>c(n,t),[n,t,c]);return[(r,o)=>{if(!r||!t.current)return console.error("No ref or event passed to openContext");let s;o&&(s=c(o,t)),r.preventDefault(),u(r,s||C)},l,e,t]};exports.ContextMenuProvider=E;exports.useContextMenu=h;exports.useCreateContextMenu=g;
2
+ //# sourceMappingURL=useCreateContextMenu-CDRv1ybg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreateContextMenu-CDRv1ybg.js","sources":["../src/containers/ContextMenu/ContextMenuContext.tsx","../src/containers/ContextMenu/ContextMenuItem.tsx","../src/containers/ContextMenu/useCreateContextMenu.tsx"],"sourcesContent":["import React, { createContext, useContext, useRef, useState, ReactNode, RefObject } from 'react'\n\ninterface ContextMenuItem {\n // Define the structure of your menu items\n label?: string\n command?: () => void\n items?: ContextMenuItem[]\n [key: string]: any\n}\n\ninterface ContextMenuContextType {\n openContext: (event: React.MouseEvent, model: ContextMenuItem[]) => void\n closeContext: () => void\n ref: RefObject<any>\n model: ContextMenuItem[]\n isContextOpen: boolean\n setIsContextOpen: React.Dispatch<React.SetStateAction<boolean>>\n}\n\ninterface ContextMenuProviderProps {\n children: ReactNode\n}\n\nconst ContextMenuContext = createContext<ContextMenuContextType | undefined>(undefined)\n\nfunction ContextMenuProvider({ children }: ContextMenuProviderProps) {\n const [isContextOpen, setIsContextOpen] = useState<boolean>(false)\n\n const ref = useRef<any>(null)\n const [model, setModel] = useState<ContextMenuItem[]>([])\n\n function openContext(event: React.MouseEvent, model: ContextMenuItem[]) {\n if (!event || !ref.current || !model?.length) return\n event.preventDefault()\n setModel(model)\n ref.current.show(event)\n }\n\n function closeContext() {\n if (!ref.current) return\n ref.current.hide()\n }\n\n return (\n <ContextMenuContext.Provider\n value={{ openContext, closeContext, ref, model, isContextOpen, setIsContextOpen }}\n >\n {children}\n </ContextMenuContext.Provider>\n )\n}\n\nfunction useContextMenu(): ContextMenuContextType {\n const context = useContext(ContextMenuContext)\n if (context === undefined) {\n throw new Error('useContextMenu must be used within a ContextMenuProvider')\n }\n return context\n}\n\nexport { ContextMenuProvider, useContextMenu }\n","import React, { RefObject } from 'react'\nimport { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport './ContextMenu.scss'\n\ninterface CommandEvent {\n originalEvent: React.MouseEvent\n item: {\n label: string\n command: (event: CommandEvent) => void\n shortcut?: string\n }\n}\n\nexport interface ContextMenuItemProps {\n icon?: string\n label?: string\n shortcut?: string\n command?: (event: CommandEvent) => void\n children?: React.ReactNode\n contextMenuRef: RefObject<{ hide: () => void }>\n disabled?: boolean\n items?: any[]\n isSave?: boolean\n danger?: boolean\n style?: React.CSSProperties\n [key: string]: any // For any additional props\n}\n\nconst ContextMenuItem: React.FC<ContextMenuItemProps> = ({\n icon,\n label,\n shortcut,\n command,\n children,\n contextMenuRef,\n disabled,\n items,\n isSave,\n danger,\n ...props\n}) => {\n const onCommand = (e: React.MouseEvent) => {\n // hide the context menu\n contextMenuRef.current?.hide()\n\n command?.({\n originalEvent: e,\n item: {\n label: label || '',\n command: command || (() => {}),\n shortcut,\n },\n })\n }\n\n const noItems = items && items.length === 0\n\n return (\n <a\n className={`p-menuitem-link ${disabled || noItems ? 'p-disabled' : ''} ${\n danger ? 'danger' : ''\n } ${isSave ? 'save' : ''}`}\n role=\"menuitem\"\n href=\"#\"\n onClick={onCommand}\n style={{\n ...props?.style,\n }}\n {...props}\n >\n {icon && <Icon className=\"p-menuitem-icon\" icon={icon} />}\n {label && (\n <span\n className=\"p-menuitem-text\"\n style={{\n whiteSpace: 'nowrap',\n }}\n >\n {label}\n </span>\n )}\n {children}\n {shortcut && (\n <div className=\"p-menuitem-shortcut\">\n <ShortcutTag>{shortcut}</ShortcutTag>\n </div>\n )}\n {!!items?.length && (\n <Icon\n icon=\"chevron_right\"\n style={{\n marginLeft: 'auto',\n fontSize: '1.5rem',\n }}\n />\n )}\n </a>\n )\n}\n\nexport default ContextMenuItem\n","import { useCallback, useMemo, MouseEvent, RefObject } from 'react'\nimport ContextMenuItem, { ContextMenuItemProps } from './ContextMenuItem'\nimport { useContextMenu } from './ContextMenuContext'\n\n// Extend the item type based on the ContextMenuItemProps\nexport interface ContextMenuItemType extends Omit<ContextMenuItemProps, 'contextMenuRef'> {\n items?: ContextMenuItemType[]\n template?: React.ReactNode\n [key: string]: any\n}\n\n// This is used to create submenus\nconst addTemplateToItems = (\n items: ContextMenuItemType[],\n ref: RefObject<{ hide: () => void }>,\n): ContextMenuItemType[] => {\n return items.map((item) => {\n const newItem: ContextMenuItemType = {\n ...item,\n template: <ContextMenuItem key={item.label} contextMenuRef={ref} {...item} />,\n }\n if (newItem.items) {\n newItem.items = addTemplateToItems(newItem.items, ref)\n }\n return newItem\n })\n}\n\ntype UseCreateContextReturn = [\n (e: MouseEvent, newItems?: ContextMenuItemType[]) => void,\n () => void,\n boolean,\n RefObject<{ hide: () => void }>,\n]\n\nexport const useCreateContextMenu = (\n menuList: ContextMenuItemType[] = [],\n): UseCreateContextReturn => {\n const { openContext, ref, isContextOpen, closeContext } = useContextMenu()\n\n const getModel = useCallback(\n (\n menuList: ContextMenuItemType[],\n ref: RefObject<{ hide: () => void }>,\n ): ContextMenuItemType[] => {\n return menuList.map((item) => ({\n template: <ContextMenuItem key={item.label} contextMenuRef={ref} {...item} />,\n items: item.items?.length ? addTemplateToItems(item.items, ref) : undefined,\n }))\n },\n [],\n )\n\n const model = useMemo(() => getModel(menuList, ref), [menuList, ref, getModel])\n\n const handleOpen = (e: MouseEvent, newItems?: ContextMenuItemType[]): void => {\n if (!e || !ref.current) return console.error('No ref or event passed to openContext')\n\n let newModel\n if (newItems) {\n newModel = getModel(newItems, ref)\n }\n\n e.preventDefault()\n openContext(e, newModel || model)\n }\n\n return [handleOpen, closeContext, isContextOpen, ref]\n}\n\nexport default useCreateContextMenu\n"],"names":["ContextMenuContext","createContext","ContextMenuProvider","children","isContextOpen","setIsContextOpen","useState","ref","useRef","model","setModel","openContext","event","closeContext","jsx","useContextMenu","context","useContext","ContextMenuItem","icon","label","shortcut","command","contextMenuRef","disabled","items","isSave","danger","props","onCommand","e","_a","noItems","jsxs","Icon","ShortcutTag","addTemplateToItems","item","newItem","useCreateContextMenu","menuList","getModel","useCallback","useMemo","newItems","newModel"],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { j as c } from "./jsx-runtime-Drh4NO5G.mjs";
2
+ import { createContext as g, useState as d, useRef as w, useContext as I, useCallback as N, useMemo as O } from "react";
3
+ import { Icon as h, ShortcutTag as b } from "@ynput/ayon-react-components";
4
+ const m = g(void 0);
5
+ function E({ children: n }) {
6
+ const [u, t] = d(!1), e = w(null), [l, i] = d([]);
7
+ function x(s, o) {
8
+ !s || !e.current || !(o != null && o.length) || (s.preventDefault(), i(o), e.current.show(s));
9
+ }
10
+ function a() {
11
+ e.current && e.current.hide();
12
+ }
13
+ return /* @__PURE__ */ c.jsx(
14
+ m.Provider,
15
+ {
16
+ value: { openContext: x, closeContext: a, ref: e, model: l, isContextOpen: u, setIsContextOpen: t },
17
+ children: n
18
+ }
19
+ );
20
+ }
21
+ function y() {
22
+ const n = I(m);
23
+ if (n === void 0)
24
+ throw new Error("useContextMenu must be used within a ContextMenuProvider");
25
+ return n;
26
+ }
27
+ const p = ({
28
+ icon: n,
29
+ label: u,
30
+ shortcut: t,
31
+ command: e,
32
+ children: l,
33
+ contextMenuRef: i,
34
+ disabled: x,
35
+ items: a,
36
+ isSave: s,
37
+ danger: o,
38
+ ...r
39
+ }) => {
40
+ const f = (j) => {
41
+ var C;
42
+ (C = i.current) == null || C.hide(), e == null || e({
43
+ originalEvent: j,
44
+ item: {
45
+ label: u || "",
46
+ command: e || (() => {
47
+ }),
48
+ shortcut: t
49
+ }
50
+ });
51
+ }, v = a && a.length === 0;
52
+ return /* @__PURE__ */ c.jsxs(
53
+ "a",
54
+ {
55
+ className: `p-menuitem-link ${x || v ? "p-disabled" : ""} ${o ? "danger" : ""} ${s ? "save" : ""}`,
56
+ role: "menuitem",
57
+ href: "#",
58
+ onClick: f,
59
+ style: {
60
+ ...r == null ? void 0 : r.style
61
+ },
62
+ ...r,
63
+ children: [
64
+ n && /* @__PURE__ */ c.jsx(h, { className: "p-menuitem-icon", icon: n }),
65
+ u && /* @__PURE__ */ c.jsx(
66
+ "span",
67
+ {
68
+ className: "p-menuitem-text",
69
+ style: {
70
+ whiteSpace: "nowrap"
71
+ },
72
+ children: u
73
+ }
74
+ ),
75
+ l,
76
+ t && /* @__PURE__ */ c.jsx("div", { className: "p-menuitem-shortcut", children: /* @__PURE__ */ c.jsx(b, { children: t }) }),
77
+ !!(a != null && a.length) && /* @__PURE__ */ c.jsx(
78
+ h,
79
+ {
80
+ icon: "chevron_right",
81
+ style: {
82
+ marginLeft: "auto",
83
+ fontSize: "1.5rem"
84
+ }
85
+ }
86
+ )
87
+ ]
88
+ }
89
+ );
90
+ }, M = (n, u) => n.map((t) => {
91
+ const e = {
92
+ ...t,
93
+ template: /* @__PURE__ */ c.jsx(p, { contextMenuRef: u, ...t }, t.label)
94
+ };
95
+ return e.items && (e.items = M(e.items, u)), e;
96
+ }), P = (n = []) => {
97
+ const { openContext: u, ref: t, isContextOpen: e, closeContext: l } = y(), i = N(
98
+ (s, o) => s.map((r) => {
99
+ var f;
100
+ return {
101
+ template: /* @__PURE__ */ c.jsx(p, { contextMenuRef: o, ...r }, r.label),
102
+ items: (f = r.items) != null && f.length ? M(r.items, o) : void 0
103
+ };
104
+ }),
105
+ []
106
+ ), x = O(() => i(n, t), [n, t, i]);
107
+ return [(s, o) => {
108
+ if (!s || !t.current) return console.error("No ref or event passed to openContext");
109
+ let r;
110
+ o && (r = i(o, t)), s.preventDefault(), u(s, r || x);
111
+ }, l, e, t];
112
+ };
113
+ export {
114
+ E as C,
115
+ P as a,
116
+ y as u
117
+ };
118
+ //# sourceMappingURL=useCreateContextMenu-DvOhPycB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreateContextMenu-DvOhPycB.mjs","sources":["../src/containers/ContextMenu/ContextMenuContext.tsx","../src/containers/ContextMenu/ContextMenuItem.tsx","../src/containers/ContextMenu/useCreateContextMenu.tsx"],"sourcesContent":["import React, { createContext, useContext, useRef, useState, ReactNode, RefObject } from 'react'\n\ninterface ContextMenuItem {\n // Define the structure of your menu items\n label?: string\n command?: () => void\n items?: ContextMenuItem[]\n [key: string]: any\n}\n\ninterface ContextMenuContextType {\n openContext: (event: React.MouseEvent, model: ContextMenuItem[]) => void\n closeContext: () => void\n ref: RefObject<any>\n model: ContextMenuItem[]\n isContextOpen: boolean\n setIsContextOpen: React.Dispatch<React.SetStateAction<boolean>>\n}\n\ninterface ContextMenuProviderProps {\n children: ReactNode\n}\n\nconst ContextMenuContext = createContext<ContextMenuContextType | undefined>(undefined)\n\nfunction ContextMenuProvider({ children }: ContextMenuProviderProps) {\n const [isContextOpen, setIsContextOpen] = useState<boolean>(false)\n\n const ref = useRef<any>(null)\n const [model, setModel] = useState<ContextMenuItem[]>([])\n\n function openContext(event: React.MouseEvent, model: ContextMenuItem[]) {\n if (!event || !ref.current || !model?.length) return\n event.preventDefault()\n setModel(model)\n ref.current.show(event)\n }\n\n function closeContext() {\n if (!ref.current) return\n ref.current.hide()\n }\n\n return (\n <ContextMenuContext.Provider\n value={{ openContext, closeContext, ref, model, isContextOpen, setIsContextOpen }}\n >\n {children}\n </ContextMenuContext.Provider>\n )\n}\n\nfunction useContextMenu(): ContextMenuContextType {\n const context = useContext(ContextMenuContext)\n if (context === undefined) {\n throw new Error('useContextMenu must be used within a ContextMenuProvider')\n }\n return context\n}\n\nexport { ContextMenuProvider, useContextMenu }\n","import React, { RefObject } from 'react'\nimport { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport './ContextMenu.scss'\n\ninterface CommandEvent {\n originalEvent: React.MouseEvent\n item: {\n label: string\n command: (event: CommandEvent) => void\n shortcut?: string\n }\n}\n\nexport interface ContextMenuItemProps {\n icon?: string\n label?: string\n shortcut?: string\n command?: (event: CommandEvent) => void\n children?: React.ReactNode\n contextMenuRef: RefObject<{ hide: () => void }>\n disabled?: boolean\n items?: any[]\n isSave?: boolean\n danger?: boolean\n style?: React.CSSProperties\n [key: string]: any // For any additional props\n}\n\nconst ContextMenuItem: React.FC<ContextMenuItemProps> = ({\n icon,\n label,\n shortcut,\n command,\n children,\n contextMenuRef,\n disabled,\n items,\n isSave,\n danger,\n ...props\n}) => {\n const onCommand = (e: React.MouseEvent) => {\n // hide the context menu\n contextMenuRef.current?.hide()\n\n command?.({\n originalEvent: e,\n item: {\n label: label || '',\n command: command || (() => {}),\n shortcut,\n },\n })\n }\n\n const noItems = items && items.length === 0\n\n return (\n <a\n className={`p-menuitem-link ${disabled || noItems ? 'p-disabled' : ''} ${\n danger ? 'danger' : ''\n } ${isSave ? 'save' : ''}`}\n role=\"menuitem\"\n href=\"#\"\n onClick={onCommand}\n style={{\n ...props?.style,\n }}\n {...props}\n >\n {icon && <Icon className=\"p-menuitem-icon\" icon={icon} />}\n {label && (\n <span\n className=\"p-menuitem-text\"\n style={{\n whiteSpace: 'nowrap',\n }}\n >\n {label}\n </span>\n )}\n {children}\n {shortcut && (\n <div className=\"p-menuitem-shortcut\">\n <ShortcutTag>{shortcut}</ShortcutTag>\n </div>\n )}\n {!!items?.length && (\n <Icon\n icon=\"chevron_right\"\n style={{\n marginLeft: 'auto',\n fontSize: '1.5rem',\n }}\n />\n )}\n </a>\n )\n}\n\nexport default ContextMenuItem\n","import { useCallback, useMemo, MouseEvent, RefObject } from 'react'\nimport ContextMenuItem, { ContextMenuItemProps } from './ContextMenuItem'\nimport { useContextMenu } from './ContextMenuContext'\n\n// Extend the item type based on the ContextMenuItemProps\nexport interface ContextMenuItemType extends Omit<ContextMenuItemProps, 'contextMenuRef'> {\n items?: ContextMenuItemType[]\n template?: React.ReactNode\n [key: string]: any\n}\n\n// This is used to create submenus\nconst addTemplateToItems = (\n items: ContextMenuItemType[],\n ref: RefObject<{ hide: () => void }>,\n): ContextMenuItemType[] => {\n return items.map((item) => {\n const newItem: ContextMenuItemType = {\n ...item,\n template: <ContextMenuItem key={item.label} contextMenuRef={ref} {...item} />,\n }\n if (newItem.items) {\n newItem.items = addTemplateToItems(newItem.items, ref)\n }\n return newItem\n })\n}\n\ntype UseCreateContextReturn = [\n (e: MouseEvent, newItems?: ContextMenuItemType[]) => void,\n () => void,\n boolean,\n RefObject<{ hide: () => void }>,\n]\n\nexport const useCreateContextMenu = (\n menuList: ContextMenuItemType[] = [],\n): UseCreateContextReturn => {\n const { openContext, ref, isContextOpen, closeContext } = useContextMenu()\n\n const getModel = useCallback(\n (\n menuList: ContextMenuItemType[],\n ref: RefObject<{ hide: () => void }>,\n ): ContextMenuItemType[] => {\n return menuList.map((item) => ({\n template: <ContextMenuItem key={item.label} contextMenuRef={ref} {...item} />,\n items: item.items?.length ? addTemplateToItems(item.items, ref) : undefined,\n }))\n },\n [],\n )\n\n const model = useMemo(() => getModel(menuList, ref), [menuList, ref, getModel])\n\n const handleOpen = (e: MouseEvent, newItems?: ContextMenuItemType[]): void => {\n if (!e || !ref.current) return console.error('No ref or event passed to openContext')\n\n let newModel\n if (newItems) {\n newModel = getModel(newItems, ref)\n }\n\n e.preventDefault()\n openContext(e, newModel || model)\n }\n\n return [handleOpen, closeContext, isContextOpen, ref]\n}\n\nexport default useCreateContextMenu\n"],"names":["ContextMenuContext","createContext","ContextMenuProvider","children","isContextOpen","setIsContextOpen","useState","ref","useRef","model","setModel","openContext","event","closeContext","jsx","useContextMenu","context","useContext","ContextMenuItem","icon","label","shortcut","command","contextMenuRef","disabled","items","isSave","danger","props","onCommand","e","_a","noItems","jsxs","Icon","ShortcutTag","addTemplateToItems","item","newItem","useCreateContextMenu","menuList","getModel","useCallback","useMemo","newItems","newModel"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { useRef as g, useState as l, useEffect as f } from "react";
2
+ const c = (t, r = null) => {
3
+ if (!t) return r;
4
+ try {
5
+ return JSON.parse(t);
6
+ } catch {
7
+ return r;
8
+ }
9
+ };
10
+ function d(t, r) {
11
+ const n = g(r);
12
+ n.current = r;
13
+ const [a, s] = l(() => {
14
+ const e = localStorage.getItem(t);
15
+ return c(e, r);
16
+ });
17
+ return f(() => {
18
+ const e = localStorage.getItem(t);
19
+ s(c(e, n.current)), e || localStorage.setItem(t, JSON.stringify(n.current));
20
+ function o(i) {
21
+ if (i.key !== t) return;
22
+ const u = localStorage.getItem(t);
23
+ s(c(u, n.current));
24
+ }
25
+ return window.addEventListener("storage", o), () => {
26
+ window.removeEventListener("storage", o);
27
+ };
28
+ }, [t]), [a, (e) => {
29
+ try {
30
+ s(e), localStorage.setItem(t, JSON.stringify(e)), typeof window < "u" && window.dispatchEvent(new StorageEvent("storage", { key: t }));
31
+ } catch (o) {
32
+ console.error(o);
33
+ }
34
+ }];
35
+ }
36
+ export {
37
+ d as u
38
+ };
39
+ //# sourceMappingURL=useLocalStorage-BQSzWJ4Q.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalStorage-BQSzWJ4Q.mjs","sources":["../src/hooks/useLocalStorage.ts"],"sourcesContent":["/* `useLocalStorage`\n *\n * Features:\n * - JSON Serializing\n * - Also value will be updated everywhere, when value updated (via `storage` event)\n */\n\nimport { useEffect, useRef, useState } from 'react'\n\nconst parseJSONString = (value: string | null, fallback: any = null) => {\n if (!value) return fallback\n try {\n return JSON.parse(value)\n } catch {\n return fallback\n }\n}\n\nexport function useLocalStorage<T>(key: string, defaultValue: T): [T, (value: T) => void] {\n // Use a ref to hold the defaultValue to avoid dependency changes\n const defaultValueRef = useRef(defaultValue)\n defaultValueRef.current = defaultValue\n\n const [value, setValue] = useState(() => {\n const item = localStorage.getItem(key)\n return parseJSONString(item, defaultValue)\n })\n\n useEffect(() => {\n // Read the latest value from localStorage whenever key changes\n const currentItem = localStorage.getItem(key)\n setValue(parseJSONString(currentItem, defaultValueRef.current))\n\n if (!currentItem) {\n localStorage.setItem(key, JSON.stringify(defaultValueRef.current))\n }\n\n function handler(e: StorageEvent) {\n if (e.key !== key) return\n\n const lsi = localStorage.getItem(key)\n setValue(parseJSONString(lsi, defaultValueRef.current))\n }\n\n window.addEventListener('storage', handler)\n\n return () => {\n window.removeEventListener('storage', handler)\n }\n }, [key]) // Remove defaultValue from dependencies\n\n const setValueWrap = (value: T) => {\n try {\n setValue(value)\n\n localStorage.setItem(key, JSON.stringify(value))\n if (typeof window !== 'undefined') {\n window.dispatchEvent(new StorageEvent('storage', { key }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n return [value, setValueWrap]\n}\n"],"names":["parseJSONString","value","fallback","useLocalStorage","key","defaultValue","defaultValueRef","useRef","setValue","useState","item","useEffect","currentItem","handler","e","lsi"],"mappings":";AASA,MAAMA,IAAkB,CAACC,GAAsBC,IAAgB,SAAS;AAClE,MAAA,CAACD,EAAc,QAAAC;AACf,MAAA;AACK,WAAA,KAAK,MAAMD,CAAK;AAAA,EAAA,QACjB;AACC,WAAAC;AAAA,EAAA;AAEX;AAEgB,SAAAC,EAAmBC,GAAaC,GAA0C;AAElF,QAAAC,IAAkBC,EAAOF,CAAY;AAC3C,EAAAC,EAAgB,UAAUD;AAE1B,QAAM,CAACJ,GAAOO,CAAQ,IAAIC,EAAS,MAAM;AACjC,UAAAC,IAAO,aAAa,QAAQN,CAAG;AAC9B,WAAAJ,EAAgBU,GAAML,CAAY;AAAA,EAAA,CAC1C;AAED,SAAAM,EAAU,MAAM;AAER,UAAAC,IAAc,aAAa,QAAQR,CAAG;AAC5C,IAAAI,EAASR,EAAgBY,GAAaN,EAAgB,OAAO,CAAC,GAEzDM,KACH,aAAa,QAAQR,GAAK,KAAK,UAAUE,EAAgB,OAAO,CAAC;AAGnE,aAASO,EAAQC,GAAiB;AAC5B,UAAAA,EAAE,QAAQV,EAAK;AAEb,YAAAW,IAAM,aAAa,QAAQX,CAAG;AACpC,MAAAI,EAASR,EAAgBe,GAAKT,EAAgB,OAAO,CAAC;AAAA,IAAA;AAGjD,kBAAA,iBAAiB,WAAWO,CAAO,GAEnC,MAAM;AACJ,aAAA,oBAAoB,WAAWA,CAAO;AAAA,IAC/C;AAAA,EAAA,GACC,CAACT,CAAG,CAAC,GAeD,CAACH,GAba,CAACA,MAAa;AAC7B,QAAA;AACF,MAAAO,EAASP,CAAK,GAEd,aAAa,QAAQG,GAAK,KAAK,UAAUH,CAAK,CAAC,GAC3C,OAAO,SAAW,OACpB,OAAO,cAAc,IAAI,aAAa,WAAW,EAAE,KAAAG,EAAA,CAAK,CAAC;AAAA,aAEpDU,GAAG;AACV,cAAQ,MAAMA,CAAC;AAAA,IAAA;AAAA,EAEnB,CAE2B;AAC7B;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const c=require("react"),a=(t,r=null)=>{if(!t)return r;try{return JSON.parse(t)}catch{return r}};function l(t,r){const n=c.useRef(r);n.current=r;const[i,s]=c.useState(()=>{const e=localStorage.getItem(t);return a(e,r)});return c.useEffect(()=>{const e=localStorage.getItem(t);s(a(e,n.current)),e||localStorage.setItem(t,JSON.stringify(n.current));function o(u){if(u.key!==t)return;const g=localStorage.getItem(t);s(a(g,n.current))}return window.addEventListener("storage",o),()=>{window.removeEventListener("storage",o)}},[t]),[i,e=>{try{s(e),localStorage.setItem(t,JSON.stringify(e)),typeof window<"u"&&window.dispatchEvent(new StorageEvent("storage",{key:t}))}catch(o){console.error(o)}}]}exports.useLocalStorage=l;
2
+ //# sourceMappingURL=useLocalStorage-BRHTBlxR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalStorage-BRHTBlxR.js","sources":["../src/hooks/useLocalStorage.ts"],"sourcesContent":["/* `useLocalStorage`\n *\n * Features:\n * - JSON Serializing\n * - Also value will be updated everywhere, when value updated (via `storage` event)\n */\n\nimport { useEffect, useRef, useState } from 'react'\n\nconst parseJSONString = (value: string | null, fallback: any = null) => {\n if (!value) return fallback\n try {\n return JSON.parse(value)\n } catch {\n return fallback\n }\n}\n\nexport function useLocalStorage<T>(key: string, defaultValue: T): [T, (value: T) => void] {\n // Use a ref to hold the defaultValue to avoid dependency changes\n const defaultValueRef = useRef(defaultValue)\n defaultValueRef.current = defaultValue\n\n const [value, setValue] = useState(() => {\n const item = localStorage.getItem(key)\n return parseJSONString(item, defaultValue)\n })\n\n useEffect(() => {\n // Read the latest value from localStorage whenever key changes\n const currentItem = localStorage.getItem(key)\n setValue(parseJSONString(currentItem, defaultValueRef.current))\n\n if (!currentItem) {\n localStorage.setItem(key, JSON.stringify(defaultValueRef.current))\n }\n\n function handler(e: StorageEvent) {\n if (e.key !== key) return\n\n const lsi = localStorage.getItem(key)\n setValue(parseJSONString(lsi, defaultValueRef.current))\n }\n\n window.addEventListener('storage', handler)\n\n return () => {\n window.removeEventListener('storage', handler)\n }\n }, [key]) // Remove defaultValue from dependencies\n\n const setValueWrap = (value: T) => {\n try {\n setValue(value)\n\n localStorage.setItem(key, JSON.stringify(value))\n if (typeof window !== 'undefined') {\n window.dispatchEvent(new StorageEvent('storage', { key }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n return [value, setValueWrap]\n}\n"],"names":["parseJSONString","value","fallback","useLocalStorage","key","defaultValue","defaultValueRef","useRef","setValue","useState","item","useEffect","currentItem","handler","e","lsi"],"mappings":"sCASMA,EAAkB,CAACC,EAAsBC,EAAgB,OAAS,CAClE,GAAA,CAACD,EAAc,OAAAC,EACf,GAAA,CACK,OAAA,KAAK,MAAMD,CAAK,CAAA,MACjB,CACC,OAAAC,CAAA,CAEX,EAEgB,SAAAC,EAAmBC,EAAaC,EAA0C,CAElF,MAAAC,EAAkBC,SAAOF,CAAY,EAC3CC,EAAgB,QAAUD,EAE1B,KAAM,CAACJ,EAAOO,CAAQ,EAAIC,WAAS,IAAM,CACjC,MAAAC,EAAO,aAAa,QAAQN,CAAG,EAC9B,OAAAJ,EAAgBU,EAAML,CAAY,CAAA,CAC1C,EAEDM,OAAAA,EAAAA,UAAU,IAAM,CAER,MAAAC,EAAc,aAAa,QAAQR,CAAG,EAC5CI,EAASR,EAAgBY,EAAaN,EAAgB,OAAO,CAAC,EAEzDM,GACH,aAAa,QAAQR,EAAK,KAAK,UAAUE,EAAgB,OAAO,CAAC,EAGnE,SAASO,EAAQC,EAAiB,CAC5B,GAAAA,EAAE,MAAQV,EAAK,OAEb,MAAAW,EAAM,aAAa,QAAQX,CAAG,EACpCI,EAASR,EAAgBe,EAAKT,EAAgB,OAAO,CAAC,CAAA,CAGjD,cAAA,iBAAiB,UAAWO,CAAO,EAEnC,IAAM,CACJ,OAAA,oBAAoB,UAAWA,CAAO,CAC/C,CAAA,EACC,CAACT,CAAG,CAAC,EAeD,CAACH,EAbcA,GAAa,CAC7B,GAAA,CACFO,EAASP,CAAK,EAEd,aAAa,QAAQG,EAAK,KAAK,UAAUH,CAAK,CAAC,EAC3C,OAAO,OAAW,KACpB,OAAO,cAAc,IAAI,aAAa,UAAW,CAAE,IAAAG,CAAA,CAAK,CAAC,QAEpDU,EAAG,CACV,QAAQ,MAAMA,CAAC,CAAA,CAEnB,CAE2B,CAC7B"}
package/package.json ADDED
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "@ynput/ayon-frontend-shared",
3
+ "version": "0.1.0",
4
+ "description": "Shared React components for AYON frontend",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.es.js",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/types/index.d.ts",
10
+ "import": "./dist/index.es.js",
11
+ "require": "./dist/index.cjs.js"
12
+ },
13
+ "./components": {
14
+ "types": "./dist/types/components/index.d.ts",
15
+ "import": "./dist/components.es.js",
16
+ "require": "./dist/components.cjs.js"
17
+ },
18
+ "./api": {
19
+ "types": "./dist/types/api/index.d.ts",
20
+ "import": "./dist/api.es.js",
21
+ "require": "./dist/api.cjs.js"
22
+ },
23
+ "./hooks": {
24
+ "types": "./dist/types/hooks/index.d.ts",
25
+ "import": "./dist/hooks.es.js",
26
+ "require": "./dist/hooks.cjs.js"
27
+ },
28
+ "./ContextMenu": {
29
+ "types": "./dist/types/containers/ContextMenu/index.d.ts",
30
+ "import": "./dist/ContextMenu.es.js",
31
+ "require": "./dist/ContextMenu.cjs.js"
32
+ },
33
+ "./Feed": {
34
+ "types": "./dist/types/containers/Feed/index.d.ts",
35
+ "import": "./dist/Feed.es.js",
36
+ "require": "./dist/Feed.cjs.js"
37
+ },
38
+ "./ProjectTreeTable": {
39
+ "types": "./dist/types/containers/ProjectTreeTable/index.d.ts",
40
+ "import": "./dist/ProjectTreeTable.es.js",
41
+ "require": "./dist/ProjectTreeTable.cjs.js"
42
+ },
43
+ "./Slicer": {
44
+ "types": "./dist/types/containers/Slicer/index.d.ts",
45
+ "import": "./dist/Slicer.es.js",
46
+ "require": "./dist/Slicer.cjs.js"
47
+ },
48
+ "./util": {
49
+ "types": "./dist/types/util/index.d.ts",
50
+ "import": "./dist/util.es.js",
51
+ "require": "./dist/util.cjs.js"
52
+ }
53
+ },
54
+ "files": [
55
+ "dist"
56
+ ],
57
+ "publishConfig": {
58
+ "access": "public"
59
+ },
60
+ "scripts": {
61
+ "build": "vite build"
62
+ },
63
+ "peerDependencies": {
64
+ "@tanstack/react-table": "^8.21.2",
65
+ "@ynput/ayon-react-components": "^1.13.0",
66
+ "react": "^18.0.0",
67
+ "react-dom": "^18.0.0",
68
+ "styled-components": "^6.1.17"
69
+ },
70
+ "devDependencies": {
71
+ "@babel/preset-typescript": "^7.27.0",
72
+ "@vitejs/plugin-react": "^4.3.4",
73
+ "typescript": "^5.8.3",
74
+ "vite": "^6.2.6",
75
+ "vite-plugin-dts": "^4.5.3",
76
+ "vite-plugin-linter": "^3.0.1"
77
+ },
78
+ "dependencies": {
79
+ "@tanstack/match-sorter-utils": "^8.19.4",
80
+ "@tanstack/react-virtual": "^3.13.6",
81
+ "clsx": "^2.1.1",
82
+ "date-fns": "^4.1.0",
83
+ "primeicons": "^7.0.0",
84
+ "primereact": "9.6.2",
85
+ "primereact-context": "npm:primereact@9.2.3",
86
+ "quill-magic-url": "^4.2.0",
87
+ "react-quill-ayon": "^2.0.2",
88
+ "react-toastify": "^11.0.5",
89
+ "turndown": "^7.2.0"
90
+ }
91
+ }