diff --git a/client/babel.config.js b/client/babel.config.js index e9558405..c5dc6a52 100644 --- a/client/babel.config.js +++ b/client/babel.config.js @@ -1,5 +1,5 @@ module.exports = { - presets: [ - '@vue/cli-plugin-babel/preset' - ] -} + presets: [ + '@vue/cli-plugin-babel/preset' + ] +}; diff --git a/client/src/components/Navigation.vue b/client/src/components/Navigation.vue index 5d0b615e..cfaac645 100644 --- a/client/src/components/Navigation.vue +++ b/client/src/components/Navigation.vue @@ -71,7 +71,7 @@ export default Vue.extend({ // アップデートが利用可能か is_update_available: false as boolean, - } + }; }, async created() { try { diff --git a/client/src/components/Panel/Channel.vue b/client/src/components/Panel/Channel.vue index c1ca1033..2da4b8a0 100644 --- a/client/src/components/Panel/Channel.vue +++ b/client/src/components/Panel/Channel.vue @@ -68,7 +68,7 @@ export default Vue.extend({ // タブの状態管理 tab: null, - } + }; }, computed: { // ChannelsStore に this.channelsStore でアクセスできるようにする diff --git a/client/src/components/Panel/Comment.vue b/client/src/components/Panel/Comment.vue index d3ab4e74..c3dd3fc5 100644 --- a/client/src/components/Panel/Comment.vue +++ b/client/src/components/Panel/Comment.vue @@ -129,7 +129,7 @@ export default Vue.extend({ // コメントのミュート設定のモーダルを表示するか comment_mute_settings_modal: false, - } + }; }, computed: { // UserStore に this.userStore でアクセスできるようにする @@ -158,20 +158,20 @@ export default Vue.extend({ const x = event.clientX - this.comment_list_element.getBoundingClientRect().left; // 座標が clientWidth 以上であれば、スクロールバー上で mousedown されたものとする if (x > this.comment_list_element.clientWidth) is_user_scrolling = true; - } + }; this.comment_list_element.onmouseup = (event: MouseEvent) => { // コメントリストの要素の左上を起点としたカーソルのX座標を求める const x = event.clientX - this.comment_list_element.getBoundingClientRect().left; // 座標が clientWidth 以上であれば、スクロールバー上で mouseup されたものとする if (x > this.comment_list_element.clientWidth) is_user_scrolling = false; - } + }; // ユーザーによるスクロールイベントで is_user_scrolling を true にする // 0.1 秒後に false にする(継続してイベントが発火すれば再び true になる) const on_user_scrolling = () => { is_user_scrolling = true; window.setTimeout(() => is_user_scrolling = false, 100); - } + }; // 現在コメントリストがドラッグされているかどうか let is_dragging = false; @@ -205,7 +205,7 @@ export default Vue.extend({ this.is_manual_scroll = false; // 手動スクロールを無効化 } } - } + }; }, // 終了前に実行 beforeDestroy() { @@ -224,7 +224,7 @@ export default Vue.extend({ displayCommentListDropdown(event: Event, comment: ICommentData) { const comment_list_wrapper_rect = (this.$refs.comment_list_wrapper as HTMLDivElement).getBoundingClientRect(); const comment_list_dropdown_height = 76; // 76px はドロップダウンメニューの高さ - const comment_button_rect = (event.currentTarget as HTMLElement).getBoundingClientRect() + const comment_button_rect = (event.currentTarget as HTMLElement).getBoundingClientRect(); // メニューの表示位置をクリックされたコメントに合わせる this.comment_list_dropdown_top = comment_button_rect.top - comment_list_wrapper_rect.top; // メニューがコメントリストからはみ出るときだけ、表示位置を上側に調整 @@ -312,7 +312,7 @@ export default Vue.extend({ const gcd = (x: number, y: number) => { // 最大公約数を求める関数 if (y === 0) return x; return gcd(y, x % y); - } + }; // 幅と高さの最大公約数を求める const gcd_result = gcd(comment_area_width, comment_area_height); // 幅と高さをそれぞれ最大公約数で割ってアスペクト比を算出 @@ -346,7 +346,7 @@ export default Vue.extend({ comment_area_element.style.removeProperty('--comment-area-aspect-ratio'); comment_area_element.style.removeProperty('--comment-area-vertical-margin'); } - } + }; // 要素の監視を開始 this.resize_observer = new ResizeObserver(on_resize); diff --git a/client/src/components/Panel/Program.vue b/client/src/components/Panel/Program.vue index 8f0e749b..efb26a27 100644 --- a/client/src/components/Panel/Program.vue +++ b/client/src/components/Panel/Program.vue @@ -70,7 +70,7 @@ export default Vue.extend({ Utils: Utils, ChannelUtils: ChannelUtils, ProgramUtils: ProgramUtils, - } + }; }, computed: { // ChannelsStore に this.channelsStore でアクセスできるようにする diff --git a/client/src/components/Panel/Twitter.vue b/client/src/components/Panel/Twitter.vue index acff6db2..4f464246 100644 --- a/client/src/components/Panel/Twitter.vue +++ b/client/src/components/Panel/Twitter.vue @@ -262,7 +262,7 @@ export default Vue.extend({ // 文字数カウント tweet_letter_count: 140, - } + }; }, computed: { // ChannelsStore / SettingsStore / UserStore に this.channelsStore / this.settingsStore / this.userStore でアクセスできるようにする @@ -467,9 +467,9 @@ export default Vue.extend({ image_bitmap.close(); // 描画設定 - context.font = `bold 22px 'YakuHanJPs', 'Open Sans', 'Hiragino Sans', 'Noto Sans JP', sans-serif`; // フォント + context.font = 'bold 22px "YakuHanJPs", "Open Sans", "Hiragino Sans", "Noto Sans JP", sans-serif'; // フォント context.fillStyle = 'rgba(255, 255, 255, 70%)'; // 半透明の白 - context.shadowColor = 'rgba(0, 0, 0, 100%)' // 影の色 + context.shadowColor = 'rgba(0, 0, 0, 100%)'; // 影の色 context.shadowBlur = 4; // 影をぼかすしきい値 context.shadowOffsetX = 0; // 影のX座標 context.shadowOffsetY = 0; // 影のY座標 diff --git a/client/src/components/Settings/CommentMuteSettings.vue b/client/src/components/Settings/CommentMuteSettings.vue index ccf3dc7e..b72de036 100644 --- a/client/src/components/Settings/CommentMuteSettings.vue +++ b/client/src/components/Settings/CommentMuteSettings.vue @@ -177,7 +177,7 @@ export default Vue.extend({ {text: '完全一致', value: 'exact'}, {text: '正規表現', value: 'regex'}, ], - } + }; }, computed: { // SettingsStore に this.settingsStore でアクセスできるようにする diff --git a/client/src/components/VTabs.ts b/client/src/components/VTabs.ts index fabce90c..55645b4c 100644 --- a/client/src/components/VTabs.ts +++ b/client/src/components/VTabs.ts @@ -1,7 +1,7 @@ import { VueConstructor, VNode } from 'vue'; -import { convertToUnit } from 'vuetify/lib/util/helpers' +import { convertToUnit } from 'vuetify/lib/util/helpers'; import VTabs from 'vuetify/lib/components/VTabs/VTabs'; import VTabsBar from '@/components/VTabsBar'; diff --git a/client/src/components/VTabsBar.ts b/client/src/components/VTabsBar.ts index 4a8c8e69..51fb1429 100644 --- a/client/src/components/VTabsBar.ts +++ b/client/src/components/VTabsBar.ts @@ -10,7 +10,7 @@ export default (VTabsBar as VueConstructor).extend({ return { // 一応型定義をしておく items: [] as GroupableInstance[], - } + }; }, methods: { diff --git a/client/src/components/VTabsItems.ts b/client/src/components/VTabsItems.ts index 2e425131..5a86ecad 100644 --- a/client/src/components/VTabsItems.ts +++ b/client/src/components/VTabsItems.ts @@ -10,7 +10,7 @@ export default (VTabsItems as VueConstructor).extend({ return { // 一応型定義をしておく items: [] as GroupableInstance[], - } + }; }, methods: { diff --git a/client/src/main.ts b/client/src/main.ts index b5e017ba..b3734682 100644 --- a/client/src/main.ts +++ b/client/src/main.ts @@ -59,11 +59,11 @@ Vue.use(VuetifyMessageSnackbar, { // 2.5秒でタイムアウト timeout: 2500, // 要素が非表示になった後に DOM から要素を削除する - autoRemove: true, + autoRemove: true, // 閉じるボタンのテキスト - closeButtonContent: '閉じる', - // Vuetify のインスタンス - vuetifyInstance: vuetify, + closeButtonContent: '閉じる', + // Vuetify のインスタンス + vuetifyInstance: vuetify, }); // VTooltip を使う @@ -109,7 +109,7 @@ store.$subscribe(async () => { } // 設定データを LocalStorage に保存 - console.log('Client Settings Changed:', store.settings) + console.log('Client Settings Changed:', store.settings); setLocalStorageSettings(store.settings); // 設定データをサーバーに同期する (ログイン時かつ同期が有効な場合のみ) diff --git a/client/src/message.ts b/client/src/message.ts index e2e55dfa..a030ce51 100644 --- a/client/src/message.ts +++ b/client/src/message.ts @@ -29,4 +29,4 @@ export default { // @ts-ignore return window.KonomiTVVueInstance.$message.show(message); } -} +}; diff --git a/client/src/plugins/vuetify.ts b/client/src/plugins/vuetify.ts index 47a4e5a9..2456261f 100644 --- a/client/src/plugins/vuetify.ts +++ b/client/src/plugins/vuetify.ts @@ -39,7 +39,7 @@ export default new Vuetify({ } }, options: { - customProperties: true, + customProperties: true, }, }, }); diff --git a/client/src/service-worker.ts b/client/src/service-worker.ts index a12b3f1d..27bf44a1 100644 --- a/client/src/service-worker.ts +++ b/client/src/service-worker.ts @@ -8,25 +8,25 @@ if (process.env.NODE_ENV === 'production') { console.log( 'App is being served from cache by a service worker.\n' + 'For more details, visit https://goo.gl/AFskqB' - ) + ); }, registered() { - console.log('Service worker has been registered.') + console.log('Service worker has been registered.'); }, cached() { - console.log('Content has been cached for offline use.') + console.log('Content has been cached for offline use.'); }, updatefound() { - console.log('New content is downloading.') + console.log('New content is downloading.'); }, updated() { - console.log('New content is available; please refresh.') + console.log('New content is available; please refresh.'); }, offline() { - console.log('No internet connection found. App is running in offline mode.') + console.log('No internet connection found. App is running in offline mode.'); }, error(error) { - console.error('Error during service worker registration:', error) + console.error('Error during service worker registration:', error); } }); } diff --git a/client/src/services/APIClient.ts b/client/src/services/APIClient.ts index 5ca0f52f..58218f7b 100644 --- a/client/src/services/APIClient.ts +++ b/client/src/services/APIClient.ts @@ -21,7 +21,7 @@ export type SuccessResponse = { data: T; error: null; is_success: true; -} +}; /** API リクエスト失敗時のレスポンスを表すインターフェイス */ export type ErrorResponse = { @@ -29,7 +29,7 @@ export type ErrorResponse = { data: null; error: T; is_error: true; -} +}; /** @@ -60,7 +60,7 @@ class APIClient { data: null, error: new Error(result.response.data.detail), is_error: true, - } + }; // エラーレスポンスがない場合は、AxiosError をそのまま返す } else { diff --git a/client/src/services/Channels.ts b/client/src/services/Channels.ts index b76620e3..2de027d2 100644 --- a/client/src/services/Channels.ts +++ b/client/src/services/Channels.ts @@ -59,7 +59,7 @@ export const IChannelDefault: IChannel = { viewers: 0, program_present: IProgramDefault, program_following: IProgramDefault, -} +}; /** ニコニコ実況のセッション情報を表すインターフェイス */ export interface IJikkyoSession { diff --git a/client/src/services/Programs.ts b/client/src/services/Programs.ts index 3baa29b5..d4246820 100644 --- a/client/src/services/Programs.ts +++ b/client/src/services/Programs.ts @@ -49,6 +49,6 @@ export const IProgramDefault: IProgram = { secondary_audio_type: null, secondary_audio_language: null, secondary_audio_sampling_rate: null, -} +}; // TODO: 番組情報 API が開発されたらここに API 定義を書く diff --git a/client/src/services/Twitter.ts b/client/src/services/Twitter.ts index e069d5c9..fe9590e4 100644 --- a/client/src/services/Twitter.ts +++ b/client/src/services/Twitter.ts @@ -87,7 +87,7 @@ class Niconico { return {message: response.data.detail, is_error: false}; } else { // ツイート失敗 - return {message: `エラー: ${response.data.detail}`, is_error: true} + return {message: `エラー: ${response.data.detail}`, is_error: true}; } } } diff --git a/client/src/services/Users.ts b/client/src/services/Users.ts index eab90343..c76581da 100644 --- a/client/src/services/Users.ts +++ b/client/src/services/Users.ts @@ -28,22 +28,22 @@ export interface ITwitterAccount { /** ユーザーアカウントのアクセストークンを表すインターフェイス */ export interface IUserAccessToken { - access_token: string; - token_type: string; + access_token: string; + token_type: string; } export interface IUserCreateRequest { - username: string; - password: string; + username: string; + password: string; } export interface IUserUpdateRequest { - username?: string; - password?: string; + username?: string; + password?: string; } export interface IUserUpdateRequestForAdmin { - username?: string; - password?: string; - is_admin?: boolean; + username?: string; + password?: string; + is_admin?: boolean; } diff --git a/client/src/services/player/CaptureHandler.ts b/client/src/services/player/CaptureHandler.ts index c42beac3..4117877e 100644 --- a/client/src/services/player/CaptureHandler.ts +++ b/client/src/services/player/CaptureHandler.ts @@ -203,7 +203,7 @@ class CaptureHandler { } return blob; - } + }; // ***** 映像のキャプチャ ***** @@ -256,7 +256,6 @@ class CaptureHandler { } // ***** 通常実行 (Canvas にキャプチャ以外のデータを重ねて描画する必要があるケース) ***** - } else { const promises: Promise[] = []; @@ -509,7 +508,7 @@ class CaptureHandler { // スクロール中のコメントの表示座標を計算 const position = comment.getBoundingClientRect().left - this.player.video.getBoundingClientRect().left; comments_html = comments_html.replace(/transform: translateX\(.*?\);/, `left: ${position}px;`) - .replaceAll('border: 2px solid #E64F97;', ''); + .replaceAll('border: 2px solid #E64F97;', ''); } // HTML を画像として取得 @@ -599,7 +598,7 @@ class CaptureHandler { caption_text: caption_text, // 字幕のテキスト (キャプチャした瞬間に字幕が表示されていなかったときは null) is_caption_composited: is_caption_composited, // 字幕が合成されているか is_comment_composited: is_comment_composited, // コメントが合成されているか - } + }; // 保存する EXIF メタデータを構築 // ref: 「カメラアプリで体感するWeb App」4.2 diff --git a/client/src/store/ChannelsStore.ts b/client/src/store/ChannelsStore.ts index 59f5d028..e13d1793 100644 --- a/client/src/store/ChannelsStore.ts +++ b/client/src/store/ChannelsStore.ts @@ -66,14 +66,14 @@ const useChannelsStore = defineStore('channels', { channel_id: 'gr999', title: 'チャンネル情報取得エラー', description: 'このチャンネル ID のチャンネル情報は存在しません。', - } + }; const IChannelError = { ...IChannelDefault, channel_id: 'gr999', // チャンネル情報が存在しないことを示す特殊なチャンネル ID channel_name: 'ERROR', program_present: IProgramError, program_following: IProgramError, - } + }; return { previous: IChannelError, current: IChannelError, diff --git a/client/src/store/UserStore.ts b/client/src/store/UserStore.ts index f52fa759..755b0190 100644 --- a/client/src/store/UserStore.ts +++ b/client/src/store/UserStore.ts @@ -54,7 +54,7 @@ const useUserStore = defineStore('user', { // 作成したアカウントでログイン await this.login(username, password, true); - console.log('Register successful.') + console.log('Register successful.'); Message.success('アカウントを作成しました。'); return true; }, diff --git a/client/src/utils/ProgramUtils.ts b/client/src/utils/ProgramUtils.ts index 9d479ab2..2434294a 100644 --- a/client/src/utils/ProgramUtils.ts +++ b/client/src/utils/ProgramUtils.ts @@ -3,7 +3,7 @@ import dayjs from 'dayjs'; import 'dayjs/locale/ja'; import isBetween from 'dayjs/plugin/isBetween'; import isSameOrAfter from 'dayjs/plugin/isSameOrAfter'; -import isSameOrBefore from 'dayjs/plugin/isSameOrBefore' +import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'; import { IProgram } from '@/services/Programs'; import Utils from '@/utils'; @@ -36,12 +36,12 @@ export class ProgramUtils { '演|移|他|収|・|英|韓|中|字/日|字/日英|3D|2K|4K|8K|5.1|7.1|22.2|60P|120P|d|HC|HDR|SHV|UHD|VOD|配|初'; // 正規表現を作成 - const pattern1 = new RegExp(`\\((二|字|再)\\)`, 'g'); // 通常の括弧で囲まれている記号 + const pattern1 = new RegExp('\\((二|字|再)\\)', 'g'); // 通常の括弧で囲まれている記号 const pattern2 = new RegExp(`\\[(${mark})\\]`, 'g'); // 正規表現で置換した結果を返す return text.replace(pattern1, '$1') - .replace(pattern2, '$1'); + .replace(pattern2, '$1'); // 番組情報がない時間帯 } else { diff --git a/client/src/utils/Utils.ts b/client/src/utils/Utils.ts index 64542d5a..fab46feb 100644 --- a/client/src/utils/Utils.ts +++ b/client/src/utils/Utils.ts @@ -209,7 +209,7 @@ export default class Utils { */ static mathFloor(value: number, base: number = 0): number { return Math.floor(value * (10**base)) / (10**base); - } + } /** diff --git a/client/src/views/Login.vue b/client/src/views/Login.vue index 2f58c80d..687e8762 100644 --- a/client/src/views/Login.vue +++ b/client/src/views/Login.vue @@ -58,7 +58,7 @@ export default Vue.extend({ username: '' as string, password: '' as string, password_showing: false, - } + }; }, computed: { // UserStore に this.userStore でアクセスできるようにする diff --git a/client/src/views/Register.vue b/client/src/views/Register.vue index 117a2b30..0f01e1e7 100644 --- a/client/src/views/Register.vue +++ b/client/src/views/Register.vue @@ -71,7 +71,7 @@ export default Vue.extend({ if (/^[a-zA-Z0-9!-/:-@¥[-`{-~]{4,}$/.test(value) === false) return 'パスワードは4文字以上の半角英数記号を入力してください。'; return true; }, - } + }; }, computed: { // UserStore に this.userStore でアクセスできるようにする diff --git a/client/src/views/Settings/Account.vue b/client/src/views/Settings/Account.vue index 150b2b5d..05820077 100644 --- a/client/src/views/Settings/Account.vue +++ b/client/src/views/Settings/Account.vue @@ -251,7 +251,7 @@ export default Vue.extend({ // 設定を同期するときのダイヤログ sync_settings_dialog: false, - } + }; }, computed: { // SettingsStore / UserStore に this.settingsStore / this.userStore でアクセスできるようにする @@ -283,7 +283,7 @@ export default Vue.extend({ // 一度オブジェクトに戻したものをを再度 JSON にする(文字列比較のため) const server_sync_settings = await Settings.fetchClientSettings(); if (server_sync_settings === null) { - this.$message.error(`サーバーから設定データを取得できませんでした。`); + this.$message.error('サーバーから設定データを取得できませんでした。'); return; } const server_sync_settings_json = JSON.stringify(server_sync_settings); diff --git a/client/src/views/Settings/General.vue b/client/src/views/Settings/General.vue index 9e68890f..43885dda 100644 --- a/client/src/views/Settings/General.vue +++ b/client/src/views/Settings/General.vue @@ -278,7 +278,7 @@ export default Vue.extend({ // 選択された設定データ (KonomiTV-Settings.json) が入る import_settings_file: null as File | null, - } + }; }, computed: { // SettingsStore に this.settingsStore でアクセスできるようにする diff --git a/client/src/views/Settings/Index.vue b/client/src/views/Settings/Index.vue index 110a9acd..fc45525f 100644 --- a/client/src/views/Settings/Index.vue +++ b/client/src/views/Settings/Index.vue @@ -94,7 +94,7 @@ export default Vue.extend({ // アップデートが利用可能か is_update_available: false as boolean, - } + }; }, async created() { try { diff --git a/client/src/views/Settings/Jikkyo.vue b/client/src/views/Settings/Jikkyo.vue index 9ed312f0..5cedc522 100644 --- a/client/src/views/Settings/Jikkyo.vue +++ b/client/src/views/Settings/Jikkyo.vue @@ -116,7 +116,7 @@ export default Vue.extend({ // ローディング中かどうか is_loading: true, - } + }; }, computed: { // SettingsStore / UserStore に this.settingsStore / this.userStore でアクセスできるようにする diff --git a/client/src/views/Settings/Twitter.vue b/client/src/views/Settings/Twitter.vue index 601c48de..f07df8b7 100644 --- a/client/src/views/Settings/Twitter.vue +++ b/client/src/views/Settings/Twitter.vue @@ -151,7 +151,7 @@ export default Vue.extend({ // ローディング中かどうか is_loading: true, - } + }; }, computed: { // SettingsStore / UserStore に this.settingsStore / this.userStore でアクセスできるようにする diff --git a/client/src/views/TV/Home.vue b/client/src/views/TV/Home.vue index 4cd10a78..c0eff40a 100644 --- a/client/src/views/TV/Home.vue +++ b/client/src/views/TV/Home.vue @@ -117,7 +117,7 @@ export default Vue.extend({ // ページ遷移時に setInterval(), setTimeout() の実行を止めるのに使う // setInterval(), setTimeout() の返り値を登録する interval_ids: [] as number[], - } + }; }, computed: { // ChannelsStore / SettingsStore に this.channelsStore / this.settingsStore でアクセスできるようにする @@ -183,7 +183,7 @@ export default Vue.extend({ this.settingsStore.settings.pinned_channel_ids.push(channel_id); const channel = this.channelsStore.getChannel(channel_id); - this.$message.show(`${channel.channel_name}をピン留めしました。`) + this.$message.show(`${channel.channel_name}をピン留めしました。`); }, // チャンネルをピン留めから外す @@ -198,7 +198,7 @@ export default Vue.extend({ } const channel = this.channelsStore.getChannel(channel_id); - this.$message.show(`${channel.channel_name}のピン留めを外しました。`) + this.$message.show(`${channel.channel_name}のピン留めを外しました。`); }, // チャンネルがピン留めされているか diff --git a/client/src/views/TV/Watch.vue b/client/src/views/TV/Watch.vue index adf08198..362f6a90 100644 --- a/client/src/views/TV/Watch.vue +++ b/client/src/views/TV/Watch.vue @@ -415,7 +415,7 @@ export default Vue.extend({ }, ] } - } + }; }, computed: { // ChannelsStore / SettingsStore に this.channelsStore / this.settingsStore でアクセスできるようにする @@ -439,7 +439,7 @@ export default Vue.extend({ } else { this.is_virtual_keyboard_display = true; } - } + }; } // 再生セッションを初期化 @@ -776,7 +776,7 @@ export default Vue.extend({ this.player.controller.hide(); this.player.setting.hide(); } - } + }; // タッチデバイスでプレイヤー画面がクリックされたとき if (is_touch_device === true && is_player_event === true) { @@ -1116,7 +1116,7 @@ export default Vue.extend({ - `) + `); // 設定パネルの高さを再設定 const settingOriginPanelHeight = this.player.template.settingOriginPanel.scrollHeight; @@ -1136,7 +1136,7 @@ export default Vue.extend({ const fullscreen_container = document.querySelector('.v-application')!; this.fullscreen_handler = () => { this.is_fullscreen = this.player?.fullScreen.isFullScreen() === true; - } + }; if (fullscreen_container.onfullscreenchange !== undefined) { fullscreen_container.addEventListener('fullscreenchange', this.fullscreen_handler); } else { @@ -1148,7 +1148,7 @@ export default Vue.extend({ // フルスクリーンかどうか this.player.fullScreen.isFullScreen = (type?: DPlayerType.FullscreenType) => { return !!(document.fullscreenElement || document.webkitFullscreenElement); - } + }; // フルスクリーンをリクエスト this.player.fullScreen.request = (type?: DPlayerType.FullscreenType) => { if (this.player === null) return; @@ -1174,7 +1174,7 @@ export default Vue.extend({ if (screen.orientation) { screen.orientation.lock('landscape').catch(() => {}); } - } + }; // フルスクリーンをキャンセル this.player.fullScreen.cancel = (type?: DPlayerType.FullscreenType) => { @@ -1189,7 +1189,7 @@ export default Vue.extend({ if (screen.orientation) { screen.orientation.unlock(); } - } + }; // ***** 再生/停止/画質切り替え時のイベントハンドラー ***** @@ -1202,7 +1202,7 @@ export default Vue.extend({ // コントロールを表示する this.controlDisplayTimer(); - } + }; this.player.on('play', on_play_or_pause); this.player.on('pause', on_play_or_pause); @@ -1336,7 +1336,7 @@ export default Vue.extend({ buffered_end = this.player.video.buffered.end(0); } return (Math.round((buffered_end - this.player.video.currentTime) * 1000) / 1000); - } + }; // 低遅延モードであれば低遅延向けの再生バッファを、そうでなければ通常の再生バッファをセット (秒単位) const playback_buffer_sec = this.settingsStore.settings.tv_low_latency_mode ? @@ -1385,7 +1385,7 @@ export default Vue.extend({ await Utils.sleep(0.02); } this.player.video.volume = current_volume; - } + }; this.player.video.oncanplay = on_canplay; this.player.video.oncanplaythrough = on_canplay; @@ -1516,10 +1516,10 @@ export default Vue.extend({ this.player.video.onerror = () => { this.player!.notice(event.detail, -1); this.player!.video.onerror = null; - } + }; // 描画されたコメントをクリア - this.player?.danmaku?.clear() + this.player?.danmaku?.clear(); // 動画を停止する this.player.video.pause(); diff --git a/client/tsconfig.json b/client/tsconfig.json index a8caed29..5431a9b7 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -14,7 +14,7 @@ "incremental": true, // 差分ビルドを有効に "removeComments": false, // コメントを残す "forceConsistentCasingInFileNames": true, // ファイル名の大文字小文字に一貫性がないときにエラーにする - "noImplicitThis": true, // Vetur で this の補完を有効にする + "noImplicitThis": true, // Volar で this の補完を有効にする // ↓↓↓ がんばらない TypeScript "noImplicitAny": false, "strictNullChecks": false, diff --git a/client/vue.config.js b/client/vue.config.js index cee407ef..78ecf3fe 100644 --- a/client/vue.config.js +++ b/client/vue.config.js @@ -1,5 +1,5 @@ -process.env.VUE_APP_VERSION = process.env.npm_package_version +process.env.VUE_APP_VERSION = process.env.npm_package_version; module.exports = { // 開発用サーバー devServer: {