@powerhousedao/design-system 1.4.2 → 1.5.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 (214) hide show
  1. package/dist/assets/icon-components/ArrowFilledRight.js.map +1 -1
  2. package/dist/assets/icon-components/ArrowLeft.js.map +1 -1
  3. package/dist/assets/icon-components/ArrowUp.js.map +1 -1
  4. package/dist/assets/icon-components/BarChart.js.map +1 -1
  5. package/dist/assets/icon-components/BaseArrowLeft.js.map +1 -1
  6. package/dist/assets/icon-components/BaseArrowRight.js.map +1 -1
  7. package/dist/assets/icon-components/Braces.js.map +1 -1
  8. package/dist/assets/icon-components/Branch.js.map +1 -1
  9. package/dist/assets/icon-components/BrickGlobe.js.map +1 -1
  10. package/dist/assets/icon-components/Briefcase.js.map +1 -1
  11. package/dist/assets/icon-components/Calendar.js.map +1 -1
  12. package/dist/assets/icon-components/Caret.js.map +1 -1
  13. package/dist/assets/icon-components/CaretDown.js.map +1 -1
  14. package/dist/assets/icon-components/Check.js.map +1 -1
  15. package/dist/assets/icon-components/CheckCircle.js.map +1 -1
  16. package/dist/assets/icon-components/CheckCircleFill.js.map +1 -1
  17. package/dist/assets/icon-components/ChevronDown.js.map +1 -1
  18. package/dist/assets/icon-components/Circle.js.map +1 -1
  19. package/dist/assets/icon-components/ClockFill.js.map +1 -1
  20. package/dist/assets/icon-components/CloudSlash.js.map +1 -1
  21. package/dist/assets/icon-components/Collapse.js.map +1 -1
  22. package/dist/assets/icon-components/Connect.js.map +1 -1
  23. package/dist/assets/icon-components/Drive.js.map +1 -1
  24. package/dist/assets/icon-components/Ellipsis.js.map +1 -1
  25. package/dist/assets/icon-components/Error.js.map +1 -1
  26. package/dist/assets/icon-components/Exclamation.js.map +1 -1
  27. package/dist/assets/icon-components/FilesEarmark.js.map +1 -1
  28. package/dist/assets/icon-components/FolderClose.js.map +1 -1
  29. package/dist/assets/icon-components/FolderOpen.js.map +1 -1
  30. package/dist/assets/icon-components/FolderPlus.js.map +1 -1
  31. package/dist/assets/icon-components/Gear.js.map +1 -1
  32. package/dist/assets/icon-components/Globe.js.map +1 -1
  33. package/dist/assets/icon-components/Hdd.js.map +1 -1
  34. package/dist/assets/icon-components/History.js.map +1 -1
  35. package/dist/assets/icon-components/InfoSquare.js.map +1 -1
  36. package/dist/assets/icon-components/Link.js.map +1 -1
  37. package/dist/assets/icon-components/Lock.js.map +1 -1
  38. package/dist/assets/icon-components/M.js.map +1 -1
  39. package/dist/assets/icon-components/Pencil.js.map +1 -1
  40. package/dist/assets/icon-components/People.js.map +1 -1
  41. package/dist/assets/icon-components/Person.js.map +1 -1
  42. package/dist/assets/icon-components/Plus.js.map +1 -1
  43. package/dist/assets/icon-components/PlusCircle.js.map +1 -1
  44. package/dist/assets/icon-components/PowerhouseLogoSmall.js.map +1 -1
  45. package/dist/assets/icon-components/Project.js.map +1 -1
  46. package/dist/assets/icon-components/RedoArrow.js.map +1 -1
  47. package/dist/assets/icon-components/Renown.js.map +1 -1
  48. package/dist/assets/icon-components/RenownHover.js.map +1 -1
  49. package/dist/assets/icon-components/Ring.js.map +1 -1
  50. package/dist/assets/icon-components/Save.js.map +1 -1
  51. package/dist/assets/icon-components/Search.js.map +1 -1
  52. package/dist/assets/icon-components/Server.js.map +1 -1
  53. package/dist/assets/icon-components/Settings.js.map +1 -1
  54. package/dist/assets/icon-components/Synced.js.map +1 -1
  55. package/dist/assets/icon-components/Syncing.js.map +1 -1
  56. package/dist/assets/icon-components/Trash.js.map +1 -1
  57. package/dist/assets/icon-components/TrashFill.js.map +1 -1
  58. package/dist/assets/icon-components/VariantArrowLeft.js.map +1 -1
  59. package/dist/assets/icon-components/VerticalDots.js.map +1 -1
  60. package/dist/assets/icon-components/WarningFill.js.map +1 -1
  61. package/dist/assets/icon-components/Xmark.js.map +1 -1
  62. package/dist/assets/icon-components/XmarkLight.js.map +1 -1
  63. package/dist/connect/components/animated-loader/animated-loader.js.map +1 -1
  64. package/dist/connect/components/breadcrumbs/breadcrumbs.js.map +1 -1
  65. package/dist/connect/components/combobox/combobox.js.map +1 -1
  66. package/dist/connect/components/cookie-banner/cookie-banner.js.map +1 -1
  67. package/dist/connect/components/date-time-input/date-time-local-input.js.map +1 -1
  68. package/dist/connect/components/default-editor-loader/default-editor-loader.js.map +1 -1
  69. package/dist/connect/components/disclosure/disclosure.js.map +1 -1
  70. package/dist/connect/components/divider/divider.js.map +1 -1
  71. package/dist/connect/components/document-toolbar/document-toolbar.js.map +1 -1
  72. package/dist/connect/components/drive-view/drive-view.js.map +1 -1
  73. package/dist/connect/components/dropdown-menu/dropdown-menu.js.map +1 -1
  74. package/dist/connect/components/editor-action-buttons/editor-action-buttons.js.map +1 -1
  75. package/dist/connect/components/editor-undo-redo-buttons/editor-undo-redo-buttons.js.map +1 -1
  76. package/dist/connect/components/ens-avatar/ens-avatar.js.map +1 -1
  77. package/dist/connect/components/file-item/file-item.js +7 -7
  78. package/dist/connect/components/file-item/file-item.js.map +1 -1
  79. package/dist/connect/components/folder-item/folder-item.js.map +1 -1
  80. package/dist/connect/components/footer/footer-link.js.map +1 -1
  81. package/dist/connect/components/footer/footer.js.map +1 -1
  82. package/dist/connect/components/form/add-local-drive-form.js.map +1 -1
  83. package/dist/connect/components/form/add-remote-drive-form.js.map +1 -1
  84. package/dist/connect/components/form/drive-settings-form.js.map +1 -1
  85. package/dist/connect/components/form/inputs/available-offline-toggle.js.map +1 -1
  86. package/dist/connect/components/form/inputs/delete-drive.js.map +1 -1
  87. package/dist/connect/components/form/inputs/drive-name-input.js.map +1 -1
  88. package/dist/connect/components/form/inputs/drive-name.js.map +1 -1
  89. package/dist/connect/components/form/inputs/label.js.map +1 -1
  90. package/dist/connect/components/form/inputs/location-info.js.map +1 -1
  91. package/dist/connect/components/form/inputs/sharing-type-form-input.js.map +1 -1
  92. package/dist/connect/components/form-input/form-input.js.map +1 -1
  93. package/dist/connect/components/loading-screen/loading-screen.js.map +1 -1
  94. package/dist/connect/components/modal/add-local-drive-modal.js.map +1 -1
  95. package/dist/connect/components/modal/add-remote-drive-modal.js.map +1 -1
  96. package/dist/connect/components/modal/confirmation-modal.js.map +1 -1
  97. package/dist/connect/components/modal/create-document-modal.js +28 -24
  98. package/dist/connect/components/modal/create-document-modal.js.map +1 -1
  99. package/dist/connect/components/modal/delete-drive-modal.js.map +1 -1
  100. package/dist/connect/components/modal/delete-item-modal.js.map +1 -1
  101. package/dist/connect/components/modal/drive-settings-modal.js.map +1 -1
  102. package/dist/connect/components/modal/read-required-modal.js.map +1 -1
  103. package/dist/connect/components/modal/settings-modal/clear-storage-row.js.map +1 -1
  104. package/dist/connect/components/modal/settings-modal/dependency-versions/dependency-versions.js.map +1 -1
  105. package/dist/connect/components/modal/settings-modal/document-select-row.js.map +1 -1
  106. package/dist/connect/components/modal/settings-modal/row.js.map +1 -1
  107. package/dist/connect/components/modal/settings-modal/settings-modal.js.map +1 -1
  108. package/dist/connect/components/modal/upgrade-drive-modal.js.map +1 -1
  109. package/dist/connect/components/node-input/node-input.js.map +1 -1
  110. package/dist/connect/components/revision-history/header/branch.js.map +1 -1
  111. package/dist/connect/components/revision-history/header/doc-id.js.map +1 -1
  112. package/dist/connect/components/revision-history/header/header.js.map +1 -1
  113. package/dist/connect/components/revision-history/header/scope.js.map +1 -1
  114. package/dist/connect/components/revision-history/revision/address.js.map +1 -1
  115. package/dist/connect/components/revision-history/revision/errors.js.map +1 -1
  116. package/dist/connect/components/revision-history/revision/operation.js.map +1 -1
  117. package/dist/connect/components/revision-history/revision/revision-number.js.map +1 -1
  118. package/dist/connect/components/revision-history/revision/revision.js.map +1 -1
  119. package/dist/connect/components/revision-history/revision/signature.js.map +1 -1
  120. package/dist/connect/components/revision-history/revision/timestamp.js.map +1 -1
  121. package/dist/connect/components/revision-history/revision-history.js.map +1 -1
  122. package/dist/connect/components/revision-history/skip/skip.js.map +1 -1
  123. package/dist/connect/components/revision-history/timeline/day.js.map +1 -1
  124. package/dist/connect/components/revision-history/timeline/timeline.js.map +1 -1
  125. package/dist/connect/components/revision-history/utils.js.map +1 -1
  126. package/dist/connect/components/search-bar/filter-item.js.map +1 -1
  127. package/dist/connect/components/search-bar/search-bar.js.map +1 -1
  128. package/dist/connect/components/select/select.js.map +1 -1
  129. package/dist/connect/components/sidebar/sidebar-footer.js.map +1 -1
  130. package/dist/connect/components/sidebar/sidebar-header.js.map +1 -1
  131. package/dist/connect/components/sidebar/sidebar-login.js.map +1 -1
  132. package/dist/connect/components/sidebar/sidebar-user.js.map +1 -1
  133. package/dist/connect/components/sidebar/sidebar.js.map +1 -1
  134. package/dist/connect/components/status-icon/sync-status-icon.js.map +1 -1
  135. package/dist/connect/components/toast/toast.js.map +1 -1
  136. package/dist/connect/components/toggle/toggle.js.map +1 -1
  137. package/dist/connect/components/tooltip/tooltip.js.map +1 -1
  138. package/dist/connect/components/tree-view/drop-indicator.js.map +1 -1
  139. package/dist/connect/components/tree-view/tree-view.js.map +1 -1
  140. package/dist/connect/constants/options.js.map +1 -1
  141. package/dist/connect/context/UiNodesContext.js.map +1 -1
  142. package/dist/connect/context/WagmiContext.js.map +1 -1
  143. package/dist/connect/hooks/drag-and-drop/use-drag.js.map +1 -1
  144. package/dist/connect/hooks/drag-and-drop/use-drop.js.map +1 -1
  145. package/dist/connect/utils/get-folder-status.js.map +1 -1
  146. package/dist/powerhouse/components/button/button.js.map +1 -1
  147. package/dist/powerhouse/components/dropdown-menu/dropdown-menu.js.map +1 -1
  148. package/dist/powerhouse/components/icon/icon.js.map +1 -1
  149. package/dist/powerhouse/components/legacy/editorToolbar.js.map +1 -1
  150. package/dist/powerhouse/components/legacy/editorWorksheet.js.map +1 -1
  151. package/dist/powerhouse/components/legacy/styles.js.map +1 -1
  152. package/dist/powerhouse/components/legacy/stylesVariant.js.map +1 -1
  153. package/dist/powerhouse/components/legacy/textInput.js.map +1 -1
  154. package/dist/powerhouse/components/legacy/textInputVariant.js.map +1 -1
  155. package/dist/powerhouse/components/legacy/toolbarButton.js.map +1 -1
  156. package/dist/powerhouse/components/modal/modal.js.map +1 -1
  157. package/dist/powerhouse/components/pagination/pagination-button.js.map +1 -1
  158. package/dist/powerhouse/components/pagination/pagination.js.map +1 -1
  159. package/dist/powerhouse/components/sidebar/sidebar-panel.js.map +1 -1
  160. package/dist/powerhouse/components/sidebar/sidebar.js.map +1 -1
  161. package/dist/powerhouse/hooks/animation.js.map +1 -1
  162. package/dist/powerhouse/hooks/reducer.js.map +1 -1
  163. package/dist/powerhouse/hooks/usePagination.js.map +1 -1
  164. package/dist/powerhouse/utils/getDimensions.js.map +1 -1
  165. package/dist/powerhouse/utils/mergeClassNameProps.js.map +1 -1
  166. package/dist/rwa/components/button/button.js.map +1 -1
  167. package/dist/rwa/components/editor/editor.js.map +1 -1
  168. package/dist/rwa/components/inputs/form-inputs.js.map +1 -1
  169. package/dist/rwa/components/inputs/form-row.js.map +1 -1
  170. package/dist/rwa/components/inputs/number-input.js.map +1 -1
  171. package/dist/rwa/components/inputs/select.js.map +1 -1
  172. package/dist/rwa/components/inputs/text-input.js.map +1 -1
  173. package/dist/rwa/components/modal/create-item-modal.js.map +1 -1
  174. package/dist/rwa/components/modal/delete-item-modal.js.map +1 -1
  175. package/dist/rwa/components/modal/modal-form-inputs.js.map +1 -1
  176. package/dist/rwa/components/modal/modal-manager.js.map +1 -1
  177. package/dist/rwa/components/table/accounts/accounts-table.js.map +1 -1
  178. package/dist/rwa/components/table/assets/assets-table.js.map +1 -1
  179. package/dist/rwa/components/table/base/formatted-number.js.map +1 -1
  180. package/dist/rwa/components/table/base/header-label.js.map +1 -1
  181. package/dist/rwa/components/table/base/item-details.js.map +1 -1
  182. package/dist/rwa/components/table/base/table-base.js.map +1 -1
  183. package/dist/rwa/components/table/base/table-cell.js.map +1 -1
  184. package/dist/rwa/components/table/base/table-row.js.map +1 -1
  185. package/dist/rwa/components/table/base/table-with-form.js.map +1 -1
  186. package/dist/rwa/components/table/base/table.js.map +1 -1
  187. package/dist/rwa/components/table/transactions/cash-balance-change.js.map +1 -1
  188. package/dist/rwa/components/table/transactions/fee-transactions-table.js.map +1 -1
  189. package/dist/rwa/components/table/transactions/group-transactions-table.js.map +1 -1
  190. package/dist/rwa/components/table/transactions/transaction-reference.js.map +1 -1
  191. package/dist/rwa/components/table/transactions/unit-price.js.map +1 -1
  192. package/dist/rwa/components/tabs/other-tab.js.map +1 -1
  193. package/dist/rwa/components/tabs/portfolio-tab.js.map +1 -1
  194. package/dist/rwa/components/tabs/tab-content.js.map +1 -1
  195. package/dist/rwa/components/tabs/tabs.js.map +1 -1
  196. package/dist/rwa/components/tabs/transactions-tab.js.map +1 -1
  197. package/dist/rwa/constants/columns.js.map +1 -1
  198. package/dist/rwa/constants/dependent-items.js.map +1 -1
  199. package/dist/rwa/constants/table.js.map +1 -1
  200. package/dist/rwa/context/editor-context.js.map +1 -1
  201. package/dist/rwa/hooks/useColumnPriority.js.map +1 -1
  202. package/dist/rwa/hooks/useDefaultFormValues.js.map +1 -1
  203. package/dist/rwa/hooks/useFormInputs.js.map +1 -1
  204. package/dist/rwa/hooks/useSortTableItems.js.map +1 -1
  205. package/dist/rwa/hooks/useSubmit.js.map +1 -1
  206. package/dist/rwa/hooks/useTableData.js.map +1 -1
  207. package/dist/rwa/hooks/useTableForm.js.map +1 -1
  208. package/dist/rwa/hooks/useTableHeight.js.map +1 -1
  209. package/dist/rwa/utils/calculations.js.map +1 -1
  210. package/dist/rwa/utils/date.js.map +1 -1
  211. package/dist/rwa/utils/table.js.map +1 -1
  212. package/dist/services/wagmi.js.map +1 -1
  213. package/dist/shared-tailwind.config.js.map +1 -1
  214. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"sync-status-icon.js","sources":["../../../../src/connect/components/status-icon/sync-status-icon.tsx"],"sourcesContent":["import {\n CONFLICT,\n ERROR,\n INITIAL_SYNC,\n MISSING,\n SUCCESS,\n SYNCING,\n SyncStatus,\n} from \"@/connect\";\nimport { Icon, IconName } from \"@/powerhouse\";\n\nimport { ComponentPropsWithoutRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nconst syncIcons: Record<SyncStatus, IconName> = {\n SYNCING: \"Syncing\",\n SUCCESS: \"Synced\",\n CONFLICT: \"Error\",\n MISSING: \"Circle\",\n ERROR: \"Error\",\n INITIAL_SYNC: \"Syncing\",\n};\n\nexport type SyncStatusIconProps = Omit<\n ComponentPropsWithoutRef<typeof Icon>,\n \"name\"\n> & {\n syncStatus: SyncStatus;\n overrideSyncIcons?: Partial<Record<SyncStatus, IconName>>;\n};\nexport function SyncStatusIcon(props: SyncStatusIconProps) {\n const { syncStatus, className, overrideSyncIcons = {}, ...iconProps } = props;\n\n const icons = { ...syncIcons, ...overrideSyncIcons };\n\n const syncStatusIcons = {\n [INITIAL_SYNC]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-blue-900\", className)}\n name={icons[INITIAL_SYNC]}\n />\n ),\n [SYNCING]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-blue-900\", className)}\n name={icons[SYNCING]}\n />\n ),\n [SUCCESS]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-green-900\", className)}\n name={icons[SUCCESS]}\n />\n ),\n [CONFLICT]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-orange-900\", className)}\n name={icons[CONFLICT]}\n />\n ),\n [MISSING]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-red-900\", className)}\n name={icons[MISSING]}\n />\n ),\n [ERROR]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-red-900\", className)}\n name={icons[ERROR]}\n />\n ),\n } as const;\n\n return syncStatusIcons[syncStatus];\n}\n"],"names":["syncIcons","SyncStatusIcon","props","syncStatus","className","overrideSyncIcons","iconProps","icons","INITIAL_SYNC","jsx","Icon","twMerge","SYNCING","SUCCESS","CONFLICT","MISSING","ERROR"],"mappings":";;;;AAcA,MAAMA,IAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,cAAc;AAChB;AASO,SAASC,EAAeC,GAA4B;AACnD,QAAA,EAAE,YAAAC,GAAY,WAAAC,GAAW,mBAAAC,IAAoB,CAAA,GAAI,GAAGC,EAAc,IAAAJ,GAElEK,IAAQ,EAAE,GAAGP,GAAW,GAAGK,EAAkB;AAqDnD,SAnDwB;AAAA,IACtB,CAACG,CAAY,GACX,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,iBAAiBP,CAAS;AAAA,QAC7C,MAAMG,EAAMC,CAAY;AAAA,MAAA;AAAA,IAC1B;AAAA,IAEF,CAACI,CAAO,GACN,gBAAAH;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,iBAAiBP,CAAS;AAAA,QAC7C,MAAMG,EAAMK,CAAO;AAAA,MAAA;AAAA,IACrB;AAAA,IAEF,CAACC,CAAO,GACN,gBAAAJ;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,kBAAkBP,CAAS;AAAA,QAC9C,MAAMG,EAAMM,CAAO;AAAA,MAAA;AAAA,IACrB;AAAA,IAEF,CAACC,CAAQ,GACP,gBAAAL;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,mBAAmBP,CAAS;AAAA,QAC/C,MAAMG,EAAMO,CAAQ;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,CAACC,CAAO,GACN,gBAAAN;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,gBAAgBP,CAAS;AAAA,QAC5C,MAAMG,EAAMQ,CAAO;AAAA,MAAA;AAAA,IACrB;AAAA,IAEF,CAACC,CAAK,GACJ,gBAAAP;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,gBAAgBP,CAAS;AAAA,QAC5C,MAAMG,EAAMS,CAAK;AAAA,MAAA;AAAA,IACnB;AAAA,EAAA,EAImBb,CAAU;AACnC;"}
1
+ {"version":3,"file":"sync-status-icon.js","sources":["../../../../src/connect/components/status-icon/sync-status-icon.tsx"],"sourcesContent":["import {\n CONFLICT,\n ERROR,\n INITIAL_SYNC,\n MISSING,\n SUCCESS,\n SYNCING,\n SyncStatus,\n} from \"@/connect\";\nimport { Icon, IconName } from \"@/powerhouse\";\n\nimport { ComponentPropsWithoutRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nconst syncIcons: Record<SyncStatus, IconName> = {\n SYNCING: \"Syncing\",\n SUCCESS: \"Synced\",\n CONFLICT: \"Error\",\n MISSING: \"Circle\",\n ERROR: \"Error\",\n INITIAL_SYNC: \"Syncing\",\n};\n\nexport type SyncStatusIconProps = Omit<\n ComponentPropsWithoutRef<typeof Icon>,\n \"name\"\n> & {\n syncStatus: SyncStatus;\n overrideSyncIcons?: Partial<Record<SyncStatus, IconName>>;\n};\nexport function SyncStatusIcon(props: SyncStatusIconProps) {\n const { syncStatus, className, overrideSyncIcons = {}, ...iconProps } = props;\n\n const icons = { ...syncIcons, ...overrideSyncIcons };\n\n const syncStatusIcons = {\n [INITIAL_SYNC]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-blue-900\", className)}\n name={icons[INITIAL_SYNC]}\n />\n ),\n [SYNCING]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-blue-900\", className)}\n name={icons[SYNCING]}\n />\n ),\n [SUCCESS]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-green-900\", className)}\n name={icons[SUCCESS]}\n />\n ),\n [CONFLICT]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-orange-900\", className)}\n name={icons[CONFLICT]}\n />\n ),\n [MISSING]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-red-900\", className)}\n name={icons[MISSING]}\n />\n ),\n [ERROR]: (\n <Icon\n size={16}\n {...iconProps}\n className={twMerge(\"text-red-900\", className)}\n name={icons[ERROR]}\n />\n ),\n } as const;\n\n return syncStatusIcons[syncStatus];\n}\n"],"names":["syncIcons","SyncStatusIcon","props","syncStatus","className","overrideSyncIcons","iconProps","icons","INITIAL_SYNC","jsx","Icon","twMerge","SYNCING","SUCCESS","CONFLICT","MISSING","ERROR"],"mappings":";;;;AAcA,MAAMA,IAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,cAAc;AAChB;AASO,SAASC,EAAeC,GAA4B;AACnD,QAAA,EAAE,YAAAC,GAAY,WAAAC,GAAW,mBAAAC,IAAoB,CAAA,GAAI,GAAGC,MAAcJ,GAElEK,IAAQ,EAAE,GAAGP,GAAW,GAAGK,EAAkB;AAqDnD,SAnDwB;AAAA,IACtB,CAACG,CAAY,GACX,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,iBAAiBP,CAAS;AAAA,QAC7C,MAAMG,EAAMC,CAAY;AAAA,MAAA;AAAA,IAC1B;AAAA,IAEF,CAACI,CAAO,GACN,gBAAAH;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,iBAAiBP,CAAS;AAAA,QAC7C,MAAMG,EAAMK,CAAO;AAAA,MAAA;AAAA,IACrB;AAAA,IAEF,CAACC,CAAO,GACN,gBAAAJ;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,kBAAkBP,CAAS;AAAA,QAC9C,MAAMG,EAAMM,CAAO;AAAA,MAAA;AAAA,IACrB;AAAA,IAEF,CAACC,CAAQ,GACP,gBAAAL;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,mBAAmBP,CAAS;AAAA,QAC/C,MAAMG,EAAMO,CAAQ;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,CAACC,CAAO,GACN,gBAAAN;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,gBAAgBP,CAAS;AAAA,QAC5C,MAAMG,EAAMQ,CAAO;AAAA,MAAA;AAAA,IACrB;AAAA,IAEF,CAACC,CAAK,GACJ,gBAAAP;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAGJ;AAAA,QACJ,WAAWK,EAAQ,gBAAgBP,CAAS;AAAA,QAC5C,MAAMG,EAAMS,CAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAGvB,EAEuBb,CAAU;AACnC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","sources":["../../../../src/connect/components/toast/toast.tsx"],"sourcesContent":["import {\n ToastContainer as RToastContainer,\n ToastContainerProps,\n ToastContent,\n ToastOptions,\n TypeOptions,\n toast as rToast,\n} from \"react-toastify\";\n\nimport { Icon } from \"@/powerhouse\";\n\nexport type ConnectTypeOptions =\n | \"connect-success\"\n | \"connect-warning\"\n | \"connect-loading\"\n | \"connect-deleted\";\n\nexport type ExtendedTypeOptions = TypeOptions | ConnectTypeOptions;\n\nexport type ConnectToastOptions = Omit<ToastOptions, \"type\"> & {\n type: ExtendedTypeOptions;\n};\n\nexport function isConnectTypeOptions(\n type: ExtendedTypeOptions,\n): type is ConnectTypeOptions {\n return (\n type === \"connect-success\" ||\n type === \"connect-warning\" ||\n type === \"connect-loading\" ||\n type === \"connect-deleted\"\n );\n}\n\nfunction getDefaultOptions(type: ExtendedTypeOptions): ToastOptions {\n if (isConnectTypeOptions(type)) {\n const options: ToastOptions = {};\n\n switch (type) {\n case \"connect-success\":\n options.type = \"success\";\n options.icon = (\n <Icon className=\"text-green-800\" name=\"CheckCircleFill\" size={24} />\n );\n break;\n case \"connect-warning\":\n options.type = \"warning\";\n options.icon = (\n <Icon className=\"text-gray-600\" name=\"WarningFill\" size={24} />\n );\n break;\n case \"connect-loading\":\n options.type = \"default\";\n options.icon = (\n <Icon className=\"text-gray-600\" name=\"ClockFill\" size={24} />\n );\n break;\n case \"connect-deleted\":\n options.type = \"error\";\n options.icon = (\n <Icon className=\"text-red-800\" name=\"TrashFill\" size={24} />\n );\n break;\n }\n\n return options;\n }\n\n return { type };\n}\n\nexport function toast(content: ToastContent, options?: ConnectToastOptions) {\n const { type = \"default\", ...restOptions } = options || {};\n const defaultOptions = getDefaultOptions(type);\n\n return rToast(content, { ...defaultOptions, ...restOptions });\n}\n\nconst CloseButton: ToastContainerProps[\"closeButton\"] = ({ closeToast }) => (\n <button\n className=\"flex items-center text-gray-500 hover:text-gray-600\"\n onClick={closeToast}\n >\n <Icon name=\"XmarkLight\" size={16} />\n </button>\n);\n\nexport const ToastContainer: React.FC<ToastContainerProps> = (props) => (\n <RToastContainer closeButton={CloseButton} {...props} />\n);\n"],"names":["isConnectTypeOptions","type","getDefaultOptions","options","Icon","toast","content","restOptions","defaultOptions","rToast","CloseButton","closeToast","jsx","ToastContainer","props","RToastContainer"],"mappings":";;;AAuBO,SAASA,EACdC,GAC4B;AAC5B,SACEA,MAAS,qBACTA,MAAS,qBACTA,MAAS,qBACTA,MAAS;AAEb;AAEA,SAASC,EAAkBD,GAAyC;AAC9D,MAAAD,EAAqBC,CAAI,GAAG;AAC9B,UAAME,IAAwB,CAAA;AAE9B,YAAQF,GAAM;AAAA,MACZ,KAAK;AACH,QAAAE,EAAQ,OAAO,WACPA,EAAA,yBACLC,GAAK,EAAA,WAAU,kBAAiB,MAAK,mBAAkB,MAAM,GAAI,CAAA;AAEpE;AAAA,MACF,KAAK;AACH,QAAAD,EAAQ,OAAO,WACPA,EAAA,yBACLC,GAAK,EAAA,WAAU,iBAAgB,MAAK,eAAc,MAAM,GAAI,CAAA;AAE/D;AAAA,MACF,KAAK;AACH,QAAAD,EAAQ,OAAO,WACPA,EAAA,yBACLC,GAAK,EAAA,WAAU,iBAAgB,MAAK,aAAY,MAAM,GAAI,CAAA;AAE7D;AAAA,MACF,KAAK;AACH,QAAAD,EAAQ,OAAO,SACPA,EAAA,yBACLC,GAAK,EAAA,WAAU,gBAAe,MAAK,aAAY,MAAM,GAAI,CAAA;AAE5D;AAAA,IACJ;AAEO,WAAAD;AAAA,EACT;AAEA,SAAO,EAAE,MAAAF,EAAK;AAChB;AAEgB,SAAAI,EAAMC,GAAuBH,GAA+B;AAC1E,QAAM,EAAE,MAAAF,IAAO,WAAW,GAAGM,EAAY,IAAIJ,KAAW,IAClDK,IAAiBN,EAAkBD,CAAI;AAE7C,SAAOQ,EAAOH,GAAS,EAAE,GAAGE,GAAgB,GAAGD,GAAa;AAC9D;AAEA,MAAMG,IAAkD,CAAC,EAAE,YAAAC,EAAA,MACzD,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAU;AAAA,IACV,SAASD;AAAA,IAET,UAAC,gBAAAC,EAAAR,GAAA,EAAK,MAAK,cAAa,MAAM,IAAI;AAAA,EAAA;AACpC,GAGWS,IAAgD,CAACC,MAC5D,gBAAAF,EAACG,KAAgB,aAAaL,GAAc,GAAGI,EAAO,CAAA;"}
1
+ {"version":3,"file":"toast.js","sources":["../../../../src/connect/components/toast/toast.tsx"],"sourcesContent":["import {\n ToastContainer as RToastContainer,\n ToastContainerProps,\n ToastContent,\n ToastOptions,\n TypeOptions,\n toast as rToast,\n} from \"react-toastify\";\n\nimport { Icon } from \"@/powerhouse\";\n\nexport type ConnectTypeOptions =\n | \"connect-success\"\n | \"connect-warning\"\n | \"connect-loading\"\n | \"connect-deleted\";\n\nexport type ExtendedTypeOptions = TypeOptions | ConnectTypeOptions;\n\nexport type ConnectToastOptions = Omit<ToastOptions, \"type\"> & {\n type: ExtendedTypeOptions;\n};\n\nexport function isConnectTypeOptions(\n type: ExtendedTypeOptions,\n): type is ConnectTypeOptions {\n return (\n type === \"connect-success\" ||\n type === \"connect-warning\" ||\n type === \"connect-loading\" ||\n type === \"connect-deleted\"\n );\n}\n\nfunction getDefaultOptions(type: ExtendedTypeOptions): ToastOptions {\n if (isConnectTypeOptions(type)) {\n const options: ToastOptions = {};\n\n switch (type) {\n case \"connect-success\":\n options.type = \"success\";\n options.icon = (\n <Icon className=\"text-green-800\" name=\"CheckCircleFill\" size={24} />\n );\n break;\n case \"connect-warning\":\n options.type = \"warning\";\n options.icon = (\n <Icon className=\"text-gray-600\" name=\"WarningFill\" size={24} />\n );\n break;\n case \"connect-loading\":\n options.type = \"default\";\n options.icon = (\n <Icon className=\"text-gray-600\" name=\"ClockFill\" size={24} />\n );\n break;\n case \"connect-deleted\":\n options.type = \"error\";\n options.icon = (\n <Icon className=\"text-red-800\" name=\"TrashFill\" size={24} />\n );\n break;\n }\n\n return options;\n }\n\n return { type };\n}\n\nexport function toast(content: ToastContent, options?: ConnectToastOptions) {\n const { type = \"default\", ...restOptions } = options || {};\n const defaultOptions = getDefaultOptions(type);\n\n return rToast(content, { ...defaultOptions, ...restOptions });\n}\n\nconst CloseButton: ToastContainerProps[\"closeButton\"] = ({ closeToast }) => (\n <button\n className=\"flex items-center text-gray-500 hover:text-gray-600\"\n onClick={closeToast}\n >\n <Icon name=\"XmarkLight\" size={16} />\n </button>\n);\n\nexport const ToastContainer: React.FC<ToastContainerProps> = (props) => (\n <RToastContainer closeButton={CloseButton} {...props} />\n);\n"],"names":["isConnectTypeOptions","type","getDefaultOptions","options","Icon","toast","content","restOptions","defaultOptions","rToast","CloseButton","closeToast","jsx","ToastContainer","props","RToastContainer"],"mappings":";;;AAuBO,SAASA,EACdC,GAC4B;AAC5B,SACEA,MAAS,qBACTA,MAAS,qBACTA,MAAS,qBACTA,MAAS;AAEb;AAEA,SAASC,EAAkBD,GAAyC;AAC9D,MAAAD,EAAqBC,CAAI,GAAG;AAC9B,UAAME,IAAwB,CAAC;AAE/B,YAAQF,GAAM;AAAA,MACZ,KAAK;AACH,QAAAE,EAAQ,OAAO,WACPA,EAAA,yBACLC,GAAK,EAAA,WAAU,kBAAiB,MAAK,mBAAkB,MAAM,GAAI,CAAA;AAEpE;AAAA,MACF,KAAK;AACH,QAAAD,EAAQ,OAAO,WACPA,EAAA,yBACLC,GAAK,EAAA,WAAU,iBAAgB,MAAK,eAAc,MAAM,GAAI,CAAA;AAE/D;AAAA,MACF,KAAK;AACH,QAAAD,EAAQ,OAAO,WACPA,EAAA,yBACLC,GAAK,EAAA,WAAU,iBAAgB,MAAK,aAAY,MAAM,GAAI,CAAA;AAE7D;AAAA,MACF,KAAK;AACH,QAAAD,EAAQ,OAAO,SACPA,EAAA,yBACLC,GAAK,EAAA,WAAU,gBAAe,MAAK,aAAY,MAAM,GAAI,CAAA;AAE5D;AAAA,IAAA;AAGG,WAAAD;AAAA,EAAA;AAGT,SAAO,EAAE,MAAAF,EAAK;AAChB;AAEgB,SAAAI,EAAMC,GAAuBH,GAA+B;AAC1E,QAAM,EAAE,MAAAF,IAAO,WAAW,GAAGM,EAAY,IAAIJ,KAAW,CAAC,GACnDK,IAAiBN,EAAkBD,CAAI;AAE7C,SAAOQ,EAAOH,GAAS,EAAE,GAAGE,GAAgB,GAAGD,GAAa;AAC9D;AAEA,MAAMG,IAAkD,CAAC,EAAE,YAAAC,EAAA,MACzD,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAU;AAAA,IACV,SAASD;AAAA,IAET,UAAC,gBAAAC,EAAAR,GAAA,EAAK,MAAK,cAAa,MAAM,GAAI,CAAA;AAAA,EAAA;AACpC,GAGWS,IAAgD,CAACC,MAC5D,gBAAAF,EAACG,KAAgB,aAAaL,GAAc,GAAGI,EAAO,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"toggle.js","sources":["../../../../src/connect/components/toggle/toggle.tsx"],"sourcesContent":["import { ComponentPropsWithRef, ForwardedRef, forwardRef } from \"react\";\n\ntype ToggleProps = Omit<ComponentPropsWithRef<\"input\">, \"type\">;\n\nexport const Toggle = forwardRef(function Toggle(\n props: ToggleProps,\n ref: ForwardedRef<HTMLInputElement>,\n) {\n return (\n <label className=\"relative cursor-pointer items-center\" htmlFor={props.id}>\n <input\n className=\"peer sr-only\"\n ref={ref}\n type=\"checkbox\"\n value=\"\"\n {...props}\n />\n <div className=\"peer h-6 w-11 rounded-full bg-gray-500 after:absolute after:start-0.5 after:top-0.5 after:size-5 after:rounded-full after:border after:border-none after:bg-gray-50 after:transition-all peer-checked:bg-blue-900 peer-checked:after:translate-x-full peer-focus:outline-none\" />\n </label>\n );\n});\n"],"names":["Toggle","forwardRef","props","ref","jsx"],"mappings":";;AAIO,MAAMA,IAASC,EAAW,SAC/BC,GACAC,GACA;AACA,2BACG,SAAM,EAAA,WAAU,wCAAuC,SAASD,EAAM,IACrE,UAAA;AAAA,IAAA,gBAAAE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,KAAAD;AAAA,QACA,MAAK;AAAA,QACL,OAAM;AAAA,QACL,GAAGD;AAAA,MAAA;AAAA,IACN;AAAA,IACA,gBAAAE,EAAC,OAAI,EAAA,WAAU,gRAAgR,CAAA;AAAA,EACjS,EAAA,CAAA;AAEJ,CAAC;"}
1
+ {"version":3,"file":"toggle.js","sources":["../../../../src/connect/components/toggle/toggle.tsx"],"sourcesContent":["import { ComponentPropsWithRef, ForwardedRef, forwardRef } from \"react\";\n\ntype ToggleProps = Omit<ComponentPropsWithRef<\"input\">, \"type\">;\n\nexport const Toggle = forwardRef(function Toggle(\n props: ToggleProps,\n ref: ForwardedRef<HTMLInputElement>,\n) {\n return (\n <label className=\"relative cursor-pointer items-center\" htmlFor={props.id}>\n <input\n className=\"peer sr-only\"\n ref={ref}\n type=\"checkbox\"\n value=\"\"\n {...props}\n />\n <div className=\"peer h-6 w-11 rounded-full bg-gray-500 after:absolute after:start-0.5 after:top-0.5 after:size-5 after:rounded-full after:border after:border-none after:bg-gray-50 after:transition-all peer-checked:bg-blue-900 peer-checked:after:translate-x-full peer-focus:outline-none\" />\n </label>\n );\n});\n"],"names":["Toggle","forwardRef","props","ref","jsx"],"mappings":";;AAIO,MAAMA,IAASC,EAAW,SAC/BC,GACAC,GACA;AACA,2BACG,SAAM,EAAA,WAAU,wCAAuC,SAASD,EAAM,IACrE,UAAA;AAAA,IAAA,gBAAAE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,KAAAD;AAAA,QACA,MAAK;AAAA,QACL,OAAM;AAAA,QACL,GAAGD;AAAA,MAAA;AAAA,IACN;AAAA,IACA,gBAAAE,EAAC,OAAI,EAAA,WAAU,gRAAgR,CAAA;AAAA,EAAA,GACjS;AAEJ,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sources":["../../../../src/connect/components/tooltip/tooltip.tsx"],"sourcesContent":["import {\n Content,\n Portal,\n Provider,\n Root,\n TooltipProps,\n Trigger,\n} from \"@radix-ui/react-tooltip\";\nimport { ReactNode } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Props = TooltipProps & {\n readonly className?: string;\n readonly content: ReactNode;\n};\n\nexport function Tooltip(props: Props) {\n const {\n children,\n content,\n open,\n defaultOpen,\n onOpenChange,\n className,\n ...rest\n } = props;\n\n return (\n <Root\n defaultOpen={defaultOpen}\n delayDuration={0}\n onOpenChange={onOpenChange}\n open={open}\n >\n <Trigger asChild>{children}</Trigger>\n <Portal>\n <Content\n {...rest}\n className={twMerge(\n \"rounded-lg border border-gray-200 bg-white p-2 text-xs shadow-tooltip\",\n className,\n )}\n >\n {content}\n </Content>\n </Portal>\n </Root>\n );\n}\n\nexport const TooltipProvider = Provider;\n"],"names":["Tooltip","props","children","content","open","defaultOpen","onOpenChange","className","rest","jsxs","Root","jsx","Trigger","Portal","Content","twMerge","TooltipProvider","Provider"],"mappings":";;;AAgBO,SAASA,EAAQC,GAAc;AAC9B,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,MAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EACD,IAAAP;AAGF,SAAA,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAAL;AAAA,MACA,eAAe;AAAA,MACf,cAAAC;AAAA,MACA,MAAAF;AAAA,MAEA,UAAA;AAAA,QAAC,gBAAAO,EAAAC,GAAA,EAAQ,SAAO,IAAE,UAAAV,EAAS,CAAA;AAAA,0BAC1BW,GACC,EAAA,UAAA,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YACE,GAAGN;AAAA,YACJ,WAAWO;AAAA,cACT;AAAA,cACAR;AAAA,YACF;AAAA,YAEC,UAAAJ;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEO,MAAMa,IAAkBC;"}
1
+ {"version":3,"file":"tooltip.js","sources":["../../../../src/connect/components/tooltip/tooltip.tsx"],"sourcesContent":["import {\n Content,\n Portal,\n Provider,\n Root,\n TooltipProps,\n Trigger,\n} from \"@radix-ui/react-tooltip\";\nimport { ReactNode } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Props = TooltipProps & {\n readonly className?: string;\n readonly content: ReactNode;\n};\n\nexport function Tooltip(props: Props) {\n const {\n children,\n content,\n open,\n defaultOpen,\n onOpenChange,\n className,\n ...rest\n } = props;\n\n return (\n <Root\n defaultOpen={defaultOpen}\n delayDuration={0}\n onOpenChange={onOpenChange}\n open={open}\n >\n <Trigger asChild>{children}</Trigger>\n <Portal>\n <Content\n {...rest}\n className={twMerge(\n \"rounded-lg border border-gray-200 bg-white p-2 text-xs shadow-tooltip\",\n className,\n )}\n >\n {content}\n </Content>\n </Portal>\n </Root>\n );\n}\n\nexport const TooltipProvider = Provider;\n"],"names":["Tooltip","props","children","content","open","defaultOpen","onOpenChange","className","rest","jsxs","Root","jsx","Trigger","Portal","Content","twMerge","TooltipProvider","Provider"],"mappings":";;;AAgBO,SAASA,EAAQC,GAAc;AAC9B,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,MAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDP;AAGF,SAAA,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAAL;AAAA,MACA,eAAe;AAAA,MACf,cAAAC;AAAA,MACA,MAAAF;AAAA,MAEA,UAAA;AAAA,QAAC,gBAAAO,EAAAC,GAAA,EAAQ,SAAO,IAAE,UAAAV,EAAS,CAAA;AAAA,0BAC1BW,GACC,EAAA,UAAA,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YACE,GAAGN;AAAA,YACJ,WAAWO;AAAA,cACT;AAAA,cACAR;AAAA,YACF;AAAA,YAEC,UAAAJ;AAAA,UAAA;AAAA,QAAA,EAEL,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAEJ;AAEO,MAAMa,IAAkBC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"drop-indicator.js","sources":["../../../../src/connect/components/tree-view/drop-indicator.tsx"],"sourcesContent":["import { NodeProps, TUiNodesContext, UiNode, useDrop } from \"@/connect\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Props = TUiNodesContext &\n NodeProps & {\n readonly uiNode: UiNode;\n readonly position: \"before\" | \"after\";\n readonly className?: string;\n };\n\nexport function DropIndicator(props: Props) {\n const { uiNode, position, className, getParentNode } = props;\n const parentNode = getParentNode(uiNode);\n const { isDropTarget, dropProps } = useDrop({\n ...props,\n uiNode: parentNode,\n });\n\n const positionStyle = position === \"before\" ? \"top-0\" : \"bottom-0\";\n\n return (\n <div\n {...dropProps}\n className={twMerge(\n \"absolute left-0 z-10 flex h-0.5 w-full\",\n positionStyle,\n isDropTarget && \"bg-blue-800\",\n className,\n )}\n />\n );\n}\n"],"names":["DropIndicator","props","uiNode","position","className","getParentNode","parentNode","isDropTarget","dropProps","useDrop","jsx","twMerge"],"mappings":";;;AAUO,SAASA,EAAcC,GAAc;AAC1C,QAAM,EAAE,QAAAC,GAAQ,UAAAC,GAAU,WAAAC,GAAW,eAAAC,MAAkBJ,GACjDK,IAAaD,EAAcH,CAAM,GACjC,EAAE,cAAAK,GAAc,WAAAC,EAAU,IAAIC,EAAQ;AAAA,IAC1C,GAAGR;AAAA,IACH,QAAQK;AAAA,EAAA,CACT;AAKC,SAAA,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,WAAWG;AAAA,QACT;AAAA,QANgBR,MAAa,WAAW,UAAU;AAAA,QAQlDI,KAAgB;AAAA,QAChBH;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"drop-indicator.js","sources":["../../../../src/connect/components/tree-view/drop-indicator.tsx"],"sourcesContent":["import { NodeProps, TUiNodesContext, UiNode, useDrop } from \"@/connect\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Props = TUiNodesContext &\n NodeProps & {\n readonly uiNode: UiNode;\n readonly position: \"before\" | \"after\";\n readonly className?: string;\n };\n\nexport function DropIndicator(props: Props) {\n const { uiNode, position, className, getParentNode } = props;\n const parentNode = getParentNode(uiNode);\n const { isDropTarget, dropProps } = useDrop({\n ...props,\n uiNode: parentNode,\n });\n\n const positionStyle = position === \"before\" ? \"top-0\" : \"bottom-0\";\n\n return (\n <div\n {...dropProps}\n className={twMerge(\n \"absolute left-0 z-10 flex h-0.5 w-full\",\n positionStyle,\n isDropTarget && \"bg-blue-800\",\n className,\n )}\n />\n );\n}\n"],"names":["DropIndicator","props","uiNode","position","className","getParentNode","parentNode","isDropTarget","dropProps","useDrop","jsx","twMerge"],"mappings":";;;AAUO,SAASA,EAAcC,GAAc;AAC1C,QAAM,EAAE,QAAAC,GAAQ,UAAAC,GAAU,WAAAC,GAAW,eAAAC,EAAkB,IAAAJ,GACjDK,IAAaD,EAAcH,CAAM,GACjC,EAAE,cAAAK,GAAc,WAAAC,EAAU,IAAIC,EAAQ;AAAA,IAC1C,GAAGR;AAAA,IACH,QAAQK;AAAA,EAAA,CACT;AAKC,SAAA,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,WAAWG;AAAA,QACT;AAAA,QANgBR,MAAa,WAAW,UAAU;AAAA,QAQlDI,KAAgB;AAAA,QAChBH;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree-view.js","sources":["../../../../src/connect/components/tree-view/tree-view.tsx"],"sourcesContent":["import {\n ADD_INVALID_TRIGGER,\n ADD_TRIGGER,\n CLOUD,\n CREATE,\n ConnectDropdownMenu,\n DEFAULT,\n DELETE,\n DRIVE,\n DUPLICATE,\n FILE,\n LOCAL,\n NEW_FOLDER,\n NodeInput,\n NodeOption,\n NodeProps,\n PUBLIC,\n READ,\n REMOVE_TRIGGER,\n RENAME,\n SETTINGS,\n TUiNodesContext,\n UiDriveNode,\n UiNode,\n WRITE,\n getDocumentIconSrc,\n nodeOptionsMap,\n useDrag,\n useDrop,\n} from \"@/connect\";\nimport { Icon } from \"@/powerhouse\";\nimport { MouseEventHandler, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { DropIndicator } from \"./drop-indicator\";\n\nexport type ConnectTreeViewProps = TUiNodesContext &\n NodeProps & {\n readonly uiNode: UiNode;\n readonly level?: number;\n readonly customDocumentIconSrc?: string;\n readonly showDriveSettingsModal: (uiDriveNode: UiDriveNode) => void;\n readonly onClick?: MouseEventHandler<HTMLDivElement>;\n };\n\nexport function ConnectTreeView(props: ConnectTreeViewProps) {\n const {\n uiNode,\n nodeOptions,\n level = 0,\n isAllowedToCreateDocuments,\n customDocumentIconSrc,\n setSelectedNode,\n getIsInSelectedNodePath,\n getIsSelected,\n onClick,\n onAddFolder,\n onRenameNode,\n onDuplicateNode,\n onDeleteNode,\n onDeleteDrive,\n showDriveSettingsModal,\n onAddTrigger,\n onRemoveTrigger,\n onAddInvalidTrigger,\n } = props;\n\n const [mode, setMode] = useState<typeof READ | typeof WRITE | typeof CREATE>(\n READ,\n );\n const [touched, setTouched] = useState(false);\n const [internalExpandedState, setInternalExpandedState] = useState(true);\n const [isDropdownMenuOpen, setIsDropdownMenuOpen] = useState(false);\n const { dragProps } = useDrag(props);\n const { isDropTarget, dropProps } = useDrop(props);\n\n const levelPadding = 10;\n const children = uiNode.kind !== FILE ? uiNode.children : null;\n const hasChildren = !!children && children.length > 0;\n const isSelected = getIsSelected(uiNode);\n const isInExpandedNodePath = getIsInSelectedNodePath(uiNode);\n const isExpanded = touched ? internalExpandedState : isInExpandedNodePath;\n const isDrive = uiNode.kind === DRIVE;\n const isLocalDrive = isDrive && uiNode.sharingType === LOCAL;\n const isCloudDrive = isDrive && uiNode.sharingType === CLOUD;\n const isPublicDrive = isDrive && uiNode.sharingType === PUBLIC;\n const isHighlighted = getIsHighlighted();\n const sharedIconStyles = twMerge(\n \"text-gray-600 transition-colors group-hover/node:text-gray-900\",\n isSelected && \"text-gray-900\",\n );\n\n const dropdownMenuHandlers: Partial<Record<NodeOption, () => void>> = {\n [DUPLICATE]: () => onDuplicateNode(uiNode),\n [NEW_FOLDER]: () => {\n setSelectedNode(uiNode);\n setInternalExpandedState(true);\n setMode(CREATE);\n },\n [RENAME]: () => setMode(WRITE),\n [DELETE]: () => {\n if (uiNode.kind === DRIVE) {\n onDeleteDrive(uiNode);\n } else {\n onDeleteNode(uiNode);\n }\n },\n [SETTINGS]: () => {\n if (uiNode.kind !== DRIVE) return;\n showDriveSettingsModal(uiNode);\n },\n [ADD_TRIGGER]: () => onAddTrigger(uiNode.driveId),\n [REMOVE_TRIGGER]: () => onRemoveTrigger(uiNode.driveId),\n [ADD_INVALID_TRIGGER]: () => onAddInvalidTrigger(uiNode.driveId),\n } as const;\n\n const nodeOptionsForKind = nodeOptions[uiNode.sharingType][uiNode.kind];\n\n const dropdownMenuOptions = Object.entries(nodeOptionsMap)\n .map(([id, option]) => ({\n ...option,\n id: id as NodeOption,\n }))\n .filter((option) => nodeOptionsForKind.includes(option.id));\n\n function onDropdownMenuOptionClick(itemId: NodeOption) {\n const handler = dropdownMenuHandlers[itemId];\n if (!handler) {\n console.error(`No handler found for dropdown menu item: ${itemId}`);\n return;\n }\n handler();\n setIsDropdownMenuOpen(false);\n }\n\n function onSubmit(value: string) {\n if (mode === CREATE) {\n onAddFolder(value, uiNode);\n setSelectedNode(uiNode);\n } else {\n onRenameNode(value, uiNode);\n }\n setMode(READ);\n }\n\n const handleClick: MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n onClick?.(event);\n\n if (mode === WRITE) return;\n\n setSelectedNode(uiNode);\n\n if (!touched) {\n setTouched(true);\n return;\n }\n setInternalExpandedState((prevExpanded) => !prevExpanded);\n };\n\n function onCancel() {\n setMode(READ);\n }\n\n function getNodeIcon() {\n if (isPublicDrive) {\n return publicDriveIcon;\n }\n if (isCloudDrive) {\n return cloudDriveIcon;\n }\n if (isLocalDrive) {\n return localDriveIcon;\n }\n if (uiNode.kind === FILE) {\n return documentTypeFileIcon;\n }\n\n return isExpanded ? folderOpenIcon : folderCloseIcon;\n }\n\n function getIsHighlighted() {\n if (isDropTarget) return true;\n if (mode === WRITE || mode === CREATE) return true;\n if (isDropdownMenuOpen) return true;\n if (isSelected) return true;\n return false;\n }\n\n const folderCloseIcon = (\n <Icon className={sharedIconStyles} name=\"FolderClose\" size={20} />\n );\n\n const folderOpenIcon = (\n <Icon className={sharedIconStyles} name=\"FolderOpen\" size={22} />\n );\n\n const documentTypeFileIcon = (\n <img\n alt=\"file icon\"\n className=\"size-7 object-contain\"\n src={getDocumentIconSrc(\n uiNode.kind === FILE ? uiNode.documentType : DEFAULT,\n customDocumentIconSrc,\n )}\n />\n );\n\n const localDriveIcon = <Icon name=\"Hdd\" />;\n\n const cloudDriveIcon = <Icon name=\"Server\" />;\n\n const publicDriveIcon =\n \"icon\" in uiNode && !!uiNode.icon ? (\n <img\n alt=\"drive icon\"\n className=\"size-6 object-contain\"\n src={uiNode.icon}\n />\n ) : (\n <Icon name=\"M\" />\n );\n\n const caretIcon = (\n <Icon\n className={twMerge(\n isExpanded && \"rotate-90\",\n \"ease pointer-events-none transition delay-75\",\n )}\n name=\"Caret\"\n />\n );\n\n const nodeIcon = <div className=\"mr-2 w-5 flex-none\">{getNodeIcon()}</div>;\n\n const readModeContent = (\n <div className=\"group/node grid w-full grid-cols-[1fr,auto] items-center justify-between\">\n <p className=\"mr-1 truncate\">{uiNode.name}</p>\n {isAllowedToCreateDocuments ? (\n <ConnectDropdownMenu\n items={dropdownMenuOptions}\n onItemClick={onDropdownMenuOptionClick}\n onOpenChange={setIsDropdownMenuOpen}\n open={isDropdownMenuOpen}\n >\n <button\n className={twMerge(\n \"hidden group-hover/node:block\",\n isDropdownMenuOpen && \"block\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n setIsDropdownMenuOpen(true);\n }}\n >\n <Icon className=\"text-gray-600\" name=\"VerticalDots\" />\n </button>\n </ConnectDropdownMenu>\n ) : null}\n </div>\n );\n\n const writeModeContent = (\n <NodeInput\n defaultValue={uiNode.name}\n onCancel={onCancel}\n onSubmit={onSubmit}\n />\n );\n\n const createModeContent = (\n <div\n className=\"flex cursor-pointer items-center gap-2 px-1 py-2\"\n style={{\n paddingLeft: `${(level + 1) * levelPadding + 20}px`,\n }}\n >\n {folderOpenIcon}\n <NodeInput\n defaultValue=\"New Folder\"\n onCancel={onCancel}\n onSubmit={onSubmit}\n />\n </div>\n );\n\n return (\n <>\n <div\n {...dragProps}\n {...dropProps}\n className={twMerge(\n \"flex cursor-pointer select-none items-center rounded-lg px-1 py-2 text-gray-800 transition-colors hover:bg-gray-300\",\n isHighlighted && \"bg-gray-300 text-gray-900\",\n )}\n onClick={handleClick}\n // hack to allow rounded corners on item being dragged\n // see: https://github.com/react-dnd/react-dnd/issues/788#issuecomment-367300464\n style={{\n transform: \"translate(0, 0)\",\n position: \"relative\",\n paddingLeft: `${level * levelPadding + (hasChildren ? 0 : 20)}px`,\n }}\n >\n <DropIndicator {...props} position=\"before\" />\n {hasChildren ? caretIcon : null}\n {nodeIcon}\n {mode === READ && readModeContent}\n {mode === WRITE && writeModeContent}\n </div>\n <div\n className={twMerge(\n \"max-h-0 overflow-hidden transition-[max-height] duration-300 ease-in-out\",\n isExpanded && \"max-h-screen\",\n )}\n >\n {mode === CREATE && createModeContent}\n {children?.map((uiNode) => (\n <ConnectTreeView\n {...props}\n key={uiNode.id}\n level={level + 1}\n uiNode={uiNode}\n />\n ))}\n </div>\n </>\n );\n}\n"],"names":["ConnectTreeView","props","uiNode","nodeOptions","level","isAllowedToCreateDocuments","customDocumentIconSrc","setSelectedNode","getIsInSelectedNodePath","getIsSelected","onClick","onAddFolder","onRenameNode","onDuplicateNode","onDeleteNode","onDeleteDrive","showDriveSettingsModal","onAddTrigger","onRemoveTrigger","onAddInvalidTrigger","mode","setMode","useState","READ","touched","setTouched","internalExpandedState","setInternalExpandedState","isDropdownMenuOpen","setIsDropdownMenuOpen","dragProps","useDrag","isDropTarget","dropProps","useDrop","levelPadding","children","FILE","hasChildren","isSelected","isInExpandedNodePath","isExpanded","isDrive","DRIVE","isLocalDrive","LOCAL","isCloudDrive","CLOUD","isPublicDrive","PUBLIC","isHighlighted","getIsHighlighted","sharedIconStyles","twMerge","dropdownMenuHandlers","DUPLICATE","NEW_FOLDER","CREATE","RENAME","WRITE","DELETE","SETTINGS","ADD_TRIGGER","REMOVE_TRIGGER","ADD_INVALID_TRIGGER","nodeOptionsForKind","dropdownMenuOptions","nodeOptionsMap","id","option","onDropdownMenuOptionClick","itemId","handler","onSubmit","value","handleClick","event","prevExpanded","onCancel","getNodeIcon","publicDriveIcon","cloudDriveIcon","localDriveIcon","documentTypeFileIcon","folderOpenIcon","folderCloseIcon","Icon","jsx","getDocumentIconSrc","DEFAULT","caretIcon","nodeIcon","readModeContent","jsxs","ConnectDropdownMenu","e","writeModeContent","NodeInput","createModeContent","Fragment","DropIndicator","createElement"],"mappings":"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"}
1
+ {"version":3,"file":"tree-view.js","sources":["../../../../src/connect/components/tree-view/tree-view.tsx"],"sourcesContent":["import {\n ADD_INVALID_TRIGGER,\n ADD_TRIGGER,\n CLOUD,\n CREATE,\n ConnectDropdownMenu,\n DEFAULT,\n DELETE,\n DRIVE,\n DUPLICATE,\n FILE,\n LOCAL,\n NEW_FOLDER,\n NodeInput,\n NodeOption,\n NodeProps,\n PUBLIC,\n READ,\n REMOVE_TRIGGER,\n RENAME,\n SETTINGS,\n TUiNodesContext,\n UiDriveNode,\n UiNode,\n WRITE,\n getDocumentIconSrc,\n nodeOptionsMap,\n useDrag,\n useDrop,\n} from \"@/connect\";\nimport { Icon } from \"@/powerhouse\";\nimport { MouseEventHandler, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { DropIndicator } from \"./drop-indicator\";\n\nexport type ConnectTreeViewProps = TUiNodesContext &\n NodeProps & {\n readonly uiNode: UiNode;\n readonly level?: number;\n readonly customDocumentIconSrc?: string;\n readonly showDriveSettingsModal: (uiDriveNode: UiDriveNode) => void;\n readonly onClick?: MouseEventHandler<HTMLDivElement>;\n };\n\nexport function ConnectTreeView(props: ConnectTreeViewProps) {\n const {\n uiNode,\n nodeOptions,\n level = 0,\n isAllowedToCreateDocuments,\n customDocumentIconSrc,\n setSelectedNode,\n getIsInSelectedNodePath,\n getIsSelected,\n onClick,\n onAddFolder,\n onRenameNode,\n onDuplicateNode,\n onDeleteNode,\n onDeleteDrive,\n showDriveSettingsModal,\n onAddTrigger,\n onRemoveTrigger,\n onAddInvalidTrigger,\n } = props;\n\n const [mode, setMode] = useState<typeof READ | typeof WRITE | typeof CREATE>(\n READ,\n );\n const [touched, setTouched] = useState(false);\n const [internalExpandedState, setInternalExpandedState] = useState(true);\n const [isDropdownMenuOpen, setIsDropdownMenuOpen] = useState(false);\n const { dragProps } = useDrag(props);\n const { isDropTarget, dropProps } = useDrop(props);\n\n const levelPadding = 10;\n const children = uiNode.kind !== FILE ? uiNode.children : null;\n const hasChildren = !!children && children.length > 0;\n const isSelected = getIsSelected(uiNode);\n const isInExpandedNodePath = getIsInSelectedNodePath(uiNode);\n const isExpanded = touched ? internalExpandedState : isInExpandedNodePath;\n const isDrive = uiNode.kind === DRIVE;\n const isLocalDrive = isDrive && uiNode.sharingType === LOCAL;\n const isCloudDrive = isDrive && uiNode.sharingType === CLOUD;\n const isPublicDrive = isDrive && uiNode.sharingType === PUBLIC;\n const isHighlighted = getIsHighlighted();\n const sharedIconStyles = twMerge(\n \"text-gray-600 transition-colors group-hover/node:text-gray-900\",\n isSelected && \"text-gray-900\",\n );\n\n const dropdownMenuHandlers: Partial<Record<NodeOption, () => void>> = {\n [DUPLICATE]: () => onDuplicateNode(uiNode),\n [NEW_FOLDER]: () => {\n setSelectedNode(uiNode);\n setInternalExpandedState(true);\n setMode(CREATE);\n },\n [RENAME]: () => setMode(WRITE),\n [DELETE]: () => {\n if (uiNode.kind === DRIVE) {\n onDeleteDrive(uiNode);\n } else {\n onDeleteNode(uiNode);\n }\n },\n [SETTINGS]: () => {\n if (uiNode.kind !== DRIVE) return;\n showDriveSettingsModal(uiNode);\n },\n [ADD_TRIGGER]: () => onAddTrigger(uiNode.driveId),\n [REMOVE_TRIGGER]: () => onRemoveTrigger(uiNode.driveId),\n [ADD_INVALID_TRIGGER]: () => onAddInvalidTrigger(uiNode.driveId),\n } as const;\n\n const nodeOptionsForKind = nodeOptions[uiNode.sharingType][uiNode.kind];\n\n const dropdownMenuOptions = Object.entries(nodeOptionsMap)\n .map(([id, option]) => ({\n ...option,\n id: id as NodeOption,\n }))\n .filter((option) => nodeOptionsForKind.includes(option.id));\n\n function onDropdownMenuOptionClick(itemId: NodeOption) {\n const handler = dropdownMenuHandlers[itemId];\n if (!handler) {\n console.error(`No handler found for dropdown menu item: ${itemId}`);\n return;\n }\n handler();\n setIsDropdownMenuOpen(false);\n }\n\n function onSubmit(value: string) {\n if (mode === CREATE) {\n onAddFolder(value, uiNode);\n setSelectedNode(uiNode);\n } else {\n onRenameNode(value, uiNode);\n }\n setMode(READ);\n }\n\n const handleClick: MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n onClick?.(event);\n\n if (mode === WRITE) return;\n\n setSelectedNode(uiNode);\n\n if (!touched) {\n setTouched(true);\n return;\n }\n setInternalExpandedState((prevExpanded) => !prevExpanded);\n };\n\n function onCancel() {\n setMode(READ);\n }\n\n function getNodeIcon() {\n if (isPublicDrive) {\n return publicDriveIcon;\n }\n if (isCloudDrive) {\n return cloudDriveIcon;\n }\n if (isLocalDrive) {\n return localDriveIcon;\n }\n if (uiNode.kind === FILE) {\n return documentTypeFileIcon;\n }\n\n return isExpanded ? folderOpenIcon : folderCloseIcon;\n }\n\n function getIsHighlighted() {\n if (isDropTarget) return true;\n if (mode === WRITE || mode === CREATE) return true;\n if (isDropdownMenuOpen) return true;\n if (isSelected) return true;\n return false;\n }\n\n const folderCloseIcon = (\n <Icon className={sharedIconStyles} name=\"FolderClose\" size={20} />\n );\n\n const folderOpenIcon = (\n <Icon className={sharedIconStyles} name=\"FolderOpen\" size={22} />\n );\n\n const documentTypeFileIcon = (\n <img\n alt=\"file icon\"\n className=\"size-7 object-contain\"\n src={getDocumentIconSrc(\n uiNode.kind === FILE ? uiNode.documentType : DEFAULT,\n customDocumentIconSrc,\n )}\n />\n );\n\n const localDriveIcon = <Icon name=\"Hdd\" />;\n\n const cloudDriveIcon = <Icon name=\"Server\" />;\n\n const publicDriveIcon =\n \"icon\" in uiNode && !!uiNode.icon ? (\n <img\n alt=\"drive icon\"\n className=\"size-6 object-contain\"\n src={uiNode.icon}\n />\n ) : (\n <Icon name=\"M\" />\n );\n\n const caretIcon = (\n <Icon\n className={twMerge(\n isExpanded && \"rotate-90\",\n \"ease pointer-events-none transition delay-75\",\n )}\n name=\"Caret\"\n />\n );\n\n const nodeIcon = <div className=\"mr-2 w-5 flex-none\">{getNodeIcon()}</div>;\n\n const readModeContent = (\n <div className=\"group/node grid w-full grid-cols-[1fr,auto] items-center justify-between\">\n <p className=\"mr-1 truncate\">{uiNode.name}</p>\n {isAllowedToCreateDocuments ? (\n <ConnectDropdownMenu\n items={dropdownMenuOptions}\n onItemClick={onDropdownMenuOptionClick}\n onOpenChange={setIsDropdownMenuOpen}\n open={isDropdownMenuOpen}\n >\n <button\n className={twMerge(\n \"hidden group-hover/node:block\",\n isDropdownMenuOpen && \"block\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n setIsDropdownMenuOpen(true);\n }}\n >\n <Icon className=\"text-gray-600\" name=\"VerticalDots\" />\n </button>\n </ConnectDropdownMenu>\n ) : null}\n </div>\n );\n\n const writeModeContent = (\n <NodeInput\n defaultValue={uiNode.name}\n onCancel={onCancel}\n onSubmit={onSubmit}\n />\n );\n\n const createModeContent = (\n <div\n className=\"flex cursor-pointer items-center gap-2 px-1 py-2\"\n style={{\n paddingLeft: `${(level + 1) * levelPadding + 20}px`,\n }}\n >\n {folderOpenIcon}\n <NodeInput\n defaultValue=\"New Folder\"\n onCancel={onCancel}\n onSubmit={onSubmit}\n />\n </div>\n );\n\n return (\n <>\n <div\n {...dragProps}\n {...dropProps}\n className={twMerge(\n \"flex cursor-pointer select-none items-center rounded-lg px-1 py-2 text-gray-800 transition-colors hover:bg-gray-300\",\n isHighlighted && \"bg-gray-300 text-gray-900\",\n )}\n onClick={handleClick}\n // hack to allow rounded corners on item being dragged\n // see: https://github.com/react-dnd/react-dnd/issues/788#issuecomment-367300464\n style={{\n transform: \"translate(0, 0)\",\n position: \"relative\",\n paddingLeft: `${level * levelPadding + (hasChildren ? 0 : 20)}px`,\n }}\n >\n <DropIndicator {...props} position=\"before\" />\n {hasChildren ? caretIcon : null}\n {nodeIcon}\n {mode === READ && readModeContent}\n {mode === WRITE && writeModeContent}\n </div>\n <div\n className={twMerge(\n \"max-h-0 overflow-hidden transition-[max-height] duration-300 ease-in-out\",\n isExpanded && \"max-h-screen\",\n )}\n >\n {mode === CREATE && createModeContent}\n {children?.map((uiNode) => (\n <ConnectTreeView\n {...props}\n key={uiNode.id}\n level={level + 1}\n uiNode={uiNode}\n />\n ))}\n </div>\n </>\n );\n}\n"],"names":["ConnectTreeView","props","uiNode","nodeOptions","level","isAllowedToCreateDocuments","customDocumentIconSrc","setSelectedNode","getIsInSelectedNodePath","getIsSelected","onClick","onAddFolder","onRenameNode","onDuplicateNode","onDeleteNode","onDeleteDrive","showDriveSettingsModal","onAddTrigger","onRemoveTrigger","onAddInvalidTrigger","mode","setMode","useState","READ","touched","setTouched","internalExpandedState","setInternalExpandedState","isDropdownMenuOpen","setIsDropdownMenuOpen","dragProps","useDrag","isDropTarget","dropProps","useDrop","levelPadding","children","FILE","hasChildren","isSelected","isInExpandedNodePath","isExpanded","isDrive","DRIVE","isLocalDrive","LOCAL","isCloudDrive","CLOUD","isPublicDrive","PUBLIC","isHighlighted","getIsHighlighted","sharedIconStyles","twMerge","dropdownMenuHandlers","DUPLICATE","NEW_FOLDER","CREATE","RENAME","WRITE","DELETE","SETTINGS","ADD_TRIGGER","REMOVE_TRIGGER","ADD_INVALID_TRIGGER","nodeOptionsForKind","dropdownMenuOptions","nodeOptionsMap","id","option","onDropdownMenuOptionClick","itemId","handler","onSubmit","value","handleClick","event","prevExpanded","onCancel","getNodeIcon","publicDriveIcon","cloudDriveIcon","localDriveIcon","documentTypeFileIcon","folderOpenIcon","folderCloseIcon","Icon","jsx","getDocumentIconSrc","DEFAULT","caretIcon","nodeIcon","readModeContent","jsxs","ConnectDropdownMenu","e","writeModeContent","NodeInput","createModeContent","Fragment","DropIndicator","createElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sources":["../../../src/connect/constants/options.tsx"],"sourcesContent":["import {\n CLOUD,\n DebugNodeOption,\n LOCAL,\n NodeOption,\n NormalNodeOption,\n OptionMetadata,\n PUBLIC,\n} from \"@/connect\";\nimport { Icon } from \"@/powerhouse\";\n\nexport const NEW = \"NEW\";\nexport const DUPLICATE = \"DUPLICATE\";\nexport const NEW_FOLDER = \"NEW_FOLDER\";\nexport const RENAME = \"RENAME\";\nexport const DELETE = \"DELETE\";\nexport const SETTINGS = \"SETTINGS\";\nexport const REMOVE_TRIGGER = \"REMOVE_TRIGGER\";\nexport const ADD_TRIGGER = \"ADD_TRIGGER\";\nexport const ADD_INVALID_TRIGGER = \"ADD_INVALID_TRIGGER\";\n\nexport const defaultDriveOptions: NodeOption[] = [\n NEW_FOLDER,\n RENAME,\n SETTINGS,\n] as const;\n\nexport const defaultFileOptions: NodeOption[] = [\n RENAME,\n DELETE,\n DUPLICATE,\n] as const;\n\nexport const defaultFolderOptions: NodeOption[] = [\n NEW_FOLDER,\n RENAME,\n DELETE,\n DUPLICATE,\n] as const;\n\nexport const normalNodeOptions = [\n DUPLICATE,\n NEW_FOLDER,\n RENAME,\n DELETE,\n SETTINGS,\n] as const;\n\nexport const debugNodeOptions = [\n ADD_TRIGGER,\n REMOVE_TRIGGER,\n ADD_INVALID_TRIGGER,\n] as const;\n\nexport const nodeOptions = [...normalNodeOptions, ...debugNodeOptions] as const;\n\nexport const sharingTypeOptions = [\n {\n value: LOCAL,\n icon: <Icon name=\"Lock\" />,\n description: \"Only available to you\",\n },\n {\n value: CLOUD,\n icon: <Icon name=\"People\" />,\n description: \"Only available to people in this drive\",\n },\n {\n value: PUBLIC,\n icon: <Icon name=\"Globe\" />,\n description: \"Available to everyone\",\n disabled: true,\n },\n] as const;\n\nexport const locationInfoByLocation = {\n CLOUD: {\n title: \"Secure cloud\",\n description: \"End to end encryption between members.\",\n icon: <Icon name=\"Lock\" />,\n },\n LOCAL: {\n title: \"Local\",\n description: \"Private and only available to you.\",\n icon: <Icon name=\"Hdd\" />,\n },\n SWITCHBOARD: {\n title: \"Switchboard\",\n description: \"Public and available to everyone.\",\n icon: <Icon name=\"Drive\" />,\n },\n} as const;\n\nexport const debugNodeOptionsMap: Record<DebugNodeOption, OptionMetadata> = {\n [ADD_TRIGGER]: {\n label: \"Add Trigger\",\n icon: <Icon className=\"text-orange-900\" name=\"Plus\" />,\n },\n [REMOVE_TRIGGER]: {\n label: \"Remove Trigger\",\n icon: <Icon className=\"text-orange-900\" name=\"Xmark\" />,\n },\n [ADD_INVALID_TRIGGER]: {\n label: \"Add Trigger\",\n icon: <Icon className=\"text-orange-900\" name=\"Exclamation\" />,\n },\n} as const;\n\nexport const normalNodeOptionsMap: Record<NormalNodeOption, OptionMetadata> = {\n [DUPLICATE]: {\n label: \"Duplicate\",\n icon: <Icon name=\"FilesEarmark\" />,\n },\n [NEW_FOLDER]: {\n label: \"New Folder\",\n icon: <Icon name=\"FolderPlus\" />,\n },\n [RENAME]: {\n label: \"Rename\",\n icon: <Icon name=\"Pencil\" />,\n },\n [DELETE]: {\n label: \"Delete\",\n icon: <Icon name=\"Trash\" />,\n className: \"text-red-900\",\n },\n [SETTINGS]: {\n label: \"Settings\",\n icon: <Icon name=\"Gear\" />,\n },\n} as const;\n\nexport const nodeOptionsMap: Record<NodeOption, OptionMetadata> = {\n ...debugNodeOptionsMap,\n ...normalNodeOptionsMap,\n} as const;\n"],"names":["NEW","DUPLICATE","NEW_FOLDER","RENAME","DELETE","SETTINGS","REMOVE_TRIGGER","ADD_TRIGGER","ADD_INVALID_TRIGGER","defaultDriveOptions","defaultFileOptions","defaultFolderOptions","normalNodeOptions","debugNodeOptions","nodeOptions","sharingTypeOptions","LOCAL","jsx","Icon","CLOUD","PUBLIC","locationInfoByLocation","debugNodeOptionsMap","normalNodeOptionsMap","nodeOptionsMap"],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sources":["../../../src/connect/constants/options.tsx"],"sourcesContent":["import {\n CLOUD,\n DebugNodeOption,\n LOCAL,\n NodeOption,\n NormalNodeOption,\n OptionMetadata,\n PUBLIC,\n} from \"@/connect\";\nimport { Icon } from \"@/powerhouse\";\n\nexport const NEW = \"NEW\";\nexport const DUPLICATE = \"DUPLICATE\";\nexport const NEW_FOLDER = \"NEW_FOLDER\";\nexport const RENAME = \"RENAME\";\nexport const DELETE = \"DELETE\";\nexport const SETTINGS = \"SETTINGS\";\nexport const REMOVE_TRIGGER = \"REMOVE_TRIGGER\";\nexport const ADD_TRIGGER = \"ADD_TRIGGER\";\nexport const ADD_INVALID_TRIGGER = \"ADD_INVALID_TRIGGER\";\n\nexport const defaultDriveOptions: NodeOption[] = [\n NEW_FOLDER,\n RENAME,\n SETTINGS,\n] as const;\n\nexport const defaultFileOptions: NodeOption[] = [\n RENAME,\n DELETE,\n DUPLICATE,\n] as const;\n\nexport const defaultFolderOptions: NodeOption[] = [\n NEW_FOLDER,\n RENAME,\n DELETE,\n DUPLICATE,\n] as const;\n\nexport const normalNodeOptions = [\n DUPLICATE,\n NEW_FOLDER,\n RENAME,\n DELETE,\n SETTINGS,\n] as const;\n\nexport const debugNodeOptions = [\n ADD_TRIGGER,\n REMOVE_TRIGGER,\n ADD_INVALID_TRIGGER,\n] as const;\n\nexport const nodeOptions = [...normalNodeOptions, ...debugNodeOptions] as const;\n\nexport const sharingTypeOptions = [\n {\n value: LOCAL,\n icon: <Icon name=\"Lock\" />,\n description: \"Only available to you\",\n },\n {\n value: CLOUD,\n icon: <Icon name=\"People\" />,\n description: \"Only available to people in this drive\",\n },\n {\n value: PUBLIC,\n icon: <Icon name=\"Globe\" />,\n description: \"Available to everyone\",\n disabled: true,\n },\n] as const;\n\nexport const locationInfoByLocation = {\n CLOUD: {\n title: \"Secure cloud\",\n description: \"End to end encryption between members.\",\n icon: <Icon name=\"Lock\" />,\n },\n LOCAL: {\n title: \"Local\",\n description: \"Private and only available to you.\",\n icon: <Icon name=\"Hdd\" />,\n },\n SWITCHBOARD: {\n title: \"Switchboard\",\n description: \"Public and available to everyone.\",\n icon: <Icon name=\"Drive\" />,\n },\n} as const;\n\nexport const debugNodeOptionsMap: Record<DebugNodeOption, OptionMetadata> = {\n [ADD_TRIGGER]: {\n label: \"Add Trigger\",\n icon: <Icon className=\"text-orange-900\" name=\"Plus\" />,\n },\n [REMOVE_TRIGGER]: {\n label: \"Remove Trigger\",\n icon: <Icon className=\"text-orange-900\" name=\"Xmark\" />,\n },\n [ADD_INVALID_TRIGGER]: {\n label: \"Add Trigger\",\n icon: <Icon className=\"text-orange-900\" name=\"Exclamation\" />,\n },\n} as const;\n\nexport const normalNodeOptionsMap: Record<NormalNodeOption, OptionMetadata> = {\n [DUPLICATE]: {\n label: \"Duplicate\",\n icon: <Icon name=\"FilesEarmark\" />,\n },\n [NEW_FOLDER]: {\n label: \"New Folder\",\n icon: <Icon name=\"FolderPlus\" />,\n },\n [RENAME]: {\n label: \"Rename\",\n icon: <Icon name=\"Pencil\" />,\n },\n [DELETE]: {\n label: \"Delete\",\n icon: <Icon name=\"Trash\" />,\n className: \"text-red-900\",\n },\n [SETTINGS]: {\n label: \"Settings\",\n icon: <Icon name=\"Gear\" />,\n },\n} as const;\n\nexport const nodeOptionsMap: Record<NodeOption, OptionMetadata> = {\n ...debugNodeOptionsMap,\n ...normalNodeOptionsMap,\n} as const;\n"],"names":["NEW","DUPLICATE","NEW_FOLDER","RENAME","DELETE","SETTINGS","REMOVE_TRIGGER","ADD_TRIGGER","ADD_INVALID_TRIGGER","defaultDriveOptions","defaultFileOptions","defaultFolderOptions","normalNodeOptions","debugNodeOptions","nodeOptions","sharingTypeOptions","LOCAL","jsx","Icon","CLOUD","PUBLIC","locationInfoByLocation","debugNodeOptionsMap","normalNodeOptionsMap","nodeOptionsMap"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UiNodesContext.js","sources":["../../../src/connect/context/UiNodesContext.tsx"],"sourcesContent":["import { DRIVE, FILE, UiDriveNode, UiFolderNode, UiNode } from \"@/connect\";\nimport {\n createContext,\n FC,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nexport type TUiNodesContext = {\n driveNodes: UiDriveNode[];\n selectedNode: UiNode | null;\n selectedNodePath: UiNode[];\n selectedDriveNode: UiDriveNode | null;\n selectedParentNode: UiDriveNode | UiFolderNode | null;\n setDriveNodes: (driveNodes: UiDriveNode[]) => void;\n setSelectedNode: (node: UiNode | null) => void;\n getNodeById: (id: string) => UiNode | null;\n getParentNode: (uiNode: UiNode) => UiNode | null;\n getIsSelected: (node: UiNode) => boolean;\n getIsInSelectedNodePath: (node: UiNode) => boolean;\n getSiblings: (node: UiNode) => UiNode[];\n};\n\nconst defaultTreeItemContextValue: TUiNodesContext = {\n driveNodes: [],\n selectedNode: null,\n selectedNodePath: [],\n selectedDriveNode: null,\n selectedParentNode: null,\n setDriveNodes: () => {},\n setSelectedNode: () => {},\n getNodeById: () => null,\n getParentNode: () => null,\n getIsSelected: () => false,\n getIsInSelectedNodePath: () => false,\n getSiblings: () => [],\n};\n\nexport const UiNodesContext = createContext<TUiNodesContext>(\n defaultTreeItemContextValue,\n);\n\nexport interface UiNodesContextProviderProps {\n readonly children: ReactNode;\n}\n\nexport const UiNodesContextProvider: FC<UiNodesContextProviderProps> = ({\n children,\n}) => {\n const [driveNodes, setDriveNodes] = useState<UiDriveNode[]>([]);\n const [selectedNode, _setSelectedNode] = useState<UiNode | null>(null);\n const [selectedNodePath, setSelectedNodePath] = useState<UiNode[]>([]);\n const [selectedDriveNode, setSelectedDriveNode] =\n useState<UiDriveNode | null>(null);\n const [selectedParentNode, setSelectedParentNode] = useState<\n UiDriveNode | UiFolderNode | null\n >(null);\n\n /*\n This internal function that uses `driveNodes` as an argument to prevent stale objects being used in the closure.\n External `getNodeById` for use by other components doesn't need to do this because it is only invoked by external functions, and can therefore omit this argument for convenience.\n */\n const _getNodeById = useCallback(\n (id: string, driveNodes: UiDriveNode[] | null) => {\n if (!driveNodes?.length) return null;\n\n for (const driveNode of driveNodes) {\n if (driveNode.id === id) return driveNode;\n\n const node = driveNode.nodeMap[id];\n\n if (node) return node;\n }\n\n return null;\n },\n [],\n );\n\n const getNodeById = useCallback(\n (id: string) => {\n return _getNodeById(id, driveNodes);\n },\n [_getNodeById, driveNodes],\n );\n\n const getSelectedDriveNode = useCallback(\n (selectedNode: UiNode | null, driveNodes: UiDriveNode[] | null) => {\n if (!selectedNode || !driveNodes?.length) return null;\n\n if (selectedNode.kind === DRIVE) return selectedNode;\n\n return driveNodes.find((d) => d.id === selectedNode.driveId) ?? null;\n },\n [],\n );\n\n /*\n This internal function that uses `driveNodes` as an argument to prevent stale objects being used in the closure.\n External `getNodeById` for use by other components doesn't need to do this because it is only invoked by external functions, and can therefore omit this argument for convenience.\n */\n const _getParentNode = useCallback(\n (node: UiNode, driveNodes: UiDriveNode[] | null) => {\n if (!driveNodes?.length || node.kind === DRIVE) return null;\n\n const parentNode = _getNodeById(node.parentFolder, driveNodes);\n\n if (!parentNode) return null;\n\n if (parentNode.kind === FILE) {\n throw new Error(\n `Parent node ${node.parentFolder} is a file, not a folder`,\n );\n }\n\n return parentNode;\n },\n [_getNodeById],\n );\n\n const getParentNode = useCallback(\n (uiNode: UiNode) => {\n return _getParentNode(uiNode, driveNodes);\n },\n [_getParentNode, driveNodes],\n );\n\n const getSelectedParentNode = useCallback(\n (selectedNode: UiNode | null, driveNodes: UiDriveNode[] | null) => {\n if (!selectedNode || !driveNodes?.length) return null;\n\n if (selectedNode.kind === FILE)\n return _getParentNode(selectedNode, driveNodes);\n\n return selectedNode;\n },\n [_getParentNode],\n );\n\n const getPathToNode = useCallback(\n (uiNode: UiNode, driveNodes: UiDriveNode[]) => {\n const path: UiNode[] = [];\n\n const driveNode = driveNodes.find((d) => d.id === uiNode.driveId);\n\n let current: UiNode | undefined = uiNode;\n\n while (current) {\n path.push(current);\n current =\n current.parentFolder === driveNode?.id\n ? driveNode\n : current.parentFolder\n ? driveNode?.nodeMap[current.parentFolder]\n : undefined;\n }\n\n return path.reverse();\n },\n [],\n );\n\n /*\n _setSelectedNode from `useState` is kept internal so that we can instead expose this function, which also manages the selectedDriveNode, selectedParentNode, and selectedNodePath states.\n */\n const setSelectedNode = useCallback(\n (uiNode: UiNode | null) => {\n if (!uiNode) return;\n\n _setSelectedNode(uiNode);\n setSelectedDriveNode(getSelectedDriveNode(uiNode, driveNodes));\n setSelectedParentNode(getSelectedParentNode(uiNode, driveNodes));\n\n if (uiNode.kind === DRIVE) {\n setSelectedNodePath([uiNode]);\n return;\n }\n\n const newSelectedNodePath = getPathToNode(uiNode, driveNodes);\n\n setSelectedNodePath(newSelectedNodePath);\n },\n [driveNodes, getPathToNode, getSelectedDriveNode, getSelectedParentNode],\n );\n\n const getIsSelected = useCallback(\n (node: UiNode) => {\n return selectedNode === node;\n },\n [selectedNode],\n );\n\n const getIsInSelectedNodePath = useCallback(\n (node: UiNode) => {\n if (node.kind === FILE) return false;\n return selectedNodePath.includes(node);\n },\n [selectedNodePath],\n );\n\n const getSiblings = useCallback(\n (node: UiNode) => {\n if (node.kind === DRIVE) {\n console.warn(\n \"Drive nodes do not have siblings, as they are top-level nodes\",\n );\n return [];\n }\n\n const parent = _getParentNode(node, driveNodes);\n\n return parent?.children ?? [];\n },\n [_getParentNode, driveNodes],\n );\n\n useEffect(() => {\n if (!selectedNode) return;\n\n const updatedSelectedNode = _getNodeById(selectedNode.id, driveNodes);\n\n if (updatedSelectedNode) {\n setSelectedNode(updatedSelectedNode);\n }\n }, [driveNodes, _getNodeById, selectedNode, setSelectedNode]);\n\n const value = useMemo(\n () => ({\n driveNodes,\n selectedNode,\n selectedNodePath,\n selectedDriveNode,\n selectedParentNode,\n getNodeById,\n getParentNode,\n setDriveNodes,\n setSelectedNode,\n getIsSelected,\n getIsInSelectedNodePath,\n getSiblings,\n }),\n [\n driveNodes,\n selectedNode,\n selectedNodePath,\n selectedDriveNode,\n selectedParentNode,\n getNodeById,\n getParentNode,\n setSelectedNode,\n getIsSelected,\n getIsInSelectedNodePath,\n getSiblings,\n ],\n );\n\n return (\n <UiNodesContext.Provider value={value}>{children}</UiNodesContext.Provider>\n );\n};\n\nexport const useUiNodesContext = () => {\n const contextValue = useContext(UiNodesContext);\n return contextValue;\n};\n"],"names":["defaultTreeItemContextValue","UiNodesContext","createContext","UiNodesContextProvider","children","driveNodes","setDriveNodes","useState","selectedNode","_setSelectedNode","selectedNodePath","setSelectedNodePath","selectedDriveNode","setSelectedDriveNode","selectedParentNode","setSelectedParentNode","_getNodeById","useCallback","id","driveNode","node","getNodeById","getSelectedDriveNode","DRIVE","d","_getParentNode","parentNode","FILE","getParentNode","uiNode","getSelectedParentNode","getPathToNode","path","current","setSelectedNode","newSelectedNodePath","getIsSelected","getIsInSelectedNodePath","getSiblings","parent","useEffect","updatedSelectedNode","value","useMemo","jsx","useUiNodesContext","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"UiNodesContext.js","sources":["../../../src/connect/context/UiNodesContext.tsx"],"sourcesContent":["import { DRIVE, FILE, UiDriveNode, UiFolderNode, UiNode } from \"@/connect\";\nimport {\n createContext,\n FC,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nexport type TUiNodesContext = {\n driveNodes: UiDriveNode[];\n selectedNode: UiNode | null;\n selectedNodePath: UiNode[];\n selectedDriveNode: UiDriveNode | null;\n selectedParentNode: UiDriveNode | UiFolderNode | null;\n setDriveNodes: (driveNodes: UiDriveNode[]) => void;\n setSelectedNode: (node: UiNode | null) => void;\n getNodeById: (id: string) => UiNode | null;\n getParentNode: (uiNode: UiNode) => UiNode | null;\n getIsSelected: (node: UiNode) => boolean;\n getIsInSelectedNodePath: (node: UiNode) => boolean;\n getSiblings: (node: UiNode) => UiNode[];\n};\n\nconst defaultTreeItemContextValue: TUiNodesContext = {\n driveNodes: [],\n selectedNode: null,\n selectedNodePath: [],\n selectedDriveNode: null,\n selectedParentNode: null,\n setDriveNodes: () => {},\n setSelectedNode: () => {},\n getNodeById: () => null,\n getParentNode: () => null,\n getIsSelected: () => false,\n getIsInSelectedNodePath: () => false,\n getSiblings: () => [],\n};\n\nexport const UiNodesContext = createContext<TUiNodesContext>(\n defaultTreeItemContextValue,\n);\n\nexport interface UiNodesContextProviderProps {\n readonly children: ReactNode;\n}\n\nexport const UiNodesContextProvider: FC<UiNodesContextProviderProps> = ({\n children,\n}) => {\n const [driveNodes, setDriveNodes] = useState<UiDriveNode[]>([]);\n const [selectedNode, _setSelectedNode] = useState<UiNode | null>(null);\n const [selectedNodePath, setSelectedNodePath] = useState<UiNode[]>([]);\n const [selectedDriveNode, setSelectedDriveNode] =\n useState<UiDriveNode | null>(null);\n const [selectedParentNode, setSelectedParentNode] = useState<\n UiDriveNode | UiFolderNode | null\n >(null);\n\n /*\n This internal function that uses `driveNodes` as an argument to prevent stale objects being used in the closure.\n External `getNodeById` for use by other components doesn't need to do this because it is only invoked by external functions, and can therefore omit this argument for convenience.\n */\n const _getNodeById = useCallback(\n (id: string, driveNodes: UiDriveNode[] | null) => {\n if (!driveNodes?.length) return null;\n\n for (const driveNode of driveNodes) {\n if (driveNode.id === id) return driveNode;\n\n const node = driveNode.nodeMap[id];\n\n if (node) return node;\n }\n\n return null;\n },\n [],\n );\n\n const getNodeById = useCallback(\n (id: string) => {\n return _getNodeById(id, driveNodes);\n },\n [_getNodeById, driveNodes],\n );\n\n const getSelectedDriveNode = useCallback(\n (selectedNode: UiNode | null, driveNodes: UiDriveNode[] | null) => {\n if (!selectedNode || !driveNodes?.length) return null;\n\n if (selectedNode.kind === DRIVE) return selectedNode;\n\n return driveNodes.find((d) => d.id === selectedNode.driveId) ?? null;\n },\n [],\n );\n\n /*\n This internal function that uses `driveNodes` as an argument to prevent stale objects being used in the closure.\n External `getNodeById` for use by other components doesn't need to do this because it is only invoked by external functions, and can therefore omit this argument for convenience.\n */\n const _getParentNode = useCallback(\n (node: UiNode, driveNodes: UiDriveNode[] | null) => {\n if (!driveNodes?.length || node.kind === DRIVE) return null;\n\n const parentNode = _getNodeById(node.parentFolder, driveNodes);\n\n if (!parentNode) return null;\n\n if (parentNode.kind === FILE) {\n throw new Error(\n `Parent node ${node.parentFolder} is a file, not a folder`,\n );\n }\n\n return parentNode;\n },\n [_getNodeById],\n );\n\n const getParentNode = useCallback(\n (uiNode: UiNode) => {\n return _getParentNode(uiNode, driveNodes);\n },\n [_getParentNode, driveNodes],\n );\n\n const getSelectedParentNode = useCallback(\n (selectedNode: UiNode | null, driveNodes: UiDriveNode[] | null) => {\n if (!selectedNode || !driveNodes?.length) return null;\n\n if (selectedNode.kind === FILE)\n return _getParentNode(selectedNode, driveNodes);\n\n return selectedNode;\n },\n [_getParentNode],\n );\n\n const getPathToNode = useCallback(\n (uiNode: UiNode, driveNodes: UiDriveNode[]) => {\n const path: UiNode[] = [];\n\n const driveNode = driveNodes.find((d) => d.id === uiNode.driveId);\n\n let current: UiNode | undefined = uiNode;\n\n while (current) {\n path.push(current);\n current =\n current.parentFolder === driveNode?.id\n ? driveNode\n : current.parentFolder\n ? driveNode?.nodeMap[current.parentFolder]\n : undefined;\n }\n\n return path.reverse();\n },\n [],\n );\n\n /*\n _setSelectedNode from `useState` is kept internal so that we can instead expose this function, which also manages the selectedDriveNode, selectedParentNode, and selectedNodePath states.\n */\n const setSelectedNode = useCallback(\n (uiNode: UiNode | null) => {\n if (!uiNode) return;\n\n _setSelectedNode(uiNode);\n setSelectedDriveNode(getSelectedDriveNode(uiNode, driveNodes));\n setSelectedParentNode(getSelectedParentNode(uiNode, driveNodes));\n\n if (uiNode.kind === DRIVE) {\n setSelectedNodePath([uiNode]);\n return;\n }\n\n const newSelectedNodePath = getPathToNode(uiNode, driveNodes);\n\n setSelectedNodePath(newSelectedNodePath);\n },\n [driveNodes, getPathToNode, getSelectedDriveNode, getSelectedParentNode],\n );\n\n const getIsSelected = useCallback(\n (node: UiNode) => {\n return selectedNode === node;\n },\n [selectedNode],\n );\n\n const getIsInSelectedNodePath = useCallback(\n (node: UiNode) => {\n if (node.kind === FILE) return false;\n return selectedNodePath.includes(node);\n },\n [selectedNodePath],\n );\n\n const getSiblings = useCallback(\n (node: UiNode) => {\n if (node.kind === DRIVE) {\n console.warn(\n \"Drive nodes do not have siblings, as they are top-level nodes\",\n );\n return [];\n }\n\n const parent = _getParentNode(node, driveNodes);\n\n return parent?.children ?? [];\n },\n [_getParentNode, driveNodes],\n );\n\n useEffect(() => {\n if (!selectedNode) return;\n\n const updatedSelectedNode = _getNodeById(selectedNode.id, driveNodes);\n\n if (updatedSelectedNode) {\n setSelectedNode(updatedSelectedNode);\n }\n }, [driveNodes, _getNodeById, selectedNode, setSelectedNode]);\n\n const value = useMemo(\n () => ({\n driveNodes,\n selectedNode,\n selectedNodePath,\n selectedDriveNode,\n selectedParentNode,\n getNodeById,\n getParentNode,\n setDriveNodes,\n setSelectedNode,\n getIsSelected,\n getIsInSelectedNodePath,\n getSiblings,\n }),\n [\n driveNodes,\n selectedNode,\n selectedNodePath,\n selectedDriveNode,\n selectedParentNode,\n getNodeById,\n getParentNode,\n setSelectedNode,\n getIsSelected,\n getIsInSelectedNodePath,\n getSiblings,\n ],\n );\n\n return (\n <UiNodesContext.Provider value={value}>{children}</UiNodesContext.Provider>\n );\n};\n\nexport const useUiNodesContext = () => {\n const contextValue = useContext(UiNodesContext);\n return contextValue;\n};\n"],"names":["defaultTreeItemContextValue","UiNodesContext","createContext","UiNodesContextProvider","children","driveNodes","setDriveNodes","useState","selectedNode","_setSelectedNode","selectedNodePath","setSelectedNodePath","selectedDriveNode","setSelectedDriveNode","selectedParentNode","setSelectedParentNode","_getNodeById","useCallback","id","driveNode","node","getNodeById","getSelectedDriveNode","DRIVE","d","_getParentNode","parentNode","FILE","getParentNode","uiNode","getSelectedParentNode","getPathToNode","path","current","setSelectedNode","newSelectedNodePath","getIsSelected","getIsInSelectedNodePath","getSiblings","parent","useEffect","updatedSelectedNode","value","useMemo","jsx","useUiNodesContext","useContext"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WagmiContext.js","sources":["../../../src/connect/context/WagmiContext.tsx"],"sourcesContent":["import { wagmiConfig as defaultWagmiConfig } from \"@/services\";\nimport {\n QueryClient,\n QueryClientProvider,\n QueryClientProviderProps,\n} from \"@tanstack/react-query\";\nimport { ReactNode } from \"react\";\nimport { WagmiProvider, WagmiProviderProps } from \"wagmi\";\n\nconst defaultQueryClient = new QueryClient();\n\ntype Props = {\n readonly wagmiProviderProps?: WagmiProviderProps;\n readonly queryClientProviderProps?: QueryClientProviderProps;\n readonly children: ReactNode;\n};\nexport function WagmiContext(props: Props) {\n const { children, wagmiProviderProps, queryClientProviderProps } = props;\n const { config = defaultWagmiConfig, ...wagmiProps } =\n wagmiProviderProps ?? {};\n const { client = defaultQueryClient, ...queryClientProps } =\n queryClientProviderProps ?? {};\n\n return (\n <WagmiProvider config={config} {...wagmiProps}>\n <QueryClientProvider client={client} {...queryClientProps}>\n {children}\n </QueryClientProvider>\n </WagmiProvider>\n );\n}\n"],"names":["defaultQueryClient","QueryClient","WagmiContext","props","children","wagmiProviderProps","queryClientProviderProps","config","defaultWagmiConfig","wagmiProps","client","queryClientProps","jsx","WagmiProvider","QueryClientProvider"],"mappings":";;;;AASA,MAAMA,IAAqB,IAAIC;AAOxB,SAASC,EAAaC,GAAc;AACzC,QAAM,EAAE,UAAAC,GAAU,oBAAAC,GAAoB,0BAAAC,EAAA,IAA6BH,GAC7D,EAAE,QAAAI,IAASC,GAAoB,GAAGC,EAAW,IACjDJ,KAAsB,IAClB,EAAE,QAAAK,IAASV,GAAoB,GAAGW,EAAiB,IACvDL,KAA4B;AAG5B,SAAA,gBAAAM,EAACC,GAAc,EAAA,QAAAN,GAAiB,GAAGE,GACjC,UAAC,gBAAAG,EAAAE,GAAA,EAAoB,QAAAJ,GAAiB,GAAGC,GACtC,UAAAP,EACH,CAAA,EACF,CAAA;AAEJ;"}
1
+ {"version":3,"file":"WagmiContext.js","sources":["../../../src/connect/context/WagmiContext.tsx"],"sourcesContent":["import { wagmiConfig as defaultWagmiConfig } from \"@/services\";\nimport {\n QueryClient,\n QueryClientProvider,\n QueryClientProviderProps,\n} from \"@tanstack/react-query\";\nimport { ReactNode } from \"react\";\nimport { WagmiProvider, WagmiProviderProps } from \"wagmi\";\n\nconst defaultQueryClient = new QueryClient();\n\ntype Props = {\n readonly wagmiProviderProps?: WagmiProviderProps;\n readonly queryClientProviderProps?: QueryClientProviderProps;\n readonly children: ReactNode;\n};\nexport function WagmiContext(props: Props) {\n const { children, wagmiProviderProps, queryClientProviderProps } = props;\n const { config = defaultWagmiConfig, ...wagmiProps } =\n wagmiProviderProps ?? {};\n const { client = defaultQueryClient, ...queryClientProps } =\n queryClientProviderProps ?? {};\n\n return (\n <WagmiProvider config={config} {...wagmiProps}>\n <QueryClientProvider client={client} {...queryClientProps}>\n {children}\n </QueryClientProvider>\n </WagmiProvider>\n );\n}\n"],"names":["defaultQueryClient","QueryClient","WagmiContext","props","children","wagmiProviderProps","queryClientProviderProps","config","defaultWagmiConfig","wagmiProps","client","queryClientProps","jsx","WagmiProvider","QueryClientProvider"],"mappings":";;;;AASA,MAAMA,IAAqB,IAAIC,EAAY;AAOpC,SAASC,EAAaC,GAAc;AACzC,QAAM,EAAE,UAAAC,GAAU,oBAAAC,GAAoB,0BAAAC,EAA6B,IAAAH,GAC7D,EAAE,QAAAI,IAASC,GAAoB,GAAGC,EAAW,IACjDJ,KAAsB,CAAC,GACnB,EAAE,QAAAK,IAASV,GAAoB,GAAGW,EAAiB,IACvDL,KAA4B,CAAC;AAG7B,SAAA,gBAAAM,EAACC,GAAc,EAAA,QAAAN,GAAiB,GAAGE,GACjC,UAAC,gBAAAG,EAAAE,GAAA,EAAoB,QAAAJ,GAAiB,GAAGC,GACtC,UAAAP,EAAA,CACH,EACF,CAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-drag.js","sources":["../../../../src/connect/hooks/drag-and-drop/use-drag.ts"],"sourcesContent":["import { DRIVE, UI_NODE, UiNode } from \"@/connect\";\nimport { DragEvent, useCallback, useMemo, useState } from \"react\";\n\ntype Props = {\n uiNode: UiNode | null;\n};\nexport function useDrag(props: Props) {\n const { uiNode } = props;\n const [isDragging, setIsDragging] = useState(false);\n\n const onDragStart = useCallback(\n (event: DragEvent<HTMLDivElement>) => {\n event.dataTransfer.setData(UI_NODE, JSON.stringify(uiNode));\n },\n [uiNode],\n );\n\n const onDragEnd = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n const allowedToDragNode = !!uiNode && uiNode.kind !== DRIVE;\n\n return useMemo(() => {\n const dragProps = allowedToDragNode\n ? {\n draggable: true,\n onDragStart,\n onDragEnd,\n }\n : {\n draggable: false,\n onDragStart: undefined,\n onDragEnd: undefined,\n };\n\n return {\n isDragging,\n dragProps,\n };\n }, [allowedToDragNode, isDragging, onDragEnd, onDragStart]);\n}\n"],"names":["useDrag","props","uiNode","isDragging","setIsDragging","useState","onDragStart","useCallback","event","UI_NODE","onDragEnd","allowedToDragNode","DRIVE","useMemo"],"mappings":";;AAMO,SAASA,EAAQC,GAAc;AAC9B,QAAA,EAAE,QAAAC,EAAW,IAAAD,GACb,CAACE,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAE5CC,IAAcC;AAAA,IAClB,CAACC,MAAqC;AACpC,MAAAA,EAAM,aAAa,QAAQC,GAAS,KAAK,UAAUP,CAAM,CAAC;AAAA,IAC5D;AAAA,IACA,CAACA,CAAM;AAAA,EAAA,GAGHQ,IAAYH,EAAY,MAAM;AAClC,IAAAH,EAAc,EAAK;AAAA,EACrB,GAAG,CAAE,CAAA,GAECO,IAAoB,CAAC,CAACT,KAAUA,EAAO,SAASU;AAEtD,SAAOC,EAAQ,OAaN;AAAA,IACL,YAAAV;AAAA,IACA,WAdgBQ,IACd;AAAA,MACE,WAAW;AAAA,MACX,aAAAL;AAAA,MACA,WAAAI;AAAA,IAAA,IAEF;AAAA,MACE,WAAW;AAAA,MACX,aAAa;AAAA,MACb,WAAW;AAAA,IAAA;AAAA,EAKf,IAED,CAACC,GAAmBR,GAAYO,GAAWJ,CAAW,CAAC;AAC5D;"}
1
+ {"version":3,"file":"use-drag.js","sources":["../../../../src/connect/hooks/drag-and-drop/use-drag.ts"],"sourcesContent":["import { DRIVE, UI_NODE, UiNode } from \"@/connect\";\nimport { DragEvent, useCallback, useMemo, useState } from \"react\";\n\ntype Props = {\n uiNode: UiNode | null;\n};\nexport function useDrag(props: Props) {\n const { uiNode } = props;\n const [isDragging, setIsDragging] = useState(false);\n\n const onDragStart = useCallback(\n (event: DragEvent<HTMLDivElement>) => {\n event.dataTransfer.setData(UI_NODE, JSON.stringify(uiNode));\n },\n [uiNode],\n );\n\n const onDragEnd = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n const allowedToDragNode = !!uiNode && uiNode.kind !== DRIVE;\n\n return useMemo(() => {\n const dragProps = allowedToDragNode\n ? {\n draggable: true,\n onDragStart,\n onDragEnd,\n }\n : {\n draggable: false,\n onDragStart: undefined,\n onDragEnd: undefined,\n };\n\n return {\n isDragging,\n dragProps,\n };\n }, [allowedToDragNode, isDragging, onDragEnd, onDragStart]);\n}\n"],"names":["useDrag","props","uiNode","isDragging","setIsDragging","useState","onDragStart","useCallback","event","UI_NODE","onDragEnd","allowedToDragNode","DRIVE","useMemo"],"mappings":";;AAMO,SAASA,EAAQC,GAAc;AAC9B,QAAA,EAAE,QAAAC,MAAWD,GACb,CAACE,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAE5CC,IAAcC;AAAA,IAClB,CAACC,MAAqC;AACpC,MAAAA,EAAM,aAAa,QAAQC,GAAS,KAAK,UAAUP,CAAM,CAAC;AAAA,IAC5D;AAAA,IACA,CAACA,CAAM;AAAA,EACT,GAEMQ,IAAYH,EAAY,MAAM;AAClC,IAAAH,EAAc,EAAK;AAAA,EACrB,GAAG,EAAE,GAECO,IAAoB,CAAC,CAACT,KAAUA,EAAO,SAASU;AAEtD,SAAOC,EAAQ,OAaN;AAAA,IACL,YAAAV;AAAA,IACA,WAdgBQ,IACd;AAAA,MACE,WAAW;AAAA,MACX,aAAAL;AAAA,MACA,WAAAI;AAAA,IAAA,IAEF;AAAA,MACE,WAAW;AAAA,MACX,aAAa;AAAA,MACb,WAAW;AAAA,IACb;AAAA,EAKJ,IACC,CAACC,GAAmBR,GAAYO,GAAWJ,CAAW,CAAC;AAC5D;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-drop.js","sources":["../../../../src/connect/hooks/drag-and-drop/use-drop.ts"],"sourcesContent":["import { FILE, NodeProps, UI_NODE, UiNode } from \"@/connect\";\nimport { DragEvent, useCallback, useMemo, useState } from \"react\";\n\ntype Props = NodeProps & {\n uiNode: UiNode | null;\n};\nexport function useDrop(props: Props) {\n const { uiNode, onAddFile, onCopyNode, onMoveNode } = props;\n const [isDropTarget, setIsDropTarget] = useState(false);\n const allowedToBeDropTarget = !!uiNode && uiNode.kind !== FILE;\n\n const onDragOver = useCallback((event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setIsDropTarget(true);\n }, []);\n\n const onDragLeave = useCallback(() => {\n setIsDropTarget(false);\n }, []);\n\n const onDrop = useCallback(\n async (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (!uiNode) return;\n\n const droppedFiles = getDroppedFiles(event.dataTransfer.items).filter(\n Boolean,\n );\n if (droppedFiles.length) {\n for (const file of droppedFiles) {\n await onAddFile(file, uiNode);\n }\n } else {\n const altOrOptionKeyPressed = event.getModifierState(\"Alt\");\n const data = event.dataTransfer.getData(UI_NODE);\n const droppedNode = JSON.parse(data) as UiNode;\n\n if (altOrOptionKeyPressed) {\n await onCopyNode(droppedNode, uiNode);\n } else {\n await onMoveNode(droppedNode, uiNode);\n }\n }\n\n setIsDropTarget(false);\n },\n [onAddFile, onCopyNode, onMoveNode, uiNode],\n );\n\n return useMemo(() => {\n const dropProps = allowedToBeDropTarget\n ? { onDragOver, onDragLeave, onDrop }\n : {\n onDragOver: undefined,\n onDragLeave: undefined,\n onDrop: undefined,\n };\n return {\n isDropTarget,\n dropProps,\n };\n }, [allowedToBeDropTarget, isDropTarget, onDragLeave, onDragOver, onDrop]);\n}\n\nfunction getDroppedFiles(items: DataTransferItemList) {\n const droppedFiles = Array.from(items)\n .map((item) => (item.kind === \"file\" ? item.getAsFile() : null))\n .filter(Boolean);\n\n return droppedFiles;\n}\n"],"names":["useDrop","props","uiNode","onAddFile","onCopyNode","onMoveNode","isDropTarget","setIsDropTarget","useState","allowedToBeDropTarget","FILE","onDragOver","useCallback","event","onDragLeave","onDrop","droppedFiles","getDroppedFiles","file","altOrOptionKeyPressed","data","UI_NODE","droppedNode","useMemo","items","item"],"mappings":";;AAMO,SAASA,EAAQC,GAAc;AACpC,QAAM,EAAE,QAAAC,GAAQ,WAAAC,GAAW,YAAAC,GAAY,YAAAC,MAAeJ,GAChD,CAACK,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAChDC,IAAwB,CAAC,CAACP,KAAUA,EAAO,SAASQ,GAEpDC,IAAaC,EAAY,CAACC,MAAqC;AACnE,IAAAA,EAAM,eAAe,GACrBN,EAAgB,EAAI;AAAA,EACtB,GAAG,CAAE,CAAA,GAECO,IAAcF,EAAY,MAAM;AACpC,IAAAL,EAAgB,EAAK;AAAA,EACvB,GAAG,CAAE,CAAA,GAECQ,IAASH;AAAA,IACb,OAAOC,MAAqC;AAG1C,UAFAA,EAAM,eAAe,GACrBA,EAAM,gBAAgB,GAClB,CAACX,EAAQ;AAEb,YAAMc,IAAeC,EAAgBJ,EAAM,aAAa,KAAK,EAAE;AAAA,QAC7D;AAAA,MAAA;AAEF,UAAIG,EAAa;AACf,mBAAWE,KAAQF;AACX,gBAAAb,EAAUe,GAAMhB,CAAM;AAAA,WAEzB;AACC,cAAAiB,IAAwBN,EAAM,iBAAiB,KAAK,GACpDO,IAAOP,EAAM,aAAa,QAAQQ,CAAO,GACzCC,IAAc,KAAK,MAAMF,CAAI;AAEnC,QAAID,IACI,MAAAf,EAAWkB,GAAapB,CAAM,IAE9B,MAAAG,EAAWiB,GAAapB,CAAM;AAAA,MAExC;AAEA,MAAAK,EAAgB,EAAK;AAAA,IACvB;AAAA,IACA,CAACJ,GAAWC,GAAYC,GAAYH,CAAM;AAAA,EAAA;AAG5C,SAAOqB,EAAQ,OAQN;AAAA,IACL,cAAAjB;AAAA,IACA,WATgBG,IACd,EAAE,YAAAE,GAAY,aAAAG,GAAa,QAAAC,MAC3B;AAAA,MACE,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,QAAQ;AAAA,IAAA;AAAA,EAIZ,IAED,CAACN,GAAuBH,GAAcQ,GAAaH,GAAYI,CAAM,CAAC;AAC3E;AAEA,SAASE,EAAgBO,GAA6B;AAK7C,SAJc,MAAM,KAAKA,CAAK,EAClC,IAAI,CAACC,MAAUA,EAAK,SAAS,SAASA,EAAK,UAAA,IAAc,IAAK,EAC9D,OAAO,OAAO;AAGnB;"}
1
+ {"version":3,"file":"use-drop.js","sources":["../../../../src/connect/hooks/drag-and-drop/use-drop.ts"],"sourcesContent":["import { FILE, NodeProps, UI_NODE, UiNode } from \"@/connect\";\nimport { DragEvent, useCallback, useMemo, useState } from \"react\";\n\ntype Props = NodeProps & {\n uiNode: UiNode | null;\n};\nexport function useDrop(props: Props) {\n const { uiNode, onAddFile, onCopyNode, onMoveNode } = props;\n const [isDropTarget, setIsDropTarget] = useState(false);\n const allowedToBeDropTarget = !!uiNode && uiNode.kind !== FILE;\n\n const onDragOver = useCallback((event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setIsDropTarget(true);\n }, []);\n\n const onDragLeave = useCallback(() => {\n setIsDropTarget(false);\n }, []);\n\n const onDrop = useCallback(\n async (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (!uiNode) return;\n\n const droppedFiles = getDroppedFiles(event.dataTransfer.items).filter(\n Boolean,\n );\n if (droppedFiles.length) {\n for (const file of droppedFiles) {\n await onAddFile(file, uiNode);\n }\n } else {\n const altOrOptionKeyPressed = event.getModifierState(\"Alt\");\n const data = event.dataTransfer.getData(UI_NODE);\n const droppedNode = JSON.parse(data) as UiNode;\n\n if (altOrOptionKeyPressed) {\n await onCopyNode(droppedNode, uiNode);\n } else {\n await onMoveNode(droppedNode, uiNode);\n }\n }\n\n setIsDropTarget(false);\n },\n [onAddFile, onCopyNode, onMoveNode, uiNode],\n );\n\n return useMemo(() => {\n const dropProps = allowedToBeDropTarget\n ? { onDragOver, onDragLeave, onDrop }\n : {\n onDragOver: undefined,\n onDragLeave: undefined,\n onDrop: undefined,\n };\n return {\n isDropTarget,\n dropProps,\n };\n }, [allowedToBeDropTarget, isDropTarget, onDragLeave, onDragOver, onDrop]);\n}\n\nfunction getDroppedFiles(items: DataTransferItemList) {\n const droppedFiles = Array.from(items)\n .map((item) => (item.kind === \"file\" ? item.getAsFile() : null))\n .filter(Boolean);\n\n return droppedFiles;\n}\n"],"names":["useDrop","props","uiNode","onAddFile","onCopyNode","onMoveNode","isDropTarget","setIsDropTarget","useState","allowedToBeDropTarget","FILE","onDragOver","useCallback","event","onDragLeave","onDrop","droppedFiles","getDroppedFiles","file","altOrOptionKeyPressed","data","UI_NODE","droppedNode","useMemo","items","item"],"mappings":";;AAMO,SAASA,EAAQC,GAAc;AACpC,QAAM,EAAE,QAAAC,GAAQ,WAAAC,GAAW,YAAAC,GAAY,YAAAC,EAAe,IAAAJ,GAChD,CAACK,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAChDC,IAAwB,CAAC,CAACP,KAAUA,EAAO,SAASQ,GAEpDC,IAAaC,EAAY,CAACC,MAAqC;AACnE,IAAAA,EAAM,eAAe,GACrBN,EAAgB,EAAI;AAAA,EACtB,GAAG,EAAE,GAECO,IAAcF,EAAY,MAAM;AACpC,IAAAL,EAAgB,EAAK;AAAA,EACvB,GAAG,EAAE,GAECQ,IAASH;AAAA,IACb,OAAOC,MAAqC;AAG1C,UAFAA,EAAM,eAAe,GACrBA,EAAM,gBAAgB,GAClB,CAACX,EAAQ;AAEb,YAAMc,IAAeC,EAAgBJ,EAAM,aAAa,KAAK,EAAE;AAAA,QAC7D;AAAA,MACF;AACA,UAAIG,EAAa;AACf,mBAAWE,KAAQF;AACX,gBAAAb,EAAUe,GAAMhB,CAAM;AAAA,WAEzB;AACC,cAAAiB,IAAwBN,EAAM,iBAAiB,KAAK,GACpDO,IAAOP,EAAM,aAAa,QAAQQ,CAAO,GACzCC,IAAc,KAAK,MAAMF,CAAI;AAEnC,QAAID,IACI,MAAAf,EAAWkB,GAAapB,CAAM,IAE9B,MAAAG,EAAWiB,GAAapB,CAAM;AAAA,MACtC;AAGF,MAAAK,EAAgB,EAAK;AAAA,IACvB;AAAA,IACA,CAACJ,GAAWC,GAAYC,GAAYH,CAAM;AAAA,EAC5C;AAEA,SAAOqB,EAAQ,OAQN;AAAA,IACL,cAAAjB;AAAA,IACA,WATgBG,IACd,EAAE,YAAAE,GAAY,aAAAG,GAAa,QAAAC,MAC3B;AAAA,MACE,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,EAIJ,IACC,CAACN,GAAuBH,GAAcQ,GAAaH,GAAYI,CAAM,CAAC;AAC3E;AAEA,SAASE,EAAgBO,GAA6B;AAK7C,SAJc,MAAM,KAAKA,CAAK,EAClC,IAAI,CAACC,MAAUA,EAAK,SAAS,SAASA,EAAK,UAAA,IAAc,IAAK,EAC9D,OAAO,OAAO;AAGnB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-folder-status.js","sources":["../../../src/connect/utils/get-folder-status.ts"],"sourcesContent":["import { SyncStatus } from \"../types\";\n\nexport type FileStatus = { path: string; status?: SyncStatus };\n\n/**\n * Retrieves the sync status of a folder based on its path and their children files.\n *\n * @param folderPath - The path of the folder.\n * @param sortedFiles - The sorted list of files.\n * @returns The sync status of the folder.\n */\nexport const getFolderStatus = (\n folderPath: string,\n sortedFiles: FileStatus[],\n): SyncStatus => {\n for (const file of sortedFiles) {\n if (file.path.startsWith(folderPath)) {\n return file.status || \"SUCCESS\";\n }\n }\n\n return \"SUCCESS\";\n};\n\n/**\n * Sorts an array of files by their status.\n * The order priority is:\n * - ERROR\n * - CONFLICT\n * - SYNCING\n * - MISSING\n * - SUCCESS\n *\n * @param files - The array of files to be sorted.\n * @returns The sorted array of files.\n */\nexport const sortFilesByStatus = (files: FileStatus[]) => {\n return files.sort((a, b) => {\n const statusOrder = [\n \"ERROR\",\n \"CONFLICT\",\n \"SYNCING\",\n \"MISSING\",\n \"SYNCING\",\n \"SUCCESS\",\n ];\n\n return (\n statusOrder.indexOf(a.status || \"SUCCESS\") -\n statusOrder.indexOf(b.status || \"SUCCESS\")\n );\n });\n};\n\n/**\n * Removes files with a status of 'SUCCESS' from the given array of FileStatus objects.\n * @param files - An array of FileStatus objects.\n * @returns A new array containing only the FileStatus objects with a status other than 'SUCCESS'.\n */\nexport const removeSuccessFiles = (files: FileStatus[]) => {\n return files.filter((file) => file.status !== \"SUCCESS\");\n};\n"],"names":["getFolderStatus","folderPath","sortedFiles","file","sortFilesByStatus","files","a","b","statusOrder","removeSuccessFiles"],"mappings":"AAWa,MAAAA,IAAkB,CAC7BC,GACAC,MACe;AACf,aAAWC,KAAQD;AACjB,QAAIC,EAAK,KAAK,WAAWF,CAAU;AACjC,aAAOE,EAAK,UAAU;AAInB,SAAA;AACT,GAcaC,IAAoB,CAACC,MACzBA,EAAM,KAAK,CAACC,GAAGC,MAAM;AAC1B,QAAMC,IAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIA,SAAAA,EAAY,QAAQF,EAAE,UAAU,SAAS,IACzCE,EAAY,QAAQD,EAAE,UAAU,SAAS;AAAA,CAE5C,GAQUE,IAAqB,CAACJ,MAC1BA,EAAM,OAAO,CAACF,MAASA,EAAK,WAAW,SAAS;"}
1
+ {"version":3,"file":"get-folder-status.js","sources":["../../../src/connect/utils/get-folder-status.ts"],"sourcesContent":["import { SyncStatus } from \"../types\";\n\nexport type FileStatus = { path: string; status?: SyncStatus };\n\n/**\n * Retrieves the sync status of a folder based on its path and their children files.\n *\n * @param folderPath - The path of the folder.\n * @param sortedFiles - The sorted list of files.\n * @returns The sync status of the folder.\n */\nexport const getFolderStatus = (\n folderPath: string,\n sortedFiles: FileStatus[],\n): SyncStatus => {\n for (const file of sortedFiles) {\n if (file.path.startsWith(folderPath)) {\n return file.status || \"SUCCESS\";\n }\n }\n\n return \"SUCCESS\";\n};\n\n/**\n * Sorts an array of files by their status.\n * The order priority is:\n * - ERROR\n * - CONFLICT\n * - SYNCING\n * - MISSING\n * - SUCCESS\n *\n * @param files - The array of files to be sorted.\n * @returns The sorted array of files.\n */\nexport const sortFilesByStatus = (files: FileStatus[]) => {\n return files.sort((a, b) => {\n const statusOrder = [\n \"ERROR\",\n \"CONFLICT\",\n \"SYNCING\",\n \"MISSING\",\n \"SYNCING\",\n \"SUCCESS\",\n ];\n\n return (\n statusOrder.indexOf(a.status || \"SUCCESS\") -\n statusOrder.indexOf(b.status || \"SUCCESS\")\n );\n });\n};\n\n/**\n * Removes files with a status of 'SUCCESS' from the given array of FileStatus objects.\n * @param files - An array of FileStatus objects.\n * @returns A new array containing only the FileStatus objects with a status other than 'SUCCESS'.\n */\nexport const removeSuccessFiles = (files: FileStatus[]) => {\n return files.filter((file) => file.status !== \"SUCCESS\");\n};\n"],"names":["getFolderStatus","folderPath","sortedFiles","file","sortFilesByStatus","files","a","b","statusOrder","removeSuccessFiles"],"mappings":"AAWa,MAAAA,IAAkB,CAC7BC,GACAC,MACe;AACf,aAAWC,KAAQD;AACjB,QAAIC,EAAK,KAAK,WAAWF,CAAU;AACjC,aAAOE,EAAK,UAAU;AAInB,SAAA;AACT,GAcaC,IAAoB,CAACC,MACzBA,EAAM,KAAK,CAACC,GAAGC,MAAM;AAC1B,QAAMC,IAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGE,SAAAA,EAAY,QAAQF,EAAE,UAAU,SAAS,IACzCE,EAAY,QAAQD,EAAE,UAAU,SAAS;AAAA,CAE5C,GAQUE,IAAqB,CAACJ,MAC1BA,EAAM,OAAO,CAACF,MAASA,EAAK,WAAW,SAAS;"}
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sources":["../../../../src/powerhouse/components/button/button.tsx"],"sourcesContent":["import { ComponentPropsWithRef, ForwardedRef, forwardRef } from \"react\";\nimport { twJoin, twMerge } from \"tailwind-merge\";\n\nexport type ButtonProps = ComponentPropsWithRef<\"button\"> & {\n readonly color?: \"light\" | \"dark\" | \"red\" | \"blue\";\n readonly size?: \"small\" | \"medium\";\n readonly icon?: React.JSX.Element;\n readonly iconPosition?: \"left\" | \"right\";\n};\n\nexport const Button = forwardRef(function Button(\n props: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const {\n color = \"dark\",\n size = \"medium\",\n className = \"\",\n children,\n icon,\n iconPosition = \"left\",\n ...delegatedProps\n } = props;\n\n const sizeStyles = {\n small: \"px-2 py-1.5 text-xs rounded-md font-medium\",\n medium: \"px-6 py-3 text-base rounded-xl font-semibold tracking-wide\",\n };\n\n const colorStyles = {\n light:\n \"bg-gray-200 text-gray-600 hover:text-gray-700 hover:border-gray-300 active:border-slate-100 active:text-gray-600 disabled:text-gray-400\",\n dark: \"bg-gray-800 text-slate-50 hover:bg-slate-800 active:border-slate-700 disabled:bg-gray-300 disabled:text-slate-100\",\n red: \"bg-red-900 text-slate-50 hover:opacity-80 active:border-red-800 disabled:text-red-400 disabled:opacity-100\",\n blue: \"bg-blue-900 text-slate-50 hover:opacity-80 active:border-blue-800 disabled:text-blue-400 disabled:opacity-100\",\n };\n\n const colorAndSizeStyle = twJoin(colorStyles[color], sizeStyles[size]);\n\n const finalClassName = twMerge(\n \"flex items-center justify-center gap-2 border border-none outline-none transition disabled:cursor-not-allowed\",\n colorAndSizeStyle,\n className,\n );\n\n return (\n <button className={finalClassName} ref={ref} {...delegatedProps}>\n {iconPosition === \"left\" && icon}\n {children}\n {iconPosition === \"right\" && icon}\n </button>\n );\n});\n"],"names":["Button","forwardRef","props","ref","color","size","className","children","icon","iconPosition","delegatedProps","sizeStyles","colorAndSizeStyle","twJoin","finalClassName","twMerge"],"mappings":";;;AAUO,MAAMA,IAASC,EAAW,SAC/BC,GACAC,GACA;AACM,QAAA;AAAA,IACJ,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,cAAAC,IAAe;AAAA,IACf,GAAGC;AAAA,EACD,IAAAR,GAEES,IAAa;AAAA,IACjB,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA,GAWJC,IAAoBC,EARN;AAAA,IAClB,OACE;AAAA,IACF,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA,EAGqCT,CAAK,GAAGO,EAAWN,CAAI,CAAC,GAE/DS,IAAiBC;AAAA,IACrB;AAAA,IACAH;AAAA,IACAN;AAAA,EAAA;AAGF,2BACG,UAAO,EAAA,WAAWQ,GAAgB,KAAAX,GAAW,GAAGO,GAC9C,UAAA;AAAA,IAAAD,MAAiB,UAAUD;AAAA,IAC3BD;AAAA,IACAE,MAAiB,WAAWD;AAAA,EAC/B,EAAA,CAAA;AAEJ,CAAC;"}
1
+ {"version":3,"file":"button.js","sources":["../../../../src/powerhouse/components/button/button.tsx"],"sourcesContent":["import { ComponentPropsWithRef, ForwardedRef, forwardRef } from \"react\";\nimport { twJoin, twMerge } from \"tailwind-merge\";\n\nexport type ButtonProps = ComponentPropsWithRef<\"button\"> & {\n readonly color?: \"light\" | \"dark\" | \"red\" | \"blue\";\n readonly size?: \"small\" | \"medium\";\n readonly icon?: React.JSX.Element;\n readonly iconPosition?: \"left\" | \"right\";\n};\n\nexport const Button = forwardRef(function Button(\n props: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const {\n color = \"dark\",\n size = \"medium\",\n className = \"\",\n children,\n icon,\n iconPosition = \"left\",\n ...delegatedProps\n } = props;\n\n const sizeStyles = {\n small: \"px-2 py-1.5 text-xs rounded-md font-medium\",\n medium: \"px-6 py-3 text-base rounded-xl font-semibold tracking-wide\",\n };\n\n const colorStyles = {\n light:\n \"bg-gray-200 text-gray-600 hover:text-gray-700 hover:border-gray-300 active:border-slate-100 active:text-gray-600 disabled:text-gray-400\",\n dark: \"bg-gray-800 text-slate-50 hover:bg-slate-800 active:border-slate-700 disabled:bg-gray-300 disabled:text-slate-100\",\n red: \"bg-red-900 text-slate-50 hover:opacity-80 active:border-red-800 disabled:text-red-400 disabled:opacity-100\",\n blue: \"bg-blue-900 text-slate-50 hover:opacity-80 active:border-blue-800 disabled:text-blue-400 disabled:opacity-100\",\n };\n\n const colorAndSizeStyle = twJoin(colorStyles[color], sizeStyles[size]);\n\n const finalClassName = twMerge(\n \"flex items-center justify-center gap-2 border border-none outline-none transition disabled:cursor-not-allowed\",\n colorAndSizeStyle,\n className,\n );\n\n return (\n <button className={finalClassName} ref={ref} {...delegatedProps}>\n {iconPosition === \"left\" && icon}\n {children}\n {iconPosition === \"right\" && icon}\n </button>\n );\n});\n"],"names":["Button","forwardRef","props","ref","color","size","className","children","icon","iconPosition","delegatedProps","sizeStyles","colorAndSizeStyle","twJoin","finalClassName","twMerge"],"mappings":";;;AAUO,MAAMA,IAASC,EAAW,SAC/BC,GACAC,GACA;AACM,QAAA;AAAA,IACJ,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,cAAAC,IAAe;AAAA,IACf,GAAGC;AAAA,EAAA,IACDR,GAEES,IAAa;AAAA,IACjB,OAAO;AAAA,IACP,QAAQ;AAAA,EACV,GAUMC,IAAoBC,EARN;AAAA,IAClB,OACE;AAAA,IACF,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EACR,EAE6CT,CAAK,GAAGO,EAAWN,CAAI,CAAC,GAE/DS,IAAiBC;AAAA,IACrB;AAAA,IACAH;AAAA,IACAN;AAAA,EACF;AAEA,2BACG,UAAO,EAAA,WAAWQ,GAAgB,KAAAX,GAAW,GAAGO,GAC9C,UAAA;AAAA,IAAAD,MAAiB,UAAUD;AAAA,IAC3BD;AAAA,IACAE,MAAiB,WAAWD;AAAA,EAAA,GAC/B;AAEJ,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-menu.js","sources":["../../../../src/powerhouse/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import {\n Content,\n DropdownMenuContentProps,\n Item,\n Label,\n Portal,\n Root,\n Trigger,\n} from \"@radix-ui/react-dropdown-menu\";\nimport { ForwardedRef, forwardRef } from \"react\";\n\nexport const DropdownMenu = Root;\nexport const DropdownMenuTrigger = Trigger;\n\nexport const DropdownMenuContent = forwardRef(function DropdownMenuContent(\n { children, ...delegatedProps }: DropdownMenuContentProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <Portal>\n <Content {...delegatedProps} ref={forwardedRef}>\n {children}\n </Content>\n </Portal>\n );\n});\n\nexport const DropdownMenuLabel = Label;\nexport const DropdownMenuItem = Item;\n"],"names":["DropdownMenu","Root","DropdownMenuTrigger","Trigger","DropdownMenuContent","forwardRef","children","delegatedProps","forwardedRef","jsx","Portal","Content","DropdownMenuLabel","Label","DropdownMenuItem","Item"],"mappings":";;;AAWO,MAAMA,IAAeC,GACfC,IAAsBC,GAEtBC,IAAsBC,EAAW,SAC5C,EAAE,UAAAC,GAAU,GAAGC,EAAe,GAC9BC,GACA;AAEE,SAAA,gBAAAC,EAACC,KACC,UAAC,gBAAAD,EAAAE,GAAA,EAAS,GAAGJ,GAAgB,KAAKC,GAC/B,UAAAF,EACH,CAAA,EACF,CAAA;AAEJ,CAAC,GAEYM,IAAoBC,GACpBC,IAAmBC;"}
1
+ {"version":3,"file":"dropdown-menu.js","sources":["../../../../src/powerhouse/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import {\n Content,\n DropdownMenuContentProps,\n Item,\n Label,\n Portal,\n Root,\n Trigger,\n} from \"@radix-ui/react-dropdown-menu\";\nimport { ForwardedRef, forwardRef } from \"react\";\n\nexport const DropdownMenu = Root;\nexport const DropdownMenuTrigger = Trigger;\n\nexport const DropdownMenuContent = forwardRef(function DropdownMenuContent(\n { children, ...delegatedProps }: DropdownMenuContentProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <Portal>\n <Content {...delegatedProps} ref={forwardedRef}>\n {children}\n </Content>\n </Portal>\n );\n});\n\nexport const DropdownMenuLabel = Label;\nexport const DropdownMenuItem = Item;\n"],"names":["DropdownMenu","Root","DropdownMenuTrigger","Trigger","DropdownMenuContent","forwardRef","children","delegatedProps","forwardedRef","jsx","Portal","Content","DropdownMenuLabel","Label","DropdownMenuItem","Item"],"mappings":";;;AAWO,MAAMA,IAAeC,GACfC,IAAsBC,GAEtBC,IAAsBC,EAAW,SAC5C,EAAE,UAAAC,GAAU,GAAGC,EAAe,GAC9BC,GACA;AAEE,SAAA,gBAAAC,EAACC,KACC,UAAC,gBAAAD,EAAAE,GAAA,EAAS,GAAGJ,GAAgB,KAAKC,GAC/B,UAAAF,EAAA,CACH,EACF,CAAA;AAEJ,CAAC,GAEYM,IAAoBC,GACpBC,IAAmBC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sources":["../../../../src/powerhouse/components/icon/icon.tsx"],"sourcesContent":["import { type IconName, Props } from \"@/assets/icon-components/types\";\nimport { Color, getDimensions, Size } from \"@/powerhouse\";\nimport {\n ComponentPropsWithoutRef,\n ComponentType,\n ElementType,\n lazy,\n Suspense,\n useMemo,\n} from \"react\";\n\nexport { iconNames } from \"@/assets/icon-components/types\";\nexport type { IconName } from \"@/assets/icon-components/types\";\n\nexport type IconProps = ComponentPropsWithoutRef<\"svg\"> & {\n readonly name: IconName;\n readonly size?: Size;\n readonly color?: Color;\n};\n\nfunction IconErrorFallback(props: Props) {\n return <div style={{ width: props.width, height: props.height }} />;\n}\n\nfunction loadIcon(name: IconName): ElementType {\n try {\n return lazy<ComponentType<Props>>(\n () => import(`@/assets/icon-components/${name}.tsx`),\n );\n } catch (e) {\n console.error(e);\n return IconErrorFallback;\n }\n}\n\nexport function preloadIcon(name: IconName) {\n return loadIcon(name);\n}\n\nexport function Icon({ name, size = 24, color, style, ...props }: IconProps) {\n const dimensions = getDimensions(size);\n const _style = {\n color,\n ...dimensions,\n style,\n };\n\n const IconComponent = useMemo(() => loadIcon(name), [name]);\n\n return (\n // displays div with the same size while icon\n // loads to avoid UI displacement\n <Suspense\n fallback={<div data-testid=\"icon-fallback\" style={dimensions} />}\n name=\"icon-component\"\n >\n <IconComponent {...props} style={_style} />\n </Suspense>\n );\n}\n"],"names":["IconErrorFallback","props","jsx","loadIcon","name","lazy","__variableDynamicImportRuntimeHelper","e","preloadIcon","Icon","size","color","style","dimensions","getDimensions","_style","IconComponent","useMemo","Suspense"],"mappings":"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"}
1
+ {"version":3,"file":"icon.js","sources":["../../../../src/powerhouse/components/icon/icon.tsx"],"sourcesContent":["import { type IconName, Props } from \"@/assets/icon-components/types\";\nimport { Color, getDimensions, Size } from \"@/powerhouse\";\nimport {\n ComponentPropsWithoutRef,\n ComponentType,\n ElementType,\n lazy,\n Suspense,\n useMemo,\n} from \"react\";\n\nexport { iconNames } from \"@/assets/icon-components/types\";\nexport type { IconName } from \"@/assets/icon-components/types\";\n\nexport type IconProps = ComponentPropsWithoutRef<\"svg\"> & {\n readonly name: IconName;\n readonly size?: Size;\n readonly color?: Color;\n};\n\nfunction IconErrorFallback(props: Props) {\n return <div style={{ width: props.width, height: props.height }} />;\n}\n\nfunction loadIcon(name: IconName): ElementType {\n try {\n return lazy<ComponentType<Props>>(\n () => import(`@/assets/icon-components/${name}.tsx`),\n );\n } catch (e) {\n console.error(e);\n return IconErrorFallback;\n }\n}\n\nexport function preloadIcon(name: IconName) {\n return loadIcon(name);\n}\n\nexport function Icon({ name, size = 24, color, style, ...props }: IconProps) {\n const dimensions = getDimensions(size);\n const _style = {\n color,\n ...dimensions,\n style,\n };\n\n const IconComponent = useMemo(() => loadIcon(name), [name]);\n\n return (\n // displays div with the same size while icon\n // loads to avoid UI displacement\n <Suspense\n fallback={<div data-testid=\"icon-fallback\" style={dimensions} />}\n name=\"icon-component\"\n >\n <IconComponent {...props} style={_style} />\n </Suspense>\n );\n}\n"],"names":["IconErrorFallback","props","jsx","loadIcon","name","lazy","__variableDynamicImportRuntimeHelper","e","preloadIcon","Icon","size","color","style","dimensions","getDimensions","_style","IconComponent","useMemo","Suspense"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"editorToolbar.js","sources":["../../../../src/powerhouse/components/legacy/editorToolbar.tsx"],"sourcesContent":["import { ReactElement } from \"react\";\n\ninterface EditorToolbarProps {\n readonly left?: ReactElement<ReactElement>[];\n readonly center?: ReactElement<ReactElement>[];\n readonly right?: ReactElement<ReactElement>[];\n}\n\nexport function EditorToolbar(props: EditorToolbarProps) {\n const left = props.left || [];\n const center = props.center || [];\n const right = props.right || [];\n\n return (\n <div className=\"editor-toolbar\">\n <div className=\"editor-toolbar--column editor-toolbar--left\">{left}</div>\n <div className=\"editor-toolbar--column editor-toolbar--center\">\n {center}\n </div>\n <div className=\"editor-toolbar--column editor-toolbar--right\">\n {right}\n </div>\n </div>\n );\n}\n"],"names":["EditorToolbar","props","left","center","right","jsxs","jsx"],"mappings":";AAQO,SAASA,EAAcC,GAA2B;AACjD,QAAAC,IAAOD,EAAM,QAAQ,IACrBE,IAASF,EAAM,UAAU,IACzBG,IAAQH,EAAM,SAAS;AAG3B,SAAA,gBAAAI,EAAC,OAAI,EAAA,WAAU,kBACb,UAAA;AAAA,IAAC,gBAAAC,EAAA,OAAA,EAAI,WAAU,+CAA+C,UAAKJ,GAAA;AAAA,IAClE,gBAAAI,EAAA,OAAA,EAAI,WAAU,iDACZ,UACHH,GAAA;AAAA,IACC,gBAAAG,EAAA,OAAA,EAAI,WAAU,gDACZ,UACHF,GAAA;AAAA,EACF,EAAA,CAAA;AAEJ;"}
1
+ {"version":3,"file":"editorToolbar.js","sources":["../../../../src/powerhouse/components/legacy/editorToolbar.tsx"],"sourcesContent":["import { ReactElement } from \"react\";\n\ninterface EditorToolbarProps {\n readonly left?: ReactElement<ReactElement>[];\n readonly center?: ReactElement<ReactElement>[];\n readonly right?: ReactElement<ReactElement>[];\n}\n\nexport function EditorToolbar(props: EditorToolbarProps) {\n const left = props.left || [];\n const center = props.center || [];\n const right = props.right || [];\n\n return (\n <div className=\"editor-toolbar\">\n <div className=\"editor-toolbar--column editor-toolbar--left\">{left}</div>\n <div className=\"editor-toolbar--column editor-toolbar--center\">\n {center}\n </div>\n <div className=\"editor-toolbar--column editor-toolbar--right\">\n {right}\n </div>\n </div>\n );\n}\n"],"names":["EditorToolbar","props","left","center","right","jsxs","jsx"],"mappings":";AAQO,SAASA,EAAcC,GAA2B;AACjD,QAAAC,IAAOD,EAAM,QAAQ,CAAC,GACtBE,IAASF,EAAM,UAAU,CAAC,GAC1BG,IAAQH,EAAM,SAAS,CAAC;AAG5B,SAAA,gBAAAI,EAAC,OAAI,EAAA,WAAU,kBACb,UAAA;AAAA,IAAC,gBAAAC,EAAA,OAAA,EAAI,WAAU,+CAA+C,UAAKJ,GAAA;AAAA,IAClE,gBAAAI,EAAA,OAAA,EAAI,WAAU,iDACZ,UACHH,GAAA;AAAA,IACC,gBAAAG,EAAA,OAAA,EAAI,WAAU,gDACZ,UACHF,EAAA,CAAA;AAAA,EAAA,GACF;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"editorWorksheet.js","sources":["../../../../src/powerhouse/components/legacy/editorWorksheet.tsx"],"sourcesContent":["import { PropsWithChildren } from \"react\";\n\ninterface EditorWorksheetProps {\n readonly onClick?: () => void;\n}\n\nexport function EditorWorksheet(\n props: PropsWithChildren<EditorWorksheetProps>,\n) {\n return (\n <div className=\"editor-worksheet\">\n <div className=\"editor-worksheet--page\">{props.children}</div>\n </div>\n );\n}\n"],"names":["EditorWorksheet","props","jsx"],"mappings":";AAMO,SAASA,EACdC,GACA;AAEE,SAAA,gBAAAC,EAAC,OAAI,EAAA,WAAU,oBACb,UAAA,gBAAAA,EAAC,SAAI,WAAU,0BAA0B,UAAMD,EAAA,SAAA,CAAS,EAC1D,CAAA;AAEJ;"}
1
+ {"version":3,"file":"editorWorksheet.js","sources":["../../../../src/powerhouse/components/legacy/editorWorksheet.tsx"],"sourcesContent":["import { PropsWithChildren } from \"react\";\n\ninterface EditorWorksheetProps {\n readonly onClick?: () => void;\n}\n\nexport function EditorWorksheet(\n props: PropsWithChildren<EditorWorksheetProps>,\n) {\n return (\n <div className=\"editor-worksheet\">\n <div className=\"editor-worksheet--page\">{props.children}</div>\n </div>\n );\n}\n"],"names":["EditorWorksheet","props","jsx"],"mappings":";AAMO,SAASA,EACdC,GACA;AAEE,SAAA,gBAAAC,EAAC,OAAI,EAAA,WAAU,oBACb,UAAA,gBAAAA,EAAC,SAAI,WAAU,0BAA0B,UAAMD,EAAA,SAAS,CAAA,GAC1D;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sources":["../../../../src/powerhouse/components/legacy/styles.ts"],"sourcesContent":["import { CSSProperties } from \"react\";\n\ntype ColorTheme = \"light\" | \"dark\";\n\nconst colorScheme = {\n light: {\n color: \"#222222\",\n bgColor: \"#FFFFFF\",\n border: \"#EEEEEE\",\n shadow: \"rgba(128,128,128,0.65)\",\n inputColor: \"#222222\",\n inputBg: \"#F6F6F6\",\n },\n dark: {\n color: \"#E6E6E6\",\n bgColor: \"#181818\",\n border: \"#181818\",\n shadow: \"rgba(0, 0, 0, 0.25)\",\n inputColor: \"#E6E6E6\",\n inputBg: \"#222222\",\n },\n};\n\ntype TypographySize =\n | \"huge\"\n | \"larger\"\n | \"large\"\n | \"medium\"\n | \"small\"\n | \"smaller\"\n | \"tiny\";\ntype TypographyScheme = { [K in TypographySize]: CSSProperties };\n\nconst typographySizes: TypographyScheme = {\n huge: {\n fontSize: \"36pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"30pt 0 0 0\",\n },\n larger: {\n fontSize: \"24pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"18pt 0 0 0\",\n },\n large: {\n fontSize: \"18pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"12pt 0 0 0\",\n },\n medium: {\n fontSize: \"11pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"5pt 0 0 0\",\n },\n small: {\n fontSize: \"10pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"0\",\n },\n smaller: {\n fontSize: \"9pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"0\",\n },\n tiny: {\n fontSize: \"8pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"0\",\n },\n};\n\nconst inputStyle = (\n mode: keyof typeof colorScheme = \"light\",\n focus = false,\n) => {\n const scheme = colorScheme[mode];\n\n return {\n width: \"100%\",\n border: \"none\",\n boxSizing: \"border-box\",\n backgroundColor: focus ? scheme.inputBg : scheme.bgColor,\n outline: \"none\",\n color: scheme.inputColor,\n resize: \"none\",\n fontFamily: \"Roboto, sans-serif\",\n overflow: \"hidden\",\n lineHeight: \"1.5\",\n } satisfies CSSProperties;\n};\n\nexport { colorScheme, inputStyle, typographySizes };\nexport type { ColorTheme, TypographyScheme, TypographySize };\n"],"names":["colorScheme","typographySizes","inputStyle","mode","focus","scheme"],"mappings":"AAIA,MAAMA,IAAc;AAAA,EAClB,OAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AACF,GAYMC,IAAoC;AAAA,EACxC,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AACF,GAEMC,IAAa,CACjBC,IAAiC,SACjCC,IAAQ,OACL;AACG,QAAAC,IAASL,EAAYG,CAAI;AAExB,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,iBAAiBC,IAAQC,EAAO,UAAUA,EAAO;AAAA,IACjD,SAAS;AAAA,IACT,OAAOA,EAAO;AAAA,IACd,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EAAA;AAEhB;"}
1
+ {"version":3,"file":"styles.js","sources":["../../../../src/powerhouse/components/legacy/styles.ts"],"sourcesContent":["import { CSSProperties } from \"react\";\n\ntype ColorTheme = \"light\" | \"dark\";\n\nconst colorScheme = {\n light: {\n color: \"#222222\",\n bgColor: \"#FFFFFF\",\n border: \"#EEEEEE\",\n shadow: \"rgba(128,128,128,0.65)\",\n inputColor: \"#222222\",\n inputBg: \"#F6F6F6\",\n },\n dark: {\n color: \"#E6E6E6\",\n bgColor: \"#181818\",\n border: \"#181818\",\n shadow: \"rgba(0, 0, 0, 0.25)\",\n inputColor: \"#E6E6E6\",\n inputBg: \"#222222\",\n },\n};\n\ntype TypographySize =\n | \"huge\"\n | \"larger\"\n | \"large\"\n | \"medium\"\n | \"small\"\n | \"smaller\"\n | \"tiny\";\ntype TypographyScheme = { [K in TypographySize]: CSSProperties };\n\nconst typographySizes: TypographyScheme = {\n huge: {\n fontSize: \"36pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"30pt 0 0 0\",\n },\n larger: {\n fontSize: \"24pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"18pt 0 0 0\",\n },\n large: {\n fontSize: \"18pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"12pt 0 0 0\",\n },\n medium: {\n fontSize: \"11pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"5pt 0 0 0\",\n },\n small: {\n fontSize: \"10pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"0\",\n },\n smaller: {\n fontSize: \"9pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"0\",\n },\n tiny: {\n fontSize: \"8pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"0\",\n },\n};\n\nconst inputStyle = (\n mode: keyof typeof colorScheme = \"light\",\n focus = false,\n) => {\n const scheme = colorScheme[mode];\n\n return {\n width: \"100%\",\n border: \"none\",\n boxSizing: \"border-box\",\n backgroundColor: focus ? scheme.inputBg : scheme.bgColor,\n outline: \"none\",\n color: scheme.inputColor,\n resize: \"none\",\n fontFamily: \"Roboto, sans-serif\",\n overflow: \"hidden\",\n lineHeight: \"1.5\",\n } satisfies CSSProperties;\n};\n\nexport { colorScheme, inputStyle, typographySizes };\nexport type { ColorTheme, TypographyScheme, TypographySize };\n"],"names":["colorScheme","typographySizes","inputStyle","mode","focus","scheme"],"mappings":"AAIA,MAAMA,IAAc;AAAA,EAClB,OAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EAAA;AAEb,GAYMC,IAAoC;AAAA,EACxC,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAEZ,GAEMC,IAAa,CACjBC,IAAiC,SACjCC,IAAQ,OACL;AACG,QAAAC,IAASL,EAAYG,CAAI;AAExB,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,iBAAiBC,IAAQC,EAAO,UAAUA,EAAO;AAAA,IACjD,SAAS;AAAA,IACT,OAAOA,EAAO;AAAA,IACd,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"stylesVariant.js","sources":["../../../../src/powerhouse/components/legacy/stylesVariant.ts"],"sourcesContent":["import { CSSProperties } from \"react\";\n\ntype ColorTheme = \"light\" | \"dark\";\n\nconst colorScheme = {\n light: {\n color: \"#222222\",\n bgColor: \"#FFFFFF\",\n border: \"#EEEEEE\",\n shadow: \"rgba(128,128,128,0.65)\",\n inputColor: \"#222222\",\n inputBg: \"#F6F6F6\",\n },\n dark: {\n color: \"#CCCCCC\",\n bgColor: \"#0A0A0A\",\n border: \"#181818\",\n shadow: \"rgba(255, 255, 255, 0.25)\",\n inputColor: \"#CCCCCC\",\n inputBg: \"#1A1D1F\",\n },\n};\n\ntype TypographySize =\n | \"chapter\"\n | \"huge\"\n | \"larger\"\n | \"large\"\n | \"medium\"\n | \"small\"\n | \"smaller\"\n | \"tiny\";\ntype TypographyScheme = { [K in TypographySize]: CSSProperties };\n\nconst typographySizes: TypographyScheme = {\n chapter: {\n fontSize: \"64pt\",\n fontWeight: \"bold\",\n padding: \"6pt 24pt\",\n margin: \"0\",\n lineHeight: 1,\n textAlign: \"right\",\n borderLeft: \"4px solid\",\n },\n huge: {\n fontSize: \"32pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"0 0 0 -6pt\",\n lineHeight: 1,\n },\n larger: {\n fontSize: \"24pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"-12pt 0 0 0\",\n },\n large: {\n fontSize: \"18pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"-10.5pt 0 0 0\",\n },\n medium: {\n fontSize: \"11pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"-8pt 0 0 0\",\n },\n small: {\n fontSize: \"10pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"-6pt 0 0 0\",\n },\n smaller: {\n fontSize: \"9pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"-5pt 0 0 0\",\n },\n tiny: {\n fontSize: \"8pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"-8pt 0 0 0\",\n },\n};\n\nconst inputStyle = (\n mode: keyof typeof colorScheme = \"light\",\n focus = false,\n) => {\n const scheme = colorScheme[mode];\n\n return {\n width: \"100%\",\n border: \"none\",\n boxSizing: \"border-box\",\n backgroundColor: focus ? scheme.inputBg : scheme.bgColor,\n outline: \"none\",\n color: scheme.inputColor,\n resize: \"none\",\n fontFamily: \"Roboto, sans-serif\",\n overflow: \"hidden\",\n lineHeight: \"1.5\",\n } satisfies CSSProperties;\n};\n\nexport { colorScheme, inputStyle, typographySizes };\nexport type { ColorTheme, TypographyScheme, TypographySize };\n"],"names":["colorScheme","typographySizes","inputStyle","mode","focus","scheme"],"mappings":"AAIA,MAAMA,IAAc;AAAA,EAClB,OAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AACF,GAaMC,IAAoC;AAAA,EACxC,SAAS;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,EACd;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AACF,GAEMC,IAAa,CACjBC,IAAiC,SACjCC,IAAQ,OACL;AACG,QAAAC,IAASL,EAAYG,CAAI;AAExB,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,iBAAiBC,IAAQC,EAAO,UAAUA,EAAO;AAAA,IACjD,SAAS;AAAA,IACT,OAAOA,EAAO;AAAA,IACd,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EAAA;AAEhB;"}
1
+ {"version":3,"file":"stylesVariant.js","sources":["../../../../src/powerhouse/components/legacy/stylesVariant.ts"],"sourcesContent":["import { CSSProperties } from \"react\";\n\ntype ColorTheme = \"light\" | \"dark\";\n\nconst colorScheme = {\n light: {\n color: \"#222222\",\n bgColor: \"#FFFFFF\",\n border: \"#EEEEEE\",\n shadow: \"rgba(128,128,128,0.65)\",\n inputColor: \"#222222\",\n inputBg: \"#F6F6F6\",\n },\n dark: {\n color: \"#CCCCCC\",\n bgColor: \"#0A0A0A\",\n border: \"#181818\",\n shadow: \"rgba(255, 255, 255, 0.25)\",\n inputColor: \"#CCCCCC\",\n inputBg: \"#1A1D1F\",\n },\n};\n\ntype TypographySize =\n | \"chapter\"\n | \"huge\"\n | \"larger\"\n | \"large\"\n | \"medium\"\n | \"small\"\n | \"smaller\"\n | \"tiny\";\ntype TypographyScheme = { [K in TypographySize]: CSSProperties };\n\nconst typographySizes: TypographyScheme = {\n chapter: {\n fontSize: \"64pt\",\n fontWeight: \"bold\",\n padding: \"6pt 24pt\",\n margin: \"0\",\n lineHeight: 1,\n textAlign: \"right\",\n borderLeft: \"4px solid\",\n },\n huge: {\n fontSize: \"32pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"0 0 0 -6pt\",\n lineHeight: 1,\n },\n larger: {\n fontSize: \"24pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"-12pt 0 0 0\",\n },\n large: {\n fontSize: \"18pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"-10.5pt 0 0 0\",\n },\n medium: {\n fontSize: \"11pt\",\n fontWeight: \"bold\",\n padding: \"6pt\",\n margin: \"-8pt 0 0 0\",\n },\n small: {\n fontSize: \"10pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"-6pt 0 0 0\",\n },\n smaller: {\n fontSize: \"9pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"-5pt 0 0 0\",\n },\n tiny: {\n fontSize: \"8pt\",\n fontWeight: \"normal\",\n padding: \"6pt\",\n margin: \"-8pt 0 0 0\",\n },\n};\n\nconst inputStyle = (\n mode: keyof typeof colorScheme = \"light\",\n focus = false,\n) => {\n const scheme = colorScheme[mode];\n\n return {\n width: \"100%\",\n border: \"none\",\n boxSizing: \"border-box\",\n backgroundColor: focus ? scheme.inputBg : scheme.bgColor,\n outline: \"none\",\n color: scheme.inputColor,\n resize: \"none\",\n fontFamily: \"Roboto, sans-serif\",\n overflow: \"hidden\",\n lineHeight: \"1.5\",\n } satisfies CSSProperties;\n};\n\nexport { colorScheme, inputStyle, typographySizes };\nexport type { ColorTheme, TypographyScheme, TypographySize };\n"],"names":["colorScheme","typographySizes","inputStyle","mode","focus","scheme"],"mappings":"AAIA,MAAMA,IAAc;AAAA,EAClB,OAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,EAAA;AAEb,GAaMC,IAAoC;AAAA,EACxC,SAAS;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,EACd;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAEZ,GAEMC,IAAa,CACjBC,IAAiC,SACjCC,IAAQ,OACL;AACG,QAAAC,IAASL,EAAYG,CAAI;AAExB,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,iBAAiBC,IAAQC,EAAO,UAAUA,EAAO;AAAA,IACjD,SAAS;AAAA,IACT,OAAOA,EAAO;AAAA,IACd,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"textInput.js","sources":["../../../../src/powerhouse/components/legacy/textInput.tsx"],"sourcesContent":["import { KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { TypographySize, inputStyle, typographySizes } from \"./styles\";\n\ninterface TextInputProps {\n readonly theme: \"light\" | \"dark\";\n readonly size?: TypographySize;\n readonly horizontalLine?: boolean;\n readonly id?: string;\n readonly value?: string;\n readonly placeholder?: string;\n readonly autoFocus?: boolean;\n readonly clearOnSubmit?: boolean;\n readonly onSubmit?: { (value: string): void };\n readonly onEmpty?: { (id: string): void };\n}\n\nexport function TextInput(props: TextInputProps) {\n const [state, setState] = useState({\n value: props.value || \"\",\n hasFocus: false,\n pressingEnter: false,\n });\n\n useEffect(() => {\n setState({ ...state, value: props.value || \"\" });\n }, [props]);\n\n const onKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n setState({ ...state, pressingEnter: true });\n e.preventDefault();\n }\n };\n\n const onKeyUp = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n if (props.onSubmit) {\n props.onSubmit((e.target as HTMLInputElement).value);\n }\n\n if (props.clearOnSubmit) {\n setState({ ...state, value: \"\", pressingEnter: false });\n } else {\n setState({ ...state, pressingEnter: false });\n }\n\n e.preventDefault();\n }\n\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\n if (props.onEmpty && (e.target as HTMLInputElement).value.length < 1) {\n props.onEmpty(props.id || \"\");\n }\n e.preventDefault();\n }\n };\n\n const onInput: React.FormEventHandler<HTMLTextAreaElement> = (e) => {\n if (!state.pressingEnter) {\n const target = e.target as HTMLTextAreaElement;\n setState({ ...state, value: target.value });\n target.style.height = \"1px\";\n target.style.height = target.scrollHeight + \"px\";\n }\n };\n\n const setFocus = (f: boolean) => {\n setState({ ...state, hasFocus: f });\n\n if (!f) {\n const newValue = ref.current?.value || \"\";\n const origValue = props.value || \"\";\n\n if (newValue !== origValue && props.onSubmit) {\n props.onSubmit(newValue);\n }\n }\n };\n\n const ref = useRef<HTMLTextAreaElement>(null);\n useEffect(() => {\n const resizeTextArea = () => {\n if (ref.current) {\n ref.current.style.height = \"1px\";\n ref.current.style.height = ref.current.scrollHeight + \"px\";\n }\n };\n\n window.addEventListener(\"resize\", resizeTextArea);\n resizeTextArea();\n\n return () => {\n window.removeEventListener(\"resize\", resizeTextArea);\n };\n });\n\n const style = {\n ...inputStyle(props.theme, state.hasFocus),\n ...typographySizes[props.size || \"small\"],\n };\n\n return (\n <div>\n {props.horizontalLine ? (\n <hr\n key=\"line\"\n style={{\n borderColor: inputStyle(props.theme, false).backgroundColor,\n }}\n />\n ) : (\n \"\"\n )}\n <textarea\n autoFocus={props.autoFocus || false}\n key=\"text\"\n onBlur={() => setFocus(false)}\n onFocus={() => setFocus(true)}\n onInput={onInput}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n placeholder={props.placeholder || \"\"}\n ref={ref}\n style={style}\n value={state.value}\n />\n </div>\n );\n}\n"],"names":["TextInput","props","state","setState","useState","useEffect","onKeyDown","onKeyUp","onInput","target","setFocus","f","newValue","_a","ref","origValue","useRef","resizeTextArea","style","inputStyle","typographySizes","jsx"],"mappings":";;;AAgBO,SAASA,EAAUC,GAAuB;AAC/C,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAS;AAAA,IACjC,OAAOH,EAAM,SAAS;AAAA,IACtB,UAAU;AAAA,IACV,eAAe;AAAA,EAAA,CAChB;AAED,EAAAI,EAAU,MAAM;AACd,IAAAF,EAAS,EAAE,GAAGD,GAAO,OAAOD,EAAM,SAAS,IAAI;AAAA,EAAA,GAC9C,CAACA,CAAK,CAAC;AAEJ,QAAAK,IAAY,CAAC,MAA0C;AACvD,IAAA,EAAE,QAAQ,YACZH,EAAS,EAAE,GAAGD,GAAO,eAAe,GAAM,CAAA,GAC1C,EAAE,eAAe;AAAA,EACnB,GAGIK,IAAU,CAAC,MAA0C;AACrD,IAAA,EAAE,QAAQ,YACRN,EAAM,YACFA,EAAA,SAAU,EAAE,OAA4B,KAAK,GAGjDA,EAAM,gBACRE,EAAS,EAAE,GAAGD,GAAO,OAAO,IAAI,eAAe,IAAO,IAEtDC,EAAS,EAAE,GAAGD,GAAO,eAAe,GAAO,CAAA,GAG7C,EAAE,eAAe,KAGf,EAAE,QAAQ,eAAe,EAAE,QAAQ,cACjCD,EAAM,WAAY,EAAE,OAA4B,MAAM,SAAS,KAC3DA,EAAA,QAAQA,EAAM,MAAM,EAAE,GAE9B,EAAE,eAAe;AAAA,EACnB,GAGIO,IAAuD,CAAC,MAAM;AAC9D,QAAA,CAACN,EAAM,eAAe;AACxB,YAAMO,IAAS,EAAE;AACjB,MAAAN,EAAS,EAAE,GAAGD,GAAO,OAAOO,EAAO,OAAO,GAC1CA,EAAO,MAAM,SAAS,OACfA,EAAA,MAAM,SAASA,EAAO,eAAe;AAAA,IAC9C;AAAA,EAAA,GAGIC,IAAW,CAACC,MAAe;;AAG/B,QAFAR,EAAS,EAAE,GAAGD,GAAO,UAAUS,EAAG,CAAA,GAE9B,CAACA,GAAG;AACA,YAAAC,MAAWC,IAAAC,EAAI,YAAJ,gBAAAD,EAAa,UAAS,IACjCE,IAAYd,EAAM,SAAS;AAE7B,MAAAW,MAAaG,KAAad,EAAM,YAClCA,EAAM,SAASW,CAAQ;AAAA,IAE3B;AAAA,EAAA,GAGIE,IAAME,EAA4B,IAAI;AAC5C,EAAAX,EAAU,MAAM;AACd,UAAMY,IAAiB,MAAM;AAC3B,MAAIH,EAAI,YACFA,EAAA,QAAQ,MAAM,SAAS,OAC3BA,EAAI,QAAQ,MAAM,SAASA,EAAI,QAAQ,eAAe;AAAA,IACxD;AAGK,kBAAA,iBAAiB,UAAUG,CAAc,GACjCA,KAER,MAAM;AACJ,aAAA,oBAAoB,UAAUA,CAAc;AAAA,IAAA;AAAA,EACrD,CACD;AAED,QAAMC,IAAQ;AAAA,IACZ,GAAGC,EAAWlB,EAAM,OAAOC,EAAM,QAAQ;AAAA,IACzC,GAAGkB,EAAgBnB,EAAM,QAAQ,OAAO;AAAA,EAAA;AAG1C,2BACG,OACE,EAAA,UAAA;AAAA,IAAAA,EAAM,iBACL,gBAAAoB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,OAAO;AAAA,UACL,aAAaF,EAAWlB,EAAM,OAAO,EAAK,EAAE;AAAA,QAC9C;AAAA,MAAA;AAAA,MAHI;AAAA,IAAA,IAMN;AAAA,IAEF,gBAAAoB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWpB,EAAM,aAAa;AAAA,QAE9B,QAAQ,MAAMS,EAAS,EAAK;AAAA,QAC5B,SAAS,MAAMA,EAAS,EAAI;AAAA,QAC5B,SAAAF;AAAA,QACA,WAAAF;AAAA,QACA,SAAAC;AAAA,QACA,aAAaN,EAAM,eAAe;AAAA,QAClC,KAAAa;AAAA,QACA,OAAAI;AAAA,QACA,OAAOhB,EAAM;AAAA,MAAA;AAAA,MATT;AAAA,IAUN;AAAA,EACF,EAAA,CAAA;AAEJ;"}
1
+ {"version":3,"file":"textInput.js","sources":["../../../../src/powerhouse/components/legacy/textInput.tsx"],"sourcesContent":["import { KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { TypographySize, inputStyle, typographySizes } from \"./styles\";\n\ninterface TextInputProps {\n readonly theme: \"light\" | \"dark\";\n readonly size?: TypographySize;\n readonly horizontalLine?: boolean;\n readonly id?: string;\n readonly value?: string;\n readonly placeholder?: string;\n readonly autoFocus?: boolean;\n readonly clearOnSubmit?: boolean;\n readonly onSubmit?: { (value: string): void };\n readonly onEmpty?: { (id: string): void };\n}\n\nexport function TextInput(props: TextInputProps) {\n const [state, setState] = useState({\n value: props.value || \"\",\n hasFocus: false,\n pressingEnter: false,\n });\n\n useEffect(() => {\n setState({ ...state, value: props.value || \"\" });\n }, [props]);\n\n const onKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n setState({ ...state, pressingEnter: true });\n e.preventDefault();\n }\n };\n\n const onKeyUp = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n if (props.onSubmit) {\n props.onSubmit((e.target as HTMLInputElement).value);\n }\n\n if (props.clearOnSubmit) {\n setState({ ...state, value: \"\", pressingEnter: false });\n } else {\n setState({ ...state, pressingEnter: false });\n }\n\n e.preventDefault();\n }\n\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\n if (props.onEmpty && (e.target as HTMLInputElement).value.length < 1) {\n props.onEmpty(props.id || \"\");\n }\n e.preventDefault();\n }\n };\n\n const onInput: React.FormEventHandler<HTMLTextAreaElement> = (e) => {\n if (!state.pressingEnter) {\n const target = e.target as HTMLTextAreaElement;\n setState({ ...state, value: target.value });\n target.style.height = \"1px\";\n target.style.height = target.scrollHeight + \"px\";\n }\n };\n\n const setFocus = (f: boolean) => {\n setState({ ...state, hasFocus: f });\n\n if (!f) {\n const newValue = ref.current?.value || \"\";\n const origValue = props.value || \"\";\n\n if (newValue !== origValue && props.onSubmit) {\n props.onSubmit(newValue);\n }\n }\n };\n\n const ref = useRef<HTMLTextAreaElement>(null);\n useEffect(() => {\n const resizeTextArea = () => {\n if (ref.current) {\n ref.current.style.height = \"1px\";\n ref.current.style.height = ref.current.scrollHeight + \"px\";\n }\n };\n\n window.addEventListener(\"resize\", resizeTextArea);\n resizeTextArea();\n\n return () => {\n window.removeEventListener(\"resize\", resizeTextArea);\n };\n });\n\n const style = {\n ...inputStyle(props.theme, state.hasFocus),\n ...typographySizes[props.size || \"small\"],\n };\n\n return (\n <div>\n {props.horizontalLine ? (\n <hr\n key=\"line\"\n style={{\n borderColor: inputStyle(props.theme, false).backgroundColor,\n }}\n />\n ) : (\n \"\"\n )}\n <textarea\n autoFocus={props.autoFocus || false}\n key=\"text\"\n onBlur={() => setFocus(false)}\n onFocus={() => setFocus(true)}\n onInput={onInput}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n placeholder={props.placeholder || \"\"}\n ref={ref}\n style={style}\n value={state.value}\n />\n </div>\n );\n}\n"],"names":["TextInput","props","state","setState","useState","useEffect","onKeyDown","onKeyUp","onInput","target","setFocus","f","newValue","_a","ref","origValue","useRef","resizeTextArea","style","inputStyle","typographySizes","jsx"],"mappings":";;;AAgBO,SAASA,EAAUC,GAAuB;AAC/C,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAS;AAAA,IACjC,OAAOH,EAAM,SAAS;AAAA,IACtB,UAAU;AAAA,IACV,eAAe;AAAA,EAAA,CAChB;AAED,EAAAI,EAAU,MAAM;AACd,IAAAF,EAAS,EAAE,GAAGD,GAAO,OAAOD,EAAM,SAAS,IAAI;AAAA,EAAA,GAC9C,CAACA,CAAK,CAAC;AAEJ,QAAAK,IAAY,CAAC,MAA0C;AACvD,IAAA,EAAE,QAAQ,YACZH,EAAS,EAAE,GAAGD,GAAO,eAAe,IAAM,GAC1C,EAAE,eAAe;AAAA,EAErB,GAEMK,IAAU,CAAC,MAA0C;AACrD,IAAA,EAAE,QAAQ,YACRN,EAAM,YACFA,EAAA,SAAU,EAAE,OAA4B,KAAK,GAGjDA,EAAM,gBACRE,EAAS,EAAE,GAAGD,GAAO,OAAO,IAAI,eAAe,IAAO,IAEtDC,EAAS,EAAE,GAAGD,GAAO,eAAe,IAAO,GAG7C,EAAE,eAAe,KAGf,EAAE,QAAQ,eAAe,EAAE,QAAQ,cACjCD,EAAM,WAAY,EAAE,OAA4B,MAAM,SAAS,KAC3DA,EAAA,QAAQA,EAAM,MAAM,EAAE,GAE9B,EAAE,eAAe;AAAA,EAErB,GAEMO,IAAuD,CAAC,MAAM;AAC9D,QAAA,CAACN,EAAM,eAAe;AACxB,YAAMO,IAAS,EAAE;AACjB,MAAAN,EAAS,EAAE,GAAGD,GAAO,OAAOO,EAAO,OAAO,GAC1CA,EAAO,MAAM,SAAS,OACfA,EAAA,MAAM,SAASA,EAAO,eAAe;AAAA,IAAA;AAAA,EAEhD,GAEMC,IAAW,CAACC,MAAe;;AAG/B,QAFAR,EAAS,EAAE,GAAGD,GAAO,UAAUS,GAAG,GAE9B,CAACA,GAAG;AACA,YAAAC,MAAWC,IAAAC,EAAI,YAAJ,gBAAAD,EAAa,UAAS,IACjCE,IAAYd,EAAM,SAAS;AAE7B,MAAAW,MAAaG,KAAad,EAAM,YAClCA,EAAM,SAASW,CAAQ;AAAA,IACzB;AAAA,EAEJ,GAEME,IAAME,EAA4B,IAAI;AAC5C,EAAAX,EAAU,MAAM;AACd,UAAMY,IAAiB,MAAM;AAC3B,MAAIH,EAAI,YACFA,EAAA,QAAQ,MAAM,SAAS,OAC3BA,EAAI,QAAQ,MAAM,SAASA,EAAI,QAAQ,eAAe;AAAA,IAE1D;AAEO,kBAAA,iBAAiB,UAAUG,CAAc,GACjCA,EAAA,GAER,MAAM;AACJ,aAAA,oBAAoB,UAAUA,CAAc;AAAA,IACrD;AAAA,EAAA,CACD;AAED,QAAMC,IAAQ;AAAA,IACZ,GAAGC,EAAWlB,EAAM,OAAOC,EAAM,QAAQ;AAAA,IACzC,GAAGkB,EAAgBnB,EAAM,QAAQ,OAAO;AAAA,EAC1C;AAEA,2BACG,OACE,EAAA,UAAA;AAAA,IAAAA,EAAM,iBACL,gBAAAoB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,OAAO;AAAA,UACL,aAAaF,EAAWlB,EAAM,OAAO,EAAK,EAAE;AAAA,QAAA;AAAA,MAC9C;AAAA,MAHI;AAAA,IAAA,IAMN;AAAA,IAEF,gBAAAoB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWpB,EAAM,aAAa;AAAA,QAE9B,QAAQ,MAAMS,EAAS,EAAK;AAAA,QAC5B,SAAS,MAAMA,EAAS,EAAI;AAAA,QAC5B,SAAAF;AAAA,QACA,WAAAF;AAAA,QACA,SAAAC;AAAA,QACA,aAAaN,EAAM,eAAe;AAAA,QAClC,KAAAa;AAAA,QACA,OAAAI;AAAA,QACA,OAAOhB,EAAM;AAAA,MAAA;AAAA,MATT;AAAA,IAAA;AAAA,EAUN,GACF;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"textInputVariant.js","sources":["../../../../src/powerhouse/components/legacy/textInputVariant.tsx"],"sourcesContent":["import { KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { TypographySize, inputStyle, typographySizes } from \"./stylesVariant\";\n\ninterface TextInputProps {\n readonly theme: \"light\" | \"dark\";\n readonly size?: TypographySize;\n readonly horizontalLine?: boolean;\n readonly id?: string;\n readonly value?: string;\n readonly placeholder?: string;\n readonly autoFocus?: boolean;\n readonly clearOnSubmit?: boolean;\n readonly onSubmit?: { (value: string): void };\n readonly onEmpty?: { (id: string): void };\n readonly labelStyle?: boolean;\n}\n\nexport function TextInputVariant(props: TextInputProps) {\n const [state, setState] = useState({\n value: props.value || \"\",\n hasFocus: false,\n pressingEnter: false,\n });\n\n useEffect(() => {\n setState({ ...state, value: props.value || \"\" });\n }, [props.value]);\n\n const onKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n setState({ ...state, pressingEnter: true });\n e.preventDefault();\n }\n };\n\n const onKeyUp = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n if (props.onSubmit) {\n props.onSubmit((e.target as HTMLInputElement).value);\n }\n\n if (props.clearOnSubmit) {\n setState({ ...state, value: \"\", pressingEnter: false });\n } else {\n setState({ ...state, pressingEnter: false });\n }\n\n e.preventDefault();\n }\n\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\n if (props.onEmpty && (e.target as HTMLInputElement).value.length < 1) {\n props.onEmpty(props.id || \"\");\n }\n e.preventDefault();\n }\n };\n\n const onInput: React.FormEventHandler<HTMLTextAreaElement> = (e) => {\n if (!state.pressingEnter) {\n const target = e.target as HTMLTextAreaElement;\n setState({ ...state, value: target.value });\n target.style.height = \"1px\";\n target.style.height = `${target.scrollHeight}px`;\n }\n };\n\n const setFocus = (f: boolean) => {\n setState({ ...state, hasFocus: f });\n\n if (!f) {\n const newValue = ref.current?.value || \"\";\n const origValue = props.value || \"\";\n\n if (newValue !== origValue && props.onSubmit) {\n props.onSubmit(newValue);\n }\n }\n };\n\n const ref = useRef<HTMLTextAreaElement>(null);\n useEffect(() => {\n const resizeTextArea = () => {\n if (ref.current) {\n ref.current.style.height = \"1px\";\n ref.current.style.height = `${ref.current.scrollHeight}px`;\n }\n };\n\n window.addEventListener(\"resize\", resizeTextArea);\n resizeTextArea();\n\n return () => {\n window.removeEventListener(\"resize\", resizeTextArea);\n };\n });\n\n const style = {\n ...inputStyle(props.theme, state.hasFocus),\n ...typographySizes[props.size || \"small\"],\n };\n\n if (props.labelStyle) {\n style.textAlign = \"center\";\n style.textTransform = \"uppercase\";\n style.backgroundColor = \"rgba(0, 0, 255, 0.05)\";\n style.borderRadius = \"8px\";\n style.padding = \"1px 0 4px 0\";\n style.margin = \"0\";\n style.fontWeight = \"bold\";\n style.fontSize = \"8pt\";\n style.color = \"#518EBE\";\n style.border = \"2px solid #518EBE\";\n style.cursor = \"pointer\";\n style.lineHeight = \"1.5\";\n }\n\n return (\n <div>\n {props.horizontalLine ? (\n <hr\n key=\"line\"\n style={{\n borderColor: inputStyle(props.theme, false).backgroundColor,\n }}\n />\n ) : (\n \"\"\n )}\n <textarea\n autoFocus={props.autoFocus || false}\n key=\"text\"\n onBlur={() => setFocus(false)}\n onFocus={() => setFocus(true)}\n onInput={onInput}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n placeholder={props.placeholder || \"\"}\n ref={ref}\n spellCheck={state.hasFocus}\n style={style}\n tabIndex={props.labelStyle ? -1 : 1}\n value={state.value}\n />\n </div>\n );\n}\n"],"names":["TextInputVariant","props","state","setState","useState","useEffect","onKeyDown","e","onKeyUp","onInput","target","setFocus","f","newValue","_a","ref","origValue","useRef","resizeTextArea","style","inputStyle","typographySizes","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"textInputVariant.js","sources":["../../../../src/powerhouse/components/legacy/textInputVariant.tsx"],"sourcesContent":["import { KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { TypographySize, inputStyle, typographySizes } from \"./stylesVariant\";\n\ninterface TextInputProps {\n readonly theme: \"light\" | \"dark\";\n readonly size?: TypographySize;\n readonly horizontalLine?: boolean;\n readonly id?: string;\n readonly value?: string;\n readonly placeholder?: string;\n readonly autoFocus?: boolean;\n readonly clearOnSubmit?: boolean;\n readonly onSubmit?: { (value: string): void };\n readonly onEmpty?: { (id: string): void };\n readonly labelStyle?: boolean;\n}\n\nexport function TextInputVariant(props: TextInputProps) {\n const [state, setState] = useState({\n value: props.value || \"\",\n hasFocus: false,\n pressingEnter: false,\n });\n\n useEffect(() => {\n setState({ ...state, value: props.value || \"\" });\n }, [props.value]);\n\n const onKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n setState({ ...state, pressingEnter: true });\n e.preventDefault();\n }\n };\n\n const onKeyUp = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n if (props.onSubmit) {\n props.onSubmit((e.target as HTMLInputElement).value);\n }\n\n if (props.clearOnSubmit) {\n setState({ ...state, value: \"\", pressingEnter: false });\n } else {\n setState({ ...state, pressingEnter: false });\n }\n\n e.preventDefault();\n }\n\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\n if (props.onEmpty && (e.target as HTMLInputElement).value.length < 1) {\n props.onEmpty(props.id || \"\");\n }\n e.preventDefault();\n }\n };\n\n const onInput: React.FormEventHandler<HTMLTextAreaElement> = (e) => {\n if (!state.pressingEnter) {\n const target = e.target as HTMLTextAreaElement;\n setState({ ...state, value: target.value });\n target.style.height = \"1px\";\n target.style.height = `${target.scrollHeight}px`;\n }\n };\n\n const setFocus = (f: boolean) => {\n setState({ ...state, hasFocus: f });\n\n if (!f) {\n const newValue = ref.current?.value || \"\";\n const origValue = props.value || \"\";\n\n if (newValue !== origValue && props.onSubmit) {\n props.onSubmit(newValue);\n }\n }\n };\n\n const ref = useRef<HTMLTextAreaElement>(null);\n useEffect(() => {\n const resizeTextArea = () => {\n if (ref.current) {\n ref.current.style.height = \"1px\";\n ref.current.style.height = `${ref.current.scrollHeight}px`;\n }\n };\n\n window.addEventListener(\"resize\", resizeTextArea);\n resizeTextArea();\n\n return () => {\n window.removeEventListener(\"resize\", resizeTextArea);\n };\n });\n\n const style = {\n ...inputStyle(props.theme, state.hasFocus),\n ...typographySizes[props.size || \"small\"],\n };\n\n if (props.labelStyle) {\n style.textAlign = \"center\";\n style.textTransform = \"uppercase\";\n style.backgroundColor = \"rgba(0, 0, 255, 0.05)\";\n style.borderRadius = \"8px\";\n style.padding = \"1px 0 4px 0\";\n style.margin = \"0\";\n style.fontWeight = \"bold\";\n style.fontSize = \"8pt\";\n style.color = \"#518EBE\";\n style.border = \"2px solid #518EBE\";\n style.cursor = \"pointer\";\n style.lineHeight = \"1.5\";\n }\n\n return (\n <div>\n {props.horizontalLine ? (\n <hr\n key=\"line\"\n style={{\n borderColor: inputStyle(props.theme, false).backgroundColor,\n }}\n />\n ) : (\n \"\"\n )}\n <textarea\n autoFocus={props.autoFocus || false}\n key=\"text\"\n onBlur={() => setFocus(false)}\n onFocus={() => setFocus(true)}\n onInput={onInput}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n placeholder={props.placeholder || \"\"}\n ref={ref}\n spellCheck={state.hasFocus}\n style={style}\n tabIndex={props.labelStyle ? -1 : 1}\n value={state.value}\n />\n </div>\n );\n}\n"],"names":["TextInputVariant","props","state","setState","useState","useEffect","onKeyDown","e","onKeyUp","onInput","target","setFocus","f","newValue","_a","ref","origValue","useRef","resizeTextArea","style","inputStyle","typographySizes","jsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"toolbarButton.js","sources":["../../../../src/powerhouse/components/legacy/toolbarButton.tsx"],"sourcesContent":["import { PropsWithChildren } from \"react\";\n\ninterface ToolbarButtonProps {\n readonly onClick?: () => void;\n}\n\nexport function ToolbarButton(props: PropsWithChildren<ToolbarButtonProps>) {\n const handleClick =\n props.onClick ||\n (() => {\n console.log(\"No onClick handler attached to button.\");\n });\n\n return (\n <div\n className=\"toolbar-button\"\n onClick={handleClick}\n style={{ userSelect: \"none\" }}\n >\n {props.children}\n </div>\n );\n}\n"],"names":["ToolbarButton","props","handleClick","jsx"],"mappings":";AAMO,SAASA,EAAcC,GAA8C;AACpE,QAAAC,IACJD,EAAM,YACL,MAAM;AACL,YAAQ,IAAI,wCAAwC;AAAA,EAAA;AAItD,SAAA,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAASD;AAAA,MACT,OAAO,EAAE,YAAY,OAAO;AAAA,MAE3B,UAAMD,EAAA;AAAA,IAAA;AAAA,EAAA;AAGb;"}
1
+ {"version":3,"file":"toolbarButton.js","sources":["../../../../src/powerhouse/components/legacy/toolbarButton.tsx"],"sourcesContent":["import { PropsWithChildren } from \"react\";\n\ninterface ToolbarButtonProps {\n readonly onClick?: () => void;\n}\n\nexport function ToolbarButton(props: PropsWithChildren<ToolbarButtonProps>) {\n const handleClick =\n props.onClick ||\n (() => {\n console.log(\"No onClick handler attached to button.\");\n });\n\n return (\n <div\n className=\"toolbar-button\"\n onClick={handleClick}\n style={{ userSelect: \"none\" }}\n >\n {props.children}\n </div>\n );\n}\n"],"names":["ToolbarButton","props","handleClick","jsx"],"mappings":";AAMO,SAASA,EAAcC,GAA8C;AACpE,QAAAC,IACJD,EAAM,YACL,MAAM;AACL,YAAQ,IAAI,wCAAwC;AAAA,EAAA;AAItD,SAAA,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAASD;AAAA,MACT,OAAO,EAAE,YAAY,OAAO;AAAA,MAE3B,UAAMD,EAAA;AAAA,IAAA;AAAA,EACT;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sources":["../../../../src/powerhouse/components/modal/modal.tsx"],"sourcesContent":["import {\n Content,\n Description,\n Overlay,\n Portal,\n Root,\n Title,\n} from \"@radix-ui/react-dialog\";\nimport { Root as VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { ComponentPropsWithoutRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Props = {\n readonly title?: string;\n readonly children?: React.ReactNode;\n readonly open?: boolean;\n readonly onOpenChange?: (open: boolean) => void;\n readonly overlayProps?: ComponentPropsWithoutRef<typeof Overlay>;\n readonly contentProps?: ComponentPropsWithoutRef<typeof Content>;\n};\nexport function Modal(props: Props) {\n const {\n title,\n open,\n onOpenChange,\n contentProps,\n overlayProps,\n children,\n ...delegated\n } = props;\n return (\n <Root defaultOpen={open} onOpenChange={onOpenChange} open={open}>\n <Portal>\n <Overlay\n {...overlayProps}\n className={twMerge(\n \"fixed inset-0 grid place-items-center overflow-y-auto bg-slate-900/50 data-[state=closed]:animate-fade-out data-[state=open]:animate-fade-in\",\n overlayProps?.className,\n )}\n >\n <Content\n {...delegated}\n {...contentProps}\n className={twMerge(\n \"bg-white data-[state=closed]:animate-zoom-out data-[state=open]:animate-zoom-in\",\n contentProps?.className,\n )}\n >\n <VisuallyHidden>\n <Title>{title || \"Modal\"}</Title>\n <Description>{title || \"Modal\"}</Description>\n </VisuallyHidden>\n {children}\n </Content>\n </Overlay>\n </Portal>\n </Root>\n );\n}\n"],"names":["Modal","props","title","open","onOpenChange","contentProps","overlayProps","children","delegated","Root","Portal","jsx","Overlay","twMerge","jsxs","Content","VisuallyHidden","Title","Description"],"mappings":";;;;AAoBO,SAASA,EAAMC,GAAc;AAC5B,QAAA;AAAA,IACJ,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EACD,IAAAP;AACJ,2BACGQ,GAAK,EAAA,aAAaN,GAAM,cAAAC,GAA4B,MAAAD,GACnD,4BAACO,GACC,EAAA,UAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGN;AAAA,MACJ,WAAWO;AAAA,QACT;AAAA,QACAP,KAAA,gBAAAA,EAAc;AAAA,MAChB;AAAA,MAEA,UAAA,gBAAAQ;AAAA,QAACC;AAAA,QAAA;AAAA,UACE,GAAGP;AAAA,UACH,GAAGH;AAAA,UACJ,WAAWQ;AAAA,YACT;AAAA,YACAR,KAAA,gBAAAA,EAAc;AAAA,UAChB;AAAA,UAEA,UAAA;AAAA,YAAA,gBAAAS,EAACE,GACC,EAAA,UAAA;AAAA,cAAC,gBAAAL,EAAAM,GAAA,EAAO,eAAS,QAAQ,CAAA;AAAA,cACzB,gBAAAN,EAACO,GAAa,EAAA,UAAAhB,KAAS,QAAQ,CAAA;AAAA,YAAA,GACjC;AAAA,YACCK;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;"}
1
+ {"version":3,"file":"modal.js","sources":["../../../../src/powerhouse/components/modal/modal.tsx"],"sourcesContent":["import {\n Content,\n Description,\n Overlay,\n Portal,\n Root,\n Title,\n} from \"@radix-ui/react-dialog\";\nimport { Root as VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { ComponentPropsWithoutRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Props = {\n readonly title?: string;\n readonly children?: React.ReactNode;\n readonly open?: boolean;\n readonly onOpenChange?: (open: boolean) => void;\n readonly overlayProps?: ComponentPropsWithoutRef<typeof Overlay>;\n readonly contentProps?: ComponentPropsWithoutRef<typeof Content>;\n};\nexport function Modal(props: Props) {\n const {\n title,\n open,\n onOpenChange,\n contentProps,\n overlayProps,\n children,\n ...delegated\n } = props;\n return (\n <Root defaultOpen={open} onOpenChange={onOpenChange} open={open}>\n <Portal>\n <Overlay\n {...overlayProps}\n className={twMerge(\n \"fixed inset-0 grid place-items-center overflow-y-auto bg-slate-900/50 data-[state=closed]:animate-fade-out data-[state=open]:animate-fade-in\",\n overlayProps?.className,\n )}\n >\n <Content\n {...delegated}\n {...contentProps}\n className={twMerge(\n \"bg-white data-[state=closed]:animate-zoom-out data-[state=open]:animate-zoom-in\",\n contentProps?.className,\n )}\n >\n <VisuallyHidden>\n <Title>{title || \"Modal\"}</Title>\n <Description>{title || \"Modal\"}</Description>\n </VisuallyHidden>\n {children}\n </Content>\n </Overlay>\n </Portal>\n </Root>\n );\n}\n"],"names":["Modal","props","title","open","onOpenChange","contentProps","overlayProps","children","delegated","Root","Portal","jsx","Overlay","twMerge","jsxs","Content","VisuallyHidden","Title","Description"],"mappings":";;;;AAoBO,SAASA,EAAMC,GAAc;AAC5B,QAAA;AAAA,IACJ,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDP;AACJ,2BACGQ,GAAK,EAAA,aAAaN,GAAM,cAAAC,GAA4B,MAAAD,GACnD,4BAACO,GACC,EAAA,UAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGN;AAAA,MACJ,WAAWO;AAAA,QACT;AAAA,QACAP,KAAA,gBAAAA,EAAc;AAAA,MAChB;AAAA,MAEA,UAAA,gBAAAQ;AAAA,QAACC;AAAA,QAAA;AAAA,UACE,GAAGP;AAAA,UACH,GAAGH;AAAA,UACJ,WAAWQ;AAAA,YACT;AAAA,YACAR,KAAA,gBAAAA,EAAc;AAAA,UAChB;AAAA,UAEA,UAAA;AAAA,YAAA,gBAAAS,EAACE,GACC,EAAA,UAAA;AAAA,cAAC,gBAAAL,EAAAM,GAAA,EAAO,eAAS,QAAQ,CAAA;AAAA,cACzB,gBAAAN,EAACO,GAAa,EAAA,UAAAhB,KAAS,QAAQ,CAAA;AAAA,YAAA,GACjC;AAAA,YACCK;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,KAEJ,EACF,CAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"pagination-button.js","sources":["../../../../src/powerhouse/components/pagination/pagination-button.tsx"],"sourcesContent":["import { Button, ButtonProps, mergeClassNameProps } from \"@/powerhouse\";\nimport React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport interface PaginationButtonProps extends ButtonProps {\n readonly active?: boolean;\n}\n\nexport const PaginationButton: React.FC<PaginationButtonProps> = ({\n active = false,\n ...props\n}) => {\n const className = twMerge(\n \"h-8 min-w-8 border border-solid border-gray-300 bg-white px-3 py-1 text-xs text-gray-900 hover:bg-gray-100\",\n !active && \"border-0\",\n );\n\n return (\n <Button\n color=\"light\"\n size=\"small\"\n {...mergeClassNameProps(props, className)}\n >\n {props.children}\n </Button>\n );\n};\n"],"names":["PaginationButton","active","props","className","twMerge","jsx","Button","mergeClassNameProps"],"mappings":";;;;AAQO,MAAMA,IAAoD,CAAC;AAAA,EAChE,QAAAC,IAAS;AAAA,EACT,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAYC;AAAA,IAChB;AAAA,IACA,CAACH,KAAU;AAAA,EAAA;AAIX,SAAA,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,MAAK;AAAA,MACJ,GAAGC,EAAoBL,GAAOC,CAAS;AAAA,MAEvC,UAAMD,EAAA;AAAA,IAAA;AAAA,EAAA;AAGb;"}
1
+ {"version":3,"file":"pagination-button.js","sources":["../../../../src/powerhouse/components/pagination/pagination-button.tsx"],"sourcesContent":["import { Button, ButtonProps, mergeClassNameProps } from \"@/powerhouse\";\nimport React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport interface PaginationButtonProps extends ButtonProps {\n readonly active?: boolean;\n}\n\nexport const PaginationButton: React.FC<PaginationButtonProps> = ({\n active = false,\n ...props\n}) => {\n const className = twMerge(\n \"h-8 min-w-8 border border-solid border-gray-300 bg-white px-3 py-1 text-xs text-gray-900 hover:bg-gray-100\",\n !active && \"border-0\",\n );\n\n return (\n <Button\n color=\"light\"\n size=\"small\"\n {...mergeClassNameProps(props, className)}\n >\n {props.children}\n </Button>\n );\n};\n"],"names":["PaginationButton","active","props","className","twMerge","jsx","Button","mergeClassNameProps"],"mappings":";;;;AAQO,MAAMA,IAAoD,CAAC;AAAA,EAChE,QAAAC,IAAS;AAAA,EACT,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAYC;AAAA,IAChB;AAAA,IACA,CAACH,KAAU;AAAA,EACb;AAGE,SAAA,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,MAAK;AAAA,MACJ,GAAGC,EAAoBL,GAAOC,CAAS;AAAA,MAEvC,UAAMD,EAAA;AAAA,IAAA;AAAA,EACT;AAEJ;"}