required-doc 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -19
- package/dist/index.js +300 -281
- package/package.json +1 -1
- package/types.d.ts +8 -1
package/README.md
CHANGED
|
@@ -99,6 +99,16 @@ createSpecViewer({
|
|
|
99
99
|
components: [Input, Button],
|
|
100
100
|
pages: [loginPage],
|
|
101
101
|
colors,
|
|
102
|
+
options: {
|
|
103
|
+
devices: [
|
|
104
|
+
{ id: 'pc', label: 'PC', frame: 'pc', minWidth: 1024, maxWidth: 1920 },
|
|
105
|
+
{ id: 'phone', label: 'Phone', frame: 'phone', minWidth: 320, maxWidth: 1023 },
|
|
106
|
+
],
|
|
107
|
+
baseColors: {
|
|
108
|
+
light: { bg: '#f5f6f8', font: '#1f2937' },
|
|
109
|
+
dark: { bg: '#131313', font: '#f3f3f3' },
|
|
110
|
+
},
|
|
111
|
+
},
|
|
102
112
|
}).mount('#app')
|
|
103
113
|
```
|
|
104
114
|
|
|
@@ -159,8 +169,30 @@ const meta: ItemMeta = {
|
|
|
159
169
|
export default meta
|
|
160
170
|
```
|
|
161
171
|
|
|
162
|
-
- `view`:
|
|
163
|
-
- `
|
|
172
|
+
- `view`: 単一 mock のとき。**HTML 文字列(`?raw`)** または Vue コンポーネント。
|
|
173
|
+
- `variants`: 状態別 mock(例: 0件 / 10件)。**2 件以上**で mock 内にタブが出る。`variants` を使う場合 `view` は省略可。
|
|
174
|
+
- `req`: 要件 Markdown(状態共通)。
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
const meta: ItemMeta = {
|
|
178
|
+
name: 'CollageListPage',
|
|
179
|
+
kind: 'page',
|
|
180
|
+
title: 'コラージュ一覧',
|
|
181
|
+
desc: '…',
|
|
182
|
+
latest: 'v1',
|
|
183
|
+
versions: {
|
|
184
|
+
v1: {
|
|
185
|
+
req: CollageListReq,
|
|
186
|
+
variants: [
|
|
187
|
+
{ id: 'empty', label: '0件', view: CollageListEmptyMock },
|
|
188
|
+
{ id: 'full', label: '10件', view: CollageListFullMock },
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
単一 mock の従来形(`view` のみ)もそのまま使える。
|
|
164
196
|
|
|
165
197
|
作ったら `main.ts` の `components` / `pages` 配列に 1 行足す。
|
|
166
198
|
|
|
@@ -207,19 +239,19 @@ export const colors: ColorToken[] = [
|
|
|
207
239
|
|
|
208
240
|
## オプション(`createSpecViewer({ ..., options })`)
|
|
209
241
|
|
|
210
|
-
|
|
242
|
+
`showThemeToggle` 以外は**省略時デフォルトなし**。`devices` と `baseColors` は利用側で必ず指定する。
|
|
211
243
|
|
|
212
244
|
```ts
|
|
213
245
|
createSpecViewer({
|
|
214
246
|
components, pages, colors,
|
|
215
247
|
options: {
|
|
216
|
-
showThemeToggle: true, //
|
|
217
|
-
devices: [ // mock
|
|
218
|
-
{ id: 'pc', label: 'PC', frame: 'pc',
|
|
219
|
-
{ id: 'tablet', label: 'Tablet', frame: 'tablet',
|
|
220
|
-
{ id: 'phone', label: 'Phone', frame: 'phone',
|
|
248
|
+
showThemeToggle: true, // ダーク/ライト切替ボタン(省略時 true)
|
|
249
|
+
devices: [ // mock の端末タブ(必須)
|
|
250
|
+
{ id: 'pc', label: 'PC', frame: 'pc', minWidth: 1024, maxWidth: 1920 },
|
|
251
|
+
{ id: 'tablet', label: 'Tablet', frame: 'tablet', minWidth: 768, maxWidth: 1024 },
|
|
252
|
+
{ id: 'phone', label: 'Phone', frame: 'phone', minWidth: 320, maxWidth: 1023 },
|
|
221
253
|
],
|
|
222
|
-
baseColors: { //
|
|
254
|
+
baseColors: { // モック画面の基本色(必須)
|
|
223
255
|
light: { bg: '#f5f6f8', font: '#1f2937' },
|
|
224
256
|
dark: { bg: '#131313', font: '#f3f3f3' },
|
|
225
257
|
},
|
|
@@ -233,29 +265,36 @@ createSpecViewer({
|
|
|
233
265
|
|
|
234
266
|
### devices
|
|
235
267
|
|
|
236
|
-
mock
|
|
268
|
+
mock 上部のタブに出る端末リスト。**タブごとに min〜max の範囲が独立**している(Phone の max を超えて PC 幅にはならない)。
|
|
237
269
|
|
|
238
270
|
| フィールド | 説明 |
|
|
239
271
|
| --- | --- |
|
|
240
272
|
| `id` | タブ識別子(例 `'pc'`) |
|
|
241
273
|
| `label` | タブ表示名(例 `'PC'`) |
|
|
242
274
|
| `frame` | 枠の見た目。`'pc'`=ブラウザ風 / `'phone'`=ノッチ付き / `'tablet'`=ノッチなしベゼル |
|
|
243
|
-
| `
|
|
275
|
+
| `minWidth` | mock の **viewport 最小幅**(px)。端末枠・ノッチは含まない |
|
|
276
|
+
| `maxWidth` | mock の **viewport 最大幅**(px)。端末枠・ノッチは含まない |
|
|
244
277
|
|
|
245
278
|
- 配列を 1 件だけ(例: PC のみ)にすると端末タブ自体が消える。
|
|
246
|
-
- `
|
|
279
|
+
- `minWidth === maxWidth` の端末は幅固定(リサイズハンドル非表示)。
|
|
280
|
+
- 表示幅は **mock が描画される viewport 幅**。Phone の黒ベゼル・ノッチはその外側の装飾として重ねる(mock の左右 padding は付けない)。
|
|
281
|
+
- 詳細画面: 右端ドラッグで **選択中タブの min〜max** の範囲内に変更。ペースに収まらなければ**端末枠込みで縮尺**(最大 1x)。
|
|
282
|
+
- タブ切替時は現在幅を引き継ぎ、新タブの min〜max に clamp する。
|
|
247
283
|
|
|
248
284
|
### baseColors
|
|
249
285
|
|
|
250
|
-
モック画面(PC/Tablet/Phone
|
|
286
|
+
モック画面(PC/Tablet/Phone の画面・プレビュー)の**背景色と基本文字色**を、ライト/ダークごとに指定する。
|
|
251
287
|
ここで指定した値は `/colors` の一覧に `baseBg` / `baseFont` として自動表示される(情報源が二重化しない)。
|
|
252
288
|
|
|
253
289
|
---
|
|
254
290
|
|
|
255
291
|
## プレビューモード
|
|
256
292
|
|
|
257
|
-
-
|
|
258
|
-
-
|
|
293
|
+
- ヘッダの「プレビュー」ボタンで、**要件パネルを隠して全画面表示**する。
|
|
294
|
+
- **詳細画面と同じ端末枠・同じ viewport 幅**で mock を **1:1** 表示する(縮尺なし。はみ出す場合はスクロール)。
|
|
295
|
+
- mock の viewport がブラウザより**狭い**ときだけ、外側に境界線(グレー背景 + ボーダー)を出す。**同幅なら枠なし**。
|
|
296
|
+
- 右端ドラッグで幅変更可能(詳細と同じく、**プレビュー前に選んだ端末タブの min〜max 内**)。
|
|
297
|
+
- 端末タブはプレビュー中は出ない(詳細で選んだ端末を引き継ぐ)。
|
|
259
298
|
- 退室は **`Esc`** または右上の「閉じる」ボタン。
|
|
260
299
|
|
|
261
300
|
---
|
|
@@ -264,7 +303,7 @@ mock 上部のタブに出る端末リスト。
|
|
|
264
303
|
|
|
265
304
|
- `createSpecViewer(config)` が `config` を `registryStore` に注入し、ルータ付き Vue アプリを返す。
|
|
266
305
|
- ルート: `/catalog`, `/components/:name/:ver?`, `/pages/:name/:ver?`, `/colors`。
|
|
267
|
-
- `ReqScreen.vue` が額縁(ヘッダ /
|
|
306
|
+
- `ReqScreen.vue` が額縁(ヘッダ / 左 mock / 右要件)と端末枠・縮尺・プレビューを担当。端末枠は `MockDeviceFrame.vue`。
|
|
268
307
|
- Tailwind ユーティリティはパッケージに同梱せず、**利用側の `@source` 経由で生成**(`dist/index.js` 内のクラス文字列を走査)。パッケージ同梱の `style.css` は req-md 等の独自スタイルのみ。
|
|
269
308
|
|
|
270
309
|
### 公開 API / 型
|
|
@@ -290,9 +329,8 @@ import {
|
|
|
290
329
|
| --- | --- |
|
|
291
330
|
| 部品/画面を追加 | `meta.ts` + `v1/*.html` + `v1/*.req.md` を作り、`main.ts` の配列に追加 |
|
|
292
331
|
| バージョンを増やす | `v2/` を足して `meta.ts` の `versions` と `latest` を更新 |
|
|
293
|
-
| 端末を変える | `options.devices`
|
|
294
|
-
| 端末の幅を変える |
|
|
332
|
+
| 端末を変える | 詳細画面の mock 上部タブ、または `options.devices` を編集 |
|
|
333
|
+
| 端末の幅を変える | 詳細 / プレビューで右端ドラッグ(選択中タブの `minWidth`〜`maxWidth` 内) |
|
|
295
334
|
| ダーク切替を隠す | `options.showThemeToggle: false` |
|
|
296
335
|
| モックの基本色を変える | `options.baseColors`(`/colors` にも反映) |
|
|
297
336
|
| ビューア本体を直した | `cd npm_pack && npm run build` で再ビルド |
|
|
298
|
-
```
|
package/dist/index.js
CHANGED
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
import { Fragment as e, computed as t, createApp as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, nextTick as u, normalizeClass as d, normalizeStyle as f, onBeforeUnmount as p, onMounted as
|
|
2
|
-
import { RouterLink as
|
|
1
|
+
import { Fragment as e, computed as t, createApp as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, nextTick as u, normalizeClass as d, normalizeStyle as f, onBeforeUnmount as p, onMounted as m, openBlock as h, ref as g, renderList as _, renderSlot as v, resolveDynamicComponent as ee, toDisplayString as y, unref as b, watch as te, withCtx as x } from "vue";
|
|
2
|
+
import { RouterLink as S, RouterView as ne, createRouter as C, createWebHistory as re, useRouter as w } from "vue-router";
|
|
3
3
|
//#endregion
|
|
4
4
|
//#region src/App.vue
|
|
5
|
-
var
|
|
5
|
+
var T = /* @__PURE__ */ l({
|
|
6
6
|
__name: "App",
|
|
7
7
|
setup(e) {
|
|
8
|
-
return (e, t) => (
|
|
8
|
+
return (e, t) => (h(), r(b(ne)));
|
|
9
9
|
}
|
|
10
|
-
}),
|
|
11
|
-
function
|
|
12
|
-
|
|
10
|
+
}), E = [], D = [], O = [], k = !0, A = [], j;
|
|
11
|
+
function ie(e) {
|
|
12
|
+
E = e.components, D = e.pages, O = e.colors, k = e.options?.showThemeToggle ?? !0, A = e.options?.devices ?? [], j = e.options?.baseColors;
|
|
13
13
|
}
|
|
14
|
-
function
|
|
15
|
-
return D;
|
|
16
|
-
}
|
|
17
|
-
function ce() {
|
|
18
|
-
return O;
|
|
19
|
-
}
|
|
20
|
-
function le() {
|
|
14
|
+
function ae() {
|
|
21
15
|
return k;
|
|
22
16
|
}
|
|
23
|
-
function
|
|
24
|
-
return
|
|
17
|
+
function oe() {
|
|
18
|
+
return A;
|
|
25
19
|
}
|
|
26
|
-
function
|
|
27
|
-
return
|
|
20
|
+
function se() {
|
|
21
|
+
return j;
|
|
28
22
|
}
|
|
29
|
-
function
|
|
23
|
+
function M() {
|
|
30
24
|
return E;
|
|
31
25
|
}
|
|
32
|
-
function
|
|
33
|
-
return
|
|
26
|
+
function N() {
|
|
27
|
+
return D;
|
|
28
|
+
}
|
|
29
|
+
function ce() {
|
|
30
|
+
return O;
|
|
31
|
+
}
|
|
32
|
+
function le(e, t) {
|
|
33
|
+
return [...E, ...D].find((n) => n.kind === e && n.name === t);
|
|
34
34
|
}
|
|
35
35
|
//#endregion
|
|
36
36
|
//#region src/lib/theme.ts
|
|
37
|
-
var
|
|
38
|
-
|
|
37
|
+
var P = g(!1);
|
|
38
|
+
te(P, (e) => {
|
|
39
39
|
document.documentElement.classList.toggle("dark", e);
|
|
40
40
|
}, { immediate: !0 });
|
|
41
|
-
function
|
|
41
|
+
function ue() {
|
|
42
42
|
return {
|
|
43
|
-
isDark:
|
|
43
|
+
isDark: P,
|
|
44
44
|
toggle: () => {
|
|
45
|
-
|
|
45
|
+
P.value = !P.value;
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
//#endregion
|
|
50
50
|
//#region src/catalog/CatalogView.vue?vue&type=script&setup=true&lang.ts
|
|
51
|
-
var
|
|
51
|
+
var F = { class: "mx-auto min-h-screen max-w-3xl p-8" }, I = { class: "mb-8 flex items-center" }, L = { class: "mb-10" }, de = { class: "space-y-2" }, fe = { class: "font-bold dark:text-gray-100" }, pe = { class: "ml-1 text-xs text-gray-400" }, R = { class: "text-sm text-gray-500 dark:text-gray-400" }, me = { class: "mb-10" }, he = { class: "space-y-2" }, ge = { class: "font-bold dark:text-gray-100" }, _e = { class: "ml-1 text-xs text-gray-400" }, ve = { class: "text-sm text-gray-500 dark:text-gray-400" }, ye = { class: "mb-2 rounded-lg border border-gray-300 bg-white p-4 dark:border-gray-700 dark:bg-gray-800" }, z = { class: "space-y-2 text-sm" }, B = { class: "flex gap-3" }, be = { class: "font-bold dark:text-gray-100" }, xe = { class: "flex gap-3" }, Se = { class: "flex-1" }, Ce = { class: "space-y-1" }, we = { class: "space-y-2" }, Te = "block rounded-lg border border-gray-300 bg-white p-4 transition hover:border-blue-500 dark:border-gray-700 dark:bg-gray-800 dark:hover:border-blue-400", Ee = /* @__PURE__ */ l({
|
|
52
52
|
__name: "CatalogView",
|
|
53
53
|
setup(t) {
|
|
54
|
-
let { isDark: n, toggle: r } =
|
|
55
|
-
function
|
|
54
|
+
let { isDark: n, toggle: r } = ue(), l = ae(), u = oe(), f = M(), p = N();
|
|
55
|
+
function m(e) {
|
|
56
56
|
return e.minWidth === e.maxWidth ? `${e.maxWidth}px` : `${e.minWidth}–${e.maxWidth}px`;
|
|
57
57
|
}
|
|
58
|
-
return (t,
|
|
59
|
-
o("div",
|
|
58
|
+
return (t, g) => (h(), a("div", F, [
|
|
59
|
+
o("div", I, [g[1] ||= o("h1", { class: "text-2xl font-bold dark:text-gray-100" }, "要件書カタログ", -1), b(l) ? (h(), a("button", {
|
|
60
60
|
key: 0,
|
|
61
61
|
type: "button",
|
|
62
62
|
class: "ml-auto rounded-md border border-gray-300 px-3 py-1 text-xs font-bold text-gray-600 transition hover:bg-gray-100 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800",
|
|
63
|
-
onClick:
|
|
64
|
-
},
|
|
65
|
-
o("section",
|
|
63
|
+
onClick: g[0] ||= (...e) => b(r) && b(r)(...e)
|
|
64
|
+
}, y(b(n) ? "ライトモード" : "ダークモード"), 1)) : i("", !0)]),
|
|
65
|
+
o("section", L, [g[2] ||= o("h2", { class: "mb-3 text-lg font-bold text-gray-700 dark:text-gray-300" }, "ページ", -1), o("ul", de, [(h(!0), a(e, null, _(b(p), (e) => (h(), a("li", { key: e.name }, [c(b(S), {
|
|
66
66
|
to: `/pages/${e.name}`,
|
|
67
|
-
class: d(
|
|
67
|
+
class: d(Te)
|
|
68
68
|
}, {
|
|
69
|
-
default:
|
|
69
|
+
default: x(() => [o("div", fe, [s(y(e.title) + " ", 1), o("span", pe, "(" + y(e.latest) + ")", 1)]), o("div", R, y(e.desc), 1)]),
|
|
70
70
|
_: 2
|
|
71
71
|
}, 1032, ["to"])]))), 128))])]),
|
|
72
|
-
o("section",
|
|
72
|
+
o("section", me, [g[3] ||= o("h2", { class: "mb-3 text-lg font-bold text-gray-700 dark:text-gray-300" }, "コンポーネント", -1), o("ul", he, [(h(!0), a(e, null, _(b(f), (e) => (h(), a("li", { key: e.name }, [c(b(S), {
|
|
73
73
|
to: `/components/${e.name}`,
|
|
74
|
-
class: d(
|
|
74
|
+
class: d(Te)
|
|
75
75
|
}, {
|
|
76
|
-
default:
|
|
76
|
+
default: x(() => [o("div", ge, [s(y(e.title) + " ", 1), o("span", _e, "(" + y(e.latest) + ")", 1)]), o("div", ve, y(e.desc), 1)]),
|
|
77
77
|
_: 2
|
|
78
78
|
}, 1032, ["to"])]))), 128))])]),
|
|
79
79
|
o("section", null, [
|
|
80
|
-
|
|
81
|
-
o("div",
|
|
80
|
+
g[8] ||= o("h2", { class: "mb-3 text-lg font-bold text-gray-700 dark:text-gray-300" }, "デザイン", -1),
|
|
81
|
+
o("div", ye, [g[6] ||= o("div", { class: "mb-2 text-xs font-bold uppercase tracking-wide text-gray-400" }, "表示設定", -1), o("dl", z, [o("div", B, [g[4] ||= o("dt", { class: "w-28 shrink-0 text-gray-500 dark:text-gray-400" }, "ダークモード切替", -1), o("dd", be, y(b(l) ? "表示" : "非表示"), 1)]), o("div", xe, [g[5] ||= o("dt", { class: "w-28 shrink-0 text-gray-500 dark:text-gray-400" }, "端末", -1), o("dd", Se, [o("ul", Ce, [(h(!0), a(e, null, _(b(u), (e) => (h(), a("li", {
|
|
82
82
|
key: e.id,
|
|
83
83
|
class: "font-mono text-xs text-gray-700 dark:text-gray-200"
|
|
84
|
-
},
|
|
85
|
-
o("ul",
|
|
84
|
+
}, y(e.label) + "(" + y(e.frame) + ") / 幅: " + y(m(e)), 1))), 128))])])])])]),
|
|
85
|
+
o("ul", we, [o("li", null, [c(b(S), {
|
|
86
86
|
to: "/colors",
|
|
87
|
-
class: d(
|
|
87
|
+
class: d(Te)
|
|
88
88
|
}, {
|
|
89
|
-
default:
|
|
89
|
+
default: x(() => [...g[7] ||= [o("div", { class: "font-bold dark:text-gray-100" }, "カラー", -1), o("div", { class: "text-sm text-gray-500 dark:text-gray-400" }, "accentColor 等の色定義一覧", -1)]]),
|
|
90
90
|
_: 1
|
|
91
91
|
})])])
|
|
92
92
|
])
|
|
@@ -95,7 +95,7 @@ var M = { class: "mx-auto min-h-screen max-w-3xl p-8" }, N = { class: "mb-8 flex
|
|
|
95
95
|
});
|
|
96
96
|
//#endregion
|
|
97
97
|
//#region node_modules/marked/lib/marked.esm.js
|
|
98
|
-
function
|
|
98
|
+
function De() {
|
|
99
99
|
return {
|
|
100
100
|
async: !1,
|
|
101
101
|
breaks: !1,
|
|
@@ -109,22 +109,22 @@ function Ae() {
|
|
|
109
109
|
walkTokens: null
|
|
110
110
|
};
|
|
111
111
|
}
|
|
112
|
-
var
|
|
113
|
-
function
|
|
114
|
-
|
|
112
|
+
var V = De();
|
|
113
|
+
function Oe(e) {
|
|
114
|
+
V = e;
|
|
115
115
|
}
|
|
116
|
-
var
|
|
117
|
-
function
|
|
116
|
+
var H = { exec: () => null };
|
|
117
|
+
function U(e, t = "") {
|
|
118
118
|
let n = typeof e == "string" ? e : e.source, r = {
|
|
119
119
|
replace: (e, t) => {
|
|
120
120
|
let i = typeof t == "string" ? t : t.source;
|
|
121
|
-
return i = i.replace(
|
|
121
|
+
return i = i.replace(W.caret, "$1"), n = n.replace(e, i), r;
|
|
122
122
|
},
|
|
123
123
|
getRegex: () => new RegExp(n, t)
|
|
124
124
|
};
|
|
125
125
|
return r;
|
|
126
126
|
}
|
|
127
|
-
var
|
|
127
|
+
var W = {
|
|
128
128
|
codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm,
|
|
129
129
|
outputLinkReplace: /\\([\[\]])/g,
|
|
130
130
|
indentCodeCompensation: /^(\s+)(?:```)/,
|
|
@@ -181,78 +181,78 @@ var V = {
|
|
|
181
181
|
fencesBeginRegex: (e) => RegExp(`^ {0,${Math.min(3, e - 1)}}(?:\`\`\`|~~~)`),
|
|
182
182
|
headingBeginRegex: (e) => RegExp(`^ {0,${Math.min(3, e - 1)}}#`),
|
|
183
183
|
htmlBeginRegex: (e) => RegExp(`^ {0,${Math.min(3, e - 1)}}<(?:[a-z].*>|!--)`, "i")
|
|
184
|
-
},
|
|
185
|
-
blockquote:
|
|
186
|
-
code:
|
|
187
|
-
def:
|
|
188
|
-
fences:
|
|
189
|
-
heading:
|
|
190
|
-
hr:
|
|
191
|
-
html:
|
|
192
|
-
lheading:
|
|
193
|
-
list:
|
|
194
|
-
newline:
|
|
195
|
-
paragraph:
|
|
196
|
-
table:
|
|
197
|
-
text:
|
|
198
|
-
},
|
|
199
|
-
...
|
|
200
|
-
lheading:
|
|
201
|
-
table:
|
|
202
|
-
paragraph:
|
|
203
|
-
},
|
|
204
|
-
...
|
|
205
|
-
html:
|
|
184
|
+
}, ke = /^(?:[ \t]*(?:\n|$))+/, Ae = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/, je = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/, G = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/, Me = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/, Ne = /(?:[*+-]|\d{1,9}[.)])/, Pe = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/, Fe = U(Pe).replace(/bull/g, Ne).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex(), Ie = U(Pe).replace(/bull/g, Ne).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(), Le = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/, Re = /^[^\n]+/, ze = /(?!\s*\])(?:\\.|[^\[\]\\])+/, Be = U(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", ze).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(), Ve = U(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, Ne).getRegex(), He = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul", Ue = /<!--(?:-?>|[\s\S]*?(?:-->|$))/, We = U("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", Ue).replace("tag", He).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(), Ge = U(Le).replace("hr", G).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", He).getRegex(), Ke = {
|
|
185
|
+
blockquote: U(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", Ge).getRegex(),
|
|
186
|
+
code: Ae,
|
|
187
|
+
def: Be,
|
|
188
|
+
fences: je,
|
|
189
|
+
heading: Me,
|
|
190
|
+
hr: G,
|
|
191
|
+
html: We,
|
|
192
|
+
lheading: Fe,
|
|
193
|
+
list: Ve,
|
|
194
|
+
newline: ke,
|
|
195
|
+
paragraph: Ge,
|
|
196
|
+
table: H,
|
|
197
|
+
text: Re
|
|
198
|
+
}, qe = U("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", G).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", He).getRegex(), Je = {
|
|
199
|
+
...Ke,
|
|
200
|
+
lheading: Ie,
|
|
201
|
+
table: qe,
|
|
202
|
+
paragraph: U(Le).replace("hr", G).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", qe).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", He).getRegex()
|
|
203
|
+
}, Ye = {
|
|
204
|
+
...Ke,
|
|
205
|
+
html: U("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment", Ue).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),
|
|
206
206
|
def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
|
|
207
207
|
heading: /^(#{1,6})(.*)(?:\n+|$)/,
|
|
208
|
-
fences:
|
|
208
|
+
fences: H,
|
|
209
209
|
lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
|
|
210
|
-
paragraph:
|
|
211
|
-
},
|
|
212
|
-
_backpedal:
|
|
213
|
-
anyPunctuation:
|
|
214
|
-
autolink:
|
|
215
|
-
blockSkip:
|
|
216
|
-
br:
|
|
217
|
-
code:
|
|
218
|
-
del:
|
|
219
|
-
emStrongLDelim:
|
|
220
|
-
emStrongRDelimAst:
|
|
221
|
-
emStrongRDelimUnd:
|
|
222
|
-
escape:
|
|
223
|
-
link:
|
|
224
|
-
nolink:
|
|
225
|
-
punctuation:
|
|
226
|
-
reflink:
|
|
227
|
-
reflinkSearch:
|
|
228
|
-
tag:
|
|
229
|
-
text:
|
|
230
|
-
url:
|
|
210
|
+
paragraph: U(Le).replace("hr", G).replace("heading", " *#{1,6} *[^\n]").replace("lheading", Fe).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex()
|
|
211
|
+
}, Xe = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/, Ze = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/, Qe = /^( {2,}|\\)\n(?!\s*$)/, $e = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/, K = /[\p{P}\p{S}]/u, et = /[\s\p{P}\p{S}]/u, tt = /[^\s\p{P}\p{S}]/u, nt = U(/^((?![*_])punctSpace)/, "u").replace(/punctSpace/g, et).getRegex(), rt = /(?!~)[\p{P}\p{S}]/u, it = /(?!~)[\s\p{P}\p{S}]/u, at = /(?:[^\s\p{P}\p{S}]|~)/u, ot = /\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g, st = /^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/, ct = U(st, "u").replace(/punct/g, K).getRegex(), lt = U(st, "u").replace(/punct/g, rt).getRegex(), ut = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)", dt = U(ut, "gu").replace(/notPunctSpace/g, tt).replace(/punctSpace/g, et).replace(/punct/g, K).getRegex(), ft = U(ut, "gu").replace(/notPunctSpace/g, at).replace(/punctSpace/g, it).replace(/punct/g, rt).getRegex(), pt = U("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, tt).replace(/punctSpace/g, et).replace(/punct/g, K).getRegex(), mt = U(/\\(punct)/, "gu").replace(/punct/g, K).getRegex(), ht = U(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(), gt = U(Ue).replace("(?:-->|$)", "-->").getRegex(), _t = U("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", gt).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(), vt = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/, yt = U(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label", vt).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(), bt = U(/^!?\[(label)\]\[(ref)\]/).replace("label", vt).replace("ref", ze).getRegex(), xt = U(/^!?\[(ref)\](?:\[\])?/).replace("ref", ze).getRegex(), St = {
|
|
212
|
+
_backpedal: H,
|
|
213
|
+
anyPunctuation: mt,
|
|
214
|
+
autolink: ht,
|
|
215
|
+
blockSkip: ot,
|
|
216
|
+
br: Qe,
|
|
217
|
+
code: Ze,
|
|
218
|
+
del: H,
|
|
219
|
+
emStrongLDelim: ct,
|
|
220
|
+
emStrongRDelimAst: dt,
|
|
221
|
+
emStrongRDelimUnd: pt,
|
|
222
|
+
escape: Xe,
|
|
223
|
+
link: yt,
|
|
224
|
+
nolink: xt,
|
|
225
|
+
punctuation: nt,
|
|
226
|
+
reflink: bt,
|
|
227
|
+
reflinkSearch: U("reflink|nolink(?!\\()", "g").replace("reflink", bt).replace("nolink", xt).getRegex(),
|
|
228
|
+
tag: _t,
|
|
229
|
+
text: $e,
|
|
230
|
+
url: H
|
|
231
|
+
}, Ct = {
|
|
232
|
+
...St,
|
|
233
|
+
link: U(/^!?\[(label)\]\((.*?)\)/).replace("label", vt).getRegex(),
|
|
234
|
+
reflink: U(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", vt).getRegex()
|
|
231
235
|
}, wt = {
|
|
232
|
-
...
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
...Ct,
|
|
237
|
-
emStrongRDelimAst: mt,
|
|
238
|
-
emStrongLDelim: dt,
|
|
239
|
-
url: B(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),
|
|
236
|
+
...St,
|
|
237
|
+
emStrongRDelimAst: ft,
|
|
238
|
+
emStrongLDelim: lt,
|
|
239
|
+
url: U(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),
|
|
240
240
|
_backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
|
|
241
241
|
del: /^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,
|
|
242
242
|
text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
|
|
243
|
+
}, Tt = {
|
|
244
|
+
...wt,
|
|
245
|
+
br: U(Qe).replace("{2,}", "*").getRegex(),
|
|
246
|
+
text: U(wt.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex()
|
|
243
247
|
}, Et = {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}, K = {
|
|
248
|
-
normal: Je,
|
|
249
|
-
gfm: Xe,
|
|
250
|
-
pedantic: Ze
|
|
248
|
+
normal: Ke,
|
|
249
|
+
gfm: Je,
|
|
250
|
+
pedantic: Ye
|
|
251
251
|
}, q = {
|
|
252
|
-
normal:
|
|
253
|
-
gfm:
|
|
254
|
-
breaks:
|
|
255
|
-
pedantic:
|
|
252
|
+
normal: St,
|
|
253
|
+
gfm: wt,
|
|
254
|
+
breaks: Tt,
|
|
255
|
+
pedantic: Ct
|
|
256
256
|
}, Dt = {
|
|
257
257
|
"&": "&",
|
|
258
258
|
"<": "<",
|
|
@@ -262,27 +262,27 @@ var V = {
|
|
|
262
262
|
}, Ot = (e) => Dt[e];
|
|
263
263
|
function J(e, t) {
|
|
264
264
|
if (t) {
|
|
265
|
-
if (
|
|
266
|
-
} else if (
|
|
265
|
+
if (W.escapeTest.test(e)) return e.replace(W.escapeReplace, Ot);
|
|
266
|
+
} else if (W.escapeTestNoEncode.test(e)) return e.replace(W.escapeReplaceNoEncode, Ot);
|
|
267
267
|
return e;
|
|
268
268
|
}
|
|
269
269
|
function kt(e) {
|
|
270
270
|
try {
|
|
271
|
-
e = encodeURI(e).replace(
|
|
271
|
+
e = encodeURI(e).replace(W.percentDecode, "%");
|
|
272
272
|
} catch {
|
|
273
273
|
return null;
|
|
274
274
|
}
|
|
275
275
|
return e;
|
|
276
276
|
}
|
|
277
277
|
function At(e, t) {
|
|
278
|
-
let n = e.replace(
|
|
278
|
+
let n = e.replace(W.findPipe, (e, t, n) => {
|
|
279
279
|
let r = !1, i = t;
|
|
280
280
|
for (; --i >= 0 && n[i] === "\\";) r = !r;
|
|
281
281
|
return r ? "|" : " |";
|
|
282
|
-
}).split(
|
|
282
|
+
}).split(W.splitPipe), r = 0;
|
|
283
283
|
if (n[0].trim() || n.shift(), n.length > 0 && !n.at(-1)?.trim() && n.pop(), t) if (n.length > t) n.splice(t);
|
|
284
284
|
else for (; n.length < t;) n.push("");
|
|
285
|
-
for (; r < n.length; r++) n[r] = n[r].trim().replace(
|
|
285
|
+
for (; r < n.length; r++) n[r] = n[r].trim().replace(W.slashPipe, "|");
|
|
286
286
|
return n;
|
|
287
287
|
}
|
|
288
288
|
function Y(e, t, n) {
|
|
@@ -334,7 +334,7 @@ var Pt = class {
|
|
|
334
334
|
rules;
|
|
335
335
|
lexer;
|
|
336
336
|
constructor(e) {
|
|
337
|
-
this.options = e ||
|
|
337
|
+
this.options = e || V;
|
|
338
338
|
}
|
|
339
339
|
space(e) {
|
|
340
340
|
let t = this.rules.block.newline.exec(e);
|
|
@@ -747,21 +747,21 @@ ${c}` : c;
|
|
|
747
747
|
tokenizer;
|
|
748
748
|
inlineQueue;
|
|
749
749
|
constructor(e) {
|
|
750
|
-
this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = e ||
|
|
750
|
+
this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = e || V, this.options.tokenizer = this.options.tokenizer || new Pt(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = {
|
|
751
751
|
inLink: !1,
|
|
752
752
|
inRawBlock: !1,
|
|
753
753
|
top: !0
|
|
754
754
|
};
|
|
755
755
|
let t = {
|
|
756
|
-
other:
|
|
757
|
-
block:
|
|
756
|
+
other: W,
|
|
757
|
+
block: Et.normal,
|
|
758
758
|
inline: q.normal
|
|
759
759
|
};
|
|
760
|
-
this.options.pedantic ? (t.block =
|
|
760
|
+
this.options.pedantic ? (t.block = Et.pedantic, t.inline = q.pedantic) : this.options.gfm && (t.block = Et.gfm, this.options.breaks ? t.inline = q.breaks : t.inline = q.gfm), this.tokenizer.rules = t;
|
|
761
761
|
}
|
|
762
762
|
static get rules() {
|
|
763
763
|
return {
|
|
764
|
-
block:
|
|
764
|
+
block: Et,
|
|
765
765
|
inline: q
|
|
766
766
|
};
|
|
767
767
|
}
|
|
@@ -772,7 +772,7 @@ ${c}` : c;
|
|
|
772
772
|
return new e(n).inlineTokens(t);
|
|
773
773
|
}
|
|
774
774
|
lex(e) {
|
|
775
|
-
e = e.replace(
|
|
775
|
+
e = e.replace(W.carriageReturn, "\n"), this.blockTokens(e, this.tokens);
|
|
776
776
|
for (let e = 0; e < this.inlineQueue.length; e++) {
|
|
777
777
|
let t = this.inlineQueue[e];
|
|
778
778
|
this.inlineTokens(t.src, t.tokens);
|
|
@@ -780,7 +780,7 @@ ${c}` : c;
|
|
|
780
780
|
return this.inlineQueue = [], this.tokens;
|
|
781
781
|
}
|
|
782
782
|
blockTokens(e, t = [], n = !1) {
|
|
783
|
-
for (this.options.pedantic && (e = e.replace(
|
|
783
|
+
for (this.options.pedantic && (e = e.replace(W.tabCharGlobal, " ").replace(W.spaceLine, "")); e;) {
|
|
784
784
|
let r;
|
|
785
785
|
if (this.options.extensions?.block?.some((n) => (r = n.call({ lexer: this }, e, t)) ? (e = e.substring(r.raw.length), t.push(r), !0) : !1)) continue;
|
|
786
786
|
if (r = this.tokenizer.space(e)) {
|
|
@@ -952,13 +952,13 @@ ${c}` : c;
|
|
|
952
952
|
options;
|
|
953
953
|
parser;
|
|
954
954
|
constructor(e) {
|
|
955
|
-
this.options = e ||
|
|
955
|
+
this.options = e || V;
|
|
956
956
|
}
|
|
957
957
|
space(e) {
|
|
958
958
|
return "";
|
|
959
959
|
}
|
|
960
960
|
code({ text: e, lang: t, escaped: n }) {
|
|
961
|
-
let r = (t || "").match(
|
|
961
|
+
let r = (t || "").match(W.notSpaceStart)?.[0], i = e.replace(W.endingNewline, "") + "\n";
|
|
962
962
|
return r ? "<pre><code class=\"language-" + J(r) + "\">" + (n ? i : J(i, !0)) + "</code></pre>\n" : "<pre><code>" + (n ? i : J(i, !0)) + "</code></pre>\n";
|
|
963
963
|
}
|
|
964
964
|
blockquote({ tokens: e }) {
|
|
@@ -1095,7 +1095,7 @@ ${e}</tr>
|
|
|
1095
1095
|
renderer;
|
|
1096
1096
|
textRenderer;
|
|
1097
1097
|
constructor(e) {
|
|
1098
|
-
this.options = e ||
|
|
1098
|
+
this.options = e || V, this.options.renderer = this.options.renderer || new Ft(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.renderer.parser = this, this.textRenderer = new It();
|
|
1099
1099
|
}
|
|
1100
1100
|
static parse(t, n) {
|
|
1101
1101
|
return new e(n).parse(t);
|
|
@@ -1246,7 +1246,7 @@ ${e}</tr>
|
|
|
1246
1246
|
options;
|
|
1247
1247
|
block;
|
|
1248
1248
|
constructor(e) {
|
|
1249
|
-
this.options = e ||
|
|
1249
|
+
this.options = e || V;
|
|
1250
1250
|
}
|
|
1251
1251
|
static passThroughHooks = /* @__PURE__ */ new Set([
|
|
1252
1252
|
"preprocess",
|
|
@@ -1269,7 +1269,7 @@ ${e}</tr>
|
|
|
1269
1269
|
return this.block ? Z.parse : Z.parseInline;
|
|
1270
1270
|
}
|
|
1271
1271
|
}, Q = new class {
|
|
1272
|
-
defaults =
|
|
1272
|
+
defaults = De();
|
|
1273
1273
|
options = this.setOptions;
|
|
1274
1274
|
parse = this.parseMarkdown(!0);
|
|
1275
1275
|
parseInline = this.parseMarkdown(!1);
|
|
@@ -1440,9 +1440,9 @@ function $(e, t) {
|
|
|
1440
1440
|
//#endregion
|
|
1441
1441
|
//#region src/lib/markdown.ts
|
|
1442
1442
|
$.options = $.setOptions = function(e) {
|
|
1443
|
-
return Q.setOptions(e), $.defaults = Q.defaults,
|
|
1444
|
-
}, $.getDefaults =
|
|
1445
|
-
return Q.use(...e), $.defaults = Q.defaults,
|
|
1443
|
+
return Q.setOptions(e), $.defaults = Q.defaults, Oe($.defaults), $;
|
|
1444
|
+
}, $.getDefaults = De, $.defaults = V, $.use = function(...e) {
|
|
1445
|
+
return Q.use(...e), $.defaults = Q.defaults, Oe($.defaults), $;
|
|
1446
1446
|
}, $.walkTokens = function(e, t) {
|
|
1447
1447
|
return Q.walkTokens(e, t);
|
|
1448
1448
|
}, $.parseInline = Q.parseInline, $.Parser = Z, $.parser = Z.parse, $.Renderer = Ft, $.TextRenderer = It, $.Lexer = X, $.lexer = X.lex, $.Tokenizer = Pt, $.Hooks = Lt, $.parse = $, $.options, $.setOptions, $.use, $.walkTokens, $.parseInline, Z.parse, X.lex, $.setOptions({
|
|
@@ -1471,17 +1471,17 @@ var zt = {
|
|
|
1471
1471
|
function t(e) {
|
|
1472
1472
|
return `${e}px`;
|
|
1473
1473
|
}
|
|
1474
|
-
return (n, r) => e.frame === "phone" || e.frame === "tablet" ? (
|
|
1474
|
+
return (n, r) => e.frame === "phone" || e.frame === "tablet" ? (h(), a("div", zt, [o("div", Bt, [o("div", {
|
|
1475
1475
|
class: "relative overflow-hidden rounded-[1.8rem]",
|
|
1476
1476
|
style: f({
|
|
1477
1477
|
width: t(e.screenWidth),
|
|
1478
1478
|
...e.baseStyle
|
|
1479
1479
|
})
|
|
1480
1480
|
}, [
|
|
1481
|
-
e.frame === "phone" ? (
|
|
1482
|
-
|
|
1481
|
+
e.frame === "phone" ? (h(), a("div", Vt)) : i("", !0),
|
|
1482
|
+
v(n.$slots, "default"),
|
|
1483
1483
|
r[0] ||= o("div", { class: "pointer-events-none absolute bottom-2 left-1/2 z-10 h-1 w-24 -translate-x-1/2 rounded-full bg-gray-300 dark:bg-gray-600" }, null, -1)
|
|
1484
|
-
], 4)])])) : (
|
|
1484
|
+
], 4)])])) : (h(), a("div", {
|
|
1485
1485
|
key: 1,
|
|
1486
1486
|
class: "inline-block overflow-hidden rounded-xl border-2 border-gray-300 shadow-sm dark:border-gray-700",
|
|
1487
1487
|
style: f({ width: t(e.screenWidth) })
|
|
@@ -1489,7 +1489,7 @@ var zt = {
|
|
|
1489
1489
|
o("span", { class: "h-3 w-3 rounded-full bg-red-400" }),
|
|
1490
1490
|
o("span", { class: "h-3 w-3 rounded-full bg-yellow-400" }),
|
|
1491
1491
|
o("span", { class: "h-3 w-3 rounded-full bg-green-400" })
|
|
1492
|
-
], -1), o("div", { style: f(e.baseStyle) }, [
|
|
1492
|
+
], -1), o("div", { style: f(e.baseStyle) }, [v(n.$slots, "default")], 4)], 4));
|
|
1493
1493
|
}
|
|
1494
1494
|
}), Ut = {
|
|
1495
1495
|
key: 0,
|
|
@@ -1510,15 +1510,15 @@ var zt = {
|
|
|
1510
1510
|
doc: {}
|
|
1511
1511
|
},
|
|
1512
1512
|
setup(n) {
|
|
1513
|
-
let l = n,
|
|
1514
|
-
if (!
|
|
1515
|
-
let e =
|
|
1513
|
+
let l = n, ee = t(() => Rt(l.doc)), { isDark: ne, toggle: C } = ue(), re = ae(), w = oe(), T = g(w[0]?.id ?? ""), E = t(() => w.find((e) => e.id === T.value) ?? w[0]), D = se(), O = t(() => {
|
|
1514
|
+
if (!D) return {};
|
|
1515
|
+
let e = ne.value ? D.dark : D.light;
|
|
1516
1516
|
return {
|
|
1517
1517
|
background: e.bg,
|
|
1518
1518
|
color: e.font
|
|
1519
1519
|
};
|
|
1520
|
-
}),
|
|
1521
|
-
let e =
|
|
1520
|
+
}), k = g(null), A = g(null), j = g(0), ie = g(0), M = g(0), N = g(!1), ce = g(null), le = t(() => {
|
|
1521
|
+
let e = E.value;
|
|
1522
1522
|
return e ? {
|
|
1523
1523
|
min: e.minWidth,
|
|
1524
1524
|
max: e.maxWidth
|
|
@@ -1527,168 +1527,171 @@ var zt = {
|
|
|
1527
1527
|
max: 0
|
|
1528
1528
|
};
|
|
1529
1529
|
});
|
|
1530
|
-
function
|
|
1531
|
-
let e =
|
|
1530
|
+
function P() {
|
|
1531
|
+
let e = E.value;
|
|
1532
1532
|
if (!e) return 0;
|
|
1533
|
-
let t =
|
|
1533
|
+
let t = ce.value ?? e.minWidth;
|
|
1534
1534
|
return Math.min(e.maxWidth, Math.max(e.minWidth, t));
|
|
1535
1535
|
}
|
|
1536
|
-
let
|
|
1537
|
-
let e =
|
|
1536
|
+
let F = t(() => P()), I = t(() => {
|
|
1537
|
+
let e = E.value;
|
|
1538
1538
|
return !!e && e.minWidth < e.maxWidth;
|
|
1539
|
-
}),
|
|
1540
|
-
if (
|
|
1541
|
-
let e =
|
|
1542
|
-
return !e ||
|
|
1543
|
-
}),
|
|
1544
|
-
let e =
|
|
1545
|
-
return e ? e *
|
|
1546
|
-
}),
|
|
1547
|
-
function
|
|
1548
|
-
let t =
|
|
1549
|
-
t && (
|
|
1539
|
+
}), L = t(() => {
|
|
1540
|
+
if (N.value) return 1;
|
|
1541
|
+
let e = M.value || F.value;
|
|
1542
|
+
return !e || j.value === 0 ? 1 : Math.min(1, j.value / e);
|
|
1543
|
+
}), de = t(() => {
|
|
1544
|
+
let e = M.value || F.value;
|
|
1545
|
+
return e ? e * L.value : 0;
|
|
1546
|
+
}), fe = t(() => ie.value * L.value), pe = t(() => N.value && F.value > 0 && j.value > 0 && F.value < j.value), R = g(!1), me = 0, he = 0, ge = 1;
|
|
1547
|
+
function _e(e) {
|
|
1548
|
+
let t = E.value;
|
|
1549
|
+
t && (ce.value = Math.min(t.maxWidth, Math.max(t.minWidth, e)));
|
|
1550
1550
|
}
|
|
1551
|
-
function
|
|
1552
|
-
let t =
|
|
1553
|
-
|
|
1551
|
+
function ve(e) {
|
|
1552
|
+
let t = F.value;
|
|
1553
|
+
T.value = e, _e(t);
|
|
1554
1554
|
}
|
|
1555
|
-
function
|
|
1556
|
-
if (!
|
|
1555
|
+
function ye(e) {
|
|
1556
|
+
if (!E.value || !I.value) return;
|
|
1557
1557
|
e.preventDefault(), e.stopPropagation();
|
|
1558
1558
|
let t = e.currentTarget;
|
|
1559
|
-
t.setPointerCapture(e.pointerId),
|
|
1559
|
+
t.setPointerCapture(e.pointerId), R.value = !0, me = e.clientX, he = F.value, ge = L.value, document.body.style.userSelect = "none", document.body.style.cursor = "ew-resize";
|
|
1560
1560
|
function n(e) {
|
|
1561
1561
|
if (!e.isPrimary) return;
|
|
1562
|
-
let t = (e.clientX -
|
|
1563
|
-
|
|
1562
|
+
let t = (e.clientX - me) / ge;
|
|
1563
|
+
_e(he + t);
|
|
1564
1564
|
}
|
|
1565
1565
|
function r(e) {
|
|
1566
|
-
e.isPrimary && (t.releasePointerCapture(e.pointerId),
|
|
1566
|
+
e.isPrimary && (t.releasePointerCapture(e.pointerId), R.value = !1, document.body.style.userSelect = "", document.body.style.cursor = "", t.removeEventListener("pointermove", n), t.removeEventListener("pointerup", r), t.removeEventListener("pointercancel", r), u(B));
|
|
1567
1567
|
}
|
|
1568
1568
|
t.addEventListener("pointermove", n), t.addEventListener("pointerup", r), t.addEventListener("pointercancel", r);
|
|
1569
1569
|
}
|
|
1570
|
-
let
|
|
1571
|
-
function
|
|
1572
|
-
|
|
1570
|
+
let z = null;
|
|
1571
|
+
function B() {
|
|
1572
|
+
k.value && (j.value = k.value.clientWidth), A.value && (ie.value = A.value.offsetHeight, M.value = A.value.offsetWidth);
|
|
1573
1573
|
}
|
|
1574
|
-
function
|
|
1575
|
-
|
|
1574
|
+
function be() {
|
|
1575
|
+
z?.disconnect(), k.value && z?.observe(k.value), A.value && z?.observe(A.value);
|
|
1576
1576
|
}
|
|
1577
|
-
function
|
|
1578
|
-
e.key === "Escape" && (
|
|
1577
|
+
function xe(e) {
|
|
1578
|
+
e.key === "Escape" && (N.value = !1);
|
|
1579
1579
|
}
|
|
1580
|
-
return
|
|
1581
|
-
|
|
1580
|
+
return m(() => {
|
|
1581
|
+
z = new ResizeObserver(() => B()), be(), B(), window.addEventListener("keydown", xe);
|
|
1582
1582
|
}), p(() => {
|
|
1583
|
-
|
|
1584
|
-
}),
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1583
|
+
z?.disconnect(), window.removeEventListener("keydown", xe);
|
|
1584
|
+
}), te([
|
|
1585
|
+
T,
|
|
1586
|
+
N,
|
|
1587
|
+
F
|
|
1588
1588
|
], () => u(() => {
|
|
1589
|
-
|
|
1590
|
-
})), (t, l) =>
|
|
1589
|
+
be(), B();
|
|
1590
|
+
})), (t, l) => N.value ? (h(), a("div", rn, [o("button", {
|
|
1591
1591
|
type: "button",
|
|
1592
1592
|
class: "fixed right-4 top-4 z-10 rounded-md border border-gray-300 bg-white px-3 py-1 text-xs font-bold text-gray-700 shadow-sm transition hover:bg-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100 dark:hover:bg-gray-700",
|
|
1593
|
-
onClick: l[2] ||= (e) =>
|
|
1593
|
+
onClick: l[2] ||= (e) => N.value = !1
|
|
1594
1594
|
}, " 閉じる(Esc) "), o("div", {
|
|
1595
1595
|
ref_key: "areaRef",
|
|
1596
|
-
ref:
|
|
1596
|
+
ref: k,
|
|
1597
1597
|
class: "flex min-h-full w-full justify-center"
|
|
1598
|
-
}, [
|
|
1598
|
+
}, [E.value ? (h(), a("div", {
|
|
1599
1599
|
key: 0,
|
|
1600
|
-
class: d(["relative w-fit shrink-0",
|
|
1600
|
+
class: d(["relative w-fit shrink-0", pe.value ? "border border-gray-300 shadow-lg dark:border-gray-600" : ""])
|
|
1601
1601
|
}, [o("div", {
|
|
1602
1602
|
ref_key: "contentRef",
|
|
1603
|
-
ref:
|
|
1603
|
+
ref: A,
|
|
1604
1604
|
class: "w-fit"
|
|
1605
|
-
}, [
|
|
1605
|
+
}, [E.value ? (h(), r(Ht, {
|
|
1606
1606
|
key: 0,
|
|
1607
|
-
frame:
|
|
1608
|
-
"screen-width":
|
|
1609
|
-
"base-style":
|
|
1607
|
+
frame: E.value.frame,
|
|
1608
|
+
"screen-width": F.value,
|
|
1609
|
+
"base-style": O.value
|
|
1610
1610
|
}, {
|
|
1611
|
-
default:
|
|
1611
|
+
default: x(() => [v(t.$slots, "mock")]),
|
|
1612
1612
|
_: 3
|
|
1613
1613
|
}, 8, [
|
|
1614
1614
|
"frame",
|
|
1615
1615
|
"screen-width",
|
|
1616
1616
|
"base-style"
|
|
1617
|
-
])) : i("", !0)], 512),
|
|
1617
|
+
])) : i("", !0)], 512), I.value ? (h(), a("div", {
|
|
1618
1618
|
key: 0,
|
|
1619
|
-
class: d(["absolute inset-y-0 -right-1 z-20 flex w-3 cursor-ew-resize touch-none items-center justify-center opacity-60 hover:opacity-100",
|
|
1620
|
-
onPointerdown:
|
|
1621
|
-
}, [o("div", { class: d(["h-10 w-1 rounded-full bg-gray-400 dark:bg-gray-500",
|
|
1622
|
-
c(
|
|
1619
|
+
class: d(["absolute inset-y-0 -right-1 z-20 flex w-3 cursor-ew-resize touch-none items-center justify-center opacity-60 hover:opacity-100", R.value ? "opacity-100" : ""]),
|
|
1620
|
+
onPointerdown: ye
|
|
1621
|
+
}, [o("div", { class: d(["h-10 w-1 rounded-full bg-gray-400 dark:bg-gray-500", R.value ? "bg-blue-500 dark:bg-blue-400" : ""]) }, null, 2)], 34)) : i("", !0)], 2)) : i("", !0)], 512)])) : (h(), a("div", Ut, [o("header", Wt, [
|
|
1622
|
+
c(b(S), {
|
|
1623
1623
|
to: "/catalog",
|
|
1624
1624
|
class: "text-sm text-gray-500 underline hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-100"
|
|
1625
1625
|
}, {
|
|
1626
|
-
default:
|
|
1626
|
+
default: x(() => [...l[3] ||= [s(" ← 一覧 ", -1)]]),
|
|
1627
1627
|
_: 1
|
|
1628
1628
|
}),
|
|
1629
|
-
o("h1", Gt,
|
|
1629
|
+
o("h1", Gt, y(n.title), 1),
|
|
1630
1630
|
o("div", Kt, [
|
|
1631
|
-
|
|
1631
|
+
v(t.$slots, "toolbar"),
|
|
1632
1632
|
o("button", {
|
|
1633
1633
|
type: "button",
|
|
1634
1634
|
class: "rounded-md border border-gray-300 px-3 py-1 text-xs font-bold text-gray-600 transition hover:bg-gray-100 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-700",
|
|
1635
|
-
onClick: l[0] ||= (e) =>
|
|
1636
|
-
},
|
|
1637
|
-
|
|
1635
|
+
onClick: l[0] ||= (e) => N.value = !N.value
|
|
1636
|
+
}, y(N.value ? "要件を表示" : "プレビュー"), 1),
|
|
1637
|
+
b(re) ? (h(), a("button", {
|
|
1638
1638
|
key: 0,
|
|
1639
1639
|
type: "button",
|
|
1640
1640
|
class: "rounded-md border border-gray-300 px-3 py-1 text-xs font-bold text-gray-600 transition hover:bg-gray-100 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-700",
|
|
1641
|
-
onClick: l[1] ||= (...e) =>
|
|
1642
|
-
},
|
|
1641
|
+
onClick: l[1] ||= (...e) => b(C) && b(C)(...e)
|
|
1642
|
+
}, y(b(ne) ? "ライトモード" : "ダークモード"), 1)) : i("", !0)
|
|
1643
1643
|
])
|
|
1644
|
-
]), o("div", qt, [o("section", Jt, [o("div", Yt, [l[4] ||= o("span", { class: "text-xs font-bold uppercase tracking-wide text-gray-400" }, " 画面 mock ", -1), o("div", Xt, [
|
|
1644
|
+
]), o("div", qt, [o("section", Jt, [o("div", Yt, [l[4] ||= o("span", { class: "text-xs font-bold uppercase tracking-wide text-gray-400" }, " 画面 mock ", -1), o("div", Xt, [E.value ? (h(), a("span", Zt, [s(y(F.value) + "px ", 1), I.value ? (h(), a("span", Qt, " (" + y(le.value.min) + "–" + y(le.value.max) + ") ", 1)) : i("", !0)])) : i("", !0), b(w).length > 1 ? (h(), a("div", {
|
|
1645
1645
|
key: 1,
|
|
1646
|
-
class: d(["inline-flex overflow-hidden rounded-md border border-gray-300 text-xs font-bold dark:border-gray-600",
|
|
1647
|
-
}, [(
|
|
1646
|
+
class: d(["inline-flex overflow-hidden rounded-md border border-gray-300 text-xs font-bold dark:border-gray-600", R.value ? "pointer-events-none" : ""])
|
|
1647
|
+
}, [(h(!0), a(e, null, _(b(w), (e) => (h(), a("button", {
|
|
1648
1648
|
key: e.id,
|
|
1649
1649
|
type: "button",
|
|
1650
|
-
class: d(["px-3 py-1 transition",
|
|
1651
|
-
onClick: (t) =>
|
|
1652
|
-
},
|
|
1650
|
+
class: d(["px-3 py-1 transition", T.value === e.id ? "bg-gray-800 text-white dark:bg-gray-200 dark:text-gray-900" : "text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-700"]),
|
|
1651
|
+
onClick: (t) => ve(e.id)
|
|
1652
|
+
}, y(e.label), 11, $t))), 128))], 2)) : i("", !0)])]), o("div", en, [o("div", {
|
|
1653
1653
|
ref_key: "areaRef",
|
|
1654
|
-
ref:
|
|
1655
|
-
}, [
|
|
1654
|
+
ref: k
|
|
1655
|
+
}, [E.value ? (h(), a("div", {
|
|
1656
1656
|
key: 0,
|
|
1657
1657
|
class: "relative mx-auto overflow-hidden",
|
|
1658
1658
|
style: f({
|
|
1659
|
-
width:
|
|
1660
|
-
height:
|
|
1659
|
+
width: de.value ? `${de.value}px` : "",
|
|
1660
|
+
height: ie.value ? `${fe.value}px` : "auto"
|
|
1661
1661
|
})
|
|
1662
1662
|
}, [o("div", {
|
|
1663
1663
|
ref_key: "contentRef",
|
|
1664
|
-
ref:
|
|
1664
|
+
ref: A,
|
|
1665
1665
|
class: "origin-top-left w-fit",
|
|
1666
|
-
style: f({ transform: `scale(${
|
|
1667
|
-
}, [
|
|
1666
|
+
style: f({ transform: `scale(${L.value})` })
|
|
1667
|
+
}, [E.value ? (h(), r(Ht, {
|
|
1668
1668
|
key: 0,
|
|
1669
|
-
frame:
|
|
1670
|
-
"screen-width":
|
|
1671
|
-
"base-style":
|
|
1669
|
+
frame: E.value.frame,
|
|
1670
|
+
"screen-width": F.value,
|
|
1671
|
+
"base-style": O.value
|
|
1672
1672
|
}, {
|
|
1673
|
-
default:
|
|
1673
|
+
default: x(() => [v(t.$slots, "mock")]),
|
|
1674
1674
|
_: 3
|
|
1675
1675
|
}, 8, [
|
|
1676
1676
|
"frame",
|
|
1677
1677
|
"screen-width",
|
|
1678
1678
|
"base-style"
|
|
1679
|
-
])) : i("", !0)], 4),
|
|
1679
|
+
])) : i("", !0)], 4), I.value ? (h(), a("div", {
|
|
1680
1680
|
key: 0,
|
|
1681
|
-
class: d(["absolute inset-y-0 -right-1 z-20 flex w-3 cursor-ew-resize touch-none items-center justify-center",
|
|
1682
|
-
onPointerdown:
|
|
1683
|
-
}, [o("div", { class: d(["h-10 w-1 rounded-full bg-gray-400 dark:bg-gray-500",
|
|
1681
|
+
class: d(["absolute inset-y-0 -right-1 z-20 flex w-3 cursor-ew-resize touch-none items-center justify-center", R.value ? "opacity-100" : "opacity-60 hover:opacity-100"]),
|
|
1682
|
+
onPointerdown: ye
|
|
1683
|
+
}, [o("div", { class: d(["h-10 w-1 rounded-full bg-gray-400 dark:bg-gray-500", R.value ? "bg-blue-500 dark:bg-blue-400" : ""]) }, null, 2)], 34)) : i("", !0)], 4)) : i("", !0)], 512)])]), o("section", tn, [l[5] ||= o("div", { class: "mb-3 text-xs font-bold uppercase tracking-wide text-gray-400" }, " 要件 ", -1), o("div", {
|
|
1684
1684
|
class: "req-md",
|
|
1685
|
-
innerHTML:
|
|
1685
|
+
innerHTML: ee.value
|
|
1686
1686
|
}, null, 8, nn)])])]));
|
|
1687
1687
|
}
|
|
1688
|
-
}), on = { class: "flex items-center gap-2 text-sm" }, sn = ["value"], cn = ["value"], ln =
|
|
1688
|
+
}), on = { class: "flex items-center gap-2 text-sm" }, sn = ["value"], cn = ["value"], ln = {
|
|
1689
|
+
key: 0,
|
|
1690
|
+
class: "mb-3 flex items-center gap-2"
|
|
1691
|
+
}, un = { class: "inline-flex overflow-hidden rounded-md border border-gray-300 text-xs font-bold dark:border-gray-600" }, dn = ["onClick"], fn = ["innerHTML"], pn = {
|
|
1689
1692
|
key: 1,
|
|
1690
1693
|
class: "p-8"
|
|
1691
|
-
},
|
|
1694
|
+
}, mn = { class: "text-gray-600" }, hn = /* @__PURE__ */ l({
|
|
1692
1695
|
__name: "ReqPageView",
|
|
1693
1696
|
props: {
|
|
1694
1697
|
kind: {},
|
|
@@ -1696,44 +1699,60 @@ var zt = {
|
|
|
1696
1699
|
ver: {}
|
|
1697
1700
|
},
|
|
1698
1701
|
setup(n) {
|
|
1699
|
-
let
|
|
1700
|
-
function
|
|
1702
|
+
let l = n, u = w(), f = t(() => le(l.kind, l.name)), p = t(() => l.ver || f.value?.latest || ""), m = t(() => f.value?.versions[p.value]), v = t(() => f.value ? Object.keys(f.value.versions) : []);
|
|
1703
|
+
function ne(e) {
|
|
1704
|
+
return e ? e.variants?.length ? e.variants : e.view === void 0 ? [] : [{
|
|
1705
|
+
id: "default",
|
|
1706
|
+
label: "default",
|
|
1707
|
+
view: e.view
|
|
1708
|
+
}] : [];
|
|
1709
|
+
}
|
|
1710
|
+
let C = t(() => ne(m.value)), re = t(() => C.value.length > 1), T = g(""), E = t(() => C.value.find((e) => e.id === T.value)?.view ?? C.value[0]?.view);
|
|
1711
|
+
te(() => [m.value, p.value], () => {
|
|
1712
|
+
T.value = C.value[0]?.id ?? "";
|
|
1713
|
+
}, { immediate: !0 });
|
|
1714
|
+
function D(e) {
|
|
1701
1715
|
let t = e.target.value;
|
|
1702
|
-
|
|
1716
|
+
u.push(`/${l.kind}s/${l.name}/${t}`);
|
|
1703
1717
|
}
|
|
1704
|
-
return (t,
|
|
1718
|
+
return (t, l) => f.value && m.value && E.value !== void 0 ? (h(), r(an, {
|
|
1705
1719
|
key: 0,
|
|
1706
|
-
title:
|
|
1707
|
-
doc:
|
|
1720
|
+
title: f.value.title,
|
|
1721
|
+
doc: m.value.req
|
|
1708
1722
|
}, {
|
|
1709
|
-
toolbar:
|
|
1710
|
-
value:
|
|
1723
|
+
toolbar: x(() => [o("label", on, [l[0] ||= o("span", { class: "text-gray-500 dark:text-gray-400" }, "バージョン", -1), o("select", {
|
|
1724
|
+
value: p.value,
|
|
1711
1725
|
class: "rounded border border-gray-300 bg-white px-2 py-1 text-gray-800 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-100",
|
|
1712
|
-
onChange:
|
|
1713
|
-
}, [(
|
|
1726
|
+
onChange: D
|
|
1727
|
+
}, [(h(!0), a(e, null, _(v.value, (e) => (h(), a("option", {
|
|
1714
1728
|
key: e,
|
|
1715
1729
|
value: e
|
|
1716
|
-
},
|
|
1717
|
-
mock:
|
|
1718
|
-
key:
|
|
1719
|
-
|
|
1720
|
-
|
|
1730
|
+
}, y(e), 9, cn))), 128))], 40, sn)])]),
|
|
1731
|
+
mock: x(() => [re.value ? (h(), a("div", ln, [l[1] ||= o("span", { class: "text-xs font-bold uppercase tracking-wide text-gray-400" }, "状態", -1), o("div", un, [(h(!0), a(e, null, _(C.value, (e) => (h(), a("button", {
|
|
1732
|
+
key: e.id,
|
|
1733
|
+
type: "button",
|
|
1734
|
+
class: d(["px-3 py-1 transition", T.value === e.id ? "bg-gray-800 text-white dark:bg-gray-200 dark:text-gray-900" : "text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-700"]),
|
|
1735
|
+
onClick: (t) => T.value = e.id
|
|
1736
|
+
}, y(e.label), 11, dn))), 128))])])) : i("", !0), typeof E.value == "string" ? (h(), a("div", {
|
|
1737
|
+
key: 1,
|
|
1738
|
+
innerHTML: E.value
|
|
1739
|
+
}, null, 8, fn)) : (h(), r(ee(E.value), { key: 2 }))]),
|
|
1721
1740
|
_: 1
|
|
1722
|
-
}, 8, ["title", "doc"])) : (
|
|
1741
|
+
}, 8, ["title", "doc"])) : (h(), a("div", pn, [o("p", mn, "該当するアイテムが見つかりません: " + y(n.kind) + " / " + y(n.name), 1), c(b(S), {
|
|
1723
1742
|
to: "/catalog",
|
|
1724
1743
|
class: "text-blue-600 underline"
|
|
1725
1744
|
}, {
|
|
1726
|
-
default:
|
|
1745
|
+
default: x(() => [...l[2] ||= [s("← 一覧へ戻る", -1)]]),
|
|
1727
1746
|
_: 1
|
|
1728
1747
|
})]));
|
|
1729
1748
|
}
|
|
1730
|
-
}),
|
|
1749
|
+
}), gn = { class: "min-h-screen p-6" }, _n = { class: "mb-5 flex items-center gap-4 rounded-lg border border-gray-200 bg-white px-5 py-3 text-gray-800 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100" }, vn = { class: "rounded-lg bg-gray-50 p-5 transition-colors dark:bg-gray-900" }, yn = { class: "grid grid-cols-2 gap-4 sm:grid-cols-3 lg:grid-cols-4" }, bn = { class: "p-3" }, xn = { class: "font-mono text-sm font-bold dark:text-gray-100" }, Sn = { class: "mt-1 space-y-0.5 font-mono text-xs" }, Cn = {
|
|
1731
1750
|
key: 0,
|
|
1732
1751
|
class: "mt-1 text-xs text-gray-600 dark:text-gray-400"
|
|
1733
|
-
},
|
|
1752
|
+
}, wn = /* @__PURE__ */ l({
|
|
1734
1753
|
__name: "ColorsView",
|
|
1735
1754
|
setup(t) {
|
|
1736
|
-
let { isDark: n, toggle: r } =
|
|
1755
|
+
let { isDark: n, toggle: r } = ue(), l = ae(), u = se(), p = [...u ? [{
|
|
1737
1756
|
name: "baseBg",
|
|
1738
1757
|
light: u.light.bg,
|
|
1739
1758
|
dark: u.dark.bg,
|
|
@@ -1743,40 +1762,40 @@ var zt = {
|
|
|
1743
1762
|
light: u.light.font,
|
|
1744
1763
|
dark: u.dark.font,
|
|
1745
1764
|
desc: "モックの基本文字色"
|
|
1746
|
-
}] : [], ...
|
|
1747
|
-
return (t, u) => (
|
|
1748
|
-
c(
|
|
1765
|
+
}] : [], ...ce()];
|
|
1766
|
+
return (t, u) => (h(), a("div", gn, [o("header", _n, [
|
|
1767
|
+
c(b(S), {
|
|
1749
1768
|
to: "/catalog",
|
|
1750
1769
|
class: "text-sm text-gray-500 underline hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-100"
|
|
1751
1770
|
}, {
|
|
1752
|
-
default:
|
|
1771
|
+
default: x(() => [...u[1] ||= [s(" ← 一覧 ", -1)]]),
|
|
1753
1772
|
_: 1
|
|
1754
1773
|
}),
|
|
1755
1774
|
u[2] ||= o("h1", { class: "text-lg font-bold" }, "カラー", -1),
|
|
1756
|
-
|
|
1775
|
+
b(l) ? (h(), a("button", {
|
|
1757
1776
|
key: 0,
|
|
1758
1777
|
type: "button",
|
|
1759
1778
|
class: "ml-auto rounded-md border border-gray-300 px-3 py-1 text-xs font-bold text-gray-600 transition hover:bg-gray-100 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-700",
|
|
1760
|
-
onClick: u[0] ||= (...e) =>
|
|
1761
|
-
},
|
|
1762
|
-
]), o("div",
|
|
1779
|
+
onClick: u[0] ||= (...e) => b(r) && b(r)(...e)
|
|
1780
|
+
}, y(b(n) ? "ライトモード" : "ダークモード"), 1)) : i("", !0)
|
|
1781
|
+
]), o("div", vn, [o("div", yn, [(h(), a(e, null, _(p, (e) => o("div", {
|
|
1763
1782
|
key: e.name,
|
|
1764
1783
|
class: "overflow-hidden rounded-lg border border-gray-300 bg-white dark:border-gray-700 dark:bg-gray-800"
|
|
1765
1784
|
}, [o("div", {
|
|
1766
1785
|
class: "h-24 w-full border-b border-gray-200 dark:border-gray-700",
|
|
1767
|
-
style: f({ background:
|
|
1768
|
-
}, null, 4), o("div",
|
|
1769
|
-
o("div",
|
|
1770
|
-
o("div",
|
|
1771
|
-
e.desc ? (
|
|
1786
|
+
style: f({ background: b(n) ? e.dark : e.light })
|
|
1787
|
+
}, null, 4), o("div", bn, [
|
|
1788
|
+
o("div", xn, y(e.name), 1),
|
|
1789
|
+
o("div", Sn, [o("div", { class: d(b(n) ? "text-gray-500" : "font-bold text-gray-700") }, " light: " + y(e.light), 3), o("div", { class: d(b(n) ? "font-bold text-gray-200" : "text-gray-500") }, " dark: " + y(e.dark), 3)]),
|
|
1790
|
+
e.desc ? (h(), a("div", Cn, y(e.desc), 1)) : i("", !0)
|
|
1772
1791
|
])])), 64))])])]));
|
|
1773
1792
|
}
|
|
1774
1793
|
});
|
|
1775
1794
|
//#endregion
|
|
1776
1795
|
//#region src/router.ts
|
|
1777
|
-
function
|
|
1778
|
-
return
|
|
1779
|
-
history:
|
|
1796
|
+
function Tn() {
|
|
1797
|
+
return C({
|
|
1798
|
+
history: re(),
|
|
1780
1799
|
routes: [
|
|
1781
1800
|
{
|
|
1782
1801
|
path: "/",
|
|
@@ -1785,17 +1804,17 @@ function Sn() {
|
|
|
1785
1804
|
{
|
|
1786
1805
|
path: "/catalog",
|
|
1787
1806
|
name: "catalog",
|
|
1788
|
-
component:
|
|
1807
|
+
component: Ee
|
|
1789
1808
|
},
|
|
1790
1809
|
{
|
|
1791
1810
|
path: "/colors",
|
|
1792
1811
|
name: "colors",
|
|
1793
|
-
component:
|
|
1812
|
+
component: wn
|
|
1794
1813
|
},
|
|
1795
1814
|
{
|
|
1796
1815
|
path: "/components/:name/:ver?",
|
|
1797
1816
|
name: "component",
|
|
1798
|
-
component:
|
|
1817
|
+
component: hn,
|
|
1799
1818
|
props: (e) => ({
|
|
1800
1819
|
kind: "component",
|
|
1801
1820
|
name: e.params.name,
|
|
@@ -1805,7 +1824,7 @@ function Sn() {
|
|
|
1805
1824
|
{
|
|
1806
1825
|
path: "/pages/:name/:ver?",
|
|
1807
1826
|
name: "page",
|
|
1808
|
-
component:
|
|
1827
|
+
component: hn,
|
|
1809
1828
|
props: (e) => ({
|
|
1810
1829
|
kind: "page",
|
|
1811
1830
|
name: e.params.name,
|
|
@@ -1817,10 +1836,10 @@ function Sn() {
|
|
|
1817
1836
|
}
|
|
1818
1837
|
//#endregion
|
|
1819
1838
|
//#region src/createSpecViewer.ts
|
|
1820
|
-
function
|
|
1821
|
-
|
|
1822
|
-
let t = n(
|
|
1823
|
-
return t.use(
|
|
1839
|
+
function En(e) {
|
|
1840
|
+
ie(e);
|
|
1841
|
+
let t = n(T);
|
|
1842
|
+
return t.use(Tn()), t;
|
|
1824
1843
|
}
|
|
1825
1844
|
//#endregion
|
|
1826
|
-
export {
|
|
1845
|
+
export { En as createSpecViewer };
|
package/package.json
CHANGED
package/types.d.ts
CHANGED
|
@@ -2,8 +2,15 @@ import type { App, Component } from 'vue'
|
|
|
2
2
|
|
|
3
3
|
export type ItemKind = 'component' | 'page'
|
|
4
4
|
|
|
5
|
-
export interface
|
|
5
|
+
export interface ViewVariant {
|
|
6
|
+
id: string
|
|
7
|
+
label: string
|
|
6
8
|
view: string | Component
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface VersionEntry {
|
|
12
|
+
view?: string | Component
|
|
13
|
+
variants?: ViewVariant[]
|
|
7
14
|
req: string
|
|
8
15
|
}
|
|
9
16
|
|