Skip to content

Commit 9857d7c

Browse files
Add theme switch animation. (#238)
* Add theme switch animation. * Format (#239) Co-authored-by: ota-meshi <[email protected]> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ota-meshi <[email protected]>
1 parent ee1e8da commit 9857d7c

File tree

9 files changed

+70
-43
lines changed

9 files changed

+70
-43
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<script setup>
2+
import { useData } from "vitepress";
3+
import DefaultTheme from "vitepress/theme";
4+
import { nextTick, provide } from "vue";
5+
6+
const { isDark } = useData();
7+
8+
const enableTransitions = () =>
9+
"startViewTransition" in document &&
10+
window.matchMedia("(prefers-reduced-motion: no-preference)").matches;
11+
12+
provide("toggle-appearance", async () => {
13+
if (!enableTransitions()) {
14+
isDark.value = !isDark.value;
15+
return;
16+
}
17+
18+
const clipPath = [
19+
`polygon(0 0, 100vw 0, 100vw 100vh, 100vw 100vh, 100vw 66vh, 100vw 66vh, 100vw 33vh, 100vw 33vh, 100vw 0)`,
20+
`polygon(0 0, 100vw 0, 100vw 100vh, 80vw 100vh, 80vw 66vh, 100vw 66vh, 100vw 33vh, 100vw 33vh, 100vw 0)`,
21+
`polygon(0 0, 100vw 0, 100vw 100vh, 60vw 100vh, 60vw 66vh, 100vw 66vh, 100vw 33vh, 100vw 33vh, 100vw 0)`,
22+
`polygon(0 0, 100vw 0, 100vw 100vh, 40vw 100vh, 40vw 66vh, 80vw 66vh, 80vw 33vh, 100vw 33vh, 100vw 0)`,
23+
`polygon(0 0, 100vw 0, 100vw 100vh, 20vw 100vh, 20vw 66vh, 60vw 66vh, 60vw 33vh, 100vw 33vh, 100vw 0)`,
24+
`polygon(0 0, 100vw 0, 100vw 100vh, 0 100vh, 0 66vh, 40vw 66vh, 40vw 33vh, 80vw 33vh, 80vw 0)`,
25+
`polygon(0 0, 100vw 0, 100vw 100vh, 0 100vh, 0 66vh, 20vw 66vh, 20vw 33vh, 60vw 33vh, 60vw 0)`,
26+
`polygon(0 0, 100vw 0, 100vw 100vh, 0 100vh, 0 66vh, 0 66vh, 0 33vh, 40vw 33vh, 40vw 0)`,
27+
`polygon(0 0, 100vw 0, 100vw 100vh, 0 100vh, 0 66vh, 0 66vh, 0 33vh, 20vw 33vh, 20vw 0)`,
28+
`polygon(0 0, 100vw 0, 100vw 100vh, 0 100vh, 0 66vh, 0 66vh, 0 33vh, 0 33vh, 0 0)`,
29+
];
30+
31+
await document.startViewTransition(async () => {
32+
isDark.value = !isDark.value;
33+
await nextTick();
34+
}).ready;
35+
36+
document.documentElement.animate(
37+
{ clipPath: isDark.value ? clipPath.reverse() : clipPath },
38+
{
39+
duration: 300,
40+
easing: "ease-in",
41+
pseudoElement: `::view-transition-${isDark.value ? "old" : "new"}(root)`,
42+
},
43+
);
44+
});
45+
</script>
46+
47+
<template>
48+
<DefaultTheme.Layout />
49+
</template>
50+
51+
<style>
52+
::view-transition-old(root),
53+
::view-transition-new(root) {
54+
animation: none;
55+
mix-blend-mode: normal;
56+
}
57+
58+
::view-transition-old(root),
59+
.dark::view-transition-new(root) {
60+
z-index: 1;
61+
}
62+
63+
::view-transition-new(root),
64+
.dark::view-transition-old(root) {
65+
z-index: 9999;
66+
}
67+
</style>

.vitepress/theme/index.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import "./style.css";
33
import PageInfo from "./components/PageInfo.vue";
44
import PageTitle from "./components/PageTitle.vue";
55
import FutureStar from "./components/FutureStar.vue";
6+
import CustomLayout from "./components/CustomLayout.vue";
67

78
/**
89
* @typedef {import('vitepress').EnhanceAppContext} EnhanceAppContext
910
*/
1011
export default {
11-
...DefaultTheme,
12+
extends: DefaultTheme,
13+
Layout: CustomLayout,
1214
/**
1315
* @param {EnhanceAppContext} ctx context
1416
* @returns {void}

documents/forJava/Javaコーディング規約.md

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,6 @@ head:
478478
ソースのファイルヘッダにコピーライト標記は法的拘束力がないため、不要とする。
479479
ただし、顧客からの要求があった場合を除く。
480480
- Javadoc コメントには、少なくとも author と version(クラス)、param と return と exception(メソッド)を記述する
481-
482481
- 今後もバージョンアップのリリースが予定されているソースでは、上記に加えて since(バージョン)を記述する
483482
- `@Override`のあるメソッドでは、上記に加えて`{@Inherit}`を記述する
484483

@@ -667,7 +666,6 @@ head:
667666
return mi * 1609.344;
668667
}
669668
```
670-
671669
- リテラル定数の名前はその値の意味を正しく表現したものにする
672670

673671
悪い例:
@@ -709,7 +707,6 @@ head:
709707
- 定数( `static` フィールド)に、 `static` ではないメソッドから書き込まない
710708

711709
- 定数は、プリミティブ型もしくは、不変(Immutable)オブジェクトで参照する
712-
713710
- 不変`List`の生成には`List.of()`を利用する
714711

715712
良い例:
@@ -913,7 +910,6 @@ head:
913910
## メンバー順序
914911

915912
- 以下の順で記述する
916-
917913
1. static フィールド
918914
2. static イニシャライザー
919915
3. static メソッド
@@ -923,7 +919,6 @@ head:
923919
7. メソッド
924920

925921
- 同一カテゴリー内では以下の可視性の順で記述する
926-
927922
1. public
928923
2. protected
929924
3. パッケージ private
@@ -1560,7 +1555,6 @@ head:
15601555
Java8 で追加されたメソッド。
15611556
拡張 for 文を利用したほうが多くの場合でデバッグに有利であり、可読性においても`forEach`の優位性は少ないため、`forEach`は原則利用しない。拡張 for 文を利用する。
15621557
具体的には下記のメソッドを利用しないこと。
1563-
15641558
- `Collection#forEach`
15651559
- `Set#forEach`
15661560
- `List#forEach`
@@ -1603,7 +1597,6 @@ head:
16031597
- `Arrays.asList()`は利用せず、`List.of()`を利用する
16041598
Java9 で追加されたメソッド。
16051599
配列を`List`に置き換える場合や、単純な固定の`List`を生成する際には`List.of()`を利用する。
1606-
16071600
- `Arrays.asList()`と`List.of()`の違い
16081601
`List.of()`で生成した`List`は、完全に不変(Immutable)な`List`で、
16091602
`Arrays.asList()`で生成した`List`は、サイズのみ不変で、`set`等による値の操作が可能な`List`です。
@@ -1849,13 +1842,11 @@ head:
18491842
- 明確な方針で、利用する・利用しないを統一すること
18501843
方針無く、`var`を混在させるとソースコードの見通しと保守性が悪くなります。
18511844
各プロジェクトで、例えば以下ののような方針で統一してください。
1852-
18531845
1. `var`を利用しない
18541846
2. 原則`var`を利用する
18551847
3. 右辺で、明確に型がわかる場合は`var`を利用する
18561848

18571849
以下で`2`、`3`について例を示します。
1858-
18591850
- 原則`var`を利用する
18601851

18611852
利用できる箇所は全て`var`を利用します。
@@ -1962,12 +1953,10 @@ head:
19621953
```
19631954

19641955
次にポイントを説明します。
1965-
19661956
- `{`の後、`}`の前に改行する
19671957
- レコードコンポーネント(パラメータ)のカンマの後に改行することを推奨する
19681958
レコードコンポーネントが少なく、レコードコンポーネント名からでも意味が理解でき、改行がなくても可読性が低下しない場合は、改行を必要としません。
19691959
改行を推奨する理由は以下です。
1970-
19711960
- アノテーションを付与したときでも比較的読みやすい(アノテーション引数との混在による可読性の低下の回避)
19721961
- レコードコンポーネントが多い場合も比較的読みやすい
19731962

@@ -2355,7 +2344,6 @@ head:
23552344
```
23562345
23572346
なお、メソッドコメントには、適切な javadoc コメント(タグ)のほかに、以下の内容も可能な限り明記すること。
2358-
23592347
- 副作用のある処理の場合は、その内容 (→ メソッドの引数オブジェクトがメソッド内で変更されるケースなど)
23602348
- 既知のバグ (→ 判明しているが修正しないことにした場合など)
23612349
- 影響のある事前条件、事後条件 (→ メソッドが正しく動作するための前提について)

documents/forJava/Javaコーディング規約_for_11.md

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,6 @@ head:
478478
ソースのファイルヘッダにコピーライト標記は法的拘束力がないため、不要とする。
479479
ただし、顧客からの要求があった場合を除く。
480480
- Javadoc コメントには、少なくとも author と version(クラス)、param と return と exception(メソッド)を記述する
481-
482481
- 今後もバージョンアップのリリースが予定されているソースでは、上記に加えて since(バージョン)を記述する
483482
- `@Override`のあるメソッドでは、上記に加えて`{@Inherit}`を記述する
484483

@@ -667,7 +666,6 @@ head:
667666
return mi * 1609.344;
668667
}
669668
```
670-
671669
- リテラル定数の名前はその値の意味を正しく表現したものにする
672670

673671
悪い例:
@@ -709,7 +707,6 @@ head:
709707
- 定数( `static` フィールド)に、 `static` ではないメソッドから書き込まない
710708

711709
- 定数は、プリミティブ型もしくは、不変(Immutable)オブジェクトで参照する
712-
713710
- 不変`List`の生成には`List.of()`を利用する
714711

715712
良い例:
@@ -913,7 +910,6 @@ head:
913910
## メンバー順序
914911

915912
- 以下の順で記述する
916-
917913
1. static フィールド
918914
2. static イニシャライザー
919915
3. static メソッド
@@ -923,7 +919,6 @@ head:
923919
7. メソッド
924920

925921
- 同一カテゴリー内では以下の可視性の順で記述する
926-
927922
1. public
928923
2. protected
929924
3. パッケージ private
@@ -1324,7 +1319,6 @@ head:
13241319
Java8 で追加されたメソッド。
13251320
拡張 for 文を利用したほうが多くの場合でデバッグに有利であり、可読性においても`forEach`の優位性は少ないため、`forEach`は原則利用しない。拡張 for 文を利用する。
13261321
具体的には下記のメソッドを利用しないこと。
1327-
13281322
- `Collection#forEach`
13291323
- `Set#forEach`
13301324
- `List#forEach`
@@ -1367,7 +1361,6 @@ head:
13671361
- `Arrays.asList()`は利用せず、`List.of()`を利用する
13681362
Java9 で追加されたメソッド。
13691363
配列を`List`に置き換える場合や、単純な固定の`List`を生成する際には`List.of()`を利用する。
1370-
13711364
- `Arrays.asList()`と`List.of()`の違い
13721365
`List.of()`で生成した`List`は、完全に不変(Immutable)な`List`で、
13731366
`Arrays.asList()`で生成した`List`は、サイズのみ不変で、`set`等による値の操作が可能な`List`です。
@@ -1613,13 +1606,11 @@ head:
16131606
- 明確な方針で、利用する・利用しないを統一すること
16141607
方針無く、`var`を混在させるとソースコードの見通しと保守性が悪くなります。
16151608
各プロジェクトで、例えば以下ののような方針で統一してください。
1616-
16171609
1. `var`を利用しない
16181610
2. 原則`var`を利用する
16191611
3. 右辺で、明確に型がわかる場合は`var`を利用する
16201612

16211613
以下で`2`、`3`について例を示します。
1622-
16231614
- 原則`var`を利用する
16241615

16251616
利用できる箇所は全て`var`を利用します。
@@ -1768,7 +1759,6 @@ head:
17681759
```
17691760

17701761
なお、メソッドコメントには、適切な javadoc コメント(タグ)のほかに、以下の内容も可能な限り明記すること。
1771-
17721762
- 副作用のある処理の場合は、その内容 (→ メソッドの引数オブジェクトがメソッド内で変更されるケースなど)
17731763
- 既知のバグ (→ 判明しているが修正しないことにした場合など)
17741764
- 影響のある事前条件、事後条件 (→ メソッドが正しく動作するための前提について)

documents/forJava/Javaコーディング規約_for_8.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,6 @@ head:
478478
ソースのファイルヘッダにコピーライト標記は法的拘束力がないため、不要とする。
479479
ただし、顧客からの要求があった場合を除く。
480480
- Javadoc コメントには、少なくとも author と version(クラス)、param と return と exception(メソッド)を記述する
481-
482481
- 今後もバージョンアップのリリースが予定されているソースでは、上記に加えて since(バージョン)を記述する
483482
- `@Override`のあるメソッドでは、上記に加えて`{@Inherit}`を記述する
484483

@@ -667,7 +666,6 @@ head:
667666
return mi * 1609.344;
668667
}
669668
```
670-
671669
- リテラル定数の名前はその値の意味を正しく表現したものにする
672670

673671
悪い例:
@@ -709,7 +707,6 @@ head:
709707
- 定数( `static` フィールド)に、 `static` ではないメソッドから書き込まない
710708

711709
- 定数は、プリミティブ型もしくは、不変(Immutable)オブジェクトで参照する
712-
713710
- 不変`List`の生成には`Collections`クラスの`unmodifiableList()`メソッドを利用する
714711

715712
良い例:
@@ -919,7 +916,6 @@ head:
919916
## メンバー順序
920917

921918
- 以下の順で記述する
922-
923919
1. static フィールド
924920
2. static イニシャライザー
925921
3. static メソッド
@@ -929,7 +925,6 @@ head:
929925
7. メソッド
930926

931927
- 同一カテゴリー内では以下の可視性の順で記述する
932-
933928
1. public
934929
2. protected
935930
3. パッケージ private
@@ -1312,7 +1307,6 @@ head:
13121307
Java8 で追加されたメソッド。
13131308
拡張 for 文を利用したほうが多くの場合でデバッグに有利であり、可読性においても`forEach`の優位性は少ないため、`forEach`は原則利用しない。拡張 for 文を利用する。
13141309
具体的には下記のメソッドを利用しないこと。
1315-
13161310
- `Collection#forEach`
13171311
- `Set#forEach`
13181312
- `List#forEach`
@@ -1674,7 +1668,6 @@ head:
16741668
```
16751669

16761670
なお、メソッドコメントには、適切な javadoc コメント(タグ)のほかに、以下の内容も可能な限り明記すること。
1677-
16781671
- 副作用のある処理の場合は、その内容 (→ メソッドの引数オブジェクトがメソッド内で変更されるケースなど)
16791672
- 既知のバグ (→ 判明しているが修正しないことにした場合など)
16801673
- 影響のある事前条件、事後条件 (→ メソッドが正しく動作するための前提について)

documents/forOpenAPISpecification/OpenAPI_Specification_2.0.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ description: "何かしらの説明"
108108
- account_type
109109
- register_at
110110
```
111-
112111
- YAML は項目定義がネストすることで縦長な定義になりやすい。情報密度を上げるために配列リテラルを推奨する
113112

114113
## 改行の表現
@@ -499,7 +498,6 @@ URL に紐づく HTTP メソッドで、1 つの操作を定義します。
499498
- `pattern`, `minLength`, `maxLength` などの条件について
500499
- [https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#fixed-fields-7](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#fixed-fields-7) を参考に、指定できる条件はなるべく細かく指定する
501500
- `schema`
502-
503501
- リクエストボディは、`$ref` を用いて、`#/definitions` 配下に記載する。**$ref を用いない記載は許可しない。**
504502

505503
```yaml
@@ -524,7 +522,6 @@ URL に紐づく HTTP メソッドで、1 つの操作を定義します。
524522
type: string
525523
...
526524
```
527-
528525
- モデル名は、 `{HTTPメソッド名}{物理名}` の PascalCase で記載する
529526
- : PutUserAccount、PostUserAccount, PatchUserAccount
530527

@@ -638,7 +635,6 @@ URL に紐づく HTTP メソッドで、1 つの操作を定義します。
638635
- モデル名は、PascalCase で記載する
639636
- 種別が配列の場合、ネストして定義するのではなく、 `$ref` を活用する
640637
- もし、リソース名が単複同形で `type: array` と区別できない場合、 `List` を末尾に付けて区別する
641-
642638
- そうではない場合は `s` を付けて表現する
643639

644640
```yml

documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ description: "何かしらの説明"
109109
- account_type
110110
- register_at
111111
```
112-
113112
- YAML は項目定義がネストすることで縦長な定義になりやすい。情報密度を上げるために配列リテラルを推奨する
114113

115114
## 改行の表現
@@ -203,7 +202,6 @@ Web API が提供する機能の概要・想定する利用者やユースケー
203202
アプリケーションのバージョン(git tag やリリースで管理するようなバージョン)とは別である。
204203

205204
- `major.minor` 形式を推奨する
206-
207205
- `0.1` 固定で開発を進め、サービスのリリース時に `1.0` とし、その後の項目やオプション、パスの追加ごとにマイナーバージョンをインクリメントしていく
208206

209207
良い例:
@@ -428,7 +426,6 @@ paths:
428426
API を識別するための一意な文字列を記載する。
429427

430428
- HTTP メソッドと URL パスの組み合わせをキャメルケースで表現する
431-
432429
- キャメルケースの書式は、[OpenAPI 3.0ガイドのPaths and Operations](https://swagger.io/docs/specification/paths-and-operations/#:~:text=role%3Dvalue-,operationId,-operationId%20is%20an)でも利用されているため、一般的である
433430

434431
良い例:
@@ -572,7 +569,6 @@ API のリクエストボディを記載する。
572569
```
573570

574571
- リクエストボディそのものは通常複数の API を跨いで再利用されるものではないため、原則 `components` オブジェクトとして共通化(コンポーネント化)を行わない
575-
576572
- [openapi-generator](https://github.com/OpenAPITools/openapi-generator)を使用する場合は、コンポーネント化をせず、`title` を指定することで名称の指定が可能となる
577573
- [oapi-codegen](https://github.com/oapi-codegen/oapi-codegen)を使用する場合は、名称を指定するためにコンポーネント化が必要となるが、極力コンポーネント化せずデフォルトの名称を使用することを推奨する
578574

@@ -613,7 +609,6 @@ API のリクエストボディを記載する。
613609
API のレスポンスを記載する。
614610

615611
- 正常系(`2xx`)のレスポンスは通常複数の API を跨いで再利用されるものではないため、原則 `components` オブジェクトとして共通化(コンポーネント化)を行わない
616-
617612
- [openapi-generator](https://github.com/OpenAPITools/openapi-generator)を使用する場合は、コンポーネント化をせず、`title` を指定することで名称の指定が可能となる
618613
- [oapi-codegen](https://github.com/oapi-codegen/oapi-codegen)を使用する場合は、レスポンスの構造体を出力するために `strict-server` オプションを `true` に指定する必要がある。名称を指定するためにコンポーネント化が必要となるが、極力コンポーネント化せずデフォルトの名称を使用することを推奨する
619614

documents/forSQL/SQLコーディング規約(Oracle).md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,6 @@ WHERE
447447

448448
- 条件式の順序
449449
原則として、WHERE 句で条件式を列挙する際、下記の順序を守ること。
450-
451450
1. テーブル単位にまとめて順番に記述する
452451
この際、テーブルの順序は FROM 句に記述した順序に準ずること。
453452
2. 1.のテーブル単位の中で絞り込み条件をまず記述し、その後結合条件を記述する。
@@ -499,7 +498,6 @@ WHERE
499498
- 可能な限り検索条件にパーティションキーの値を指定する
500499
- 全列ワイルドカード「`*`」の使用はせず、カラム名を明記する
501500
- インデックスによる検索を指定したい場合、下記の記載を行わない
502-
503501
- インデックスカラムを含む演算に対して条件指定
504502

505503
悪い例:

0 commit comments

Comments
 (0)