From 0e4a111f81cceed275d9bec2695f6e401fb654d8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 12 Nov 2021 02:02:25 +0900 Subject: refactoring Resolve #7779 --- .../client/src/components/abuse-report-window.vue | 79 ++ packages/client/src/components/analog-clock.vue | 150 +++ packages/client/src/components/autocomplete.vue | 501 ++++++++ packages/client/src/components/avatars.vue | 30 + packages/client/src/components/captcha.vue | 123 ++ .../src/components/channel-follow-button.vue | 140 +++ packages/client/src/components/channel-preview.vue | 165 +++ packages/client/src/components/chart.vue | 691 +++++++++++ packages/client/src/components/code-core.vue | 35 + packages/client/src/components/code.vue | 27 + packages/client/src/components/cw-button.vue | 70 ++ .../client/src/components/date-separated-list.vue | 188 +++ packages/client/src/components/debobigego/base.vue | 65 ++ .../client/src/components/debobigego/button.vue | 81 ++ .../src/components/debobigego/debobigego.scss | 52 + .../client/src/components/debobigego/group.vue | 78 ++ packages/client/src/components/debobigego/info.vue | 47 + .../client/src/components/debobigego/input.vue | 292 +++++ .../src/components/debobigego/key-value-view.vue | 38 + packages/client/src/components/debobigego/link.vue | 103 ++ .../src/components/debobigego/object-view.vue | 102 ++ .../src/components/debobigego/pagination.vue | 42 + .../client/src/components/debobigego/radios.vue | 112 ++ .../client/src/components/debobigego/range.vue | 122 ++ .../client/src/components/debobigego/select.vue | 145 +++ .../client/src/components/debobigego/suspense.vue | 101 ++ .../client/src/components/debobigego/switch.vue | 132 +++ .../client/src/components/debobigego/textarea.vue | 161 +++ .../client/src/components/debobigego/tuple.vue | 36 + packages/client/src/components/dialog.vue | 212 ++++ .../client/src/components/drive-file-thumbnail.vue | 108 ++ .../client/src/components/drive-select-dialog.vue | 70 ++ packages/client/src/components/drive-window.vue | 44 + packages/client/src/components/drive.file.vue | 374 ++++++ packages/client/src/components/drive.folder.vue | 326 ++++++ .../client/src/components/drive.nav-folder.vue | 135 +++ packages/client/src/components/drive.vue | 784 +++++++++++++ .../client/src/components/emoji-picker-dialog.vue | 76 ++ .../client/src/components/emoji-picker-window.vue | 197 ++++ .../client/src/components/emoji-picker.section.vue | 50 + packages/client/src/components/emoji-picker.vue | 501 ++++++++ packages/client/src/components/featured-photos.vue | 32 + packages/client/src/components/file-type-icon.vue | 28 + packages/client/src/components/follow-button.vue | 210 ++++ packages/client/src/components/forgot-password.vue | 84 ++ packages/client/src/components/form-dialog.vue | 125 ++ packages/client/src/components/form/input.vue | 315 +++++ packages/client/src/components/form/radio.vue | 122 ++ packages/client/src/components/form/radios.vue | 54 + packages/client/src/components/form/range.vue | 139 +++ packages/client/src/components/form/section.vue | 31 + packages/client/src/components/form/select.vue | 312 +++++ packages/client/src/components/form/slot.vue | 50 + packages/client/src/components/form/switch.vue | 150 +++ packages/client/src/components/form/textarea.vue | 252 ++++ packages/client/src/components/formula-core.vue | 34 + packages/client/src/components/formula.vue | 23 + .../client/src/components/gallery-post-preview.vue | 126 ++ packages/client/src/components/global/a.vue | 138 +++ packages/client/src/components/global/acct.vue | 38 + packages/client/src/components/global/ad.vue | 200 ++++ packages/client/src/components/global/avatar.vue | 163 +++ packages/client/src/components/global/ellipsis.vue | 34 + packages/client/src/components/global/emoji.vue | 125 ++ packages/client/src/components/global/error.vue | 46 + packages/client/src/components/global/header.vue | 360 ++++++ packages/client/src/components/global/i18n.ts | 42 + packages/client/src/components/global/loading.vue | 92 ++ .../global/misskey-flavored-markdown.vue | 157 +++ packages/client/src/components/global/spacer.vue | 76 ++ .../src/components/global/sticky-container.vue | 74 ++ packages/client/src/components/global/time.vue | 73 ++ packages/client/src/components/global/url.vue | 142 +++ .../client/src/components/global/user-name.vue | 20 + packages/client/src/components/google.vue | 64 + packages/client/src/components/image-viewer.vue | 85 ++ .../client/src/components/img-with-blurhash.vue | 100 ++ packages/client/src/components/index.ts | 37 + packages/client/src/components/instance-stats.vue | 80 ++ packages/client/src/components/instance-ticker.vue | 62 + packages/client/src/components/launch-pad.vue | 152 +++ packages/client/src/components/link.vue | 92 ++ packages/client/src/components/media-banner.vue | 107 ++ packages/client/src/components/media-caption.vue | 259 +++++ packages/client/src/components/media-image.vue | 155 +++ packages/client/src/components/media-list.vue | 167 +++ packages/client/src/components/media-video.vue | 97 ++ packages/client/src/components/mention.vue | 84 ++ packages/client/src/components/mfm.ts | 321 +++++ packages/client/src/components/mini-chart.vue | 90 ++ .../client/src/components/modal-page-window.vue | 223 ++++ packages/client/src/components/note-detailed.vue | 1229 ++++++++++++++++++++ packages/client/src/components/note-header.vue | 115 ++ packages/client/src/components/note-preview.vue | 98 ++ packages/client/src/components/note-simple.vue | 113 ++ packages/client/src/components/note.sub.vue | 146 +++ packages/client/src/components/note.vue | 1228 +++++++++++++++++++ packages/client/src/components/notes.vue | 130 +++ .../src/components/notification-setting-window.vue | 99 ++ packages/client/src/components/notification.vue | 362 ++++++ packages/client/src/components/notifications.vue | 159 +++ packages/client/src/components/number-diff.vue | 47 + packages/client/src/components/page-preview.vue | 162 +++ packages/client/src/components/page-window.vue | 167 +++ packages/client/src/components/page/page.block.vue | 44 + .../client/src/components/page/page.button.vue | 66 ++ .../client/src/components/page/page.canvas.vue | 49 + .../client/src/components/page/page.counter.vue | 52 + packages/client/src/components/page/page.if.vue | 31 + packages/client/src/components/page/page.image.vue | 40 + packages/client/src/components/page/page.note.vue | 47 + .../src/components/page/page.number-input.vue | 55 + packages/client/src/components/page/page.post.vue | 109 ++ .../src/components/page/page.radio-button.vue | 45 + .../client/src/components/page/page.section.vue | 60 + .../client/src/components/page/page.switch.vue | 55 + .../client/src/components/page/page.text-input.vue | 55 + packages/client/src/components/page/page.text.vue | 68 ++ .../src/components/page/page.textarea-input.vue | 47 + .../client/src/components/page/page.textarea.vue | 39 + packages/client/src/components/page/page.vue | 86 ++ packages/client/src/components/particle.vue | 114 ++ packages/client/src/components/poll-editor.vue | 251 ++++ packages/client/src/components/poll.vue | 174 +++ .../client/src/components/post-form-attaches.vue | 193 +++ .../client/src/components/post-form-dialog.vue | 19 + packages/client/src/components/post-form.vue | 980 ++++++++++++++++ packages/client/src/components/queue-chart.vue | 232 ++++ packages/client/src/components/reaction-icon.vue | 25 + .../client/src/components/reaction-tooltip.vue | 51 + .../src/components/reactions-viewer.details.vue | 91 ++ .../src/components/reactions-viewer.reaction.vue | 183 +++ .../client/src/components/reactions-viewer.vue | 48 + packages/client/src/components/remote-caution.vue | 35 + packages/client/src/components/sample.vue | 116 ++ packages/client/src/components/signin-dialog.vue | 42 + packages/client/src/components/signin.vue | 240 ++++ packages/client/src/components/signup-dialog.vue | 50 + packages/client/src/components/signup.vue | 268 +++++ packages/client/src/components/sparkle.vue | 179 +++ .../client/src/components/sub-note-content.vue | 62 + packages/client/src/components/tab.vue | 73 ++ .../src/components/taskmanager.api-window.vue | 72 ++ packages/client/src/components/taskmanager.vue | 233 ++++ packages/client/src/components/timeline.vue | 183 +++ packages/client/src/components/toast.vue | 73 ++ .../src/components/token-generate-window.vue | 117 ++ packages/client/src/components/ui/button.vue | 262 +++++ packages/client/src/components/ui/container.vue | 262 +++++ packages/client/src/components/ui/context-menu.vue | 97 ++ packages/client/src/components/ui/folder.vue | 156 +++ packages/client/src/components/ui/hr.vue | 16 + packages/client/src/components/ui/info.vue | 45 + packages/client/src/components/ui/menu.vue | 278 +++++ packages/client/src/components/ui/modal-window.vue | 148 +++ packages/client/src/components/ui/modal.vue | 292 +++++ packages/client/src/components/ui/pagination.vue | 69 ++ packages/client/src/components/ui/popup-menu.vue | 42 + packages/client/src/components/ui/popup.vue | 213 ++++ packages/client/src/components/ui/super-menu.vue | 148 +++ packages/client/src/components/ui/tooltip.vue | 92 ++ packages/client/src/components/ui/window.vue | 525 +++++++++ packages/client/src/components/updated.vue | 62 + .../client/src/components/url-preview-popup.vue | 60 + packages/client/src/components/url-preview.vue | 334 ++++++ packages/client/src/components/user-info.vue | 142 +++ packages/client/src/components/user-list.vue | 91 ++ .../src/components/user-online-indicator.vue | 50 + packages/client/src/components/user-preview.vue | 192 +++ .../client/src/components/user-select-dialog.vue | 199 ++++ packages/client/src/components/users-dialog.vue | 147 +++ .../client/src/components/visibility-picker.vue | 167 +++ packages/client/src/components/waiting-dialog.vue | 92 ++ packages/client/src/components/widgets.vue | 152 +++ 174 files changed, 26267 insertions(+) create mode 100644 packages/client/src/components/abuse-report-window.vue create mode 100644 packages/client/src/components/analog-clock.vue create mode 100644 packages/client/src/components/autocomplete.vue create mode 100644 packages/client/src/components/avatars.vue create mode 100644 packages/client/src/components/captcha.vue create mode 100644 packages/client/src/components/channel-follow-button.vue create mode 100644 packages/client/src/components/channel-preview.vue create mode 100644 packages/client/src/components/chart.vue create mode 100644 packages/client/src/components/code-core.vue create mode 100644 packages/client/src/components/code.vue create mode 100644 packages/client/src/components/cw-button.vue create mode 100644 packages/client/src/components/date-separated-list.vue create mode 100644 packages/client/src/components/debobigego/base.vue create mode 100644 packages/client/src/components/debobigego/button.vue create mode 100644 packages/client/src/components/debobigego/debobigego.scss create mode 100644 packages/client/src/components/debobigego/group.vue create mode 100644 packages/client/src/components/debobigego/info.vue create mode 100644 packages/client/src/components/debobigego/input.vue create mode 100644 packages/client/src/components/debobigego/key-value-view.vue create mode 100644 packages/client/src/components/debobigego/link.vue create mode 100644 packages/client/src/components/debobigego/object-view.vue create mode 100644 packages/client/src/components/debobigego/pagination.vue create mode 100644 packages/client/src/components/debobigego/radios.vue create mode 100644 packages/client/src/components/debobigego/range.vue create mode 100644 packages/client/src/components/debobigego/select.vue create mode 100644 packages/client/src/components/debobigego/suspense.vue create mode 100644 packages/client/src/components/debobigego/switch.vue create mode 100644 packages/client/src/components/debobigego/textarea.vue create mode 100644 packages/client/src/components/debobigego/tuple.vue create mode 100644 packages/client/src/components/dialog.vue create mode 100644 packages/client/src/components/drive-file-thumbnail.vue create mode 100644 packages/client/src/components/drive-select-dialog.vue create mode 100644 packages/client/src/components/drive-window.vue create mode 100644 packages/client/src/components/drive.file.vue create mode 100644 packages/client/src/components/drive.folder.vue create mode 100644 packages/client/src/components/drive.nav-folder.vue create mode 100644 packages/client/src/components/drive.vue create mode 100644 packages/client/src/components/emoji-picker-dialog.vue create mode 100644 packages/client/src/components/emoji-picker-window.vue create mode 100644 packages/client/src/components/emoji-picker.section.vue create mode 100644 packages/client/src/components/emoji-picker.vue create mode 100644 packages/client/src/components/featured-photos.vue create mode 100644 packages/client/src/components/file-type-icon.vue create mode 100644 packages/client/src/components/follow-button.vue create mode 100644 packages/client/src/components/forgot-password.vue create mode 100644 packages/client/src/components/form-dialog.vue create mode 100644 packages/client/src/components/form/input.vue create mode 100644 packages/client/src/components/form/radio.vue create mode 100644 packages/client/src/components/form/radios.vue create mode 100644 packages/client/src/components/form/range.vue create mode 100644 packages/client/src/components/form/section.vue create mode 100644 packages/client/src/components/form/select.vue create mode 100644 packages/client/src/components/form/slot.vue create mode 100644 packages/client/src/components/form/switch.vue create mode 100644 packages/client/src/components/form/textarea.vue create mode 100644 packages/client/src/components/formula-core.vue create mode 100644 packages/client/src/components/formula.vue create mode 100644 packages/client/src/components/gallery-post-preview.vue create mode 100644 packages/client/src/components/global/a.vue create mode 100644 packages/client/src/components/global/acct.vue create mode 100644 packages/client/src/components/global/ad.vue create mode 100644 packages/client/src/components/global/avatar.vue create mode 100644 packages/client/src/components/global/ellipsis.vue create mode 100644 packages/client/src/components/global/emoji.vue create mode 100644 packages/client/src/components/global/error.vue create mode 100644 packages/client/src/components/global/header.vue create mode 100644 packages/client/src/components/global/i18n.ts create mode 100644 packages/client/src/components/global/loading.vue create mode 100644 packages/client/src/components/global/misskey-flavored-markdown.vue create mode 100644 packages/client/src/components/global/spacer.vue create mode 100644 packages/client/src/components/global/sticky-container.vue create mode 100644 packages/client/src/components/global/time.vue create mode 100644 packages/client/src/components/global/url.vue create mode 100644 packages/client/src/components/global/user-name.vue create mode 100644 packages/client/src/components/google.vue create mode 100644 packages/client/src/components/image-viewer.vue create mode 100644 packages/client/src/components/img-with-blurhash.vue create mode 100644 packages/client/src/components/index.ts create mode 100644 packages/client/src/components/instance-stats.vue create mode 100644 packages/client/src/components/instance-ticker.vue create mode 100644 packages/client/src/components/launch-pad.vue create mode 100644 packages/client/src/components/link.vue create mode 100644 packages/client/src/components/media-banner.vue create mode 100644 packages/client/src/components/media-caption.vue create mode 100644 packages/client/src/components/media-image.vue create mode 100644 packages/client/src/components/media-list.vue create mode 100644 packages/client/src/components/media-video.vue create mode 100644 packages/client/src/components/mention.vue create mode 100644 packages/client/src/components/mfm.ts create mode 100644 packages/client/src/components/mini-chart.vue create mode 100644 packages/client/src/components/modal-page-window.vue create mode 100644 packages/client/src/components/note-detailed.vue create mode 100644 packages/client/src/components/note-header.vue create mode 100644 packages/client/src/components/note-preview.vue create mode 100644 packages/client/src/components/note-simple.vue create mode 100644 packages/client/src/components/note.sub.vue create mode 100644 packages/client/src/components/note.vue create mode 100644 packages/client/src/components/notes.vue create mode 100644 packages/client/src/components/notification-setting-window.vue create mode 100644 packages/client/src/components/notification.vue create mode 100644 packages/client/src/components/notifications.vue create mode 100644 packages/client/src/components/number-diff.vue create mode 100644 packages/client/src/components/page-preview.vue create mode 100644 packages/client/src/components/page-window.vue create mode 100644 packages/client/src/components/page/page.block.vue create mode 100644 packages/client/src/components/page/page.button.vue create mode 100644 packages/client/src/components/page/page.canvas.vue create mode 100644 packages/client/src/components/page/page.counter.vue create mode 100644 packages/client/src/components/page/page.if.vue create mode 100644 packages/client/src/components/page/page.image.vue create mode 100644 packages/client/src/components/page/page.note.vue create mode 100644 packages/client/src/components/page/page.number-input.vue create mode 100644 packages/client/src/components/page/page.post.vue create mode 100644 packages/client/src/components/page/page.radio-button.vue create mode 100644 packages/client/src/components/page/page.section.vue create mode 100644 packages/client/src/components/page/page.switch.vue create mode 100644 packages/client/src/components/page/page.text-input.vue create mode 100644 packages/client/src/components/page/page.text.vue create mode 100644 packages/client/src/components/page/page.textarea-input.vue create mode 100644 packages/client/src/components/page/page.textarea.vue create mode 100644 packages/client/src/components/page/page.vue create mode 100644 packages/client/src/components/particle.vue create mode 100644 packages/client/src/components/poll-editor.vue create mode 100644 packages/client/src/components/poll.vue create mode 100644 packages/client/src/components/post-form-attaches.vue create mode 100644 packages/client/src/components/post-form-dialog.vue create mode 100644 packages/client/src/components/post-form.vue create mode 100644 packages/client/src/components/queue-chart.vue create mode 100644 packages/client/src/components/reaction-icon.vue create mode 100644 packages/client/src/components/reaction-tooltip.vue create mode 100644 packages/client/src/components/reactions-viewer.details.vue create mode 100644 packages/client/src/components/reactions-viewer.reaction.vue create mode 100644 packages/client/src/components/reactions-viewer.vue create mode 100644 packages/client/src/components/remote-caution.vue create mode 100644 packages/client/src/components/sample.vue create mode 100644 packages/client/src/components/signin-dialog.vue create mode 100644 packages/client/src/components/signin.vue create mode 100644 packages/client/src/components/signup-dialog.vue create mode 100644 packages/client/src/components/signup.vue create mode 100644 packages/client/src/components/sparkle.vue create mode 100644 packages/client/src/components/sub-note-content.vue create mode 100644 packages/client/src/components/tab.vue create mode 100644 packages/client/src/components/taskmanager.api-window.vue create mode 100644 packages/client/src/components/taskmanager.vue create mode 100644 packages/client/src/components/timeline.vue create mode 100644 packages/client/src/components/toast.vue create mode 100644 packages/client/src/components/token-generate-window.vue create mode 100644 packages/client/src/components/ui/button.vue create mode 100644 packages/client/src/components/ui/container.vue create mode 100644 packages/client/src/components/ui/context-menu.vue create mode 100644 packages/client/src/components/ui/folder.vue create mode 100644 packages/client/src/components/ui/hr.vue create mode 100644 packages/client/src/components/ui/info.vue create mode 100644 packages/client/src/components/ui/menu.vue create mode 100644 packages/client/src/components/ui/modal-window.vue create mode 100644 packages/client/src/components/ui/modal.vue create mode 100644 packages/client/src/components/ui/pagination.vue create mode 100644 packages/client/src/components/ui/popup-menu.vue create mode 100644 packages/client/src/components/ui/popup.vue create mode 100644 packages/client/src/components/ui/super-menu.vue create mode 100644 packages/client/src/components/ui/tooltip.vue create mode 100644 packages/client/src/components/ui/window.vue create mode 100644 packages/client/src/components/updated.vue create mode 100644 packages/client/src/components/url-preview-popup.vue create mode 100644 packages/client/src/components/url-preview.vue create mode 100644 packages/client/src/components/user-info.vue create mode 100644 packages/client/src/components/user-list.vue create mode 100644 packages/client/src/components/user-online-indicator.vue create mode 100644 packages/client/src/components/user-preview.vue create mode 100644 packages/client/src/components/user-select-dialog.vue create mode 100644 packages/client/src/components/users-dialog.vue create mode 100644 packages/client/src/components/visibility-picker.vue create mode 100644 packages/client/src/components/waiting-dialog.vue create mode 100644 packages/client/src/components/widgets.vue (limited to 'packages/client/src/components') diff --git a/packages/client/src/components/abuse-report-window.vue b/packages/client/src/components/abuse-report-window.vue new file mode 100644 index 0000000000..700ce30bb2 --- /dev/null +++ b/packages/client/src/components/abuse-report-window.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/packages/client/src/components/analog-clock.vue b/packages/client/src/components/analog-clock.vue new file mode 100644 index 0000000000..bc572e5fff --- /dev/null +++ b/packages/client/src/components/analog-clock.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/packages/client/src/components/autocomplete.vue b/packages/client/src/components/autocomplete.vue new file mode 100644 index 0000000000..a7d2d507e0 --- /dev/null +++ b/packages/client/src/components/autocomplete.vue @@ -0,0 +1,501 @@ + + + + + diff --git a/packages/client/src/components/avatars.vue b/packages/client/src/components/avatars.vue new file mode 100644 index 0000000000..e843d26daa --- /dev/null +++ b/packages/client/src/components/avatars.vue @@ -0,0 +1,30 @@ + + + diff --git a/packages/client/src/components/captcha.vue b/packages/client/src/components/captcha.vue new file mode 100644 index 0000000000..baa922506e --- /dev/null +++ b/packages/client/src/components/captcha.vue @@ -0,0 +1,123 @@ + + + diff --git a/packages/client/src/components/channel-follow-button.vue b/packages/client/src/components/channel-follow-button.vue new file mode 100644 index 0000000000..9af65325bb --- /dev/null +++ b/packages/client/src/components/channel-follow-button.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/packages/client/src/components/channel-preview.vue b/packages/client/src/components/channel-preview.vue new file mode 100644 index 0000000000..eb00052a78 --- /dev/null +++ b/packages/client/src/components/channel-preview.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/packages/client/src/components/chart.vue b/packages/client/src/components/chart.vue new file mode 100644 index 0000000000..c4d0eb85dd --- /dev/null +++ b/packages/client/src/components/chart.vue @@ -0,0 +1,691 @@ + + + + + diff --git a/packages/client/src/components/code-core.vue b/packages/client/src/components/code-core.vue new file mode 100644 index 0000000000..9cff7b4448 --- /dev/null +++ b/packages/client/src/components/code-core.vue @@ -0,0 +1,35 @@ + + + diff --git a/packages/client/src/components/code.vue b/packages/client/src/components/code.vue new file mode 100644 index 0000000000..f5d6c5673a --- /dev/null +++ b/packages/client/src/components/code.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/client/src/components/cw-button.vue b/packages/client/src/components/cw-button.vue new file mode 100644 index 0000000000..4bec7b511e --- /dev/null +++ b/packages/client/src/components/cw-button.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/packages/client/src/components/date-separated-list.vue b/packages/client/src/components/date-separated-list.vue new file mode 100644 index 0000000000..1aea9fd353 --- /dev/null +++ b/packages/client/src/components/date-separated-list.vue @@ -0,0 +1,188 @@ + + + diff --git a/packages/client/src/components/debobigego/base.vue b/packages/client/src/components/debobigego/base.vue new file mode 100644 index 0000000000..f551a3478b --- /dev/null +++ b/packages/client/src/components/debobigego/base.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/packages/client/src/components/debobigego/button.vue b/packages/client/src/components/debobigego/button.vue new file mode 100644 index 0000000000..b883e817a4 --- /dev/null +++ b/packages/client/src/components/debobigego/button.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/packages/client/src/components/debobigego/debobigego.scss b/packages/client/src/components/debobigego/debobigego.scss new file mode 100644 index 0000000000..833b656b66 --- /dev/null +++ b/packages/client/src/components/debobigego/debobigego.scss @@ -0,0 +1,52 @@ +._debobigegoPanel { + background: var(--panel); + border-radius: var(--radius); + transition: background 0.2s ease; + + &._debobigegoClickable { + &:hover { + //background: var(--panelHighlight); + } + + &:active { + background: var(--panelHighlight); + transition: background 0s; + } + } +} + +._debobigegoLabel, +._debobigegoCaption { + font-size: 80%; + color: var(--fgTransparentWeak); + + &:empty { + display: none; + } +} + +._debobigegoLabel { + position: sticky; + top: var(--stickyTop, 0px); + z-index: 2; + margin: -8px calc(var(--debobigegoXPadding) * -1) 0 calc(var(--debobigegoXPadding) * -1); + padding: 8px calc(var(--debobigegoContentHMargin) + var(--debobigegoXPadding)) 8px calc(var(--debobigegoContentHMargin) + var(--debobigegoXPadding)); + background: var(--X17); + -webkit-backdrop-filter: var(--blur, blur(10px)); + backdrop-filter: var(--blur, blur(10px)); +} + +._themeChanging_ ._debobigegoLabel { + transition: none !important; + background: transparent; +} + +._debobigegoCaption { + padding: 8px var(--debobigegoContentHMargin) 0 var(--debobigegoContentHMargin); +} + +._debobigegoItem { + & + ._debobigegoItem { + margin-top: 24px; + } +} diff --git a/packages/client/src/components/debobigego/group.vue b/packages/client/src/components/debobigego/group.vue new file mode 100644 index 0000000000..cba2c6ec94 --- /dev/null +++ b/packages/client/src/components/debobigego/group.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/packages/client/src/components/debobigego/info.vue b/packages/client/src/components/debobigego/info.vue new file mode 100644 index 0000000000..41afb03304 --- /dev/null +++ b/packages/client/src/components/debobigego/info.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/packages/client/src/components/debobigego/input.vue b/packages/client/src/components/debobigego/input.vue new file mode 100644 index 0000000000..d113f04d27 --- /dev/null +++ b/packages/client/src/components/debobigego/input.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/packages/client/src/components/debobigego/key-value-view.vue b/packages/client/src/components/debobigego/key-value-view.vue new file mode 100644 index 0000000000..0e034a2d54 --- /dev/null +++ b/packages/client/src/components/debobigego/key-value-view.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/packages/client/src/components/debobigego/link.vue b/packages/client/src/components/debobigego/link.vue new file mode 100644 index 0000000000..885579eadf --- /dev/null +++ b/packages/client/src/components/debobigego/link.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/packages/client/src/components/debobigego/object-view.vue b/packages/client/src/components/debobigego/object-view.vue new file mode 100644 index 0000000000..ea79daa915 --- /dev/null +++ b/packages/client/src/components/debobigego/object-view.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/packages/client/src/components/debobigego/pagination.vue b/packages/client/src/components/debobigego/pagination.vue new file mode 100644 index 0000000000..07012cb759 --- /dev/null +++ b/packages/client/src/components/debobigego/pagination.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/packages/client/src/components/debobigego/radios.vue b/packages/client/src/components/debobigego/radios.vue new file mode 100644 index 0000000000..b4c5841337 --- /dev/null +++ b/packages/client/src/components/debobigego/radios.vue @@ -0,0 +1,112 @@ + + + diff --git a/packages/client/src/components/debobigego/range.vue b/packages/client/src/components/debobigego/range.vue new file mode 100644 index 0000000000..26fb0f37c6 --- /dev/null +++ b/packages/client/src/components/debobigego/range.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/packages/client/src/components/debobigego/select.vue b/packages/client/src/components/debobigego/select.vue new file mode 100644 index 0000000000..7a31371afc --- /dev/null +++ b/packages/client/src/components/debobigego/select.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/packages/client/src/components/debobigego/suspense.vue b/packages/client/src/components/debobigego/suspense.vue new file mode 100644 index 0000000000..b5ba63b4b5 --- /dev/null +++ b/packages/client/src/components/debobigego/suspense.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/packages/client/src/components/debobigego/switch.vue b/packages/client/src/components/debobigego/switch.vue new file mode 100644 index 0000000000..9a69e18302 --- /dev/null +++ b/packages/client/src/components/debobigego/switch.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/packages/client/src/components/debobigego/textarea.vue b/packages/client/src/components/debobigego/textarea.vue new file mode 100644 index 0000000000..64e8d47126 --- /dev/null +++ b/packages/client/src/components/debobigego/textarea.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/packages/client/src/components/debobigego/tuple.vue b/packages/client/src/components/debobigego/tuple.vue new file mode 100644 index 0000000000..8a4599fd64 --- /dev/null +++ b/packages/client/src/components/debobigego/tuple.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/packages/client/src/components/dialog.vue b/packages/client/src/components/dialog.vue new file mode 100644 index 0000000000..90086fd430 --- /dev/null +++ b/packages/client/src/components/dialog.vue @@ -0,0 +1,212 @@ + + + + + diff --git a/packages/client/src/components/drive-file-thumbnail.vue b/packages/client/src/components/drive-file-thumbnail.vue new file mode 100644 index 0000000000..9b6a0c9a0d --- /dev/null +++ b/packages/client/src/components/drive-file-thumbnail.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/packages/client/src/components/drive-select-dialog.vue b/packages/client/src/components/drive-select-dialog.vue new file mode 100644 index 0000000000..f9a4025452 --- /dev/null +++ b/packages/client/src/components/drive-select-dialog.vue @@ -0,0 +1,70 @@ + + + diff --git a/packages/client/src/components/drive-window.vue b/packages/client/src/components/drive-window.vue new file mode 100644 index 0000000000..43f07ebe76 --- /dev/null +++ b/packages/client/src/components/drive-window.vue @@ -0,0 +1,44 @@ + + + diff --git a/packages/client/src/components/drive.file.vue b/packages/client/src/components/drive.file.vue new file mode 100644 index 0000000000..86f4ee0f8d --- /dev/null +++ b/packages/client/src/components/drive.file.vue @@ -0,0 +1,374 @@ + + + + + diff --git a/packages/client/src/components/drive.folder.vue b/packages/client/src/components/drive.folder.vue new file mode 100644 index 0000000000..91e27cc8a1 --- /dev/null +++ b/packages/client/src/components/drive.folder.vue @@ -0,0 +1,326 @@ + + + + + diff --git a/packages/client/src/components/drive.nav-folder.vue b/packages/client/src/components/drive.nav-folder.vue new file mode 100644 index 0000000000..4f0e6ce0e9 --- /dev/null +++ b/packages/client/src/components/drive.nav-folder.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/packages/client/src/components/drive.vue b/packages/client/src/components/drive.vue new file mode 100644 index 0000000000..2b72a0a1c6 --- /dev/null +++ b/packages/client/src/components/drive.vue @@ -0,0 +1,784 @@ + + + + + diff --git a/packages/client/src/components/emoji-picker-dialog.vue b/packages/client/src/components/emoji-picker-dialog.vue new file mode 100644 index 0000000000..1d48bbb8a3 --- /dev/null +++ b/packages/client/src/components/emoji-picker-dialog.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/packages/client/src/components/emoji-picker-window.vue b/packages/client/src/components/emoji-picker-window.vue new file mode 100644 index 0000000000..0ffa0c1187 --- /dev/null +++ b/packages/client/src/components/emoji-picker-window.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/packages/client/src/components/emoji-picker.section.vue b/packages/client/src/components/emoji-picker.section.vue new file mode 100644 index 0000000000..2401eca2a5 --- /dev/null +++ b/packages/client/src/components/emoji-picker.section.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/packages/client/src/components/emoji-picker.vue b/packages/client/src/components/emoji-picker.vue new file mode 100644 index 0000000000..015e201269 --- /dev/null +++ b/packages/client/src/components/emoji-picker.vue @@ -0,0 +1,501 @@ + + + + + diff --git a/packages/client/src/components/featured-photos.vue b/packages/client/src/components/featured-photos.vue new file mode 100644 index 0000000000..276344dfb4 --- /dev/null +++ b/packages/client/src/components/featured-photos.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/packages/client/src/components/file-type-icon.vue b/packages/client/src/components/file-type-icon.vue new file mode 100644 index 0000000000..be1af5e501 --- /dev/null +++ b/packages/client/src/components/file-type-icon.vue @@ -0,0 +1,28 @@ + + + diff --git a/packages/client/src/components/follow-button.vue b/packages/client/src/components/follow-button.vue new file mode 100644 index 0000000000..a96899027f --- /dev/null +++ b/packages/client/src/components/follow-button.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/packages/client/src/components/forgot-password.vue b/packages/client/src/components/forgot-password.vue new file mode 100644 index 0000000000..a42ea5864a --- /dev/null +++ b/packages/client/src/components/forgot-password.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/packages/client/src/components/form-dialog.vue b/packages/client/src/components/form-dialog.vue new file mode 100644 index 0000000000..172e6a5138 --- /dev/null +++ b/packages/client/src/components/form-dialog.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/packages/client/src/components/form/input.vue b/packages/client/src/components/form/input.vue new file mode 100644 index 0000000000..f2c1ead00c --- /dev/null +++ b/packages/client/src/components/form/input.vue @@ -0,0 +1,315 @@ + + + + + diff --git a/packages/client/src/components/form/radio.vue b/packages/client/src/components/form/radio.vue new file mode 100644 index 0000000000..0f31d8fa0a --- /dev/null +++ b/packages/client/src/components/form/radio.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/packages/client/src/components/form/radios.vue b/packages/client/src/components/form/radios.vue new file mode 100644 index 0000000000..998a738202 --- /dev/null +++ b/packages/client/src/components/form/radios.vue @@ -0,0 +1,54 @@ + + + diff --git a/packages/client/src/components/form/range.vue b/packages/client/src/components/form/range.vue new file mode 100644 index 0000000000..4cfe66a8fc --- /dev/null +++ b/packages/client/src/components/form/range.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/packages/client/src/components/form/section.vue b/packages/client/src/components/form/section.vue new file mode 100644 index 0000000000..8eac40a0db --- /dev/null +++ b/packages/client/src/components/form/section.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/packages/client/src/components/form/select.vue b/packages/client/src/components/form/select.vue new file mode 100644 index 0000000000..f7eb5cd14d --- /dev/null +++ b/packages/client/src/components/form/select.vue @@ -0,0 +1,312 @@ + + + + + diff --git a/packages/client/src/components/form/slot.vue b/packages/client/src/components/form/slot.vue new file mode 100644 index 0000000000..8580c1307d --- /dev/null +++ b/packages/client/src/components/form/slot.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/packages/client/src/components/form/switch.vue b/packages/client/src/components/form/switch.vue new file mode 100644 index 0000000000..85f8b7c870 --- /dev/null +++ b/packages/client/src/components/form/switch.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/packages/client/src/components/form/textarea.vue b/packages/client/src/components/form/textarea.vue new file mode 100644 index 0000000000..fdb24f1e2b --- /dev/null +++ b/packages/client/src/components/form/textarea.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/packages/client/src/components/formula-core.vue b/packages/client/src/components/formula-core.vue new file mode 100644 index 0000000000..cf8dee872b --- /dev/null +++ b/packages/client/src/components/formula-core.vue @@ -0,0 +1,34 @@ + + + + + + diff --git a/packages/client/src/components/formula.vue b/packages/client/src/components/formula.vue new file mode 100644 index 0000000000..fbb40bace7 --- /dev/null +++ b/packages/client/src/components/formula.vue @@ -0,0 +1,23 @@ + + + diff --git a/packages/client/src/components/gallery-post-preview.vue b/packages/client/src/components/gallery-post-preview.vue new file mode 100644 index 0000000000..8245902976 --- /dev/null +++ b/packages/client/src/components/gallery-post-preview.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/packages/client/src/components/global/a.vue b/packages/client/src/components/global/a.vue new file mode 100644 index 0000000000..5db61203c6 --- /dev/null +++ b/packages/client/src/components/global/a.vue @@ -0,0 +1,138 @@ + + + diff --git a/packages/client/src/components/global/acct.vue b/packages/client/src/components/global/acct.vue new file mode 100644 index 0000000000..b0c41c99c0 --- /dev/null +++ b/packages/client/src/components/global/acct.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/packages/client/src/components/global/ad.vue b/packages/client/src/components/global/ad.vue new file mode 100644 index 0000000000..71cb16740c --- /dev/null +++ b/packages/client/src/components/global/ad.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/packages/client/src/components/global/avatar.vue b/packages/client/src/components/global/avatar.vue new file mode 100644 index 0000000000..e509e893da --- /dev/null +++ b/packages/client/src/components/global/avatar.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/packages/client/src/components/global/ellipsis.vue b/packages/client/src/components/global/ellipsis.vue new file mode 100644 index 0000000000..0a46f486d6 --- /dev/null +++ b/packages/client/src/components/global/ellipsis.vue @@ -0,0 +1,34 @@ + + + diff --git a/packages/client/src/components/global/emoji.vue b/packages/client/src/components/global/emoji.vue new file mode 100644 index 0000000000..67a3dea2c5 --- /dev/null +++ b/packages/client/src/components/global/emoji.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/packages/client/src/components/global/error.vue b/packages/client/src/components/global/error.vue new file mode 100644 index 0000000000..8ce5d16ac6 --- /dev/null +++ b/packages/client/src/components/global/error.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/packages/client/src/components/global/header.vue b/packages/client/src/components/global/header.vue new file mode 100644 index 0000000000..7d5e426f2b --- /dev/null +++ b/packages/client/src/components/global/header.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/packages/client/src/components/global/i18n.ts b/packages/client/src/components/global/i18n.ts new file mode 100644 index 0000000000..abf0c96856 --- /dev/null +++ b/packages/client/src/components/global/i18n.ts @@ -0,0 +1,42 @@ +import { h, defineComponent } from 'vue'; + +export default defineComponent({ + props: { + src: { + type: String, + required: true, + }, + tag: { + type: String, + required: false, + default: 'span', + }, + textTag: { + type: String, + required: false, + default: null, + }, + }, + render() { + let str = this.src; + const parsed = [] as (string | { arg: string; })[]; + while (true) { + const nextBracketOpen = str.indexOf('{'); + const nextBracketClose = str.indexOf('}'); + + if (nextBracketOpen === -1) { + parsed.push(str); + break; + } else { + if (nextBracketOpen > 0) parsed.push(str.substr(0, nextBracketOpen)); + parsed.push({ + arg: str.substring(nextBracketOpen + 1, nextBracketClose) + }); + } + + str = str.substr(nextBracketClose + 1); + } + + return h(this.tag, parsed.map(x => typeof x === 'string' ? (this.textTag ? h(this.textTag, x) : x) : this.$slots[x.arg]())); + } +}); diff --git a/packages/client/src/components/global/loading.vue b/packages/client/src/components/global/loading.vue new file mode 100644 index 0000000000..7bde53c12e --- /dev/null +++ b/packages/client/src/components/global/loading.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/packages/client/src/components/global/misskey-flavored-markdown.vue b/packages/client/src/components/global/misskey-flavored-markdown.vue new file mode 100644 index 0000000000..ab20404909 --- /dev/null +++ b/packages/client/src/components/global/misskey-flavored-markdown.vue @@ -0,0 +1,157 @@ + + + + + + + diff --git a/packages/client/src/components/global/spacer.vue b/packages/client/src/components/global/spacer.vue new file mode 100644 index 0000000000..1129d54c71 --- /dev/null +++ b/packages/client/src/components/global/spacer.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/packages/client/src/components/global/sticky-container.vue b/packages/client/src/components/global/sticky-container.vue new file mode 100644 index 0000000000..859b2c1d73 --- /dev/null +++ b/packages/client/src/components/global/sticky-container.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/packages/client/src/components/global/time.vue b/packages/client/src/components/global/time.vue new file mode 100644 index 0000000000..6a330a2307 --- /dev/null +++ b/packages/client/src/components/global/time.vue @@ -0,0 +1,73 @@ + + + diff --git a/packages/client/src/components/global/url.vue b/packages/client/src/components/global/url.vue new file mode 100644 index 0000000000..092fe6620c --- /dev/null +++ b/packages/client/src/components/global/url.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/packages/client/src/components/global/user-name.vue b/packages/client/src/components/global/user-name.vue new file mode 100644 index 0000000000..bc93a8ea30 --- /dev/null +++ b/packages/client/src/components/global/user-name.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/client/src/components/google.vue b/packages/client/src/components/google.vue new file mode 100644 index 0000000000..c48feffbf1 --- /dev/null +++ b/packages/client/src/components/google.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/packages/client/src/components/image-viewer.vue b/packages/client/src/components/image-viewer.vue new file mode 100644 index 0000000000..fc28c30b56 --- /dev/null +++ b/packages/client/src/components/image-viewer.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/packages/client/src/components/img-with-blurhash.vue b/packages/client/src/components/img-with-blurhash.vue new file mode 100644 index 0000000000..7e80b00208 --- /dev/null +++ b/packages/client/src/components/img-with-blurhash.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/packages/client/src/components/index.ts b/packages/client/src/components/index.ts new file mode 100644 index 0000000000..2340b228f8 --- /dev/null +++ b/packages/client/src/components/index.ts @@ -0,0 +1,37 @@ +import { App } from 'vue'; + +import mfm from './global/misskey-flavored-markdown.vue'; +import a from './global/a.vue'; +import acct from './global/acct.vue'; +import avatar from './global/avatar.vue'; +import emoji from './global/emoji.vue'; +import userName from './global/user-name.vue'; +import ellipsis from './global/ellipsis.vue'; +import time from './global/time.vue'; +import url from './global/url.vue'; +import i18n from './global/i18n'; +import loading from './global/loading.vue'; +import error from './global/error.vue'; +import ad from './global/ad.vue'; +import header from './global/header.vue'; +import spacer from './global/spacer.vue'; +import stickyContainer from './global/sticky-container.vue'; + +export default function(app: App) { + app.component('I18n', i18n); + app.component('Mfm', mfm); + app.component('MkA', a); + app.component('MkAcct', acct); + app.component('MkAvatar', avatar); + app.component('MkEmoji', emoji); + app.component('MkUserName', userName); + app.component('MkEllipsis', ellipsis); + app.component('MkTime', time); + app.component('MkUrl', url); + app.component('MkLoading', loading); + app.component('MkError', error); + app.component('MkAd', ad); + app.component('MkHeader', header); + app.component('MkSpacer', spacer); + app.component('MkStickyContainer', stickyContainer); +} diff --git a/packages/client/src/components/instance-stats.vue b/packages/client/src/components/instance-stats.vue new file mode 100644 index 0000000000..bc62998a4a --- /dev/null +++ b/packages/client/src/components/instance-stats.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/packages/client/src/components/instance-ticker.vue b/packages/client/src/components/instance-ticker.vue new file mode 100644 index 0000000000..1ce5a1c2c1 --- /dev/null +++ b/packages/client/src/components/instance-ticker.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/packages/client/src/components/launch-pad.vue b/packages/client/src/components/launch-pad.vue new file mode 100644 index 0000000000..09f5f89f90 --- /dev/null +++ b/packages/client/src/components/launch-pad.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/packages/client/src/components/link.vue b/packages/client/src/components/link.vue new file mode 100644 index 0000000000..a8e096e0a0 --- /dev/null +++ b/packages/client/src/components/link.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/packages/client/src/components/media-banner.vue b/packages/client/src/components/media-banner.vue new file mode 100644 index 0000000000..2cf8c772e5 --- /dev/null +++ b/packages/client/src/components/media-banner.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/packages/client/src/components/media-caption.vue b/packages/client/src/components/media-caption.vue new file mode 100644 index 0000000000..08a3ca2b4c --- /dev/null +++ b/packages/client/src/components/media-caption.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/packages/client/src/components/media-image.vue b/packages/client/src/components/media-image.vue new file mode 100644 index 0000000000..8843b63207 --- /dev/null +++ b/packages/client/src/components/media-image.vue @@ -0,0 +1,155 @@ + + + + + diff --git a/packages/client/src/components/media-list.vue b/packages/client/src/components/media-list.vue new file mode 100644 index 0000000000..51eaa86f35 --- /dev/null +++ b/packages/client/src/components/media-list.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/packages/client/src/components/media-video.vue b/packages/client/src/components/media-video.vue new file mode 100644 index 0000000000..aa885bd564 --- /dev/null +++ b/packages/client/src/components/media-video.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/packages/client/src/components/mention.vue b/packages/client/src/components/mention.vue new file mode 100644 index 0000000000..a5be3fab22 --- /dev/null +++ b/packages/client/src/components/mention.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/packages/client/src/components/mfm.ts b/packages/client/src/components/mfm.ts new file mode 100644 index 0000000000..d41cf6fc2b --- /dev/null +++ b/packages/client/src/components/mfm.ts @@ -0,0 +1,321 @@ +import { VNode, defineComponent, h } from 'vue'; +import * as mfm from 'mfm-js'; +import MkUrl from '@/components/global/url.vue'; +import MkLink from '@/components/link.vue'; +import MkMention from '@/components/mention.vue'; +import MkEmoji from '@/components/global/emoji.vue'; +import { concat } from '@/scripts/array'; +import MkFormula from '@/components/formula.vue'; +import MkCode from '@/components/code.vue'; +import MkGoogle from '@/components/google.vue'; +import MkSparkle from '@/components/sparkle.vue'; +import MkA from '@/components/global/a.vue'; +import { host } from '@/config'; +import { MFM_TAGS } from '@/scripts/mfm-tags'; + +export default defineComponent({ + props: { + text: { + type: String, + required: true + }, + plain: { + type: Boolean, + default: false + }, + nowrap: { + type: Boolean, + default: false + }, + author: { + type: Object, + default: null + }, + i: { + type: Object, + default: null + }, + customEmojis: { + required: false, + }, + isNote: { + type: Boolean, + default: true + }, + }, + + render() { + if (this.text == null || this.text == '') return; + + const ast = (this.plain ? mfm.parsePlain : mfm.parse)(this.text, { fnNameList: MFM_TAGS }); + + const validTime = (t: string | null | undefined) => { + if (t == null) return null; + return t.match(/^[0-9.]+s$/) ? t : null; + }; + + const genEl = (ast: mfm.MfmNode[]) => concat(ast.map((token): VNode[] => { + switch (token.type) { + case 'text': { + const text = token.props.text.replace(/(\r\n|\n|\r)/g, '\n'); + + if (!this.plain) { + const res = []; + for (const t of text.split('\n')) { + res.push(h('br')); + res.push(t); + } + res.shift(); + return res; + } else { + return [text.replace(/\n/g, ' ')]; + } + } + + case 'bold': { + return [h('b', genEl(token.children))]; + } + + case 'strike': { + return [h('del', genEl(token.children))]; + } + + case 'italic': { + return h('i', { + style: 'font-style: oblique;' + }, genEl(token.children)); + } + + case 'fn': { + // TODO: CSSを文字列で組み立てていくと token.props.args.~~~ 経由でCSSインジェクションできるのでよしなにやる + let style; + switch (token.props.name) { + case 'tada': { + style = `font-size: 150%;` + (this.$store.state.animatedMfm ? 'animation: tada 1s linear infinite both;' : ''); + break; + } + case 'jelly': { + const speed = validTime(token.props.args.speed) || '1s'; + style = (this.$store.state.animatedMfm ? `animation: mfm-rubberBand ${speed} linear infinite both;` : ''); + break; + } + case 'twitch': { + const speed = validTime(token.props.args.speed) || '0.5s'; + style = this.$store.state.animatedMfm ? `animation: mfm-twitch ${speed} ease infinite;` : ''; + break; + } + case 'shake': { + const speed = validTime(token.props.args.speed) || '0.5s'; + style = this.$store.state.animatedMfm ? `animation: mfm-shake ${speed} ease infinite;` : ''; + break; + } + case 'spin': { + const direction = + token.props.args.left ? 'reverse' : + token.props.args.alternate ? 'alternate' : + 'normal'; + const anime = + token.props.args.x ? 'mfm-spinX' : + token.props.args.y ? 'mfm-spinY' : + 'mfm-spin'; + const speed = validTime(token.props.args.speed) || '1.5s'; + style = this.$store.state.animatedMfm ? `animation: ${anime} ${speed} linear infinite; animation-direction: ${direction};` : ''; + break; + } + case 'jump': { + style = this.$store.state.animatedMfm ? 'animation: mfm-jump 0.75s linear infinite;' : ''; + break; + } + case 'bounce': { + style = this.$store.state.animatedMfm ? 'animation: mfm-bounce 0.75s linear infinite; transform-origin: center bottom;' : ''; + break; + } + case 'flip': { + const transform = + (token.props.args.h && token.props.args.v) ? 'scale(-1, -1)' : + token.props.args.v ? 'scaleY(-1)' : + 'scaleX(-1)'; + style = `transform: ${transform};`; + break; + } + case 'x2': { + style = `font-size: 200%;`; + break; + } + case 'x3': { + style = `font-size: 400%;`; + break; + } + case 'x4': { + style = `font-size: 600%;`; + break; + } + case 'font': { + const family = + token.props.args.serif ? 'serif' : + token.props.args.monospace ? 'monospace' : + token.props.args.cursive ? 'cursive' : + token.props.args.fantasy ? 'fantasy' : + token.props.args.emoji ? 'emoji' : + token.props.args.math ? 'math' : + null; + if (family) style = `font-family: ${family};`; + break; + } + case 'blur': { + return h('span', { + class: '_mfm_blur_', + }, genEl(token.children)); + } + case 'rainbow': { + style = this.$store.state.animatedMfm ? 'animation: mfm-rainbow 1s linear infinite;' : ''; + break; + } + case 'sparkle': { + if (!this.$store.state.animatedMfm) { + return genEl(token.children); + } + let count = token.props.args.count ? parseInt(token.props.args.count) : 10; + if (count > 100) { + count = 100; + } + const speed = token.props.args.speed ? parseFloat(token.props.args.speed) : 1; + return h(MkSparkle, { + count, speed, + }, genEl(token.children)); + } + } + if (style == null) { + return h('span', {}, ['$[', token.props.name, ' ', ...genEl(token.children), ']']); + } else { + return h('span', { + style: 'display: inline-block;' + style, + }, genEl(token.children)); + } + } + + case 'small': { + return [h('small', { + style: 'opacity: 0.7;' + }, genEl(token.children))]; + } + + case 'center': { + return [h('div', { + style: 'text-align:center;' + }, genEl(token.children))]; + } + + case 'url': { + return [h(MkUrl, { + key: Math.random(), + url: token.props.url, + rel: 'nofollow noopener', + })]; + } + + case 'link': { + return [h(MkLink, { + key: Math.random(), + url: token.props.url, + rel: 'nofollow noopener', + }, genEl(token.children))]; + } + + case 'mention': { + return [h(MkMention, { + key: Math.random(), + host: (token.props.host == null && this.author && this.author.host != null ? this.author.host : token.props.host) || host, + username: token.props.username + })]; + } + + case 'hashtag': { + return [h(MkA, { + key: Math.random(), + to: this.isNote ? `/tags/${encodeURIComponent(token.props.hashtag)}` : `/explore/tags/${encodeURIComponent(token.props.hashtag)}`, + style: 'color:var(--hashtag);' + }, `#${token.props.hashtag}`)]; + } + + case 'blockCode': { + return [h(MkCode, { + key: Math.random(), + code: token.props.code, + lang: token.props.lang, + })]; + } + + case 'inlineCode': { + return [h(MkCode, { + key: Math.random(), + code: token.props.code, + inline: true + })]; + } + + case 'quote': { + if (!this.nowrap) { + return [h('div', { + class: 'quote' + }, genEl(token.children))]; + } else { + return [h('span', { + class: 'quote' + }, genEl(token.children))]; + } + } + + case 'emojiCode': { + return [h(MkEmoji, { + key: Math.random(), + emoji: `:${token.props.name}:`, + customEmojis: this.customEmojis, + normal: this.plain + })]; + } + + case 'unicodeEmoji': { + return [h(MkEmoji, { + key: Math.random(), + emoji: token.props.emoji, + customEmojis: this.customEmojis, + normal: this.plain + })]; + } + + case 'mathInline': { + return [h(MkFormula, { + key: Math.random(), + formula: token.props.formula, + block: false + })]; + } + + case 'mathBlock': { + return [h(MkFormula, { + key: Math.random(), + formula: token.props.formula, + block: true + })]; + } + + case 'search': { + return [h(MkGoogle, { + key: Math.random(), + q: token.props.query + })]; + } + + default: { + console.error('unrecognized ast type:', token.type); + + return []; + } + } + })); + + // Parse ast to DOM + return h('span', genEl(ast)); + } +}); diff --git a/packages/client/src/components/mini-chart.vue b/packages/client/src/components/mini-chart.vue new file mode 100644 index 0000000000..2eb9ae8cbe --- /dev/null +++ b/packages/client/src/components/mini-chart.vue @@ -0,0 +1,90 @@ + + + diff --git a/packages/client/src/components/modal-page-window.vue b/packages/client/src/components/modal-page-window.vue new file mode 100644 index 0000000000..2086736683 --- /dev/null +++ b/packages/client/src/components/modal-page-window.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/packages/client/src/components/note-detailed.vue b/packages/client/src/components/note-detailed.vue new file mode 100644 index 0000000000..8b6905a0e4 --- /dev/null +++ b/packages/client/src/components/note-detailed.vue @@ -0,0 +1,1229 @@ + + + + + diff --git a/packages/client/src/components/note-header.vue b/packages/client/src/components/note-header.vue new file mode 100644 index 0000000000..c61ec41dd1 --- /dev/null +++ b/packages/client/src/components/note-header.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/packages/client/src/components/note-preview.vue b/packages/client/src/components/note-preview.vue new file mode 100644 index 0000000000..a474a01341 --- /dev/null +++ b/packages/client/src/components/note-preview.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/packages/client/src/components/note-simple.vue b/packages/client/src/components/note-simple.vue new file mode 100644 index 0000000000..2f19bd6e0b --- /dev/null +++ b/packages/client/src/components/note-simple.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/packages/client/src/components/note.sub.vue b/packages/client/src/components/note.sub.vue new file mode 100644 index 0000000000..45204854be --- /dev/null +++ b/packages/client/src/components/note.sub.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/packages/client/src/components/note.vue b/packages/client/src/components/note.vue new file mode 100644 index 0000000000..b1ec674b67 --- /dev/null +++ b/packages/client/src/components/note.vue @@ -0,0 +1,1228 @@ + + + + + diff --git a/packages/client/src/components/notes.vue b/packages/client/src/components/notes.vue new file mode 100644 index 0000000000..1e7da7a2b0 --- /dev/null +++ b/packages/client/src/components/notes.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/packages/client/src/components/notification-setting-window.vue b/packages/client/src/components/notification-setting-window.vue new file mode 100644 index 0000000000..ec1efec261 --- /dev/null +++ b/packages/client/src/components/notification-setting-window.vue @@ -0,0 +1,99 @@ + + + diff --git a/packages/client/src/components/notification.vue b/packages/client/src/components/notification.vue new file mode 100644 index 0000000000..b629820043 --- /dev/null +++ b/packages/client/src/components/notification.vue @@ -0,0 +1,362 @@ + + + + + diff --git a/packages/client/src/components/notifications.vue b/packages/client/src/components/notifications.vue new file mode 100644 index 0000000000..4ebb12c44b --- /dev/null +++ b/packages/client/src/components/notifications.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/packages/client/src/components/number-diff.vue b/packages/client/src/components/number-diff.vue new file mode 100644 index 0000000000..9889c97ec3 --- /dev/null +++ b/packages/client/src/components/number-diff.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/packages/client/src/components/page-preview.vue b/packages/client/src/components/page-preview.vue new file mode 100644 index 0000000000..05df1dc16e --- /dev/null +++ b/packages/client/src/components/page-preview.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/packages/client/src/components/page-window.vue b/packages/client/src/components/page-window.vue new file mode 100644 index 0000000000..b6be114cd7 --- /dev/null +++ b/packages/client/src/components/page-window.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/packages/client/src/components/page/page.block.vue b/packages/client/src/components/page/page.block.vue new file mode 100644 index 0000000000..54b8b30276 --- /dev/null +++ b/packages/client/src/components/page/page.block.vue @@ -0,0 +1,44 @@ + + + diff --git a/packages/client/src/components/page/page.button.vue b/packages/client/src/components/page/page.button.vue new file mode 100644 index 0000000000..51da84bd49 --- /dev/null +++ b/packages/client/src/components/page/page.button.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/packages/client/src/components/page/page.canvas.vue b/packages/client/src/components/page/page.canvas.vue new file mode 100644 index 0000000000..8f49b88e5e --- /dev/null +++ b/packages/client/src/components/page/page.canvas.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/packages/client/src/components/page/page.counter.vue b/packages/client/src/components/page/page.counter.vue new file mode 100644 index 0000000000..b1af8954b0 --- /dev/null +++ b/packages/client/src/components/page/page.counter.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/packages/client/src/components/page/page.if.vue b/packages/client/src/components/page/page.if.vue new file mode 100644 index 0000000000..ec25332db0 --- /dev/null +++ b/packages/client/src/components/page/page.if.vue @@ -0,0 +1,31 @@ + + + diff --git a/packages/client/src/components/page/page.image.vue b/packages/client/src/components/page/page.image.vue new file mode 100644 index 0000000000..04ce74bd7c --- /dev/null +++ b/packages/client/src/components/page/page.image.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/packages/client/src/components/page/page.note.vue b/packages/client/src/components/page/page.note.vue new file mode 100644 index 0000000000..925844c1bd --- /dev/null +++ b/packages/client/src/components/page/page.note.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/packages/client/src/components/page/page.number-input.vue b/packages/client/src/components/page/page.number-input.vue new file mode 100644 index 0000000000..b5120d0f85 --- /dev/null +++ b/packages/client/src/components/page/page.number-input.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/packages/client/src/components/page/page.post.vue b/packages/client/src/components/page/page.post.vue new file mode 100644 index 0000000000..1b86ea1ab9 --- /dev/null +++ b/packages/client/src/components/page/page.post.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/packages/client/src/components/page/page.radio-button.vue b/packages/client/src/components/page/page.radio-button.vue new file mode 100644 index 0000000000..4d3c03291e --- /dev/null +++ b/packages/client/src/components/page/page.radio-button.vue @@ -0,0 +1,45 @@ + + + diff --git a/packages/client/src/components/page/page.section.vue b/packages/client/src/components/page/page.section.vue new file mode 100644 index 0000000000..d32f5dc732 --- /dev/null +++ b/packages/client/src/components/page/page.section.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/packages/client/src/components/page/page.switch.vue b/packages/client/src/components/page/page.switch.vue new file mode 100644 index 0000000000..1ece88157f --- /dev/null +++ b/packages/client/src/components/page/page.switch.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/packages/client/src/components/page/page.text-input.vue b/packages/client/src/components/page/page.text-input.vue new file mode 100644 index 0000000000..e4d3f6039a --- /dev/null +++ b/packages/client/src/components/page/page.text-input.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/packages/client/src/components/page/page.text.vue b/packages/client/src/components/page/page.text.vue new file mode 100644 index 0000000000..7dd41ed869 --- /dev/null +++ b/packages/client/src/components/page/page.text.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/packages/client/src/components/page/page.textarea-input.vue b/packages/client/src/components/page/page.textarea-input.vue new file mode 100644 index 0000000000..6e082b2bef --- /dev/null +++ b/packages/client/src/components/page/page.textarea-input.vue @@ -0,0 +1,47 @@ + + + diff --git a/packages/client/src/components/page/page.textarea.vue b/packages/client/src/components/page/page.textarea.vue new file mode 100644 index 0000000000..5b4ee2b452 --- /dev/null +++ b/packages/client/src/components/page/page.textarea.vue @@ -0,0 +1,39 @@ + + + diff --git a/packages/client/src/components/page/page.vue b/packages/client/src/components/page/page.vue new file mode 100644 index 0000000000..6d1c419a40 --- /dev/null +++ b/packages/client/src/components/page/page.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/packages/client/src/components/particle.vue b/packages/client/src/components/particle.vue new file mode 100644 index 0000000000..d82705c1e8 --- /dev/null +++ b/packages/client/src/components/particle.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/packages/client/src/components/poll-editor.vue b/packages/client/src/components/poll-editor.vue new file mode 100644 index 0000000000..aa213cfe49 --- /dev/null +++ b/packages/client/src/components/poll-editor.vue @@ -0,0 +1,251 @@ + + + + + diff --git a/packages/client/src/components/poll.vue b/packages/client/src/components/poll.vue new file mode 100644 index 0000000000..049fe3a435 --- /dev/null +++ b/packages/client/src/components/poll.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/packages/client/src/components/post-form-attaches.vue b/packages/client/src/components/post-form-attaches.vue new file mode 100644 index 0000000000..dff0dec21e --- /dev/null +++ b/packages/client/src/components/post-form-attaches.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/packages/client/src/components/post-form-dialog.vue b/packages/client/src/components/post-form-dialog.vue new file mode 100644 index 0000000000..ae1cd7f01e --- /dev/null +++ b/packages/client/src/components/post-form-dialog.vue @@ -0,0 +1,19 @@ + + + diff --git a/packages/client/src/components/post-form.vue b/packages/client/src/components/post-form.vue new file mode 100644 index 0000000000..ce6b7db3ee --- /dev/null +++ b/packages/client/src/components/post-form.vue @@ -0,0 +1,980 @@ +