@weavy/uikit-react 11.1.0 → 13.0.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 (256) hide show
  1. package/.github/workflows/publish.yml +1 -1
  2. package/README.md +3 -4
  3. package/changelog.md +57 -0
  4. package/dist/cjs/index.js +28 -6
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/types/client/WeavyClient.d.ts +8 -1
  7. package/dist/cjs/types/components/Attachment.d.ts +2 -1
  8. package/dist/cjs/types/components/Chat.d.ts +1 -1
  9. package/dist/cjs/types/components/Image.d.ts +2 -0
  10. package/dist/cjs/types/components/PdfViewer.d.ts +8 -0
  11. package/dist/cjs/types/components/Preview.d.ts +56 -0
  12. package/dist/cjs/types/contexts/MessengerContext.d.ts +1 -2
  13. package/dist/cjs/types/contexts/PreviewContext.d.ts +2 -1
  14. package/dist/cjs/types/contexts/WeavyContext.d.ts +2 -3
  15. package/dist/cjs/types/types/Chat.d.ts +1 -1
  16. package/dist/cjs/types/types/Messenger.d.ts +0 -1
  17. package/dist/cjs/types/types/types.d.ts +18 -8
  18. package/dist/cjs/types/ui/Spinner.d.ts +9 -0
  19. package/dist/cjs/types/utils/fileUtilities.d.ts +13 -1
  20. package/dist/css/weavy-chat.css +2860 -0
  21. package/dist/css/weavy-messenger.css +3217 -0
  22. package/dist/css/weavy.css +3217 -0
  23. package/dist/esm/index.js +28 -6
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/types/client/WeavyClient.d.ts +8 -1
  26. package/dist/esm/types/components/Attachment.d.ts +2 -1
  27. package/dist/esm/types/components/Chat.d.ts +1 -1
  28. package/dist/esm/types/components/Image.d.ts +2 -0
  29. package/dist/esm/types/components/PdfViewer.d.ts +8 -0
  30. package/dist/esm/types/components/Preview.d.ts +56 -0
  31. package/dist/esm/types/contexts/MessengerContext.d.ts +1 -2
  32. package/dist/esm/types/contexts/PreviewContext.d.ts +2 -1
  33. package/dist/esm/types/contexts/WeavyContext.d.ts +2 -3
  34. package/dist/esm/types/types/Chat.d.ts +1 -1
  35. package/dist/esm/types/types/Messenger.d.ts +0 -1
  36. package/dist/esm/types/types/types.d.ts +18 -8
  37. package/dist/esm/types/ui/Spinner.d.ts +9 -0
  38. package/dist/esm/types/utils/fileUtilities.d.ts +13 -1
  39. package/dist/index.d.ts +15 -9
  40. package/package.json +14 -4
  41. package/rollup.config.js +3 -3
  42. package/src/client/WeavyClient.ts +105 -24
  43. package/src/components/Attachment.tsx +8 -8
  44. package/src/components/Avatar.tsx +2 -3
  45. package/src/components/Chat.tsx +13 -17
  46. package/src/components/Conversation.tsx +23 -32
  47. package/src/components/ConversationBadge.tsx +1 -2
  48. package/src/components/ConversationForm.tsx +11 -18
  49. package/src/components/ConversationList.tsx +4 -5
  50. package/src/components/ConversationListItem.tsx +11 -13
  51. package/src/components/FileBrowser.tsx +2 -3
  52. package/src/components/Image.tsx +39 -7
  53. package/src/components/MeetingCard.tsx +7 -8
  54. package/src/components/Message.tsx +13 -14
  55. package/src/components/Messages.tsx +7 -8
  56. package/src/components/Messenger.tsx +5 -6
  57. package/src/components/NewConversation.tsx +5 -7
  58. package/src/components/PdfViewer.tsx +276 -0
  59. package/src/components/Presence.tsx +2 -2
  60. package/src/components/Preview.tsx +355 -0
  61. package/src/components/Reactions.tsx +8 -8
  62. package/src/components/SearchUsers.tsx +19 -18
  63. package/src/components/SeenBy.tsx +1 -2
  64. package/src/contexts/MessengerContext.tsx +4 -12
  65. package/src/contexts/PreviewContext.tsx +89 -17
  66. package/src/contexts/WeavyContext.tsx +15 -5
  67. package/src/hooks/useBadge.ts +2 -6
  68. package/src/hooks/useChat.ts +3 -14
  69. package/src/hooks/useConversation.ts +1 -8
  70. package/src/hooks/useConversations.ts +1 -7
  71. package/src/hooks/useFileUploader.ts +6 -8
  72. package/src/hooks/useMembers.ts +1 -7
  73. package/src/hooks/useMessages.ts +1 -7
  74. package/src/hooks/useMutateChat.ts +6 -11
  75. package/src/hooks/useMutateConversation.ts +7 -10
  76. package/src/hooks/useMutateConversationName.ts +10 -12
  77. package/src/hooks/useMutateDeleteReaction.ts +3 -8
  78. package/src/hooks/useMutateExternalBlobs.ts +6 -11
  79. package/src/hooks/useMutateMeeting.ts +6 -11
  80. package/src/hooks/useMutateMembers.ts +8 -13
  81. package/src/hooks/useMutateMessage.ts +10 -15
  82. package/src/hooks/useMutatePinned.ts +3 -8
  83. package/src/hooks/useMutateReaction.ts +6 -12
  84. package/src/hooks/useMutateRead.ts +1 -10
  85. package/src/hooks/useMutateRemoveMembers.ts +7 -12
  86. package/src/hooks/useMutateTyping.ts +6 -11
  87. package/src/hooks/usePresence.ts +4 -5
  88. package/src/hooks/useReactions.ts +0 -1
  89. package/src/hooks/useSearchUsers.ts +1 -6
  90. package/src/hooks/useUser.ts +3 -14
  91. package/src/index.ts +2 -2
  92. package/src/scss/theme/_alert.scss +73 -0
  93. package/src/scss/theme/_appbar.scss +114 -0
  94. package/src/scss/theme/_attachments.scss +74 -0
  95. package/src/scss/theme/_avatar.scss +54 -0
  96. package/src/scss/theme/_badge.scss +47 -0
  97. package/src/scss/theme/_buttons.scss +96 -0
  98. package/src/scss/theme/_card.scss +7 -0
  99. package/src/scss/theme/_checkbox.scss +56 -0
  100. package/src/scss/theme/_cm-editor.scss +42 -0
  101. package/src/scss/theme/_code-vscode-dark.scss +184 -0
  102. package/src/scss/theme/_code-vscode-light.scss +179 -0
  103. package/src/scss/theme/_code.scss +12 -0
  104. package/src/scss/theme/_colors.scss +520 -0
  105. package/src/scss/theme/_config.scss +6 -0
  106. package/src/scss/theme/_content.scss +15 -0
  107. package/src/scss/theme/_conversations.scss +91 -0
  108. package/src/scss/theme/_dropdown.scss +86 -0
  109. package/src/scss/theme/_emoji.scss +5 -0
  110. package/src/scss/theme/_filebrowser.scss +26 -0
  111. package/src/scss/theme/_files.scss +140 -0
  112. package/src/scss/theme/_icons.scss +62 -0
  113. package/src/scss/theme/_image-grid.scss +63 -0
  114. package/src/scss/theme/_inputs.scss +28 -0
  115. package/src/scss/theme/_message-editor.scss +90 -0
  116. package/src/scss/theme/_messages.scss +238 -0
  117. package/src/scss/theme/_nav.scss +52 -0
  118. package/src/scss/theme/_overlays.scss +157 -0
  119. package/src/scss/theme/_pager.scss +19 -0
  120. package/src/scss/theme/_palette.scss +165 -0
  121. package/src/scss/theme/_pane.scss +16 -0
  122. package/src/scss/theme/_panels.scss +141 -0
  123. package/src/scss/theme/_picker-list.scss +37 -0
  124. package/src/scss/theme/_preview-code.scss +5 -0
  125. package/src/scss/theme/_preview-embed.scss +38 -0
  126. package/src/scss/theme/_preview-html.scss +7 -0
  127. package/src/scss/theme/_preview-icon.scss +41 -0
  128. package/src/scss/theme/_preview-image.scss +86 -0
  129. package/src/scss/theme/_preview-media.scss +28 -0
  130. package/src/scss/theme/_preview-pdf.scss +838 -0
  131. package/src/scss/theme/_preview-text.scss +5 -0
  132. package/src/scss/theme/_preview.scss +110 -0
  133. package/src/scss/theme/_reactions.scss +58 -0
  134. package/src/scss/theme/_reboot.scss +41 -0
  135. package/src/scss/theme/_root.scss +2 -0
  136. package/src/scss/theme/_scroll.scss +55 -0
  137. package/src/scss/theme/_search.scss +68 -0
  138. package/src/scss/theme/_spinner.scss +63 -0
  139. package/src/scss/theme/_tables.scss +53 -0
  140. package/src/scss/theme/_toasts.scss +47 -0
  141. package/src/scss/theme/_turbo.scss +17 -0
  142. package/src/scss/theme/_typing.scss +26 -0
  143. package/src/scss/theme/_variables.scss +139 -0
  144. package/src/scss/theme/bootstrap/_accordion.scss +146 -0
  145. package/src/scss/theme/bootstrap/_alert.scss +71 -0
  146. package/src/scss/theme/bootstrap/_badge.scss +38 -0
  147. package/src/scss/theme/bootstrap/_breadcrumb.scss +40 -0
  148. package/src/scss/theme/bootstrap/_button-group.scss +142 -0
  149. package/src/scss/theme/bootstrap/_buttons.scss +186 -0
  150. package/src/scss/theme/bootstrap/_card.scss +234 -0
  151. package/src/scss/theme/bootstrap/_carousel.scss +229 -0
  152. package/src/scss/theme/bootstrap/_close.scss +40 -0
  153. package/src/scss/theme/bootstrap/_containers.scss +41 -0
  154. package/src/scss/theme/bootstrap/_dropdown.scss +248 -0
  155. package/src/scss/theme/bootstrap/_forms.scss +9 -0
  156. package/src/scss/theme/bootstrap/_functions.scss +302 -0
  157. package/src/scss/theme/bootstrap/_grid.scss +33 -0
  158. package/src/scss/theme/bootstrap/_helpers.scss +10 -0
  159. package/src/scss/theme/bootstrap/_images.scss +42 -0
  160. package/src/scss/theme/bootstrap/_list-group.scss +191 -0
  161. package/src/scss/theme/bootstrap/_maps.scss +54 -0
  162. package/src/scss/theme/bootstrap/_mixins.scss +43 -0
  163. package/src/scss/theme/bootstrap/_modal.scss +237 -0
  164. package/src/scss/theme/bootstrap/_nav.scss +172 -0
  165. package/src/scss/theme/bootstrap/_navbar.scss +276 -0
  166. package/src/scss/theme/bootstrap/_offcanvas.scss +143 -0
  167. package/src/scss/theme/bootstrap/_pagination.scss +109 -0
  168. package/src/scss/theme/bootstrap/_placeholders.scss +51 -0
  169. package/src/scss/theme/bootstrap/_popover.scss +196 -0
  170. package/src/scss/theme/bootstrap/_progress.scss +59 -0
  171. package/src/scss/theme/bootstrap/_reboot.scss +610 -0
  172. package/src/scss/theme/bootstrap/_root.scss +73 -0
  173. package/src/scss/theme/bootstrap/_spinners.scss +85 -0
  174. package/src/scss/theme/bootstrap/_tables.scss +164 -0
  175. package/src/scss/theme/bootstrap/_toasts.scss +70 -0
  176. package/src/scss/theme/bootstrap/_tooltip.scss +120 -0
  177. package/src/scss/theme/bootstrap/_transitions.scss +27 -0
  178. package/src/scss/theme/bootstrap/_type.scss +106 -0
  179. package/src/scss/theme/bootstrap/_utilities.scss +647 -0
  180. package/src/scss/theme/bootstrap/_variables.scss +1633 -0
  181. package/src/scss/theme/bootstrap/forms/_floating-labels.scss +74 -0
  182. package/src/scss/theme/bootstrap/forms/_form-check.scss +175 -0
  183. package/src/scss/theme/bootstrap/forms/_form-control.scss +194 -0
  184. package/src/scss/theme/bootstrap/forms/_form-range.scss +91 -0
  185. package/src/scss/theme/bootstrap/forms/_form-select.scss +71 -0
  186. package/src/scss/theme/bootstrap/forms/_form-text.scss +11 -0
  187. package/src/scss/theme/bootstrap/forms/_input-group.scss +129 -0
  188. package/src/scss/theme/bootstrap/forms/_labels.scss +36 -0
  189. package/src/scss/theme/bootstrap/forms/_validation.scss +12 -0
  190. package/src/scss/theme/bootstrap/helpers/_clearfix.scss +3 -0
  191. package/src/scss/theme/bootstrap/helpers/_color-bg.scss +10 -0
  192. package/src/scss/theme/bootstrap/helpers/_colored-links.scss +12 -0
  193. package/src/scss/theme/bootstrap/helpers/_position.scss +36 -0
  194. package/src/scss/theme/bootstrap/helpers/_ratio.scss +26 -0
  195. package/src/scss/theme/bootstrap/helpers/_stacks.scss +15 -0
  196. package/src/scss/theme/bootstrap/helpers/_stretched-link.scss +15 -0
  197. package/src/scss/theme/bootstrap/helpers/_text-truncation.scss +7 -0
  198. package/src/scss/theme/bootstrap/helpers/_visually-hidden.scss +8 -0
  199. package/src/scss/theme/bootstrap/helpers/_vr.scss +8 -0
  200. package/src/scss/theme/bootstrap/mixins/_alert.scss +15 -0
  201. package/src/scss/theme/bootstrap/mixins/_backdrop.scss +14 -0
  202. package/src/scss/theme/bootstrap/mixins/_banner.scss +9 -0
  203. package/src/scss/theme/bootstrap/mixins/_border-radius.scss +78 -0
  204. package/src/scss/theme/bootstrap/mixins/_box-shadow.scss +18 -0
  205. package/src/scss/theme/bootstrap/mixins/_breakpoints.scss +127 -0
  206. package/src/scss/theme/bootstrap/mixins/_buttons.scss +70 -0
  207. package/src/scss/theme/bootstrap/mixins/_caret.scss +64 -0
  208. package/src/scss/theme/bootstrap/mixins/_clearfix.scss +9 -0
  209. package/src/scss/theme/bootstrap/mixins/_color-scheme.scss +7 -0
  210. package/src/scss/theme/bootstrap/mixins/_container.scss +11 -0
  211. package/src/scss/theme/bootstrap/mixins/_deprecate.scss +10 -0
  212. package/src/scss/theme/bootstrap/mixins/_forms.scss +152 -0
  213. package/src/scss/theme/bootstrap/mixins/_gradients.scss +47 -0
  214. package/src/scss/theme/bootstrap/mixins/_grid.scss +151 -0
  215. package/src/scss/theme/bootstrap/mixins/_image.scss +16 -0
  216. package/src/scss/theme/bootstrap/mixins/_list-group.scss +24 -0
  217. package/src/scss/theme/bootstrap/mixins/_lists.scss +7 -0
  218. package/src/scss/theme/bootstrap/mixins/_pagination.scss +10 -0
  219. package/src/scss/theme/bootstrap/mixins/_reset-text.scss +17 -0
  220. package/src/scss/theme/bootstrap/mixins/_resize.scss +6 -0
  221. package/src/scss/theme/bootstrap/mixins/_table-variants.scss +24 -0
  222. package/src/scss/theme/bootstrap/mixins/_text-truncate.scss +8 -0
  223. package/src/scss/theme/bootstrap/mixins/_transition.scss +26 -0
  224. package/src/scss/theme/bootstrap/mixins/_utilities.scss +97 -0
  225. package/src/scss/theme/bootstrap/mixins/_visually-hidden.scss +29 -0
  226. package/src/scss/theme/bootstrap/utilities/_api.scss +47 -0
  227. package/src/scss/theme/bootstrap/vendor/_rfs.scss +354 -0
  228. package/src/scss/theme/bs/_badge.scss +20 -0
  229. package/src/scss/theme/bs/_buttons.scss +185 -0
  230. package/src/scss/theme/bs/_dropdown.scss +86 -0
  231. package/src/scss/theme/bs/_forms.scss +161 -0
  232. package/src/scss/theme/bs/_list-group.scss +73 -0
  233. package/src/scss/theme/bs/_tables.scss +46 -0
  234. package/src/scss/theme/fonts/_fontmapping-roboto.scss +129 -0
  235. package/src/scss/theme/fonts/_fontmapping-segoe-ui.scss +127 -0
  236. package/src/scss/theme/fonts/_index.scss +2 -0
  237. package/src/scss/theme/mixins/_backdrop.scss +13 -0
  238. package/src/scss/theme/mixins/_palette.scss +165 -0
  239. package/src/scss/theme/mixins/_position.scss +33 -0
  240. package/src/scss/theme/mixins/_scrollbar.scss +110 -0
  241. package/src/scss/weavy-chat.scss +32 -0
  242. package/src/scss/weavy-messenger.scss +61 -0
  243. package/src/scss/weavy.scss +2 -0
  244. package/src/types/Chat.ts +1 -1
  245. package/src/types/Messenger.ts +1 -1
  246. package/src/types/types.ts +20 -11
  247. package/src/ui/Button.tsx +3 -4
  248. package/src/ui/Dropdown.tsx +4 -5
  249. package/src/ui/Icon.tsx +75 -39
  250. package/src/ui/Overlay.tsx +2 -3
  251. package/src/ui/Spinner.tsx +18 -0
  252. package/src/utils/fileUtilities.ts +166 -72
  253. package/src/utils/scrollbarDetection.js +48 -0
  254. package/dist/cjs/types/utils/styles.d.ts +0 -17
  255. package/dist/esm/types/utils/styles.d.ts +0 -17
  256. package/src/utils/styles.ts +0 -42
package/src/ui/Icon.tsx CHANGED
@@ -1,6 +1,40 @@
1
1
  import React from "react";
2
- const MdiIcon = require('@mdi/react/Icon')
3
- import { prefix as wy } from "../utils/styles";
2
+ import {
3
+ mdiArrowLeft,
4
+ mdiArrowRight,
5
+ mdiAttachment,
6
+ mdiBox,
7
+ mdiClose,
8
+ mdiCloseCircle,
9
+ mdiCloud,
10
+ mdiDotsVertical,
11
+ mdiDownload,
12
+ mdiDropbox,
13
+ mdiEmail,
14
+ mdiFile,
15
+ mdiFileCode,
16
+ mdiFileDocument,
17
+ mdiFileExcel,
18
+ mdiFileImage,
19
+ mdiFileMusic,
20
+ mdiFilePowerpoint,
21
+ mdiFileVideo,
22
+ mdiFileWord,
23
+ mdiFitToPage,
24
+ mdiFitToScreen,
25
+ mdiFolderZip,
26
+ mdiGoogleDrive,
27
+ mdiMagnify,
28
+ mdiMicrosoftOnedrive,
29
+ mdiMinus,
30
+ mdiOpenInNew,
31
+ mdiPin,
32
+ mdiPlus,
33
+ mdiPlusCircleOutline,
34
+ mdiSend,
35
+ mdiVideo
36
+ } from "@mdi/js";
37
+ import MdiIcon from '@mdi/react/Icon';
4
38
 
5
39
  type Props = {
6
40
  name: string,
@@ -10,44 +44,46 @@ type Props = {
10
44
 
11
45
  // Custom mapping to MDI instead of symbols
12
46
  const iconMapping: { [index: string]: string } = {
13
- "attachment": "M7.5,18A5.5,5.5 0 0,1 2,12.5A5.5,5.5 0 0,1 7.5,7H18A4,4 0 0,1 22,11A4,4 0 0,1 18,15H9.5A2.5,2.5 0 0,1 7,12.5A2.5,2.5 0 0,1 9.5,10H17V11.5H9.5A1,1 0 0,0 8.5,12.5A1,1 0 0,0 9.5,13.5H18A2.5,2.5 0 0,0 20.5,11A2.5,2.5 0 0,0 18,8.5H7.5A4,4 0 0,0 3.5,12.5A4,4 0 0,0 7.5,16.5H17V18H7.5Z",
14
- "back": "M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z",
15
- "close": "M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z",
16
- "close-circle": "M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z",
17
- "dots-vertical": "M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z",
18
- "download": "M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z",
19
- "emoticon-outline": "M12,17.5C14.33,17.5 16.3,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5M8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11M15.5,11A1.5,1.5 0 0,0 17,9.5A1.5,1.5 0 0,0 15.5,8A1.5,1.5 0 0,0 14,9.5A1.5,1.5 0 0,0 15.5,11M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",
20
- "magnify": "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z",
21
- "next": "M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z",
22
- "pin": "M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z",
23
- "plus": "M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z",
24
- "plus-circle-outline": "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z",
25
- "previous": "M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z",
26
- "send": "M2,21L23,12L2,3V10L17,12L2,14V21Z",
27
- "video": "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z",
47
+ "attachment": mdiAttachment,
48
+ "back": mdiArrowLeft,
49
+ "close": mdiClose,
50
+ "close-circle": mdiCloseCircle,
51
+ "dots-vertical": mdiDotsVertical,
52
+ "download": mdiDownload,
53
+ "emoticon-plus": "M 19 0 L 19 3 L 16 3 L 16 5 L 19 5 L 19 8 L 21 8 L 21 5 L 24 5 L 24 3 L 21 3 L 21 0 L 19 0 z M 12 2 C 6.5 2 2 6.5 2 12 C 2 17.5 6.5 22 12 22 C 17.5 22 22 17.5 22 12 L 20 12 C 20 16.4 16.4 20 12 20 C 7.6 20 4 16.4 4 12 C 4 7.6 7.6 4 12 4 L 12 2 z M 8.5 8 C 7.7 8 7 8.7 7 9.5 C 7 10.3 7.7 11 8.5 11 C 9.3 11 10 10.3 10 9.5 C 10 8.7 9.3 8 8.5 8 z M 15.5 8 C 14.7 8 14 8.7 14 9.5 C 14 10.3 14.7 11 15.5 11 C 16.3 11 17 10.3 17 9.5 C 17 8.7 16.3 8 15.5 8 z M 6.9 14 C 7.7 16 9.7 17.5 12 17.5 C 14.3 17.5 16.3 16 17.1 14 L 6.9 14 z",
54
+ "fit-screen": mdiFitToScreen,
55
+ "fit-width": mdiFitToPage,
56
+ "magnify": mdiMagnify,
57
+ "minus": mdiMinus,
58
+ "next": mdiArrowRight,
59
+ "open-in-new": mdiOpenInNew,
60
+ "pin": mdiPin,
61
+ "plus": mdiPlus,
62
+ "plus-circle-outline": mdiPlusCircleOutline,
63
+ "previous": mdiArrowLeft,
64
+ "send": mdiSend,
65
+ "video": mdiVideo,
28
66
  // Files
29
- "email": "M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z",
30
- "file": "M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z",
31
- "file-music": "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,13H11V18A2,2 0 0,1 9,20A2,2 0 0,1 7,18A2,2 0 0,1 9,16C9.4,16 9.7,16.1 10,16.3V11H13V13M13,9V3.5L18.5,9H13Z",
32
- "file-image": "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z",
33
- "file-video": "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M17,19V13L14,15.2V13H7V19H14V16.8L17,19Z",
34
- "file-xml": "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6.12,15.5L9.86,19.24L11.28,17.83L8.95,15.5L11.28,13.17L9.86,11.76L6.12,15.5M17.28,15.5L13.54,11.76L12.12,13.17L14.45,15.5L12.12,17.83L13.54,19.24L17.28,15.5Z",
35
- "file-document": "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z",
36
- "file-word": "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.2,20H13.8L12,13.2L10.2,20H8.8L6.6,11H8.1L9.5,17.8L11.3,11H12.6L14.4,17.8L15.8,11H17.3L15.2,20M13,9V3.5L18.5,9H13Z",
37
- "file-excel": "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.8,20H14L12,16.6L10,20H8.2L11.1,15.5L8.2,11H10L12,14.4L14,11H15.8L12.9,15.5L15.8,20M13,9V3.5L18.5,9H13Z",
38
- "file-pdf": "M12,10.5H13V13.5H12V10.5M7,11.5H8V10.5H7V11.5M20,6V18A2,2 0 0,1 18,20H6A2,2 0 0,1 4,18V6A2,2 0 0,1 6,4H18A2,2 0 0,1 20,6M9.5,10.5A1.5,1.5 0 0,0 8,9H5.5V15H7V13H8A1.5,1.5 0 0,0 9.5,11.5V10.5M14.5,10.5A1.5,1.5 0 0,0 13,9H10.5V15H13A1.5,1.5 0 0,0 14.5,13.5V10.5M18.5,9H15.5V15H17V13H18.5V11.5H17V10.5H18.5V9Z",
39
- "file-powerpoint": "M12.6,12.3H10.6V15.5H12.7C13.3,15.5 13.6,15.3 13.9,15C14.2,14.7 14.3,14.4 14.3,13.9C14.3,13.4 14.2,13.1 13.9,12.8C13.6,12.5 13.2,12.3 12.6,12.3M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.2,16C14.6,16.5 14.1,16.7 12.8,16.7H10.6V20H9V11H12.8C14.1,11 14.7,11.3 15.2,11.8C15.8,12.4 16,13 16,13.9C16,14.8 15.8,15.5 15.2,16M13,9V3.5L18.5,9H13Z",
40
- "file-document-box": "M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z",
41
- "file-slide-box": "M19,16H5V8H19M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z",
42
- "file-sheet-box": "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M9 18H6V16H9V18M9 15H6V13H9V15M9 12H6V10H9V12M13 18H10V16H13V18M13 15H10V13H13V15M13 12H10V10H13V12Z",
43
- "file-compressed": "M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z",
67
+ "email": mdiEmail,
68
+ "file": mdiFile,
69
+ "file-music": mdiFileMusic,
70
+ "file-image": mdiFileImage,
71
+ "file-video": mdiFileVideo,
72
+ "file-code": mdiFileCode,
73
+ "file-xml": mdiFileCode,
74
+ "file-document": mdiFileDocument,
75
+ "file-word": mdiFileWord,
76
+ "file-excel": mdiFileExcel,
77
+ "file-pdf": mdiFileDocument,
78
+ "file-powerpoint": mdiFilePowerpoint,
79
+ "file-compressed": mdiFolderZip,
44
80
  // Providers
45
- "dropbox": "M3 6.2L8 9.39L13 6.2L8 3L3 6.2M13 6.2L18 9.39L23 6.2L18 3L13 6.2M3 12.55L8 15.74L13 12.55L8 9.35L3 12.55M18 9.35L13 12.55L18 15.74L23 12.55L18 9.35M8.03 16.8L13.04 20L18.04 16.8L13.04 13.61L8.03 16.8Z",
46
- "ondedrive": "M18.21 10.29Q19 10.34 19.7 10.68 20.39 11 20.9 11.57 21.41 12.12 21.71 12.83 22 13.54 22 14.34 22 15.18 21.68 15.92 21.36 16.66 20.8 17.21 20.25 17.76 19.5 18.08 18.78 18.41 17.94 18.41H7Q5.97 18.41 5.06 18 4.15 17.61 3.47 16.94 2.79 16.26 2.4 15.35 2 14.44 2 13.41 2 12.59 2.26 11.83 2.5 11.08 3 10.45 3.44 9.82 4.08 9.35 4.72 8.88 5.5 8.63 5.87 8.5 6.21 8.5 6.56 8.43 6.93 8.41H6.94Q7.37 7.75 7.95 7.23 8.5 6.71 9.2 6.34 9.87 6 10.62 5.78 11.37 5.59 12.16 5.59 13.22 5.59 14.2 5.94 15.18 6.29 16 6.91 16.8 7.53 17.37 8.39 17.95 9.26 18.21 10.29M12.16 6.84Q11.05 6.84 10.06 7.3 9.06 7.75 8.36 8.6 8.73 8.7 9.07 8.85 9.4 9 9.73 9.2L13.71 11.58L16 10.62Q16.21 10.53 16.44 10.45 16.67 10.38 16.92 10.33 16.68 9.55 16.21 8.91 15.74 8.27 15.11 7.81 14.5 7.35 13.73 7.1 13 6.84 12.16 6.84M4 15.66L12.27 12.18L9.08 10.26Q8.59 9.97 8.06 9.81 7.5 9.66 6.95 9.66 6.19 9.66 5.5 9.96 4.84 10.26 4.34 10.77 3.84 11.29 3.54 11.97 3.25 12.65 3.25 13.41 3.25 14 3.45 14.59 3.64 15.19 4 15.66M17.94 17.16Q18.41 17.16 18.84 17 19.27 16.86 19.64 16.58L13.61 13L5.03 16.59Q5.47 16.86 5.97 17 6.47 17.16 7 17.16M20.45 15.61Q20.75 15 20.75 14.34 20.75 13.7 20.5 13.17 20.26 12.65 19.85 12.28 19.43 11.91 18.88 11.71 18.32 11.5 17.7 11.5 17.35 11.5 17 11.6 16.66 11.68 16.33 11.81 16 11.93 15.67 12.08 15.35 12.23 15.04 12.37Z",
47
- "box": "M15.39,14.04V14.04C15.39,12.62 14.24,11.47 12.82,11.47C11.41,11.47 10.26,12.62 10.26,14.04V14.04C10.26,15.45 11.41,16.6 12.82,16.6C14.24,16.6 15.39,15.45 15.39,14.04M17.1,14.04C17.1,16.4 15.18,18.31 12.82,18.31C11.19,18.31 9.77,17.39 9.05,16.04C8.33,17.39 6.91,18.31 5.28,18.31C2.94,18.31 1.04,16.43 1,14.11V14.11H1V7H1V7C1,6.56 1.39,6.18 1.86,6.18C2.33,6.18 2.7,6.56 2.71,7V7H2.71V10.62C3.43,10.08 4.32,9.76 5.28,9.76C6.91,9.76 8.33,10.68 9.05,12.03C9.77,10.68 11.19,9.76 12.82,9.76C15.18,9.76 17.1,11.68 17.1,14.04V14.04M7.84,14.04V14.04C7.84,12.62 6.69,11.47 5.28,11.47C3.86,11.47 2.71,12.62 2.71,14.04V14.04C2.71,15.45 3.86,16.6 5.28,16.6C6.69,16.6 7.84,15.45 7.84,14.04M22.84,16.96V16.96C22.95,17.12 23,17.3 23,17.47C23,17.73 22.88,18 22.66,18.15C22.5,18.26 22.33,18.32 22.15,18.32C21.9,18.32 21.65,18.21 21.5,18L19.59,15.47L17.7,18V18C17.53,18.21 17.28,18.32 17.03,18.32C16.85,18.32 16.67,18.26 16.5,18.15C16.29,18 16.17,17.72 16.17,17.46C16.17,17.29 16.23,17.11 16.33,16.96V16.96H16.33V16.96L18.5,14.04L16.33,11.11V11.11H16.33V11.11C16.22,10.96 16.17,10.79 16.17,10.61C16.17,10.35 16.29,10.1 16.5,9.93C16.89,9.65 17.41,9.72 17.7,10.09V10.09L19.59,12.61L21.5,10.09C21.76,9.72 22.29,9.65 22.66,9.93C22.89,10.1 23,10.36 23,10.63C23,10.8 22.95,10.97 22.84,11.11V11.11H22.84V11.11L20.66,14.04L22.84,16.96V16.96H22.84Z",
48
- "google-drive": "M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z",
81
+ "dropbox": mdiDropbox,
82
+ "ondedrive": mdiMicrosoftOnedrive,
83
+ "box": mdiBox,
84
+ "google-drive": mdiGoogleDrive,
49
85
  "zoom": "m12 2c-5.6 0-10 4.5-10 10 0 5.6 4.5 10 10 10 5.5 0 9.9-4.5 9.9-10 .1-5.6-4.4-10-9.9-10zm2.6 13.1c0 .2-.1.3-.3.3h-6.9c-1.1 0-1.9-.8-1.9-1.9v-4.6c0-.2.1-.3.3-.3h6.9c1 0 1.9.8 1.9 1.9zm3.8.1c0 .4-.2.4-.5.2l-2.8-2.1v-2.6l2.8-2.1c.2-.2.5-.1.5.2z",
50
- "cloud": "M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"
86
+ "cloud": mdiCloud
51
87
  }
52
88
 
53
89
 
@@ -67,9 +103,9 @@ const Icon = ({ name, color = "", size, ...props }: Props) => {
67
103
  let overlayPath = getIconOverlay(name);
68
104
 
69
105
  return (
70
- <span className={wy('icon ' + color)} style={{width: size && (size * 1.5 + "rem"), height: size && (size * 1.5 + "rem")}} { ...props }>
106
+ <span className={'wy-icon ' + color} style={{width: size && (size * 1.5 + "rem"), height: size && (size * 1.5 + "rem")}} { ...props }>
71
107
  {iconPath ? <MdiIcon.Icon color={color} path={iconPath} size={size} /> : name }
72
- {overlayPath && <MdiIcon.Icon color={color} path={overlayPath} className={wy('icon-overlay')} size={(size || 1) / 2} /> }
108
+ {overlayPath && <MdiIcon.Icon color={color} path={overlayPath} className="wy-icon-overlay" size={(size || 1) / 2} /> }
73
109
  </span>
74
110
  );
75
111
  }
@@ -1,7 +1,6 @@
1
1
  import React, { useState } from 'react';
2
2
  import Modal, { Styles } from 'react-modal';
3
3
  import classNames from 'classnames';
4
- import { prefix as wy } from "../utils/styles";
5
4
 
6
5
  type OverlayProps = {
7
6
  children: React.ReactNode,
@@ -26,8 +25,8 @@ const customStyles = {
26
25
  ariaHideApp={false}
27
26
  onAfterOpen={() => { setModalShowing(true)} }
28
27
  onRequestClose={() => { setModalShowing(false)}}
29
- className={classNames(wy("panel overlay transition"), className, {[wy("open")]: modalShowing})}
30
- overlayClassName={wy('overlays viewport')}
28
+ className={classNames("wy-panel wy-overlay wy-transition", className, {"wy-open": modalShowing})}
29
+ overlayClassName="wy-overlays wy-viewport"
31
30
  contentLabel="Example Modal"
32
31
  style={style}
33
32
  >
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import classNames from 'classnames';
3
+
4
+ type SpinnerProps = {
5
+ size?: number,
6
+ spin?: boolean,
7
+ }
8
+
9
+ const SpinnerImpl = ({ spin = true, size = 24 }: SpinnerProps) => {
10
+
11
+ return (
12
+ <svg className={classNames("wy-spinner", {"wy-spin" : spin })} width={size} height={size} viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle fill="none" cx="12" cy="12" r="11" stroke-linecap="butt" stroke-width="2" /></svg>
13
+ )
14
+ }
15
+
16
+ // Export as replacable UI component
17
+ const UISpinner = { UI: SpinnerImpl };
18
+ export default UISpinner;
@@ -1,3 +1,5 @@
1
+ import { isConstructorDeclaration } from "typescript";
2
+
1
3
  export const fileSizeAsString = (size: number) => {
2
4
  var s = size;
3
5
  var format = [" B", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"];
@@ -9,7 +11,11 @@ export const fileSizeAsString = (size: number) => {
9
11
  return s.toLocaleString() + format[i];
10
12
  }
11
13
 
12
- const isAudio = (ext: string) => {
14
+ export function getExtension (name: string) {
15
+ return name.substring(name.lastIndexOf('.') , name.length) || name;
16
+ }
17
+
18
+ export function isAudio (ext: string) {
13
19
  switch (ext) {
14
20
  case ".aac":
15
21
  case ".aif":
@@ -35,7 +41,7 @@ const isAudio = (ext: string) => {
35
41
  }
36
42
  }
37
43
 
38
- const isImage = (ext: string) => {
44
+ export function isImage (ext: string) {
39
45
  switch (ext) {
40
46
  case ".ai":
41
47
  case ".apng":
@@ -60,7 +66,54 @@ const isImage = (ext: string) => {
60
66
  }
61
67
  }
62
68
 
63
- const isVideo = (ext: string) => {
69
+ export function isWebImage (path: string) {
70
+ // see https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types
71
+ var ext = getExtension(path);
72
+ switch (ext) {
73
+ case ".apng":
74
+ case ".bmp":
75
+ case ".gif":
76
+ case ".ico":
77
+ case ".jpg":
78
+ case ".jpeg":
79
+ case ".png":
80
+ case ".svg":
81
+ case ".webp":
82
+ return true;
83
+ default:
84
+ return false;
85
+ }
86
+ }
87
+
88
+ export function isBitmap(path: string) {
89
+ var ext = getExtension(path);
90
+ switch (ext) {
91
+ case ".bmp":
92
+ case ".gif":
93
+ case ".ico":
94
+ case ".jpg":
95
+ case ".jpeg":
96
+ case ".png":
97
+ case ".tif":
98
+ case ".tiff":
99
+ return true;
100
+ default:
101
+ return false;
102
+ }
103
+ }
104
+
105
+ export function isMetaFile(path: string) {
106
+ var ext = getExtension(path);
107
+ switch (ext) {
108
+ case ".emf":
109
+ case ".wmf":
110
+ return true;
111
+ default:
112
+ return false;
113
+ }
114
+ }
115
+
116
+ export function isVideo (ext: string) {
64
117
  switch (ext) {
65
118
  case ".3g2":
66
119
  case ".asx":
@@ -91,7 +144,17 @@ const isVideo = (ext: string) => {
91
144
  }
92
145
  }
93
146
 
94
- const isMarkup = (ext: string) => {
147
+ export function isMarkdown (ext: string) {
148
+ switch (ext) {
149
+ case ".markdown":
150
+ case ".md":
151
+ return true;
152
+ default:
153
+ return false;
154
+ }
155
+ }
156
+
157
+ export function isMarkup (ext: string) {
95
158
  switch (ext) {
96
159
  case ".htm":
97
160
  case ".html":
@@ -103,91 +166,122 @@ const isMarkup = (ext: string) => {
103
166
  }
104
167
  }
105
168
 
106
- const isText = (ext: string) => {
169
+ export function isCode (ext: string) {
170
+ if (isMarkup(ext)) {
171
+ return true;
172
+ }
107
173
  switch (ext) {
108
174
  case ".as":
109
- case ".as3":
110
- case ".asm":
111
- case ".aspx":
112
- case ".bat":
113
- case ".c":
114
- case ".cc":
115
- case ".cmake":
116
- case ".coffee":
117
- case ".cpp":
118
- case ".cs":
119
- case ".css":
120
- case ".cxx":
121
- case ".diff":
122
- case ".erb":
123
- case ".erl":
124
- case ".groovy":
125
- case ".gvy":
126
- case ".h":
127
- case ".haml":
128
- case ".hh":
129
- case ".hpp":
130
- case ".html":
131
- case ".hxx":
132
- case ".java":
133
- case ".js":
134
- case ".json":
135
- case ".jsx":
136
- case ".less":
137
- case ".lst":
138
- case ".m":
139
- case ".make":
140
- case ".markdown":
141
- case ".md":
142
- case ".mdown":
143
- case ".mkdn":
144
- case ".ml":
145
- case ".mm":
146
- case ".out":
147
- case ".patch":
148
- case ".php":
149
- case ".pl":
150
- case ".plist":
151
- case ".properties":
152
- case ".py":
153
- case ".rb":
154
- case ".sass":
155
- case ".scala":
156
- case ".scm":
157
- case ".script":
158
- case ".scss":
159
- case ".sh":
160
- case ".sml":
161
- case ".sql":
162
- case ".txt":
163
- case ".vb":
164
- case ".vi":
165
- case ".vim":
166
- case ".xhtml":
167
- case ".xml":
168
- case ".xsd":
169
- case ".xsl":
170
- case ".yaml":
171
- case ".yml":
175
+ case ".as3":
176
+ case ".asm":
177
+ case ".aspx":
178
+ case ".bat":
179
+ case ".c":
180
+ case ".cc":
181
+ case ".cmake":
182
+ case ".coffee":
183
+ case ".cpp":
184
+ case ".cs":
185
+ case ".css":
186
+ case ".cxx":
187
+ case ".diff":
188
+ case ".erb":
189
+ case ".erl":
190
+ case ".groovy":
191
+ case ".gvy":
192
+ case ".h":
193
+ case ".haml":
194
+ case ".hh":
195
+ case ".hpp":
196
+ case ".hxx":
197
+ case ".java":
198
+ case ".js":
199
+ case ".json":
200
+ case ".jsx":
201
+ case ".less":
202
+ case ".lst":
203
+ case ".m":
204
+ case ".make":
205
+ case ".ml":
206
+ case ".mm":
207
+ case ".out":
208
+ case ".patch":
209
+ case ".php":
210
+ case ".pl":
211
+ case ".plist":
212
+ case ".properties":
213
+ case ".py":
214
+ case ".rb":
215
+ case ".sass":
216
+ case ".scala":
217
+ case ".scm":
218
+ case ".script":
219
+ case ".scss":
220
+ case ".sh":
221
+ case ".sml":
222
+ case ".sql":
223
+ case ".vb":
224
+ case ".vi":
225
+ case ".vim":
226
+ case ".xsd":
227
+ case ".xsl":
228
+ case ".yaml":
229
+ case ".yml":
230
+ return true;
231
+ default:
232
+ return false;
233
+ }
234
+ }
235
+
236
+ export function isText (ext: string) {
237
+ if (isCode(ext) || isMarkdown(ext)) {
238
+ return true;
239
+ }
240
+ switch (ext) {
241
+ case ".txt":
242
+ return true;
243
+ default:
244
+ return false;
245
+ }
246
+
247
+ }
248
+ export function isOfficeDocument(path: string) {
249
+ var ext = getExtension(path);
250
+ switch (ext) {
251
+ case ".doc":
252
+ case ".docm":
253
+ case ".docx":
254
+ case ".dotm":
255
+ case ".dotx":
256
+ case ".ppt":
257
+ case ".pptm":
258
+ case ".pptx":
259
+ case ".potx":
260
+ case ".xls":
261
+ case ".xlsm":
262
+ case ".xlsx":
263
+ case ".xltx":
172
264
  return true;
173
265
  default:
174
266
  return false;
175
267
  }
176
268
  }
177
269
 
178
- export const getIcon = (name: string, mediaType?: string): { icon: string, color?: string } => {
179
- var ext = name.substring(name.lastIndexOf('.') , name.length) || name;
270
+ export function getIcon (name: string, mediaType?: string): { icon: string, color?: string } {
271
+ var ext = getExtension(name);
180
272
 
181
273
  if (ext === "") return { icon: "file" };
182
274
 
183
275
  if (isAudio(ext)) {
184
- return { icon: "file", color: "indigo" };
276
+ return { icon: "file-music", color: "indigo" };
185
277
  } else if (isImage(ext)) {
186
278
  return { icon: "file-image", color: "cyan" };
187
279
  } else if (isVideo(ext)) {
188
- return { icon: "file-image", color: "pink" };
280
+ return { icon: "file-video", color: "pink" };
189
281
  } else if (isMarkup(ext)) {
190
282
  return { icon: "file-xml", color: "purple" };
283
+ } else if (isCode(ext)) {
284
+ return { icon: "file-code", color: "purple" };
191
285
  } else if (isText(ext)) {
192
286
  return { icon: "file-document" };
193
287
  } else{
@@ -0,0 +1,48 @@
1
+ // SCROLLBAR DETECTION
2
+
3
+ /**
4
+ * The target which the scrollbar classname will be applied to.
5
+ * @type Element
6
+ */
7
+ export var scrollbarClassnameTarget = document.documentElement;
8
+
9
+ /**
10
+ * The callback function for the scrollbar observer.
11
+ * @param {ResizeObserverTarget[]} entries
12
+ */
13
+ export function checkScrollbar(entries) {
14
+ var element, overflowWidth;
15
+ for (var entry in entries) {
16
+ element = entries[entry].target;
17
+ try {
18
+ overflowWidth = element === document.documentElement ? window.innerWidth : element.clientWidth;
19
+ if (overflowWidth !== element.offsetWidth) {
20
+ // we have visible scrollbars, add .scrollbar to html element
21
+ scrollbarClassnameTarget.classList.add("wy-scrollbars");
22
+ } else {
23
+ scrollbarClassnameTarget.classList.remove("wy-scrollbars");
24
+ }
25
+ } catch (e) {
26
+ console.warn("scrollbar detection failed", e);
27
+ }
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Creates a scrollbar detection element and starts observing it.
33
+ */
34
+ export default function observeScrollbars() {
35
+ // insert scrollbar detection element
36
+ var scrollCheck = document.getElementById("wy-scrollbar-detection");
37
+
38
+ if (!scrollCheck) {
39
+ scrollCheck = document.createElement("aside");
40
+ scrollCheck.id = "wy-scrollbar-detection";
41
+ scrollCheck.className = "wy-scrollbar-detection";
42
+ document.documentElement.insertBefore(scrollCheck, document.body);
43
+ }
44
+
45
+ var scrollObserver = new ResizeObserver(checkScrollbar);
46
+ scrollObserver.observe(scrollCheck);
47
+ }
48
+
@@ -1,17 +0,0 @@
1
- /**
2
- * Sets the prefix for CSS classes on the HTML element for usage in javascript.
3
- * @param {string} prefix
4
- */
5
- export declare function setPrefix(prefix: string): void;
6
- /**
7
- * Prefixes one or more classnames (with or without dot) using the themePrefix
8
- * @param {...string} strs
9
- * @returns string[]
10
- */
11
- export declare function prefixes(...strs: string[]): string[];
12
- /**
13
- * Prefixes one classname (with or without dot) using the themePrefix
14
- * @param {string} str
15
- * @returns string
16
- */
17
- export declare function prefix(str: string): string;
@@ -1,17 +0,0 @@
1
- /**
2
- * Sets the prefix for CSS classes on the HTML element for usage in javascript.
3
- * @param {string} prefix
4
- */
5
- export declare function setPrefix(prefix: string): void;
6
- /**
7
- * Prefixes one or more classnames (with or without dot) using the themePrefix
8
- * @param {...string} strs
9
- * @returns string[]
10
- */
11
- export declare function prefixes(...strs: string[]): string[];
12
- /**
13
- * Prefixes one classname (with or without dot) using the themePrefix
14
- * @param {string} str
15
- * @returns string
16
- */
17
- export declare function prefix(str: string): string;
@@ -1,42 +0,0 @@
1
-
2
- var themePrefix = "wy";
3
-
4
- /**
5
- * Sets the prefix for CSS classes on the HTML element for usage in javascript.
6
- * @param {string} prefix
7
- */
8
- export function setPrefix(prefix:string) {
9
- if (typeof prefix === "string") {
10
- themePrefix = prefix;
11
- }
12
- }
13
-
14
-
15
- /**
16
- * Prefixes one or more classnames (with or without dot) using the themePrefix
17
- * @param {...string} strs
18
- * @returns string[]
19
- */
20
- export function prefixes(...strs:string[]) {
21
- const _prefix = themePrefix || '';
22
- if (_prefix) {
23
- strs = strs.map((str) => {
24
- str ??= '';
25
- if (str[0] === '.') {
26
- return `.${_prefix}-${str.substring(1)}`;
27
- } else {
28
- return `${_prefix}-${str}`;
29
- }
30
- })
31
- }
32
- return strs;
33
- }
34
-
35
- /**
36
- * Prefixes one classname (with or without dot) using the themePrefix
37
- * @param {string} str
38
- * @returns string
39
- */
40
- export function prefix(str:string) {
41
- return prefixes(...(str.split(" "))).join(" ");
42
- }